This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch 3.6.x in repository nx-libs. from 8ed8a43 nx-X11: add more NULL guards to TEST and DEBUG sections of Render.c. new 9c46d3d imake cleanup: Drop all references to XWinServer. new 6471f66 imake cleanup: Drop all references to XNestServer. new b1fc73a imake cleanup: Drop all references to XVirtualFramebufferServer. new ebe00df imake cleanup: Drop all references to XdmxServer and BuildXdmx*. new f5f2804 imake cleanup: Drop all references to XprtServer and BuildXprint*. new 78ac439 imake cleanup: Drop all references to BuildFontServer. new 05d2083 imake cleanup: nx-X11/programs/Imakefile (reduce to minimal). new 6db94c3 imake cleanup: nx-X11/programs/Xserver/Imakefile (drop non-provided Xserver variants) new d280fa1 imake clean: Remove (probably incomplete) support for NXZaurusXServer, NXiPAQXServer. new bb23f7a Merge branch 'feature/other-Xserver-cleanup' into arctica-3.6.x new d97b0ca fix for ebe00df38f264ef71dac3c73d416a74685c8cbd2 (removal of DmxLibrary) new 2f4d7db fix for libXpm4-cleanup new a8dad09 imake clean-up: nx-X11/config/Imakefile (drop BuildDPSLibrary related build-logic). new 097562b drop: nx-X11/config/util/ (not needed at build time). new fad840c test script: doc/examples/run-nxproxy2nxproxy-test new a5f71f0 NXAGENT_UPGRADE code cleanup: new cfc0202 Merge branch 'sunweaver-pr/nxupgradeagent-cleanup' into arctica-3.6.x new 422fe90 library clean-up: Drop nx-X11/lib/Xcursor. Not used at build time. new 0d92171 Merge branch 'sunweaver-pr/xcursor-cleanup' into arctica-3.6.x new bad6779 old-arch cleanup: Drop CRAY support (i.e., drop code related to CRAY, _CRAY, WORD64, WORD64ALIGN, MUSTCOPY, UNSIGNEDBITFIELDS definitions). new ac9fbaa MakeBigReq: don't move the last word, already handled by Data32 (X.Org CVE-2013-7439). new 8b15775 Merge pull request #12 from sunweaver/pr/arch-cleanup.CRAY new a20e77b imake cleanup (nx-X11/programs/Xserver/Imakefile): Drop build rules for XF86Server and XorgServer. new a77ca87 fix for Xcursor clean-up (422fe90) new 70b77a0 library clean-up: Don't build and link libXfont.a anymore. Use system's libXfont shared library and link dynamically. new b964406 Merge branch 'sunweaver-pr/libxfont-cleanup' into arctica-3.6.x new 294d912 debian/control: Typo fix (Meas -> Mesa). new a5bb888 nx-libs.spec: Drop packaging of libNX_Xpm*, in RPM packages there is no such concept for transitional/dummy packages as know from Debian/Ubuntu. new 49fc383 library clean-up: Don't build libNX_Xdmcp anymore. Use system's libXdmcp shared library. new 825af18 Merge branch 'sunweaver-pr/libxdmcp-cleanup' into arctica-3.6.x new e69b7d1 xbitmaps cleanup: The <X11/bitmaps/*> headers are not required at build time for NX. new 2b159e1 Merge branch 'sunweaver-pr/xbitmaps-cleanup' into arctica-3.6.x new f46b432 libX11 underlinking problem: Fix undefined reference to 'dlopen' and 'dlsym'. (Fixes: X2GoBTS#853). new 305ac78 libX11 underlinking problem: Fix undefined reference to 'XdmcpWrap' (by linking against X.Org'x libXdmcp). new 4a3a473 Fix underlinking issues for libNX_X{composite,damage,fixes}. new f2fd794 libXcompshad underlinking problem: Fix undefined reference to 'XShmQueryVersion', 'XShmDetach', 'XShmCreateImage', 'XShmAttach', and 'XShmGetImage'. new e68c366 debian/roll-tarballs.sh: use more quotes. new cf91819 debian/roll-tarballs.sh: convert tabs to spaces. new 21a556b debian/roll-tarballs.sh: use more curly braces. new 347e973 debian/roll-tarballs.sh: don't escape last newline of a multiline command. new 1c0f42d README.keystrokes: copy actions documentation from the wiki. new a430b4a README.keystrokes: add documentation for branding behavior. new 380a4df etc/keystrokes.cfg: fix whitespace errors. new f717a7e README.keystrokes: remove accidentally copied Dokuwiki syntax. new 99ef17f debian/changelog: merge with 3.5.0.x branch. The 45 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: Makefile | 6 +- README.keystrokes | 23 +- debian/changelog | 134 + debian/control | 45 +- debian/libnx-x11-6.symbols | 8 +- debian/libnx-xdmcp-dev.install.in | 2 - debian/libnx-xdmcp6.install.in | 1 - debian/libnx-xdmcp6.symbols | 46 - debian/roll-tarballs.sh | 56 +- debian/rules | 7 - doc/examples/run-nxproxy2nxproxy-test | 140 + etc/keystrokes.cfg | 32 +- nx-X11/Imakefile | 3 - nx-X11/config/Imakefile | 5 +- nx-X11/config/cf/Imake.cf | 11 - nx-X11/config/cf/Imake.rules | 21 - nx-X11/config/cf/Imake.tmpl | 8 - nx-X11/config/cf/README | 26 - nx-X11/config/cf/X11.tmpl | 1167 +---- nx-X11/config/cf/host.def | 262 +- nx-X11/config/cf/linux.cf | 8 - nx-X11/config/cf/lnxLib.tmpl | 5 +- nx-X11/config/cf/xf86site.def | 141 - nx-X11/config/cf/xfree86.cf | 69 - nx-X11/config/cf/xorg.cf | 66 - nx-X11/config/cf/xorgsite.def | 167 - nx-X11/config/imake/imakemdep.h | 20 +- nx-X11/config/makedepend/main.c | 2 +- nx-X11/config/util/Imakefile | 168 - nx-X11/config/util/aminstall.sh | 74 - nx-X11/config/util/bsdinst.sh | 168 - nx-X11/config/util/buildos2.cmd | 1 - nx-X11/config/util/ccmakedep.man | 142 - nx-X11/config/util/checktree.c | 339 -- nx-X11/config/util/chownxterm.c | 79 - nx-X11/config/util/cleanlinks.man | 29 - nx-X11/config/util/cleanlinks.sh | 27 - nx-X11/config/util/crayar.sh | 9 - nx-X11/config/util/elistgen.hp | 202 - nx-X11/config/util/elistgen.ibm | 220 - nx-X11/config/util/elistgen.sun | 267 -- nx-X11/config/util/elistgen.usl | 221 - nx-X11/config/util/gccmakedep.man | 126 - nx-X11/config/util/gccmdep.cpp | 126 - nx-X11/config/util/indir.cmd | 28 - nx-X11/config/util/install.sh | 108 - nx-X11/config/util/lndir.c | 391 -- nx-X11/config/util/lndir.man | 119 - nx-X11/config/util/makedef.cmd | 620 --- nx-X11/config/util/makeg.man | 64 - nx-X11/config/util/makeg.sh | 13 - nx-X11/config/util/makestrs.c | 752 --- nx-X11/config/util/makestrs.man | 219 - nx-X11/config/util/mdepend.cpp | 286 -- nx-X11/config/util/mergelib.cpp | 105 - nx-X11/config/util/mergelib.man | 28 - nx-X11/config/util/mkdirhier.c | 80 - nx-X11/config/util/mkdirhier.cmd | 54 - nx-X11/config/util/mkdirhier.man | 42 - nx-X11/config/util/mkdirhier.sh | 67 - nx-X11/config/util/mkhtmlindex.man | 32 - nx-X11/config/util/mkhtmlindex.pl | 103 - nx-X11/config/util/mkhtmlindex.sh | 60 - nx-X11/config/util/mkshadow/Imakefile | 5 - nx-X11/config/util/mkshadow/README | 38 - nx-X11/config/util/mkshadow/mkshadow.c | 378 -- nx-X11/config/util/mkshadow/savedir.c | 119 - nx-X11/config/util/mkshadow/wildmat.c | 167 - nx-X11/config/util/printver.c | 29 - nx-X11/config/util/revpath.c | 47 - nx-X11/config/util/revpath.man | 45 - nx-X11/config/util/syminst.sh | 90 - nx-X11/config/util/x11mf.sh | 28 - nx-X11/config/util/xmake.cmd | 5 - nx-X11/config/util/xmkmf.cpp | 70 - nx-X11/config/util/xmkmf.man | 89 - nx-X11/include/Imakefile | 2 +- nx-X11/include/Xmd.h | 53 +- nx-X11/include/Xos.h | 10 +- nx-X11/include/Xpoll.h.in | 4 +- nx-X11/include/Xproto.h | 13 - nx-X11/include/bitmaps/1x1 | 6 - nx-X11/include/bitmaps/2x2 | 6 - nx-X11/include/bitmaps/Imakefile | 86 - nx-X11/include/bitmaps/black | 6 - nx-X11/include/bitmaps/boxes | 6 - nx-X11/include/bitmaps/calculator | 19 - nx-X11/include/bitmaps/cntr_ptr | 8 - nx-X11/include/bitmaps/cntr_ptrmsk | 6 - nx-X11/include/bitmaps/cross_weave | 6 - nx-X11/include/bitmaps/dimple1 | 6 - nx-X11/include/bitmaps/dimple3 | 6 - nx-X11/include/bitmaps/dot | 6 - nx-X11/include/bitmaps/dropbar7 | 4 - nx-X11/include/bitmaps/dropbar8 | 4 - nx-X11/include/bitmaps/escherknot | 473 -- nx-X11/include/bitmaps/flagdown | 27 - nx-X11/include/bitmaps/flagup | 27 - nx-X11/include/bitmaps/flipped_gray | 4 - nx-X11/include/bitmaps/gray | 4 - nx-X11/include/bitmaps/gray1 | 4 - nx-X11/include/bitmaps/gray3 | 4 - nx-X11/include/bitmaps/grid16 | 6 - nx-X11/include/bitmaps/grid2 | 4 - nx-X11/include/bitmaps/grid4 | 4 - nx-X11/include/bitmaps/grid8 | 4 - nx-X11/include/bitmaps/hlines2 | 4 - nx-X11/include/bitmaps/hlines3 | 4 - nx-X11/include/bitmaps/icon | 6 - nx-X11/include/bitmaps/keyboard16 | 6 - nx-X11/include/bitmaps/left_ptr | 8 - nx-X11/include/bitmaps/left_ptrmsk | 6 - nx-X11/include/bitmaps/letters | 27 - nx-X11/include/bitmaps/light_gray | 4 - nx-X11/include/bitmaps/mailempty | 27 - nx-X11/include/bitmaps/mailemptymsk | 27 - nx-X11/include/bitmaps/mailfull | 27 - nx-X11/include/bitmaps/mailfullmsk | 27 - nx-X11/include/bitmaps/mensetmanus | 258 - nx-X11/include/bitmaps/menu10 | 5 - nx-X11/include/bitmaps/menu12 | 5 - nx-X11/include/bitmaps/menu16 | 6 - nx-X11/include/bitmaps/menu6 | 4 - nx-X11/include/bitmaps/menu8 | 4 - nx-X11/include/bitmaps/noletters | 27 - nx-X11/include/bitmaps/opendot | 8 - nx-X11/include/bitmaps/opendotMask | 8 - nx-X11/include/bitmaps/plaid | 11 - nx-X11/include/bitmaps/right_ptr | 8 - nx-X11/include/bitmaps/right_ptrmsk | 6 - nx-X11/include/bitmaps/root_weave | 4 - nx-X11/include/bitmaps/scales | 6 - nx-X11/include/bitmaps/sipb | 16 - nx-X11/include/bitmaps/star | 8 - nx-X11/include/bitmaps/starMask | 8 - nx-X11/include/bitmaps/stipple | 4 - nx-X11/include/bitmaps/target | 6 - nx-X11/include/bitmaps/terminal | 52 - nx-X11/include/bitmaps/tie_fighter | 6 - nx-X11/include/bitmaps/vlines2 | 4 - nx-X11/include/bitmaps/vlines3 | 4 - nx-X11/include/bitmaps/weird_size | 5 - nx-X11/include/bitmaps/wide_weave | 6 - nx-X11/include/bitmaps/wingdogs | 14 - nx-X11/include/bitmaps/woman | 66 - nx-X11/include/bitmaps/xfd_icon | 27 - nx-X11/include/bitmaps/xlogo11 | 6 - nx-X11/include/bitmaps/xlogo16 | 6 - nx-X11/include/bitmaps/xlogo32 | 14 - nx-X11/include/bitmaps/xlogo64 | 46 - nx-X11/include/bitmaps/xsnow | 1112 ----- nx-X11/include/extensions/Imakefile | 8 +- nx-X11/include/extensions/Print.h | 552 --- nx-X11/include/extensions/Printstr.h | 783 --- nx-X11/include/extensions/XKBstr.h | 5 - nx-X11/include/extensions/dmxext.h | 190 - nx-X11/include/extensions/dmxproto.h | 446 -- nx-X11/include/extensions/lbxopts.h | 2 +- nx-X11/include/extensions/lbxstr.h | 4 - nx-X11/include/extensions/xf86bigfstr.h | 4 - nx-X11/include/fonts/FS.h | 132 - nx-X11/include/fonts/FSproto.h | 816 ---- nx-X11/include/fonts/Imakefile | 22 - nx-X11/include/fonts/font.h | 169 - nx-X11/include/fonts/fontproto.h | 93 - nx-X11/include/fonts/fontstruct.h | 295 -- nx-X11/include/fonts/fsmasks.h | 98 - nx-X11/lib/Imakefile | 53 +- nx-X11/lib/X11/ChWindow.c | 9 - nx-X11/lib/X11/ConfWind.c | 13 - nx-X11/lib/X11/CrWindow.c | 9 - nx-X11/lib/X11/DrArc.c | 13 - nx-X11/lib/X11/DrLine.c | 16 - nx-X11/lib/X11/DrPoint.c | 15 - nx-X11/lib/X11/DrRect.c | 16 - nx-X11/lib/X11/FillArc.c | 16 - nx-X11/lib/X11/FillRct.c | 15 - nx-X11/lib/X11/Font.c | 45 +- nx-X11/lib/X11/FontInfo.c | 24 +- nx-X11/lib/X11/ImUtil.c | 8 - nx-X11/lib/X11/Imakefile | 13 +- nx-X11/lib/X11/LiHosts.c | 7 - nx-X11/lib/X11/Macros.c | 5 - nx-X11/lib/X11/MoveWin.c | 9 - nx-X11/lib/X11/PolyTxt16.c | 26 +- nx-X11/lib/X11/Quarks.c | 4 - nx-X11/lib/X11/RestackWs.c | 11 +- nx-X11/lib/X11/SendEvent.c | 5 - nx-X11/lib/X11/StColor.c | 13 - nx-X11/lib/X11/Text16.c | 23 - nx-X11/lib/X11/XKBNames.c | 56 - nx-X11/lib/X11/XKBRdBuf.c | 27 +- nx-X11/lib/X11/XKBlibint.h | 2 +- nx-X11/lib/X11/Xlib.h | 4 - nx-X11/lib/X11/XlibAsync.c | 5 - nx-X11/lib/X11/XlibInt.c | 252 - nx-X11/lib/X11/Xlibint.h | 82 +- nx-X11/lib/X11/cmsTrig.c | 4 - nx-X11/lib/X11/omXChar.c | 71 - nx-X11/lib/Xcomposite/Imakefile | 2 +- nx-X11/lib/Xcursor/AUTHORS | 2 - nx-X11/lib/Xcursor/COPYING | 19 - nx-X11/lib/Xcursor/ChangeLog | 202 - nx-X11/lib/Xcursor/Imakefile | 100 - nx-X11/lib/Xcursor/Xcursor-def.cpp | 54 - nx-X11/lib/Xcursor/Xcursor.h | 501 -- nx-X11/lib/Xcursor/Xcursor.man | 379 -- nx-X11/lib/Xcursor/autogen.sh | 12 - nx-X11/lib/Xcursor/configure.ac | 143 - nx-X11/lib/Xcursor/cursor.c | 815 ---- nx-X11/lib/Xcursor/display.c | 382 -- nx-X11/lib/Xcursor/file.c | 1101 ----- nx-X11/lib/Xcursor/library.c | 495 -- nx-X11/lib/Xcursor/xcursor-config.in | 95 - nx-X11/lib/Xcursor/xcursor.pc.in | 15 - nx-X11/lib/Xcursor/xcursorint.h | 109 - nx-X11/lib/Xcursor/xlib.c | 422 -- nx-X11/lib/Xdamage/Imakefile | 2 +- nx-X11/lib/Xdmcp/A8Eq.c | 50 - nx-X11/lib/Xdmcp/AA16.c | 51 - nx-X11/lib/Xdmcp/AA32.c | 51 - nx-X11/lib/Xdmcp/AA8.c | 51 - nx-X11/lib/Xdmcp/Alloc.c | 66 - nx-X11/lib/Xdmcp/AofA8.c | 51 - nx-X11/lib/Xdmcp/CA8.c | 49 - nx-X11/lib/Xdmcp/CmpKey.c | 49 - nx-X11/lib/Xdmcp/DA16.c | 46 - nx-X11/lib/Xdmcp/DA32.c | 45 - nx-X11/lib/Xdmcp/DA8.c | 45 - nx-X11/lib/Xdmcp/DAofA8.c | 51 - nx-X11/lib/Xdmcp/DecKey.c | 49 - nx-X11/lib/Xdmcp/Fill.c | 102 - nx-X11/lib/Xdmcp/Flush.c | 83 - nx-X11/lib/Xdmcp/GenKey.c | 74 - nx-X11/lib/Xdmcp/Imakefile | 121 - nx-X11/lib/Xdmcp/IncKey.c | 49 - nx-X11/lib/Xdmcp/RA16.c | 72 - nx-X11/lib/Xdmcp/RA32.c | 72 - nx-X11/lib/Xdmcp/RA8.c | 72 - nx-X11/lib/Xdmcp/RAofA8.c | 75 - nx-X11/lib/Xdmcp/RC16.c | 52 - nx-X11/lib/Xdmcp/RC32.c | 56 - nx-X11/lib/Xdmcp/RC8.c | 47 - nx-X11/lib/Xdmcp/RHead.c | 48 - nx-X11/lib/Xdmcp/RR.c | 43 - nx-X11/lib/Xdmcp/RaA16.c | 51 - nx-X11/lib/Xdmcp/RaA32.c | 51 - nx-X11/lib/Xdmcp/RaA8.c | 51 - nx-X11/lib/Xdmcp/RaAoA8.c | 51 - nx-X11/lib/Xdmcp/Unwrap.c | 95 - nx-X11/lib/Xdmcp/WA16.c | 51 - nx-X11/lib/Xdmcp/WA32.c | 51 - nx-X11/lib/Xdmcp/WA8.c | 51 - nx-X11/lib/Xdmcp/WAofA8.c | 51 - nx-X11/lib/Xdmcp/WC16.c | 50 - nx-X11/lib/Xdmcp/WC32.c | 53 - nx-X11/lib/Xdmcp/WC8.c | 49 - nx-X11/lib/Xdmcp/Whead.c | 64 - nx-X11/lib/Xdmcp/Wrap.c | 133 - nx-X11/lib/Xdmcp/Wrap.h | 19 - nx-X11/lib/Xdmcp/Wraphelp.README.crypto | 64 - nx-X11/lib/Xdmcp/Wraphelp.c | 500 -- nx-X11/lib/Xdmcp/Xdmcp.h | 190 - nx-X11/lib/Xfixes/Imakefile | 2 +- nx-X11/lib/Xrender/FillRect.c | 15 - nx-X11/lib/Xrender/Imakefile | 9 +- nx-X11/lib/Xrender/Xrenderint.h | 7 +- nx-X11/lib/{Xcursor => Xrender}/config-subst | 0 nx-X11/lib/Xtst/XRecord.c | 28 - nx-X11/lib/Xxf86vm/XF86VMode.c | 2 - nx-X11/lib/font/Imakefile | 178 - nx-X11/lib/font/Speedo/Imakefile | 46 - nx-X11/lib/font/Speedo/adobe-iso.h | 200 - nx-X11/lib/font/Speedo/bics-iso.h | 224 - nx-X11/lib/font/Speedo/bics-unicode.c | 138 - nx-X11/lib/font/Speedo/bics-unicode.h | 3 - nx-X11/lib/font/Speedo/do_char.c | 1016 ---- nx-X11/lib/font/Speedo/do_trns.c | 512 -- nx-X11/lib/font/Speedo/htest.c | 361 -- nx-X11/lib/font/Speedo/iface.c | 650 --- nx-X11/lib/font/Speedo/keys.h | 56 - nx-X11/lib/font/Speedo/module/Imakefile | 47 - nx-X11/lib/font/Speedo/module/speedomod.c | 72 - nx-X11/lib/font/Speedo/nsample.c | 745 --- nx-X11/lib/font/Speedo/out_bl2d.c | 772 --- nx-X11/lib/font/Speedo/out_blk.c | 706 --- nx-X11/lib/font/Speedo/out_outl.c | 290 -- nx-X11/lib/font/Speedo/out_scrn.c | 1090 ----- nx-X11/lib/font/Speedo/out_util.c | 341 -- nx-X11/lib/font/Speedo/reset.c | 131 - nx-X11/lib/font/Speedo/set_spcs.c | 773 --- nx-X11/lib/font/Speedo/set_trns.c | 1324 ----- nx-X11/lib/font/Speedo/spdo_prv.h | 421 -- nx-X11/lib/font/Speedo/speedo.h | 890 ---- nx-X11/lib/font/Speedo/spencode.c | 67 - nx-X11/lib/font/Speedo/sperr.c | 127 - nx-X11/lib/font/Speedo/spfile.c | 460 -- nx-X11/lib/font/Speedo/spfont.c | 453 -- nx-X11/lib/font/Speedo/spfuncs.c | 167 - nx-X11/lib/font/Speedo/spglyph.c | 399 -- nx-X11/lib/font/Speedo/spinfo.c | 462 -- nx-X11/lib/font/Speedo/spint.h | 180 - nx-X11/lib/font/Speedo/sptobdf.c | 678 --- nx-X11/lib/font/Speedo/useropt.h | 41 - nx-X11/lib/font/Type1/AFM.h | 62 - nx-X11/lib/font/Type1/Imakefile | 91 - nx-X11/lib/font/Type1/afm.c | 200 - nx-X11/lib/font/Type1/arith.c | 486 -- nx-X11/lib/font/Type1/arith.h | 77 - nx-X11/lib/font/Type1/blues.h | 95 - nx-X11/lib/font/Type1/cidchar.c | 621 --- nx-X11/lib/font/Type1/cluts.h | 35 - nx-X11/lib/font/Type1/curves.c | 228 - nx-X11/lib/font/Type1/curves.h | 44 - nx-X11/lib/font/Type1/digit.h | 64 - nx-X11/lib/font/Type1/fontfcn.c | 709 --- nx-X11/lib/font/Type1/fontfcn.h | 250 - nx-X11/lib/font/Type1/fonts.h | 49 - nx-X11/lib/font/Type1/hdigit.h | 94 - nx-X11/lib/font/Type1/hints.c | 890 ---- nx-X11/lib/font/Type1/hints.h | 48 - nx-X11/lib/font/Type1/lines.c | 189 - nx-X11/lib/font/Type1/lines.h | 39 - nx-X11/lib/font/Type1/minimain.c | 48 - nx-X11/lib/font/Type1/module/Imakefile | 99 - nx-X11/lib/font/Type1/module/type1mod.c | 91 - nx-X11/lib/font/Type1/objects.c | 1101 ----- nx-X11/lib/font/Type1/objects.h | 354 -- nx-X11/lib/font/Type1/paths.c | 1406 ------ nx-X11/lib/font/Type1/paths.h | 239 - nx-X11/lib/font/Type1/pictures.h | 50 - nx-X11/lib/font/Type1/range.h | 48 - nx-X11/lib/font/Type1/regions.c | 1651 ------- nx-X11/lib/font/Type1/regions.h | 250 - nx-X11/lib/font/Type1/scanfont.c | 2370 --------- nx-X11/lib/font/Type1/spaces.c | 998 ---- nx-X11/lib/font/Type1/spaces.h | 172 - nx-X11/lib/font/Type1/strokes.h | 38 - nx-X11/lib/font/Type1/t1funcs.c | 1668 ------- nx-X11/lib/font/Type1/t1hdigit.h | 40 - nx-X11/lib/font/Type1/t1imager.h | 84 - nx-X11/lib/font/Type1/t1info.c | 1096 ----- nx-X11/lib/font/Type1/t1intf.h | 143 - nx-X11/lib/font/Type1/t1io.c | 388 -- nx-X11/lib/font/Type1/t1malloc.c | 759 --- nx-X11/lib/font/Type1/t1snap.c | 85 - nx-X11/lib/font/Type1/t1stdio.h | 101 - nx-X11/lib/font/Type1/t1stub.c | 56 - nx-X11/lib/font/Type1/t1test.c | 246 - nx-X11/lib/font/Type1/t1unicode.c | 251 - nx-X11/lib/font/Type1/t1unicode.h | 25 - nx-X11/lib/font/Type1/token.c | 1208 ----- nx-X11/lib/font/Type1/token.h | 79 - nx-X11/lib/font/Type1/tokst.h | 510 -- nx-X11/lib/font/Type1/trig.h | 41 - nx-X11/lib/font/Type1/type1.c | 1892 -------- nx-X11/lib/font/Type1/util.c | 222 - nx-X11/lib/font/Type1/util.h | 217 - nx-X11/lib/font/bitmap/Imakefile | 71 - nx-X11/lib/font/bitmap/bdfint.h | 90 - nx-X11/lib/font/bitmap/bdfread.c | 967 ---- nx-X11/lib/font/bitmap/bdfutils.c | 340 -- nx-X11/lib/font/bitmap/bitmap.c | 160 - nx-X11/lib/font/bitmap/bitmapfunc.c | 240 - nx-X11/lib/font/bitmap/bitmaputil.c | 232 - nx-X11/lib/font/bitmap/bitscale.c | 1978 -------- nx-X11/lib/font/bitmap/fontink.c | 219 - nx-X11/lib/font/bitmap/module/Imakefile | 45 - nx-X11/lib/font/bitmap/module/bitmapmod.c | 76 - nx-X11/lib/font/bitmap/pcf.h | 100 - nx-X11/lib/font/bitmap/pcfread.c | 997 ---- nx-X11/lib/font/bitmap/pcfwrite.c | 468 -- nx-X11/lib/font/bitmap/snfread.c | 514 -- nx-X11/lib/font/bitmap/snfstr.h | 185 - nx-X11/lib/font/builtins/Imakefile | 17 - nx-X11/lib/font/builtins/buildfont | 14 - nx-X11/lib/font/builtins/builtin.h | 60 - nx-X11/lib/font/builtins/dir.c | 64 - nx-X11/lib/font/builtins/file.c | 139 - nx-X11/lib/font/builtins/fonts.c | 2438 ---------- nx-X11/lib/font/builtins/fpe.c | 98 - nx-X11/lib/font/builtins/render.c | 114 - nx-X11/lib/font/fc/Imakefile | 31 - nx-X11/lib/font/fc/fsconvert.c | 774 --- nx-X11/lib/font/fc/fserve.c | 3480 -------------- nx-X11/lib/font/fc/fserve.h | 96 - nx-X11/lib/font/fc/fservestr.h | 211 - nx-X11/lib/font/fc/fsio.c | 516 -- nx-X11/lib/font/fc/fsio.h | 187 - nx-X11/lib/font/fc/fsio.h.NX.reference | 191 - nx-X11/lib/font/fc/fsio.h.XF86.reference | 187 - nx-X11/lib/font/fc/fslibos.h | 220 - nx-X11/lib/font/fontcache/Imakefile | 29 - nx-X11/lib/font/fontcache/fcqueue.h | 133 - nx-X11/lib/font/fontcache/fontcache.c | 1022 ---- nx-X11/lib/font/fontcache/fontcache.h | 121 - nx-X11/lib/font/fontfile/Imakefile | 81 - nx-X11/lib/font/fontfile/bitsource.c | 174 - nx-X11/lib/font/fontfile/bufio.c | 212 - nx-X11/lib/font/fontfile/decompress.c | 415 -- nx-X11/lib/font/fontfile/defaults.c | 77 - nx-X11/lib/font/fontfile/dirfile.c | 495 -- nx-X11/lib/font/fontfile/encparse.c | 966 ---- nx-X11/lib/font/fontfile/ffcheck.c | 173 - nx-X11/lib/font/fontfile/fileio.c | 90 - nx-X11/lib/font/fontfile/filewr.c | 65 - nx-X11/lib/font/fontfile/fontdir.c | 832 ---- nx-X11/lib/font/fontfile/fontenc.c | 952 ---- nx-X11/lib/font/fontfile/fontencI.h | 46 - nx-X11/lib/font/fontfile/fontencc.c | 77 - nx-X11/lib/font/fontfile/fontfile.c | 1147 ----- nx-X11/lib/font/fontfile/fontscale.c | 447 -- nx-X11/lib/font/fontfile/gunzip.c | 227 - nx-X11/lib/font/fontfile/module/Imakefile | 21 - nx-X11/lib/font/fontfile/printerfont.c | 178 - nx-X11/lib/font/fontfile/register.c | 109 - nx-X11/lib/font/fontfile/renderers.c | 117 - nx-X11/lib/font/include/Imakefile | 11 - nx-X11/lib/font/include/bitmap.h | 116 - nx-X11/lib/font/include/bufio.h | 92 - nx-X11/lib/font/include/fntfil.h | 178 - nx-X11/lib/font/include/fntfilio.h | 56 - nx-X11/lib/font/include/fntfilst.h | 198 - nx-X11/lib/font/include/fontencc.h | 36 - nx-X11/lib/font/include/fontmisc.h | 133 - nx-X11/lib/font/include/fontmod.h | 16 - nx-X11/lib/font/include/fontshow.h | 37 - nx-X11/lib/font/include/fontutil.h | 26 - nx-X11/lib/font/include/fontxlfd.h | 100 - nx-X11/lib/font/stubs/Imakefile | 25 - nx-X11/lib/font/stubs/cauthgen.c | 14 - nx-X11/lib/font/stubs/csignal.c | 14 - nx-X11/lib/font/stubs/delfntcid.c | 13 - nx-X11/lib/font/stubs/errorf.c | 13 - nx-X11/lib/font/stubs/fatalerror.c | 13 - nx-X11/lib/font/stubs/findoldfnt.c | 14 - nx-X11/lib/font/stubs/getcres.c | 14 - nx-X11/lib/font/stubs/getdefptsize.c | 14 - nx-X11/lib/font/stubs/getnewfntcid.c | 14 - nx-X11/lib/font/stubs/gettime.c | 14 - nx-X11/lib/font/stubs/initfshdl.c | 15 - nx-X11/lib/font/stubs/regfpefunc.c | 28 - nx-X11/lib/font/stubs/rmfshdl.c | 15 - nx-X11/lib/font/stubs/servclient.c | 3 - nx-X11/lib/font/stubs/setfntauth.c | 14 - nx-X11/lib/font/stubs/stfntcfnt.c | 14 - nx-X11/lib/font/stubs/stubs.h | 27 - nx-X11/lib/font/stubs/xpstubs.c | 24 - nx-X11/lib/font/util/Imakefile | 43 - nx-X11/lib/font/util/atom.c | 233 - nx-X11/lib/font/util/fontaccel.c | 107 - nx-X11/lib/font/util/fontnames.c | 123 - nx-X11/lib/font/util/fontutil.c | 443 -- nx-X11/lib/font/util/fontxlfd.c | 637 --- nx-X11/lib/font/util/format.c | 126 - nx-X11/lib/font/util/miscutil.c | 99 - nx-X11/lib/font/util/patcache.c | 221 - nx-X11/lib/font/util/private.c | 107 - nx-X11/lib/font/util/utilbitmap.c | 188 - nx-X11/lib/xtrans/Xtrans.c | 38 - nx-X11/lib/xtrans/Xtrans.h | 2 +- nx-X11/lib/xtrans/Xtransint.h | 8 +- nx-X11/lib/xtrans/Xtranssock.c | 16 - nx-X11/lib/xtrans/Xtransutil.c | 9 - nx-X11/programs/Imakefile | 146 - nx-X11/programs/Xserver/GL/glx/Imakefile | 2 +- nx-X11/programs/Xserver/Imakefile | 910 +--- nx-X11/programs/Xserver/Xext/Imakefile | 20 +- nx-X11/programs/Xserver/Xext/dmx.c | 1133 ----- nx-X11/programs/Xserver/Xext/extmod/Imakefile | 2 +- nx-X11/programs/Xserver/Xext/xprint.c | 2760 ----------- nx-X11/programs/Xserver/composite/Imakefile | 2 +- nx-X11/programs/Xserver/dix/Imakefile | 8 +- nx-X11/programs/Xserver/dix/dixfonts.c | 17 +- nx-X11/programs/Xserver/dix/main.c | 9 - nx-X11/programs/Xserver/dix/xpstubs.c | 27 - nx-X11/programs/Xserver/fb/Imakefile | 2 +- nx-X11/programs/Xserver/hw/Imakefile | 26 - nx-X11/programs/Xserver/hw/nxagent/Composite.c | 10 - nx-X11/programs/Xserver/hw/nxagent/Font.c | 4 +- nx-X11/programs/Xserver/hw/nxagent/Font.h | 2 +- nx-X11/programs/Xserver/hw/nxagent/GC.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/Imakefile | 24 +- nx-X11/programs/Xserver/hw/nxagent/Init.c | 10 +- nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c | 359 -- nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h | 4 - .../programs/Xserver/hw/nxagent/NXcompositeext.h | 4 - .../programs/Xserver/hw/nxagent/NXcompositeint.h | 76 - .../programs/Xserver/hw/nxagent/NXcompositeproto.h | 148 - nx-X11/programs/Xserver/hw/nxagent/NXdamage.c | 2072 +++++++- nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c | 541 +-- nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c | 294 +- nx-X11/programs/Xserver/hw/nxagent/NXevents.c | 1049 ++-- nx-X11/programs/Xserver/hw/nxagent/NXextension.c | 54 +- nx-X11/programs/Xserver/hw/nxagent/NXglxext.c | 63 +- nx-X11/programs/Xserver/hw/nxagent/NXglyph.c | 94 +- nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c | 25 +- nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h | 35 +- nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c | 71 +- nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c | 16 +- nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c | 129 +- nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c | 49 +- nx-X11/programs/Xserver/hw/nxagent/NXpicture.c | 944 +++- nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h | 206 +- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 157 +- nx-X11/programs/Xserver/hw/nxagent/NXrender.c | 909 +++- nx-X11/programs/Xserver/hw/nxagent/NXresource.c | 319 +- nx-X11/programs/Xserver/hw/nxagent/NXshm.c | 161 +- nx-X11/programs/Xserver/hw/nxagent/NXwindow.c | 566 ++- nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c | 94 +- nx-X11/programs/Xserver/hw/nxagent/Render.c | 60 - nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c | 2073 -------- nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c | 4682 ------------------ nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c | 2805 ----------- nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c | 5044 -------------------- nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c | 508 -- nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c | 575 --- nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c | 581 --- nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c | 241 - nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h | 174 - nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c | 979 ---- nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c | 318 -- nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c | 233 - nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c | 1222 ----- nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c | 2274 --------- .../programs/Xserver/hw/nxagent/X/NXpicturestr.h | 679 --- nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c | 992 ---- nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c | 3861 --------------- nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c | 1250 ----- nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c | 1498 ------ nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c | 4167 ---------------- nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c | 2292 --------- nx-X11/programs/Xserver/mi/Imakefile | 4 +- nx-X11/programs/Xserver/mi/miinitext.c | 45 - nx-X11/programs/Xserver/miext/damage/Imakefile | 2 +- nx-X11/programs/Xserver/os/Imakefile | 4 +- nx-X11/programs/Xserver/os/utils.c | 13 - nx-X11/programs/Xserver/randr/Imakefile | 4 +- nx-X11/programs/Xserver/render/Imakefile | 4 +- nx-libs.spec | 126 +- nxcompshad/Makefile.in | 2 +- 541 files changed, 6587 insertions(+), 131792 deletions(-) delete mode 100644 debian/libnx-xdmcp-dev.install.in delete mode 100644 debian/libnx-xdmcp6.install.in delete mode 100644 debian/libnx-xdmcp6.symbols create mode 100755 doc/examples/run-nxproxy2nxproxy-test delete mode 100644 nx-X11/config/util/Imakefile delete mode 100644 nx-X11/config/util/aminstall.sh delete mode 100644 nx-X11/config/util/bsdinst.sh delete mode 100644 nx-X11/config/util/buildos2.cmd delete mode 100644 nx-X11/config/util/ccmakedep.man delete mode 100644 nx-X11/config/util/checktree.c delete mode 100644 nx-X11/config/util/chownxterm.c delete mode 100644 nx-X11/config/util/cleanlinks.man delete mode 100644 nx-X11/config/util/cleanlinks.sh delete mode 100644 nx-X11/config/util/crayar.sh delete mode 100644 nx-X11/config/util/elistgen.hp delete mode 100644 nx-X11/config/util/elistgen.ibm delete mode 100644 nx-X11/config/util/elistgen.sun delete mode 100644 nx-X11/config/util/elistgen.usl delete mode 100644 nx-X11/config/util/gccmakedep.man delete mode 100644 nx-X11/config/util/gccmdep.cpp delete mode 100644 nx-X11/config/util/indir.cmd delete mode 100644 nx-X11/config/util/install.sh delete mode 100644 nx-X11/config/util/lndir.c delete mode 100644 nx-X11/config/util/lndir.man delete mode 100644 nx-X11/config/util/makedef.cmd delete mode 100644 nx-X11/config/util/makeg.man delete mode 100644 nx-X11/config/util/makeg.sh delete mode 100644 nx-X11/config/util/makestrs.c delete mode 100644 nx-X11/config/util/makestrs.man delete mode 100644 nx-X11/config/util/mdepend.cpp delete mode 100644 nx-X11/config/util/mergelib.cpp delete mode 100644 nx-X11/config/util/mergelib.man delete mode 100644 nx-X11/config/util/mkdirhier.c delete mode 100644 nx-X11/config/util/mkdirhier.cmd delete mode 100644 nx-X11/config/util/mkdirhier.man delete mode 100644 nx-X11/config/util/mkdirhier.sh delete mode 100644 nx-X11/config/util/mkhtmlindex.man delete mode 100644 nx-X11/config/util/mkhtmlindex.pl delete mode 100644 nx-X11/config/util/mkhtmlindex.sh delete mode 100644 nx-X11/config/util/mkshadow/Imakefile delete mode 100644 nx-X11/config/util/mkshadow/README delete mode 100644 nx-X11/config/util/mkshadow/mkshadow.c delete mode 100644 nx-X11/config/util/mkshadow/savedir.c delete mode 100644 nx-X11/config/util/mkshadow/wildmat.c delete mode 100644 nx-X11/config/util/printver.c delete mode 100644 nx-X11/config/util/revpath.c delete mode 100644 nx-X11/config/util/revpath.man delete mode 100644 nx-X11/config/util/syminst.sh delete mode 100644 nx-X11/config/util/x11mf.sh delete mode 100644 nx-X11/config/util/xmake.cmd delete mode 100644 nx-X11/config/util/xmkmf.cpp delete mode 100644 nx-X11/config/util/xmkmf.man delete mode 100644 nx-X11/include/bitmaps/1x1 delete mode 100644 nx-X11/include/bitmaps/2x2 delete mode 100644 nx-X11/include/bitmaps/Imakefile delete mode 100644 nx-X11/include/bitmaps/black delete mode 100644 nx-X11/include/bitmaps/boxes delete mode 100644 nx-X11/include/bitmaps/calculator delete mode 100644 nx-X11/include/bitmaps/cntr_ptr delete mode 100644 nx-X11/include/bitmaps/cntr_ptrmsk delete mode 100644 nx-X11/include/bitmaps/cross_weave delete mode 100644 nx-X11/include/bitmaps/dimple1 delete mode 100644 nx-X11/include/bitmaps/dimple3 delete mode 100644 nx-X11/include/bitmaps/dot delete mode 100644 nx-X11/include/bitmaps/dropbar7 delete mode 100644 nx-X11/include/bitmaps/dropbar8 delete mode 100644 nx-X11/include/bitmaps/escherknot delete mode 100644 nx-X11/include/bitmaps/flagdown delete mode 100644 nx-X11/include/bitmaps/flagup delete mode 100644 nx-X11/include/bitmaps/flipped_gray delete mode 100644 nx-X11/include/bitmaps/gray delete mode 100644 nx-X11/include/bitmaps/gray1 delete mode 100644 nx-X11/include/bitmaps/gray3 delete mode 100644 nx-X11/include/bitmaps/grid16 delete mode 100644 nx-X11/include/bitmaps/grid2 delete mode 100644 nx-X11/include/bitmaps/grid4 delete mode 100644 nx-X11/include/bitmaps/grid8 delete mode 100644 nx-X11/include/bitmaps/hlines2 delete mode 100644 nx-X11/include/bitmaps/hlines3 delete mode 100644 nx-X11/include/bitmaps/icon delete mode 100644 nx-X11/include/bitmaps/keyboard16 delete mode 100644 nx-X11/include/bitmaps/left_ptr delete mode 100644 nx-X11/include/bitmaps/left_ptrmsk delete mode 100644 nx-X11/include/bitmaps/letters delete mode 100644 nx-X11/include/bitmaps/light_gray delete mode 100644 nx-X11/include/bitmaps/mailempty delete mode 100644 nx-X11/include/bitmaps/mailemptymsk delete mode 100644 nx-X11/include/bitmaps/mailfull delete mode 100644 nx-X11/include/bitmaps/mailfullmsk delete mode 100644 nx-X11/include/bitmaps/mensetmanus delete mode 100644 nx-X11/include/bitmaps/menu10 delete mode 100644 nx-X11/include/bitmaps/menu12 delete mode 100644 nx-X11/include/bitmaps/menu16 delete mode 100644 nx-X11/include/bitmaps/menu6 delete mode 100644 nx-X11/include/bitmaps/menu8 delete mode 100644 nx-X11/include/bitmaps/noletters delete mode 100644 nx-X11/include/bitmaps/opendot delete mode 100644 nx-X11/include/bitmaps/opendotMask delete mode 100644 nx-X11/include/bitmaps/plaid delete mode 100644 nx-X11/include/bitmaps/right_ptr delete mode 100644 nx-X11/include/bitmaps/right_ptrmsk delete mode 100644 nx-X11/include/bitmaps/root_weave delete mode 100644 nx-X11/include/bitmaps/scales delete mode 100644 nx-X11/include/bitmaps/sipb delete mode 100644 nx-X11/include/bitmaps/star delete mode 100644 nx-X11/include/bitmaps/starMask delete mode 100644 nx-X11/include/bitmaps/stipple delete mode 100644 nx-X11/include/bitmaps/target delete mode 100644 nx-X11/include/bitmaps/terminal delete mode 100644 nx-X11/include/bitmaps/tie_fighter delete mode 100644 nx-X11/include/bitmaps/vlines2 delete mode 100644 nx-X11/include/bitmaps/vlines3 delete mode 100644 nx-X11/include/bitmaps/weird_size delete mode 100644 nx-X11/include/bitmaps/wide_weave delete mode 100644 nx-X11/include/bitmaps/wingdogs delete mode 100644 nx-X11/include/bitmaps/woman delete mode 100644 nx-X11/include/bitmaps/xfd_icon delete mode 100644 nx-X11/include/bitmaps/xlogo11 delete mode 100644 nx-X11/include/bitmaps/xlogo16 delete mode 100644 nx-X11/include/bitmaps/xlogo32 delete mode 100644 nx-X11/include/bitmaps/xlogo64 delete mode 100644 nx-X11/include/bitmaps/xsnow delete mode 100644 nx-X11/include/extensions/Print.h delete mode 100644 nx-X11/include/extensions/Printstr.h delete mode 100644 nx-X11/include/extensions/dmxext.h delete mode 100644 nx-X11/include/extensions/dmxproto.h delete mode 100644 nx-X11/include/fonts/FS.h delete mode 100644 nx-X11/include/fonts/FSproto.h delete mode 100644 nx-X11/include/fonts/Imakefile delete mode 100644 nx-X11/include/fonts/font.h delete mode 100644 nx-X11/include/fonts/fontproto.h delete mode 100644 nx-X11/include/fonts/fontstruct.h delete mode 100644 nx-X11/include/fonts/fsmasks.h delete mode 100644 nx-X11/lib/Xcursor/AUTHORS delete mode 100644 nx-X11/lib/Xcursor/COPYING delete mode 100644 nx-X11/lib/Xcursor/ChangeLog delete mode 100644 nx-X11/lib/Xcursor/INSTALL delete mode 100644 nx-X11/lib/Xcursor/Imakefile delete mode 100644 nx-X11/lib/Xcursor/NEWS delete mode 100644 nx-X11/lib/Xcursor/README delete mode 100644 nx-X11/lib/Xcursor/Xcursor-def.cpp delete mode 100644 nx-X11/lib/Xcursor/Xcursor.h delete mode 100644 nx-X11/lib/Xcursor/Xcursor.man delete mode 100755 nx-X11/lib/Xcursor/autogen.sh delete mode 100644 nx-X11/lib/Xcursor/config.h delete mode 100644 nx-X11/lib/Xcursor/configure.ac delete mode 100644 nx-X11/lib/Xcursor/cursor.c delete mode 100644 nx-X11/lib/Xcursor/display.c delete mode 100644 nx-X11/lib/Xcursor/file.c delete mode 100644 nx-X11/lib/Xcursor/library.c delete mode 100644 nx-X11/lib/Xcursor/xcursor-config.in delete mode 100644 nx-X11/lib/Xcursor/xcursor.pc.in delete mode 100644 nx-X11/lib/Xcursor/xcursorint.h delete mode 100644 nx-X11/lib/Xcursor/xlib.c delete mode 100644 nx-X11/lib/Xdmcp/A8Eq.c delete mode 100644 nx-X11/lib/Xdmcp/AA16.c delete mode 100644 nx-X11/lib/Xdmcp/AA32.c delete mode 100644 nx-X11/lib/Xdmcp/AA8.c delete mode 100644 nx-X11/lib/Xdmcp/Alloc.c delete mode 100644 nx-X11/lib/Xdmcp/AofA8.c delete mode 100644 nx-X11/lib/Xdmcp/CA8.c delete mode 100644 nx-X11/lib/Xdmcp/CmpKey.c delete mode 100644 nx-X11/lib/Xdmcp/DA16.c delete mode 100644 nx-X11/lib/Xdmcp/DA32.c delete mode 100644 nx-X11/lib/Xdmcp/DA8.c delete mode 100644 nx-X11/lib/Xdmcp/DAofA8.c delete mode 100644 nx-X11/lib/Xdmcp/DecKey.c delete mode 100644 nx-X11/lib/Xdmcp/Fill.c delete mode 100644 nx-X11/lib/Xdmcp/Flush.c delete mode 100644 nx-X11/lib/Xdmcp/GenKey.c delete mode 100644 nx-X11/lib/Xdmcp/Imakefile delete mode 100644 nx-X11/lib/Xdmcp/IncKey.c delete mode 100644 nx-X11/lib/Xdmcp/RA16.c delete mode 100644 nx-X11/lib/Xdmcp/RA32.c delete mode 100644 nx-X11/lib/Xdmcp/RA8.c delete mode 100644 nx-X11/lib/Xdmcp/RAofA8.c delete mode 100644 nx-X11/lib/Xdmcp/RC16.c delete mode 100644 nx-X11/lib/Xdmcp/RC32.c delete mode 100644 nx-X11/lib/Xdmcp/RC8.c delete mode 100644 nx-X11/lib/Xdmcp/RHead.c delete mode 100644 nx-X11/lib/Xdmcp/RR.c delete mode 100644 nx-X11/lib/Xdmcp/RaA16.c delete mode 100644 nx-X11/lib/Xdmcp/RaA32.c delete mode 100644 nx-X11/lib/Xdmcp/RaA8.c delete mode 100644 nx-X11/lib/Xdmcp/RaAoA8.c delete mode 100644 nx-X11/lib/Xdmcp/Unwrap.c delete mode 100644 nx-X11/lib/Xdmcp/WA16.c delete mode 100644 nx-X11/lib/Xdmcp/WA32.c delete mode 100644 nx-X11/lib/Xdmcp/WA8.c delete mode 100644 nx-X11/lib/Xdmcp/WAofA8.c delete mode 100644 nx-X11/lib/Xdmcp/WC16.c delete mode 100644 nx-X11/lib/Xdmcp/WC32.c delete mode 100644 nx-X11/lib/Xdmcp/WC8.c delete mode 100644 nx-X11/lib/Xdmcp/Whead.c delete mode 100644 nx-X11/lib/Xdmcp/Wrap.c delete mode 100644 nx-X11/lib/Xdmcp/Wrap.h delete mode 100644 nx-X11/lib/Xdmcp/Wraphelp.README.crypto delete mode 100644 nx-X11/lib/Xdmcp/Wraphelp.c delete mode 100644 nx-X11/lib/Xdmcp/Xdmcp.h rename nx-X11/lib/{Xcursor => Xrender}/config-subst (100%) delete mode 100644 nx-X11/lib/font/Imakefile delete mode 100644 nx-X11/lib/font/Speedo/Imakefile delete mode 100644 nx-X11/lib/font/Speedo/adobe-iso.h delete mode 100644 nx-X11/lib/font/Speedo/bics-iso.h delete mode 100644 nx-X11/lib/font/Speedo/bics-unicode.c delete mode 100644 nx-X11/lib/font/Speedo/bics-unicode.h delete mode 100644 nx-X11/lib/font/Speedo/do_char.c delete mode 100644 nx-X11/lib/font/Speedo/do_trns.c delete mode 100644 nx-X11/lib/font/Speedo/htest.c delete mode 100644 nx-X11/lib/font/Speedo/iface.c delete mode 100644 nx-X11/lib/font/Speedo/keys.h delete mode 100644 nx-X11/lib/font/Speedo/module/Imakefile delete mode 100644 nx-X11/lib/font/Speedo/module/speedomod.c delete mode 100644 nx-X11/lib/font/Speedo/nsample.c delete mode 100644 nx-X11/lib/font/Speedo/out_bl2d.c delete mode 100644 nx-X11/lib/font/Speedo/out_blk.c delete mode 100644 nx-X11/lib/font/Speedo/out_outl.c delete mode 100644 nx-X11/lib/font/Speedo/out_scrn.c delete mode 100644 nx-X11/lib/font/Speedo/out_util.c delete mode 100644 nx-X11/lib/font/Speedo/reset.c delete mode 100644 nx-X11/lib/font/Speedo/set_spcs.c delete mode 100644 nx-X11/lib/font/Speedo/set_trns.c delete mode 100644 nx-X11/lib/font/Speedo/spdo_prv.h delete mode 100644 nx-X11/lib/font/Speedo/speedo.h delete mode 100644 nx-X11/lib/font/Speedo/spencode.c delete mode 100644 nx-X11/lib/font/Speedo/sperr.c delete mode 100644 nx-X11/lib/font/Speedo/spfile.c delete mode 100644 nx-X11/lib/font/Speedo/spfont.c delete mode 100644 nx-X11/lib/font/Speedo/spfuncs.c delete mode 100644 nx-X11/lib/font/Speedo/spglyph.c delete mode 100644 nx-X11/lib/font/Speedo/spinfo.c delete mode 100644 nx-X11/lib/font/Speedo/spint.h delete mode 100644 nx-X11/lib/font/Speedo/sptobdf.c delete mode 100644 nx-X11/lib/font/Speedo/useropt.h delete mode 100644 nx-X11/lib/font/Type1/AFM.h delete mode 100644 nx-X11/lib/font/Type1/Imakefile delete mode 100644 nx-X11/lib/font/Type1/afm.c delete mode 100644 nx-X11/lib/font/Type1/arith.c delete mode 100644 nx-X11/lib/font/Type1/arith.h delete mode 100644 nx-X11/lib/font/Type1/blues.h delete mode 100644 nx-X11/lib/font/Type1/cidchar.c delete mode 100644 nx-X11/lib/font/Type1/cluts.h delete mode 100644 nx-X11/lib/font/Type1/curves.c delete mode 100644 nx-X11/lib/font/Type1/curves.h delete mode 100644 nx-X11/lib/font/Type1/digit.h delete mode 100644 nx-X11/lib/font/Type1/fontfcn.c delete mode 100644 nx-X11/lib/font/Type1/fontfcn.h delete mode 100644 nx-X11/lib/font/Type1/fonts.h delete mode 100644 nx-X11/lib/font/Type1/hdigit.h delete mode 100644 nx-X11/lib/font/Type1/hints.c delete mode 100644 nx-X11/lib/font/Type1/hints.h delete mode 100644 nx-X11/lib/font/Type1/lines.c delete mode 100644 nx-X11/lib/font/Type1/lines.h delete mode 100644 nx-X11/lib/font/Type1/minimain.c delete mode 100644 nx-X11/lib/font/Type1/module/Imakefile delete mode 100644 nx-X11/lib/font/Type1/module/type1mod.c delete mode 100644 nx-X11/lib/font/Type1/objects.c delete mode 100644 nx-X11/lib/font/Type1/objects.h delete mode 100644 nx-X11/lib/font/Type1/paths.c delete mode 100644 nx-X11/lib/font/Type1/paths.h delete mode 100644 nx-X11/lib/font/Type1/pictures.h delete mode 100644 nx-X11/lib/font/Type1/range.h delete mode 100644 nx-X11/lib/font/Type1/regions.c delete mode 100644 nx-X11/lib/font/Type1/regions.h delete mode 100644 nx-X11/lib/font/Type1/scanfont.c delete mode 100644 nx-X11/lib/font/Type1/spaces.c delete mode 100644 nx-X11/lib/font/Type1/spaces.h delete mode 100644 nx-X11/lib/font/Type1/strokes.h delete mode 100644 nx-X11/lib/font/Type1/t1funcs.c delete mode 100644 nx-X11/lib/font/Type1/t1hdigit.h delete mode 100644 nx-X11/lib/font/Type1/t1imager.h delete mode 100644 nx-X11/lib/font/Type1/t1info.c delete mode 100644 nx-X11/lib/font/Type1/t1intf.h delete mode 100644 nx-X11/lib/font/Type1/t1io.c delete mode 100644 nx-X11/lib/font/Type1/t1malloc.c delete mode 100644 nx-X11/lib/font/Type1/t1snap.c delete mode 100644 nx-X11/lib/font/Type1/t1stdio.h delete mode 100644 nx-X11/lib/font/Type1/t1stub.c delete mode 100644 nx-X11/lib/font/Type1/t1test.c delete mode 100644 nx-X11/lib/font/Type1/t1unicode.c delete mode 100644 nx-X11/lib/font/Type1/t1unicode.h delete mode 100644 nx-X11/lib/font/Type1/token.c delete mode 100644 nx-X11/lib/font/Type1/token.h delete mode 100644 nx-X11/lib/font/Type1/tokst.h delete mode 100644 nx-X11/lib/font/Type1/trig.h delete mode 100644 nx-X11/lib/font/Type1/type1.c delete mode 100644 nx-X11/lib/font/Type1/util.c delete mode 100644 nx-X11/lib/font/Type1/util.h delete mode 100644 nx-X11/lib/font/bitmap/Imakefile delete mode 100644 nx-X11/lib/font/bitmap/bdfint.h delete mode 100644 nx-X11/lib/font/bitmap/bdfread.c delete mode 100644 nx-X11/lib/font/bitmap/bdfutils.c delete mode 100644 nx-X11/lib/font/bitmap/bitmap.c delete mode 100644 nx-X11/lib/font/bitmap/bitmapfunc.c delete mode 100644 nx-X11/lib/font/bitmap/bitmaputil.c delete mode 100644 nx-X11/lib/font/bitmap/bitscale.c delete mode 100644 nx-X11/lib/font/bitmap/fontink.c delete mode 100644 nx-X11/lib/font/bitmap/module/Imakefile delete mode 100644 nx-X11/lib/font/bitmap/module/bitmapmod.c delete mode 100644 nx-X11/lib/font/bitmap/pcf.h delete mode 100644 nx-X11/lib/font/bitmap/pcfread.c delete mode 100644 nx-X11/lib/font/bitmap/pcfwrite.c delete mode 100644 nx-X11/lib/font/bitmap/snfread.c delete mode 100644 nx-X11/lib/font/bitmap/snfstr.h delete mode 100644 nx-X11/lib/font/builtins/Imakefile delete mode 100644 nx-X11/lib/font/builtins/buildfont delete mode 100644 nx-X11/lib/font/builtins/builtin.h delete mode 100644 nx-X11/lib/font/builtins/dir.c delete mode 100644 nx-X11/lib/font/builtins/file.c delete mode 100644 nx-X11/lib/font/builtins/fonts.c delete mode 100644 nx-X11/lib/font/builtins/fpe.c delete mode 100644 nx-X11/lib/font/builtins/render.c delete mode 100644 nx-X11/lib/font/fc/Imakefile delete mode 100644 nx-X11/lib/font/fc/fsconvert.c delete mode 100644 nx-X11/lib/font/fc/fserve.c delete mode 100644 nx-X11/lib/font/fc/fserve.h delete mode 100644 nx-X11/lib/font/fc/fservestr.h delete mode 100644 nx-X11/lib/font/fc/fsio.c delete mode 100644 nx-X11/lib/font/fc/fsio.h delete mode 100644 nx-X11/lib/font/fc/fsio.h.NX.reference delete mode 100644 nx-X11/lib/font/fc/fsio.h.XF86.reference delete mode 100644 nx-X11/lib/font/fc/fslibos.h delete mode 100644 nx-X11/lib/font/fontcache/Imakefile delete mode 100644 nx-X11/lib/font/fontcache/fcqueue.h delete mode 100644 nx-X11/lib/font/fontcache/fontcache.c delete mode 100644 nx-X11/lib/font/fontcache/fontcache.h delete mode 100644 nx-X11/lib/font/fontfile/Imakefile delete mode 100644 nx-X11/lib/font/fontfile/bitsource.c delete mode 100644 nx-X11/lib/font/fontfile/bufio.c delete mode 100644 nx-X11/lib/font/fontfile/decompress.c delete mode 100644 nx-X11/lib/font/fontfile/defaults.c delete mode 100644 nx-X11/lib/font/fontfile/dirfile.c delete mode 100644 nx-X11/lib/font/fontfile/encparse.c delete mode 100644 nx-X11/lib/font/fontfile/ffcheck.c delete mode 100644 nx-X11/lib/font/fontfile/fileio.c delete mode 100644 nx-X11/lib/font/fontfile/filewr.c delete mode 100644 nx-X11/lib/font/fontfile/fontdir.c delete mode 100644 nx-X11/lib/font/fontfile/fontenc.c delete mode 100644 nx-X11/lib/font/fontfile/fontencI.h delete mode 100644 nx-X11/lib/font/fontfile/fontencc.c delete mode 100644 nx-X11/lib/font/fontfile/fontfile.c delete mode 100644 nx-X11/lib/font/fontfile/fontscale.c delete mode 100644 nx-X11/lib/font/fontfile/gunzip.c delete mode 100644 nx-X11/lib/font/fontfile/module/Imakefile delete mode 100644 nx-X11/lib/font/fontfile/printerfont.c delete mode 100644 nx-X11/lib/font/fontfile/register.c delete mode 100644 nx-X11/lib/font/fontfile/renderers.c delete mode 100644 nx-X11/lib/font/include/Imakefile delete mode 100644 nx-X11/lib/font/include/bitmap.h delete mode 100644 nx-X11/lib/font/include/bufio.h delete mode 100644 nx-X11/lib/font/include/fntfil.h delete mode 100644 nx-X11/lib/font/include/fntfilio.h delete mode 100644 nx-X11/lib/font/include/fntfilst.h delete mode 100644 nx-X11/lib/font/include/fontencc.h delete mode 100644 nx-X11/lib/font/include/fontmisc.h delete mode 100644 nx-X11/lib/font/include/fontmod.h delete mode 100644 nx-X11/lib/font/include/fontshow.h delete mode 100644 nx-X11/lib/font/include/fontutil.h delete mode 100644 nx-X11/lib/font/include/fontxlfd.h delete mode 100644 nx-X11/lib/font/stubs/Imakefile delete mode 100644 nx-X11/lib/font/stubs/cauthgen.c delete mode 100644 nx-X11/lib/font/stubs/csignal.c delete mode 100644 nx-X11/lib/font/stubs/delfntcid.c delete mode 100644 nx-X11/lib/font/stubs/errorf.c delete mode 100644 nx-X11/lib/font/stubs/fatalerror.c delete mode 100644 nx-X11/lib/font/stubs/findoldfnt.c delete mode 100644 nx-X11/lib/font/stubs/getcres.c delete mode 100644 nx-X11/lib/font/stubs/getdefptsize.c delete mode 100644 nx-X11/lib/font/stubs/getnewfntcid.c delete mode 100644 nx-X11/lib/font/stubs/gettime.c delete mode 100644 nx-X11/lib/font/stubs/initfshdl.c delete mode 100644 nx-X11/lib/font/stubs/regfpefunc.c delete mode 100644 nx-X11/lib/font/stubs/rmfshdl.c delete mode 100644 nx-X11/lib/font/stubs/servclient.c delete mode 100644 nx-X11/lib/font/stubs/setfntauth.c delete mode 100644 nx-X11/lib/font/stubs/stfntcfnt.c delete mode 100644 nx-X11/lib/font/stubs/stubs.h delete mode 100644 nx-X11/lib/font/stubs/xpstubs.c delete mode 100644 nx-X11/lib/font/util/Imakefile delete mode 100644 nx-X11/lib/font/util/atom.c delete mode 100644 nx-X11/lib/font/util/fontaccel.c delete mode 100644 nx-X11/lib/font/util/fontnames.c delete mode 100644 nx-X11/lib/font/util/fontutil.c delete mode 100644 nx-X11/lib/font/util/fontxlfd.c delete mode 100644 nx-X11/lib/font/util/format.c delete mode 100644 nx-X11/lib/font/util/miscutil.c delete mode 100644 nx-X11/lib/font/util/patcache.c delete mode 100644 nx-X11/lib/font/util/private.c delete mode 100644 nx-X11/lib/font/util/utilbitmap.c delete mode 100644 nx-X11/programs/Xserver/Xext/dmx.c delete mode 100644 nx-X11/programs/Xserver/Xext/xprint.c delete mode 100644 nx-X11/programs/Xserver/hw/Imakefile delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/NXcompositeint.h delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/NXcompositeproto.h delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 9c46d3ddb4394126408a557af98ea9766c554059 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Mar 3 12:09:06 2015 +0100 imake cleanup: Drop all references to XWinServer. --- nx-X11/config/cf/host.def | 1 - nx-X11/lib/X11/Imakefile | 2 +- nx-X11/programs/Xserver/Imakefile | 99 +------------------------------------ 3 files changed, 3 insertions(+), 99 deletions(-) diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index 9b482c6..1d03cf0 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -149,7 +149,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ #if defined(cygwinArchitecture) #define NXWinServer NO -#define XWinServer NO #endif /* diff --git a/nx-X11/lib/X11/Imakefile b/nx-X11/lib/X11/Imakefile index 9f0b682..0437af1 100644 --- a/nx-X11/lib/X11/Imakefile +++ b/nx-X11/lib/X11/Imakefile @@ -27,7 +27,7 @@ XCOMM $XFree86: xc/lib/X11/Imakefile,v 3.52 2003/05/27 16:53:15 tsi Exp $ HEADERS = Xlib.h Xresource.h Xutil.h cursorfont.h Xlibint.h \ Xcms.h Xlocale.h XKBlib.h XlibConf.h Xregion.h ImUtil.h -#if BuildServersOnly && !XWinServer && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !NXAgentServer +#if BuildServersOnly && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !NXAgentServer all:: BuildIncludes($(HEADERS),IncSubdir,..) diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index d18364b..3e9f001 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -551,9 +551,6 @@ XVFB = Xvfb #if XdmxServer XDMX = Xdmx #endif -#if defined(XWinServer) && XWinServer && !MakeDllModules -XWIN = XWin -#endif #if defined(NXAgentServer) && NXAgentServer NXAGENT = nxagent #endif @@ -566,9 +563,8 @@ NXWIN = NXWin (defined(NXAgentServer) && NXAgentServer) || \ (defined(XVirtualFramebufferServer) && XVirtualFramebufferServer) || \ (defined(XdmxServer) && XdmxServer) || \ - (!MakeDllModules && defined(XWinServer) && XWinServer) || \ (!MakeDllModules && defined(NXWinServer) && NXWinServer) -MakeMutex($(XF86SERVER) $(XNEST) $(XVFB) $(XWIN) $(NXAGENT) $(NXWIN)) +MakeMutex($(XF86SERVER) $(XNEST) $(XVFB) $(NXAGENT) $(NXWIN)) #endif MakeMutex($(STDDIRS) mfb fb cfb cfb16 cfb24 cfb32) #endif @@ -1177,97 +1173,6 @@ ServerTarget(Xdmx,$(XDMXDIRS),$(XDMXOBJS), \ $(LIBCWRAPPER) $(XDMXLIBS) $(LOADABLEEXTS),$(XDMXSYSLIBS)) #endif /* XdmxServer */ -#if defined(XWinServer) && XWinServer -XCOMM -XCOMM X Server for MS Windows -XCOMM -FBSUBDIR = fb -MIDAMAGEDIR = miext/damage -SHADOWDIR = miext/shadow -#if BuildXWinLayer -LAYERDIR = miext/layer -XWINLAYERLIB = $(LAYER) -#else -LAYERDIR = -XWINLAYERLIB = -#endif -#if BuildXWinMultiWindowExtWM -ROOTLESSDIR = miext/rootless -ROOTLESSLIB = $(ROOTLESSDIR)/LibraryTargetName(rootless) \ - $(ROOTLESSDIR)/safeAlpha/LibraryTargetName(safeAlpha) \ - $(ROOTLESSDIR)/accel/LibraryTargetName(rlAccel) -#else -ROOTLESSDIR = -ROOTLESSLIB = -#endif -XWINDDXDIR = hw/xwin -#if BuildXWinXF86Config -XWINPARSERDIR = hw/xfree86/parser -XWINPARSERLIB = $(XWINPARSERDIR)/LibraryTargetName(xf86config) -#else -XWINPARSERDIR = -XWINPARSERLIB = -#endif -#if defined(GlxUseWindows) && GlxUseWindows -XWINOPENGLLIB = -lopengl32 -#else -XWINOPENGLLIB = -#endif - -XWINLIB = $(XWINDDXDIR)/LibraryTargetName(XWin) -XWINDIRS = $(STDDIRS) $(FBDIR) $(SHADOWDIR) $(LAYERDIR) $(XWINDDXDIR) \ - $(DEPDIRS) $(XWINPARSERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) -XWINOBJS = $(XWINDDXDIR)/stubs.o $(XWINDDXDIR)/XWin.res -XWINLIBS = PreFbLibs $(XWINLIB) FbPostFbLibs $(XWINLIB) $(XWINLAYERLIB) \ - $(SHADOW) $(XWINPARSERLIB) $(ROOTLESSLIB) $(OS) -#if BuildXWinMultiWindow || BuildXWinClipboard -XWINX11 = $(XONLYLIB) -# if defined(Win32Architecture) -PTHREADLIB = -lpthreadGC2 -# endif -#endif -#if defined(Win32Architecture) -# if defined(GlxUseWindows) && GlxUseWindows -XWINGL32 = -lopengl32 -# endif -XWINW32 = -lgdi32 -lwsock32 $(XWINGL32) $(PTHREADLIB) -#else -XWINW32 = -lgdi32 -#endif -XWINSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XWINX11) $(SYSLIBS) $(XWINW32) - -EXTRA_LDOPTIONS = -e _mainCRTStartup - -#if HasParallelMake -MakeMutex($(XWINDIRS) $(XWINOBJS) $(XWINLIB) $(XWINLIBS) $(XWINSYSLIBS)) -#endif - -#if ForceServerRemake -$(XWINOBJS) $(XWINLIB) $(XWINLIBS) $(XWINSYSLIBS):: $(XWINDIRS) - @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi -#endif - -#ifdef mingwArchitecture -XWINSERVERNAME=Xming -XWINGLSERVERNAME=XmingGL -#else -XWINSERVERNAME=XWin -XWINGLSERVERNAME=XWin_GL -#endif -ServerTarget($(XWINSERVERNAME),$(XWINDIRS),$(XWINOBJS), \ - $(LIBCWRAPPER) $(XWINLIBS) $(LOADABLEEXTS),$(XWINSYSLIBS)) -#if defined(cygwinArchitecture) && defined(GlxUseWindows) && GlxUseWindows -ServerTarget($(XWINGLSERVERNAME),$(XWINDIRS),$(XWINOBJS), \ - $(LIBCWRAPPER) $(XWINLIBS) $(LOADABLEEXTS),$(XWINSYSLIBS) \ - $(XWINOPENGLLIB)) -#endif - -#ifndef ServerToInstall -# define ServerToInstall $(XWINSERVERNAME) -#endif - -#endif /* XWinServer */ - #if defined(NXWinServer) && NXWinServer XCOMM @@ -1542,7 +1447,7 @@ CFBSUBDIRS = $(CFB8SUBDIR) $(CFB16SUBDIR) $(CFB24SUBDIR) $(CFB32SUBDIR) MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR) DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) $(LYNXDDXDIR) \ - $(HPDDXDIR) $(XFREE86DDXDIR) $(XWINDDXDIR) $(DARWINDDXDIR) \ + $(HPDDXDIR) $(XFREE86DDXDIR) $(DARWINDDXDIR) \ $(XVFBDDXDIR) $(XNESTDDXDIR) $(XDMXDDXDIR) $(NXAGENTDDXDIR) $(NXWINDDXDIR) SUBDIRS = $(STDDIRS) $(MFBSUBDIR) $(CFBSUBDIRS) \ $(IPLANDIRS) $(ILBMDIR) $(AFBSUBDIR) \ -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 6471f66c99864dd95a7c4f866825fcb9f8fd3a33 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Mar 3 12:13:59 2015 +0100 imake cleanup: Drop all references to XNestServer. --- nx-X11/config/cf/README | 1 - nx-X11/config/cf/X11.tmpl | 4 ++-- nx-X11/config/cf/host.def | 10 +------- nx-X11/config/cf/xf86site.def | 6 ----- nx-X11/config/cf/xfree86.cf | 3 --- nx-X11/config/cf/xorg.cf | 3 --- nx-X11/config/cf/xorgsite.def | 6 ----- nx-X11/lib/X11/Imakefile | 2 +- nx-X11/programs/Xserver/Imakefile | 42 ++-------------------------------- nx-X11/programs/Xserver/hw/Imakefile | 6 +---- 10 files changed, 7 insertions(+), 76 deletions(-) diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index c4c5f59..762dce4 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -461,7 +461,6 @@ The following variables are used by some part of the tree: SvgaConfig default SVGA configuration HasGetReturnAddress util/memleak HasShadowPasswd system has getspnam() function - XnestServer build X server with Xlib-based ddx XVirtualFramebufferServer build X server with virtual memory framebuffer WebServer host:port of your Web server (see programs/xrx) HtmlDir path used by Web server for HTML and RX docs diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl index 4600f18..7321843 100644 --- a/nx-X11/config/cf/X11.tmpl +++ b/nx-X11/config/cf/X11.tmpl @@ -386,7 +386,7 @@ XORGRELSTRING = XorgManVersionString #else #define BuildFontLib (BuildLibraries || \ (BuildServer && !DoLoadableServer) || \ - XnestServer || XVirtualFramebufferServer || \ + XVirtualFramebufferServer || \ XprtServer || XdmxServer) #endif #endif @@ -420,7 +420,7 @@ XORGRELSTRING = XorgManVersionString #endif #ifndef BuildXKBlib #define BuildXKBlib (BuildXKB && (!BuildServersOnly || \ - XnestServer || XdmxServer || \ + XdmxServer || \ BuildXkbcomp )) #endif #ifndef BuildXKBuilib diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index 1d03cf0..1f70509 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -76,13 +76,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define XorgServer NO /* - * To disable building the Xnest server, uncomment this. - * -#define XnestServer NO - */ -#define XnestServer NO - -/* * To disable building Xvfb, uncomment this. * #define XVirtualFramebufferServer NO @@ -167,7 +160,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ * #define BuildLibrariesForXServers YES */ -#if XnestServer || NXAgentServer +#if NXAgentServer #define BuildLibraries YES #endif @@ -972,7 +965,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define DefaultRGBDatabase /usr/NX/share/rgb #define XprtServer NO #define BuildXprint NO -#define XnestServer NO #define XVirtualFramebufferServer NO #define BuildFontServer NO #define BuildFreeType NO diff --git a/nx-X11/config/cf/xf86site.def b/nx-X11/config/cf/xf86site.def index d445c1c..6fc5e66 100644 --- a/nx-X11/config/cf/xf86site.def +++ b/nx-X11/config/cf/xf86site.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building the Xnest server, uncomment this. - * -#define XnestServer NO - */ - -/* * To disable building Xvfb, uncomment this. * #define XVirtualFramebufferServer NO diff --git a/nx-X11/config/cf/xfree86.cf b/nx-X11/config/cf/xfree86.cf index f7c151c..306586d 100644 --- a/nx-X11/config/cf/xfree86.cf +++ b/nx-X11/config/cf/xfree86.cf @@ -1876,9 +1876,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 # define UseServerLock YES #endif -#ifndef XnestServer -# define XnestServer YES -#endif #ifndef XVirtualFramebufferServer # define XVirtualFramebufferServer YES #endif diff --git a/nx-X11/config/cf/xorg.cf b/nx-X11/config/cf/xorg.cf index 71dab56..17fcb7a 100644 --- a/nx-X11/config/cf/xorg.cf +++ b/nx-X11/config/cf/xorg.cf @@ -1441,9 +1441,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 # define UseServerLock YES #endif -#ifndef XnestServer -# define XnestServer YES -#endif #ifndef XVirtualFramebufferServer # define XVirtualFramebufferServer YES #endif diff --git a/nx-X11/config/cf/xorgsite.def b/nx-X11/config/cf/xorgsite.def index dea5ceb..db4a1e4 100644 --- a/nx-X11/config/cf/xorgsite.def +++ b/nx-X11/config/cf/xorgsite.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building the Xnest server, uncomment this. - * -#define XnestServer NO - */ - -/* * To disable building Xvfb, uncomment this. * #define XVirtualFramebufferServer NO diff --git a/nx-X11/lib/X11/Imakefile b/nx-X11/lib/X11/Imakefile index 0437af1..ca6ce96 100644 --- a/nx-X11/lib/X11/Imakefile +++ b/nx-X11/lib/X11/Imakefile @@ -27,7 +27,7 @@ XCOMM $XFree86: xc/lib/X11/Imakefile,v 3.52 2003/05/27 16:53:15 tsi Exp $ HEADERS = Xlib.h Xresource.h Xutil.h cursorfont.h Xlibint.h \ Xcms.h Xlocale.h XKBlib.h XlibConf.h Xregion.h ImUtil.h -#if BuildServersOnly && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !NXAgentServer +#if BuildServersOnly && !BuildGLXLibrary && !BuildClients && !XdmxServer && !NXAgentServer all:: BuildIncludes($(HEADERS),IncSubdir,..) diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index 3e9f001..7cf4386 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -542,9 +542,6 @@ XF86SERVER = XFree86 #if defined(XorgServer) && XorgServer XF86SERVER = Xorg #endif -#if defined(XnestServer) && XnestServer -XNEST = Xnext -#endif #if defined(XVirtualFramebufferServer) && XVirtualFramebufferServer XVFB = Xvfb #endif @@ -559,12 +556,11 @@ NXWIN = NXWin #endif #if (defined(XF86Server) && XF86Server) || \ (defined(XorgServer) && XorgServer) || \ - (defined(XnestServer) && XnestServer) || \ (defined(NXAgentServer) && NXAgentServer) || \ (defined(XVirtualFramebufferServer) && XVirtualFramebufferServer) || \ (defined(XdmxServer) && XdmxServer) || \ (!MakeDllModules && defined(NXWinServer) && NXWinServer) -MakeMutex($(XF86SERVER) $(XNEST) $(XVFB) $(NXAGENT) $(NXWIN)) +MakeMutex($(XF86SERVER) $(XVFB) $(NXAGENT) $(NXWIN)) #endif MakeMutex($(STDDIRS) mfb fb cfb cfb16 cfb24 cfb32) #endif @@ -879,40 +875,6 @@ ServerTarget(Xprt,$(XPSUBDIRS),$(XPOBJS), \ $(LIBCWRAPPER) $(XPLIBS) $(LOADABLEEXTS),$(XPSYSLIBS)) #endif /* XprtServer */ -#if defined(XnestServer) && XnestServer -XCOMM -XCOMM Server with Xlib-based ddx -XCOMM -#ifndef Win32Architecture -XNESTDDXDIR = hw/xnest -#else -XNESTDDXDIR = hw -#endif -#if BuildDPMS -XNESTDPMSSTUBOBJS = $(XNESTDDXDIR)/dpmsstubs.o -#endif -XNESTDIRS = $(STDDIRS) $(XNESTDDXDIR) $(DEPDIRS) -#if !defined(LynxOSArchitecture) && \ - !defined(Win32Architecture) && \ - !defined(QNX4Architecture) -XNESTOBJS = hw/xnest/miinitext.o $(XNESTDPMSSTUBOBJS) -#else -XNESTOBJS = hw/xnest/miinitext.o dix/main.o $(XNESTDPMSSTUBOBJS) -#endif -XNEST = hw/xnest/LibraryTargetName(xnest) -XNESTLIBS = PreFbLibs $(XNEST) NoMfbPostFbLibs $(XNEST) -XNESTSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XLIB) $(SYSLIBS) -#if HasParallelMake -MakeMutex($(XNESTDIRS) $(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS)) -#endif -#if ForceServerRemake -$(XNESTOBJS) $(XNESTLIBS) $(XNESTSYSLIBS):: $(XNESTDIRS) - @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi -#endif -ServerTarget(Xnest,$(XNESTDIRS),$(XNESTOBJS) $(XNESTDEFFILE), \ - $(LIBCWRAPPER) $(XNESTLIBS) $(LOADABLEEXTS),$(XNESTSYSLIBS)) -#endif /* XnestServer */ - #if defined(NXAgentServer) && NXAgentServer XCOMM XCOMM Nested server with NXlib-based ddx and compressed transport. @@ -1448,7 +1410,7 @@ MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR) DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) $(LYNXDDXDIR) \ $(HPDDXDIR) $(XFREE86DDXDIR) $(DARWINDDXDIR) \ - $(XVFBDDXDIR) $(XNESTDDXDIR) $(XDMXDDXDIR) $(NXAGENTDDXDIR) $(NXWINDDXDIR) + $(XVFBDDXDIR) $(XDMXDDXDIR) $(NXAGENTDDXDIR) $(NXWINDDXDIR) SUBDIRS = $(STDDIRS) $(MFBSUBDIR) $(CFBSUBDIRS) \ $(IPLANDIRS) $(ILBMDIR) $(AFBSUBDIR) \ $(DDXDIRS) $(FBSUBDIR) $(KDRIVEDIRS) $(MIEXTDIRS) diff --git a/nx-X11/programs/Xserver/hw/Imakefile b/nx-X11/programs/Xserver/hw/Imakefile index 6ea7f00..465b2d2 100644 --- a/nx-X11/programs/Xserver/hw/Imakefile +++ b/nx-X11/programs/Xserver/hw/Imakefile @@ -6,10 +6,6 @@ XCOMM This is only used on NT where we do not know how to jump over this dir #define IHaveSubdirs #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)" -#if XnestServer -XNESTDIR = xnest -#endif - #if XVirtualFramebufferServer XVFBDIR = vfb #endif @@ -18,7 +14,7 @@ XVFBDIR = vfb XDMXDIR = dmx #endif -SUBDIRS= $(XNESTDIR) $(XVFBDIR) $(XDMXDIR) +SUBDIRS= $(XVFBDIR) $(XDMXDIR) MakeSubdirs($(SUBDIRS)) DependSubdirs($(SUBDIRS)) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit b1fc73ad4d6042b1213aa9e28c9fca05e7b0409e Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Mar 3 12:30:51 2015 +0100 imake cleanup: Drop all references to XVirtualFramebufferServer. --- nx-X11/config/cf/README | 1 - nx-X11/config/cf/X11.tmpl | 1 - nx-X11/config/cf/host.def | 8 ------- nx-X11/config/cf/xf86site.def | 6 ----- nx-X11/config/cf/xfree86.cf | 3 --- nx-X11/config/cf/xorg.cf | 4 ---- nx-X11/config/cf/xorgsite.def | 6 ----- nx-X11/programs/Xserver/Imakefile | 42 ++-------------------------------- nx-X11/programs/Xserver/hw/Imakefile | 6 +---- 9 files changed, 3 insertions(+), 74 deletions(-) diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index 762dce4..8317ef4 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -461,7 +461,6 @@ The following variables are used by some part of the tree: SvgaConfig default SVGA configuration HasGetReturnAddress util/memleak HasShadowPasswd system has getspnam() function - XVirtualFramebufferServer build X server with virtual memory framebuffer WebServer host:port of your Web server (see programs/xrx) HtmlDir path used by Web server for HTML and RX docs CgiBinDir path used by Web server for CGI programs diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl index 7321843..38e6271 100644 --- a/nx-X11/config/cf/X11.tmpl +++ b/nx-X11/config/cf/X11.tmpl @@ -386,7 +386,6 @@ XORGRELSTRING = XorgManVersionString #else #define BuildFontLib (BuildLibraries || \ (BuildServer && !DoLoadableServer) || \ - XVirtualFramebufferServer || \ XprtServer || XdmxServer) #endif #endif diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index 1f70509..28f0e3a 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -76,13 +76,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define XorgServer NO /* - * To disable building Xvfb, uncomment this. - * -#define XVirtualFramebufferServer NO - */ -#define XVirtualFramebufferServer NO - -/* * To enable building Xdmx, uncomment this. * #define XdmxServer YES @@ -965,7 +958,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define DefaultRGBDatabase /usr/NX/share/rgb #define XprtServer NO #define BuildXprint NO -#define XVirtualFramebufferServer NO #define BuildFontServer NO #define BuildFreeType NO #define BuildXTrueType NO diff --git a/nx-X11/config/cf/xf86site.def b/nx-X11/config/cf/xf86site.def index 6fc5e66..4cdf0d8 100644 --- a/nx-X11/config/cf/xf86site.def +++ b/nx-X11/config/cf/xf86site.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building Xvfb, uncomment this. - * -#define XVirtualFramebufferServer NO - */ - -/* * To enable building Xdmx, uncomment this. * #define XdmxServer YES diff --git a/nx-X11/config/cf/xfree86.cf b/nx-X11/config/cf/xfree86.cf index 306586d..ea82a9d 100644 --- a/nx-X11/config/cf/xfree86.cf +++ b/nx-X11/config/cf/xfree86.cf @@ -1876,9 +1876,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 # define UseServerLock YES #endif -#ifndef XVirtualFramebufferServer -# define XVirtualFramebufferServer YES -#endif #ifndef XprtServer # define XprtServer YES #endif diff --git a/nx-X11/config/cf/xorg.cf b/nx-X11/config/cf/xorg.cf index 17fcb7a..6b48242 100644 --- a/nx-X11/config/cf/xorg.cf +++ b/nx-X11/config/cf/xorg.cf @@ -1441,10 +1441,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 # define UseServerLock YES #endif -#ifndef XVirtualFramebufferServer -# define XVirtualFramebufferServer YES -#endif - #ifndef ServerExtraDefines # define ServerExtraDefines XFree86ServerDefines #endif diff --git a/nx-X11/config/cf/xorgsite.def b/nx-X11/config/cf/xorgsite.def index db4a1e4..ad9bfd8 100644 --- a/nx-X11/config/cf/xorgsite.def +++ b/nx-X11/config/cf/xorgsite.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building Xvfb, uncomment this. - * -#define XVirtualFramebufferServer NO - */ - -/* * To enable building Xdmx, uncomment this. * #define XdmxServer YES diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index 7cf4386..b39b0b9 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -542,9 +542,6 @@ XF86SERVER = XFree86 #if defined(XorgServer) && XorgServer XF86SERVER = Xorg #endif -#if defined(XVirtualFramebufferServer) && XVirtualFramebufferServer -XVFB = Xvfb -#endif #if XdmxServer XDMX = Xdmx #endif @@ -557,10 +554,9 @@ NXWIN = NXWin #if (defined(XF86Server) && XF86Server) || \ (defined(XorgServer) && XorgServer) || \ (defined(NXAgentServer) && NXAgentServer) || \ - (defined(XVirtualFramebufferServer) && XVirtualFramebufferServer) || \ (defined(XdmxServer) && XdmxServer) || \ (!MakeDllModules && defined(NXWinServer) && NXWinServer) -MakeMutex($(XF86SERVER) $(XVFB) $(NXAGENT) $(NXWIN)) +MakeMutex($(XF86SERVER) $(NXAGENT) $(NXWIN)) #endif MakeMutex($(STDDIRS) mfb fb cfb cfb16 cfb24 cfb32) #endif @@ -1054,40 +1050,6 @@ Xnon: $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(CFB32DIR) $(DEPDIRS) #endif /* XnonServer */ -#if defined(XVirtualFramebufferServer) && XVirtualFramebufferServer -XCOMM -XCOMM server with Virtual (malloced) framebuffer -XCOMM -MFBSUBDIR = mfb -FBSUBDIR = fb -#if defined(Win32Architecture) -XVFBDDXDIR = hw -#else -XVFBDDXDIR = hw/vfb -#endif -XVFBDIRS = $(STDDIRS) $(MFBDIR) $(FBDIR) $(XVFBDDXDIR) $(DEPDIRS) -#ifndef Win32Architecture -#if BuildDPMS -XVFBDPMSSTUBOBJS = $(XVFBDDXDIR)/dpmsstubs.o -#endif -XVFBOBJS = $(XVFBDDXDIR)/stubs.o $(XVFBDDXDIR)/miinitext.o $(XVFBDPMSSTUBOBJS) -#else -XVFBOBJS = dix/main.o hw/vfb/stubs.o hw/vfb/miinitext.o -#endif -XVFB = $(XVFBDDXDIR)/LibraryTargetName(vfb) -XVFBLIBS = PreFbLibs $(XVFB) $(FB) PostFbLibs $(MI) -XVFBSYSLIBS = $(FONTLIBS) $(SYSLIBS) -#if HasParallelMake -MakeMutex($(XVFBDIRS) $(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS)) -#endif -#if ForceServerRemake -$(XVFBOBJS) $(XVFB) $(XVFBLIBS) $(XVFBSYSLIBS):: $(XVFBDIRS) - @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi -#endif -ServerTarget(Xvfb,$(XVFBDIRS),$(XVFBOBJS) $(XVFBDEFFILE), \ - $(LIBCWRAPPER) $(XVFBLIBS) $(LOADABLEEXTS),$(XVFBSYSLIBS)) -#endif /* XVirtualFramebufferServer */ - #if defined(XdmxServer) && XdmxServer XCOMM XCOMM distribued multihead Server @@ -1410,7 +1372,7 @@ MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR) DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) $(LYNXDDXDIR) \ $(HPDDXDIR) $(XFREE86DDXDIR) $(DARWINDDXDIR) \ - $(XVFBDDXDIR) $(XDMXDDXDIR) $(NXAGENTDDXDIR) $(NXWINDDXDIR) + $(XDMXDDXDIR) $(NXAGENTDDXDIR) $(NXWINDDXDIR) SUBDIRS = $(STDDIRS) $(MFBSUBDIR) $(CFBSUBDIRS) \ $(IPLANDIRS) $(ILBMDIR) $(AFBSUBDIR) \ $(DDXDIRS) $(FBSUBDIR) $(KDRIVEDIRS) $(MIEXTDIRS) diff --git a/nx-X11/programs/Xserver/hw/Imakefile b/nx-X11/programs/Xserver/hw/Imakefile index 465b2d2..e01dca4 100644 --- a/nx-X11/programs/Xserver/hw/Imakefile +++ b/nx-X11/programs/Xserver/hw/Imakefile @@ -6,15 +6,11 @@ XCOMM This is only used on NT where we do not know how to jump over this dir #define IHaveSubdirs #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)" -#if XVirtualFramebufferServer -XVFBDIR = vfb -#endif - #if XdmxServer XDMXDIR = dmx #endif -SUBDIRS= $(XVFBDIR) $(XDMXDIR) +SUBDIRS= $(XDMXDIR) MakeSubdirs($(SUBDIRS)) DependSubdirs($(SUBDIRS)) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit ebe00df38f264ef71dac3c73d416a74685c8cbd2 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Mar 4 08:35:50 2015 +0100 imake cleanup: Drop all references to XdmxServer and BuildXdmx*. --- debian/rules | 2 - nx-X11/config/cf/README | 1 - nx-X11/config/cf/X11.tmpl | 65 +- nx-X11/config/cf/host.def | 7 - nx-X11/config/cf/xf86site.def | 6 - nx-X11/config/cf/xorgsite.def | 6 - nx-X11/include/extensions/Imakefile | 5 +- nx-X11/include/extensions/dmxext.h | 190 ------ nx-X11/include/extensions/dmxproto.h | 446 ------------- nx-X11/lib/X11/Imakefile | 2 +- nx-X11/programs/Xserver/Imakefile | 54 +- nx-X11/programs/Xserver/Xext/Imakefile | 5 - nx-X11/programs/Xserver/Xext/dmx.c | 1133 -------------------------------- nx-X11/programs/Xserver/hw/Imakefile | 18 - nx-libs.spec | 2 - 15 files changed, 8 insertions(+), 1934 deletions(-) diff --git a/debian/rules b/debian/rules index 2375b46..d3532b3 100755 --- a/debian/rules +++ b/debian/rules @@ -59,8 +59,6 @@ override_dh_install: rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xf86dga.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xf86dga1str.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xf86mscstr.h - rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/dmxext.h - rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/dmxproto.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/bigreqstr.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xcmiscstr.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/XIproto.h diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index 8317ef4..051d587 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -465,7 +465,6 @@ The following variables are used by some part of the tree: HtmlDir path used by Web server for HTML and RX docs CgiBinDir path used by Web server for CGI programs ProxyManager ICE network ID to contact a running proxymngr - XdmxServer build Distributed Multihead X server Make Variables diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl index 38e6271..09dbc8f 100644 --- a/nx-X11/config/cf/X11.tmpl +++ b/nx-X11/config/cf/X11.tmpl @@ -138,18 +138,8 @@ XORGRELSTRING = XorgManVersionString #ifndef BuildDocs #define BuildDocs !BuildServersOnly #endif -#ifndef BuildDmx -#define BuildDmx NO -#endif -#ifndef XdmxServer -#define XdmxServer BuildDmx -#endif -#ifndef BuildLibrariesForDmx -#define BuildLibrariesForDmx XdmxServer -#endif #ifndef BuildLibraries -#define BuildLibraries (!BuildServersOnly || BuildClients || \ - BuildLibrariesForDmx) +#define BuildLibraries (!BuildServersOnly || BuildClients) #endif #ifndef BuildLibrariesForXServers #define BuildLibrariesForXServers BuildServer @@ -362,8 +352,7 @@ XORGRELSTRING = XorgManVersionString #define BuildXInputExt NO #endif #ifndef BuildXInputLib -#define BuildXInputLib (BuildXInputExt && \ - (!BuildServersOnly || BuildLibrariesForDmx)) +#define BuildXInputLib (BuildXInputExt && !BuildServersOnly) #endif #ifndef BuildEVI #define BuildEVI YES @@ -385,8 +374,7 @@ XORGRELSTRING = XorgManVersionString #define BuildFontLib (BuildLibraries || BuildServer) #else #define BuildFontLib (BuildLibraries || \ - (BuildServer && !DoLoadableServer) || \ - XprtServer || XdmxServer) + (BuildServer && !DoLoadableServer) || XprtServer) #endif #endif #ifndef BuildFontCache @@ -419,7 +407,6 @@ XORGRELSTRING = XorgManVersionString #endif #ifndef BuildXKBlib #define BuildXKBlib (BuildXKB && (!BuildServersOnly || \ - XdmxServer || \ BuildXkbcomp )) #endif #ifndef BuildXKBuilib @@ -459,13 +446,6 @@ XORGRELSTRING = XorgManVersionString #ifndef BuildXineramaLibrary #define BuildXineramaLibrary (BuildXinerama) #endif -#ifndef BuildDmxDevelTools -#define BuildDmxDevelTools NO -#endif -#ifndef BuildDmxLibrary -#define BuildDmxLibrary (BuildDmx && \ - (!BuildServersOnly || BuildDmxDevelTools)) -#endif #ifndef BuildXCSecurity #define BuildXCSecurity YES #endif @@ -550,8 +530,7 @@ XORGRELSTRING = XorgManVersionString #define BuildXResExt NO #endif #ifndef BuildXResLibrary -#define BuildXResLibrary (BuildXResExt && \ - (!BuildServersOnly || BuildDmxDevelTools)) +#define BuildXResLibrary (BuildXResExt && !BuildServersOnly) #endif #ifndef BuildXvExt #define BuildXvExt NO @@ -616,7 +595,7 @@ XORGRELSTRING = XorgManVersionString #define BuildRender YES #endif #ifndef BuildRenderLibrary -#define BuildRenderLibrary (XdmxServer || !BuildServersOnly) +#define BuildRenderLibrary !BuildServersOnly #endif #ifndef BuildXftLibrary #define BuildXftLibrary BuildRenderLibrary @@ -2516,30 +2495,6 @@ SharedLibReferences(XXF86DGA,NX_Xxf86dga,$(XXF86DGALIBSRC),SOXXF86DGAREV,SharedX ProjectUnsharedLibReferences(XXF86DGA,NX_Xxf86dga,$(XXF86DGALIBSRC),XBuildLibDir) #endif -#if BuildDmxLibrary -#ifndef SharedLibDmx -#define SharedLibDmx NO -#endif -#ifndef NormalLibDmx -#define NormalLibDmx YES -#endif -#ifndef DebugLibDmx -#define DebugLibDmx NO -#endif -#ifndef ProfileLibDmx -#define ProfileLibDmx NO -#endif -#else /* BuildDmxLibrary */ -#undef SharedLibDmx -#define SharedLibDmx NO -#undef NormalLibDmx -#define NormalLibDmx NO -#undef DebugLibDmx -#define DebugLibDmx NO -#undef ProfileLibDmx -#define ProfileLibDmx NO -#endif /* BuildDmxLibrary */ - XXF86RUSHLIBSRC = $(LIBSRC)/Xxf86rush #if SharedLibXxf86rush #ifndef SharedXxf86rushRev @@ -2592,16 +2547,6 @@ SharedLibReferences(XRES,NX_XRes,$(XRESLIBSRC),SOXRESREV,SharedXResRev) ProjectUnsharedLibReferences(XRES,NX_XRes,$(XRESLIBSRC),XBuildLibDir) #endif - DMXLIBSRC = $(LIBSRC)/dmx -#if SharedLibDmx -#ifndef SharedDmxRev -#define SharedDmxRev 1.0 -#endif -SharedLibReferences(DMX,NX_dmx,$(DMXLIBSRC),SODMXREV,SharedDmxRev) -#else -ProjectUnsharedLibReferences(DMX,NX_dmx,$(DMXLIBSRC),XBuildLibDir) -#endif - DPSLIBSRC = $(LIBSRC)/dps #if SharedLibDps #ifndef SharedDpsRev diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index 28f0e3a..4a5f4b2 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -76,13 +76,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define XorgServer NO /* - * To enable building Xdmx, uncomment this. - * -#define XdmxServer YES - */ -#define XdmxServer NO - -/* * To disable building Xprt, uncomment this. * #define XprtServer NO diff --git a/nx-X11/config/cf/xf86site.def b/nx-X11/config/cf/xf86site.def index 4cdf0d8..ca429c9 100644 --- a/nx-X11/config/cf/xf86site.def +++ b/nx-X11/config/cf/xf86site.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To enable building Xdmx, uncomment this. - * -#define XdmxServer YES - */ - -/* * To disable building Xprt, uncomment this. * #define XprtServer NO diff --git a/nx-X11/config/cf/xorgsite.def b/nx-X11/config/cf/xorgsite.def index ad9bfd8..ee0c5db 100644 --- a/nx-X11/config/cf/xorgsite.def +++ b/nx-X11/config/cf/xorgsite.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To enable building Xdmx, uncomment this. - * -#define XdmxServer YES - */ - -/* * To disable building Xprt, uncomment this. * #define XprtServer NO diff --git a/nx-X11/include/extensions/Imakefile b/nx-X11/include/extensions/Imakefile index 65c78ad..269b8bb 100644 --- a/nx-X11/include/extensions/Imakefile +++ b/nx-X11/include/extensions/Imakefile @@ -64,9 +64,6 @@ XRESHEADERS = XRes.h XResproto.h #if BuildXevie || BuildXevieLibrary XEVIEHEADERS = Xevie.h Xeviestr.h #endif -#if BuildDmx || BuildDmxLibrary -XDMXHEADERS = dmxext.h dmxproto.h -#endif EXTRAHEADERS = $(SCREENSAVERHEADERS) $(XF86MISCHEADERS) $(XF86BIGFONTHEADERS) \ $(XF86VIDMODEHEADERS) $(XF86DGAHEADERS) $(XINERAMAHEADERS) \ @@ -74,7 +71,7 @@ EXTRAHEADERS = $(SCREENSAVERHEADERS) $(XF86MISCHEADERS) $(XF86BIGFONTHEADERS) \ $(FONTCACHEHEADERS) $(RENDERHEADERS) $(RANDRHEADERS) \ $(XFIXESHEADERS) $(DAMAGEHEADERS) $(COMPOSITEHEADERS) \ $(XEVIEHEADERS) \ - $(XTRAPHEADERS) $(XRESHEADERS) $(XDMXHEADERS) + $(XTRAPHEADERS) $(XRESHEADERS) diff --git a/nx-X11/include/extensions/dmxext.h b/nx-X11/include/extensions/dmxext.h deleted file mode 100644 index c554232..0000000 --- a/nx-X11/include/extensions/dmxext.h +++ /dev/null @@ -1,190 +0,0 @@ -/* $XFree86$ */ -/* - * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith <faith@redhat.com> - * - */ - -/** \file - * This file describes the interface to the client-side libdmx.a - * library. All DMX-aware client-side applications should include this - * file. */ - -#ifndef _DMXEXT_H_ -#define _DMXEXT_H_ - -/* These values must be larger than LastExtensionError. - The values in dmxext.h and dmxproto.h *MUST* match. */ -#define DmxBadXinerama 1001 -#define DmxBadValue 1002 -#define DmxBadReply 1003 - -#define DMXScreenWindowWidth (1L<<0) -#define DMXScreenWindowHeight (1L<<1) -#define DMXScreenWindowXoffset (1L<<2) -#define DMXScreenWindowYoffset (1L<<3) -#define DMXRootWindowWidth (1L<<4) -#define DMXRootWindowHeight (1L<<5) -#define DMXRootWindowXoffset (1L<<6) -#define DMXRootWindowYoffset (1L<<7) -#define DMXRootWindowXorigin (1L<<8) -#define DMXRootWindowYorigin (1L<<9) - -#define DMXDesktopWidth (1L<<0) -#define DMXDesktopHeight (1L<<1) -#define DMXDesktopShiftX (1L<<2) -#define DMXDesktopShiftY (1L<<3) - -#define DMXInputType (1L<<0) -#define DMXInputPhysicalScreen (1L<<1) -#define DMXInputSendsCore (1L<<2) - -#ifndef _DMX_SERVER_ - -/** Client-library screen information structure, returned by - * #DMXGetScreenAttributes. */ -typedef struct { - char *displayName; - int logicalScreen; - - unsigned int screenWindowWidth; /* displayName's coordinate system */ - unsigned int screenWindowHeight; /* displayName's coordinate system */ - int screenWindowXoffset; /* displayName's coordinate system */ - int screenWindowYoffset; /* displayName's coordinate system */ - - unsigned int rootWindowWidth; /* screenWindow's coordinate system */ - unsigned int rootWindowHeight; /* screenWindow's coordinate system */ - int rootWindowXoffset; /* screenWindow's coordinate system */ - int rootWindowYoffset; /* screenWindow's coordinate system */ - - int rootWindowXorigin; /* global coordinate system */ - int rootWindowYorigin; /* global coordinate system */ -} DMXScreenAttributes; - -/** Client-library window information structure, returned by - * #DMXGetWindowAttributes. */ -typedef struct { - int screen; - Window window; - XRectangle pos, vis; -} DMXWindowAttributes; - -/** Client-library desktop information structure, returned by - * #DMXGetDesktopAttributes. */ -typedef struct { - unsigned int width; /* global coordinate system */ - unsigned int height; /* global coordinate system */ - int shiftX; /* global coordinate system */ - int shiftY; /* global coordinate system */ -} DMXDesktopAttributes; - -/** Enumeration for the #inputType field in the #DMXInputAttributes - * structure. */ -typedef enum { - DMXLocalInputType, - DMXConsoleInputType, - DMXBackendInputType -} DMXInputEnum; - -/** Client-library input information structure, returned by - * #DMXGetInputAttributes. */ -typedef struct { - DMXInputEnum inputType; - int physicalScreen; - int physicalId; - Bool isCore; - Bool sendsCore; - const char *name; - Bool detached; -} DMXInputAttributes; - -_XFUNCPROTOBEGIN - -extern Bool DMXQueryExtension(Display *dpy, - int *event_basep, int *error_basep); -extern Bool DMXQueryVersion(Display *dpy, int *major_version, - int *minor_version, int *patch_version); -extern Bool DMXSync(Display *dpy); -extern Bool DMXForceWindowCreation(Display *dpy, Window window); - - -extern Bool DMXGetScreenCount(Display *dpy, int *screen_count); -extern Bool DMXGetScreenAttributes(Display *dpy, - int screen, - DMXScreenAttributes *attr); -extern int DMXChangeScreensAttributes(Display *dpy, - int screen_count, - int *screens, - int mask_count, - unsigned int *masks, - DMXScreenAttributes *attr, /* vector */ - int *error_screen); - -extern Bool DMXAddScreen(Display *dpy, - const char *displayName, - unsigned int mask, - DMXScreenAttributes *attr, - int *screen); -extern Bool DMXRemoveScreen(Display *dpy, int screen); - -/* Call DMXGetScreenWindowCount and allocate info to that size. Pass - * the size in available_count. This call can generate a large amount - * of wire traffic and should not be used called with available_count=0 - * just to determine the screen_count value -- use DMXGetScreenCount - * instead. NOTE: Also see DMX protocol specification (DMXSpec.txt) for - * usage of DMXSync to flush pending commands. */ -extern Bool DMXGetWindowAttributes(Display *dpy, Window window, - int *screen_count, int available_count, - DMXWindowAttributes *attr); - -extern Bool DMXGetDesktopAttributes(Display *dpy, DMXDesktopAttributes *attr); -extern int DMXChangeDesktopAttributes(Display *dpy, - unsigned int mask, - DMXDesktopAttributes *attr); - -extern Bool DMXGetInputCount(Display *dpy, int *input_count); -extern Bool DMXGetInputAttributes(Display *dpy, int id, - DMXInputAttributes *attr); - -extern Bool DMXAddInput(Display *dpy, - unsigned int mask, - DMXInputAttributes *attr, - int *id); -extern Bool DMXRemoveInput(Display *dpy, int id); - -/* These are helper functions that call DMXAddInput. */ -extern Bool DMXAddBackendInput(Display *dpy, int screen, int sendsCore, - int *newId); -extern Bool DMXAddConsoleInput(Display *dpy, const char *name, int sendsCore, - int *newId); - -_XFUNCPROTOEND -#endif -#endif diff --git a/nx-X11/include/extensions/dmxproto.h b/nx-X11/include/extensions/dmxproto.h deleted file mode 100644 index b6b11f4..0000000 --- a/nx-X11/include/extensions/dmxproto.h +++ /dev/null @@ -1,446 +0,0 @@ -/* $XFree86$ */ -/* - * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith <faith@redhat.com> - * - */ - -/** \file - * This file describes the structures necessary to implement the wire - * protocol for the DMX protocol extension. It should be included only - * in files that implement the client-side (or server-side) part of the - * protocol (i.e., client-side applications should \b not include this - * file). */ - -#ifndef _DMXSTR_H_ -#define _DMXSTR_H_ - -#define DMX_EXTENSION_NAME "DMX" -#define DMX_EXTENSION_MAJOR 2 -#define DMX_EXTENSION_MINOR 2 -#define DMX_EXTENSION_PATCH 20040604 - -/* These values must be larger than LastExtensionError. - The values in dmxext.h and dmxproto.h *MUST* match. */ -#define DMX_BAD_XINERAMA 1001 -#define DMX_BAD_VALUE 1002 - -#define X_DMXQueryVersion 0 -#define X_DMXGetScreenCount 1 -#define X_DMXGetScreenInformationDEPRECATED 2 -#define X_DMXGetWindowAttributes 3 -#define X_DMXGetInputCount 4 -#define X_DMXGetInputAttributes 5 -#define X_DMXForceWindowCreationDEPRECATED 6 -#define X_DMXReconfigureScreenDEPRECATED 7 -#define X_DMXSync 8 -#define X_DMXForceWindowCreation 9 -#define X_DMXGetScreenAttributes 10 -#define X_DMXChangeScreensAttributes 11 -#define X_DMXAddScreen 12 -#define X_DMXRemoveScreen 13 -#define X_DMXGetDesktopAttributes 14 -#define X_DMXChangeDesktopAttributes 15 -#define X_DMXAddInput 16 -#define X_DMXRemoveInput 17 - -/** Wire-level description of DMXQueryVersion protocol request. */ -typedef struct { - CARD8 reqType; /* dmxcode */ - CARD8 dmxReqType; /* X_DMXQueryVersion */ - CARD16 length B16; -} xDMXQueryVersionReq; -#define sz_xDMXQueryVersionReq 4 - -/** Wire-level description of DMXQueryVersion protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 ununsed; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 majorVersion B32; - CARD32 minorVersion B32; - CARD32 patchVersion B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; -} xDMXQueryVersionReply; -#define sz_xDMXQueryVersionReply 32 - -/** Wire-level description of DMXSync protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXSync */ - CARD16 length B16; -} xDMXSyncReq; -#define sz_xDMXSyncReq 4 - -/** Wire-level description of DMXSync protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXSyncReply; -#define sz_xDMXSyncReply 32 - -/** Wire-level description of DMXForceWindowCreation protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXForceWindowCreation */ - CARD16 length B16; - CARD32 window B32; -} xDMXForceWindowCreationReq; -#define sz_xDMXForceWindowCreationReq 8 - -/** Wire-level description of DMXForceWindowCreation protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXForceWindowCreationReply; -#define sz_xDMXForceWindowCreationReply 32 - -/** Wire-level description of DMXGetScreenCount protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXGetScreenCount */ - CARD16 length B16; -} xDMXGetScreenCountReq; -#define sz_xDMXGetScreenCountReq 4 - -/** Wire-level description of DMXGetScreenCount protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 screenCount B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXGetScreenCountReply; -#define sz_xDMXGetScreenCountReply 32 - -/** Wire-level description of DMXGetScreenAttributes protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXGetScreenAttributes */ - CARD16 length B16; - CARD32 physicalScreen B32; -} xDMXGetScreenAttributesReq; -#define sz_xDMXGetScreenAttributesReq 8 - -/** Wire-level description of DMXGetScreenAttributes protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 displayNameLength B32; - CARD32 logicalScreen B32; - - CARD16 screenWindowWidth B16; - CARD16 screenWindowHeight B16; - INT16 screenWindowXoffset B16; - INT16 screenWindowYoffset B16; - - CARD16 rootWindowWidth B16; - CARD16 rootWindowHeight B16; - INT16 rootWindowXoffset B16; - INT16 rootWindowYoffset B16; - INT16 rootWindowXorigin B16; - INT16 rootWindowYorigin B16; -} xDMXGetScreenAttributesReply; -#define sz_xDMXGetScreenAttributesReply 36 - -/** Wire-level description of DMXChangeScreensAttributes protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXChangeScreensAttributes */ - CARD16 length B16; - CARD32 screenCount B32; - CARD32 maskCount B32; -} xDMXChangeScreensAttributesReq; -#define sz_xDMXChangeScreensAttributesReq 12 - -/** Wire-level description of DMXChangeScreensAttributes protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 errorScreen B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; -} xDMXChangeScreensAttributesReply; -#define sz_xDMXChangeScreensAttributesReply 32 - -/** Wire-level description of DMXAddScreen protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXAddScreen */ - CARD16 length B16; - CARD32 displayNameLength B32; - CARD32 physicalScreen B32; - CARD32 valueMask B32; -} xDMXAddScreenReq; -#define sz_xDMXAddScreenReq 16 - -/** Wire-level description of DMXAddScreen protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 physicalScreen B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; -} xDMXAddScreenReply; -#define sz_xDMXAddScreenReply 32 - -/** Wire-level description of DMXRemoveScreen protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXRemoveScreen */ - CARD16 length B16; - CARD32 physicalScreen B32; -} xDMXRemoveScreenReq; -#define sz_xDMXRemoveScreenReq 8 - -/** Wire-level description of DMXRemoveScreen protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXRemoveScreenReply; -#define sz_xDMXRemoveScreenReply 32 - -/** Wire-level description of DMXGetWindowAttributes protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXGetWindowAttributes */ - CARD16 length B16; - CARD32 window B32; -} xDMXGetWindowAttributesReq; -#define sz_xDMXGetWindowAttributesReq 8 - -/** Wire-level description of DMXGetWindowAttributes protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 screenCount B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXGetWindowAttributesReply; -#define sz_xDMXGetWindowAttributesReply 32 - -/** Wire-level description of DMXGetDesktopAttributes protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXGetDesktopAttributes */ - CARD16 length B16; -} xDMXGetDesktopAttributesReq; -#define sz_xDMXGetDesktopAttributesReq 4 - -/** Wire-level description of DMXGetDesktopAttributes protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - INT16 width; - INT16 height; - INT16 shiftX; - INT16 shiftY; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; -} xDMXGetDesktopAttributesReply; -#define sz_xDMXGetDesktopAttributesReply 32 - -/** Wire-level description of DMXChangeDesktopAttributes protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXChangeDesktopAttributes */ - CARD16 length B16; - CARD32 valueMask B32; -} xDMXChangeDesktopAttributesReq; -#define sz_xDMXChangeDesktopAttributesReq 8 - -/** Wire-level description of DMXChangeDesktopAttributes protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXChangeDesktopAttributesReply; -#define sz_xDMXChangeDesktopAttributesReply 32 - -/** Wire-level description of DMXGetInputCount protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXGetInputCount */ - CARD16 length B16; -} xDMXGetInputCountReq; -#define sz_xDMXGetInputCountReq 4 - -/** Wire-level description of DMXGetInputCount protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 inputCount B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXGetInputCountReply; -#define sz_xDMXGetInputCountReply 32 - -/** Wire-level description of DMXGetInputAttributes protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXGetInputAttributes */ - CARD16 length B16; - CARD32 deviceId B32; -} xDMXGetInputAttributesReq; -#define sz_xDMXGetInputAttributesReq 8 - -/** Wire-level description of DMXGetInputAttributes protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 inputType B32; - CARD32 physicalScreen B32; - CARD32 physicalId B32; - CARD32 nameLength B32; - BOOL isCore; - BOOL sendsCore; - BOOL detached; - CARD8 pad0; - CARD32 pad1 B32; -} xDMXGetInputAttributesReply; -#define sz_xDMXGetInputAttributesReply 32 - -/** Wire-level description of DMXAddInput protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXAddInput */ - CARD16 length B16; - CARD32 displayNameLength B32; - CARD32 valueMask; -} xDMXAddInputReq; -#define sz_xDMXAddInputReq 12 - -/** Wire-level description of DMXAddInput protocol reply. */ -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 physicalId B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; -} xDMXAddInputReply; -#define sz_xDMXAddInputReply 32 - -/** Wire-level description of DMXRemoveInput protocol request. */ -typedef struct { - CARD8 reqType; /* DMXCode */ - CARD8 dmxReqType; /* X_DMXRemoveInput */ - CARD16 length B16; - CARD32 physicalId B32; -} xDMXRemoveInputReq; -#define sz_xDMXRemoveInputReq 8 - -/** Wire-level description of DMXRemoveInput protocol reply. */ -typedef struct { - BYTE type; - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 status B32; - CARD32 pad0 B32; - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xDMXRemoveInputReply; -#define sz_xDMXRemoveInputReply 32 - -#endif diff --git a/nx-X11/lib/X11/Imakefile b/nx-X11/lib/X11/Imakefile index ca6ce96..4e781f5 100644 --- a/nx-X11/lib/X11/Imakefile +++ b/nx-X11/lib/X11/Imakefile @@ -27,7 +27,7 @@ XCOMM $XFree86: xc/lib/X11/Imakefile,v 3.52 2003/05/27 16:53:15 tsi Exp $ HEADERS = Xlib.h Xresource.h Xutil.h cursorfont.h Xlibint.h \ Xcms.h Xlocale.h XKBlib.h XlibConf.h Xregion.h ImUtil.h -#if BuildServersOnly && !BuildGLXLibrary && !BuildClients && !XdmxServer && !NXAgentServer +#if BuildServersOnly && !BuildGLXLibrary && !BuildClients && !NXAgentServer all:: BuildIncludes($(HEADERS),IncSubdir,..) diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index b39b0b9..979a946 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -542,9 +542,6 @@ XF86SERVER = XFree86 #if defined(XorgServer) && XorgServer XF86SERVER = Xorg #endif -#if XdmxServer -XDMX = Xdmx -#endif #if defined(NXAgentServer) && NXAgentServer NXAGENT = nxagent #endif @@ -554,7 +551,6 @@ NXWIN = NXWin #if (defined(XF86Server) && XF86Server) || \ (defined(XorgServer) && XorgServer) || \ (defined(NXAgentServer) && NXAgentServer) || \ - (defined(XdmxServer) && XdmxServer) || \ (!MakeDllModules && defined(NXWinServer) && NXWinServer) MakeMutex($(XF86SERVER) $(NXAGENT) $(NXWIN)) #endif @@ -1050,54 +1046,6 @@ Xnon: $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(CFB32DIR) $(DEPDIRS) #endif /* XnonServer */ -#if defined(XdmxServer) && XdmxServer -XCOMM -XCOMM distribued multihead Server -XCOMM -#ifndef Win32Architecture -XDMXDDXDIR = hw/dmx -#else -XDMXDDXDIR = hw -#endif -FBDIR = fb -FBSUBDIR = fb -MIDAMAGEDIR = miext/damage -SHADOWDIR = miext/shadow -XDMXDIRS = $(STDDIRS) $(XDMXDDXDIR) $(SHADOWDIR) $(DEPDIRS) $(FBDIR) $(MIDAMAGEDIR) -#if BuildGlxExt -#if BuildXinerama -GLXPROXY_EXTRAOBJS = hw/dmx/panoramiX.o -#endif -GLXPROXYLIB = hw/dmx/glxProxy/LibraryTargetName(glxProxy) -#endif -#if !defined(LynxOSArchitecture) && \ - !defined(Win32Architecture) && \ - !defined(QNX4Architecture) -XDMXOBJS = hw/dmx/miinitext.o $(GLXPROXY_EXTRAOBJS) -#else -XDMXOBJS = hw/dmx/miinitext.o $(GLXPROXY_EXTRAOBJS) dix/main.o -#endif -XDMX = hw/dmx/LibraryTargetName(dmx) \ - hw/dmx/input/LibraryTargetName(dmxinput) \ - hw/dmx/config/LibraryTargetName(dmxconfig) \ - $(GLXPROXYLIB) -XDMXLIBS = PreFbLibs $(XDMX) MiExtLibs FbPostFbLibs $(XDMX) -#if BuildRender -XDMXRENDERLIB = $(XRENDERLIB) -#endif -XDMXSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XILIB) $(XLIB) $(SYSLIBS) $(XMULIB) $(XDMXRENDERLIB) -#if HasParallelMake -MakeMutex($(XDMXDIRS) $(XDMXOBJS) $(XDMXLIBS) $(XDMXSYSLIBS)) -#endif -#if ForceServerRemake -$(XDMXOBJS) $(XDMXLIBS) $(XDMXSYSLIBS):: $(XDMXDIRS) - @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi -#endif -ServerTarget(Xdmx,$(XDMXDIRS),$(XDMXOBJS), \ - $(LIBCWRAPPER) $(XDMXLIBS) $(LOADABLEEXTS),$(XDMXSYSLIBS)) -#endif /* XdmxServer */ - - #if defined(NXWinServer) && NXWinServer XCOMM XCOMM X Server for MS Windows @@ -1372,7 +1320,7 @@ MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR) DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) $(LYNXDDXDIR) \ $(HPDDXDIR) $(XFREE86DDXDIR) $(DARWINDDXDIR) \ - $(XDMXDDXDIR) $(NXAGENTDDXDIR) $(NXWINDDXDIR) + $(NXAGENTDDXDIR) $(NXWINDDXDIR) SUBDIRS = $(STDDIRS) $(MFBSUBDIR) $(CFBSUBDIRS) \ $(IPLANDIRS) $(ILBMDIR) $(AFBSUBDIR) \ $(DDXDIRS) $(FBSUBDIR) $(KDRIVEDIRS) $(MIEXTDIRS) diff --git a/nx-X11/programs/Xserver/Xext/Imakefile b/nx-X11/programs/Xserver/Xext/Imakefile index b75f891..6846c28 100644 --- a/nx-X11/programs/Xserver/Xext/Imakefile +++ b/nx-X11/programs/Xserver/Xext/Imakefile @@ -113,11 +113,6 @@ XF86BIGFOBJS = xf86bigfont.o PNRXOBJS = panoramiX.o panoramiXSwap.o panoramiXprocs.o PNRXINCLUDES = -I$(FONTINCSRC) -I../mi -I../render #endif -#if XdmxServer - DMXSRCS = dmx.c - DMXOBJS = dmx.o - DMXINCLUDES = -I../hw/dmx -#endif #if BuildDPMS DPMSSRCS = dpms.c DPMSOBJS = dpms.o diff --git a/nx-X11/programs/Xserver/Xext/dmx.c b/nx-X11/programs/Xserver/Xext/dmx.c deleted file mode 100644 index 75623e6..0000000 --- a/nx-X11/programs/Xserver/Xext/dmx.c +++ /dev/null @@ -1,1133 +0,0 @@ -/* $XFree86$ */ -/* - * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina. - * - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation on the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - * Authors: - * Rickard E. (Rik) Faith <faith@redhat.com> - * - */ - -/** \file - * This file implements the server-side part of the DMX protocol. A - * vector of fucntions is provided at extension initialization time, so - * most all of the useful functions in this file are declared static and - * do not appear in the doxygen documentation. - * - * Much of the low-level work is done by functions in #dmxextension.c - * - * Please see the Client-to-Server DMX Extension to the X Protocol - * document for details about the protocol. */ - -#ifdef HAVE_DMX_CONFIG_H -#include <dmx-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "misc.h" -#include "os.h" -#include "dixstruct.h" -#define EXTENSION_PROC_ARGS void * -#include "extnsionst.h" -#include "opaque.h" - -#include "dmxextension.h" -#include <X11/extensions/dmxproto.h> - -#define _DMX_SERVER_ -#include <X11/extensions/dmxext.h> - -#ifdef PANORAMIX -#include "panoramiX.h" -extern unsigned long XRT_WINDOW; -extern int PanoramiXNumScreens; -#endif - -extern void DMXExtensionInit(void); - -static unsigned char DMXCode; - -static DISPATCH_PROC(ProcDMXDispatch); -static DISPATCH_PROC(ProcDMXQueryVersion); -static DISPATCH_PROC(ProcDMXSync); -static DISPATCH_PROC(ProcDMXForceWindowCreation); -static DISPATCH_PROC(ProcDMXGetScreenCount); -static DISPATCH_PROC(ProcDMXGetScreenAttributes); -static DISPATCH_PROC(ProcDMXChangeScreensAttributes); -static DISPATCH_PROC(ProcDMXAddScreen); -static DISPATCH_PROC(ProcDMXRemoveScreen); -static DISPATCH_PROC(ProcDMXGetWindowAttributes); -static DISPATCH_PROC(ProcDMXGetDesktopAttributes); -static DISPATCH_PROC(ProcDMXChangeDesktopAttributes); -static DISPATCH_PROC(ProcDMXGetInputCount); -static DISPATCH_PROC(ProcDMXGetInputAttributes); -static DISPATCH_PROC(ProcDMXAddInput); -static DISPATCH_PROC(ProcDMXRemoveInput); - -static DISPATCH_PROC(SProcDMXDispatch); -static DISPATCH_PROC(SProcDMXQueryVersion); -static DISPATCH_PROC(SProcDMXSync); -static DISPATCH_PROC(SProcDMXForceWindowCreation); -static DISPATCH_PROC(SProcDMXGetScreenCount); -static DISPATCH_PROC(SProcDMXGetScreenAttributes); -static DISPATCH_PROC(SProcDMXChangeScreensAttributes); -static DISPATCH_PROC(SProcDMXAddScreen); -static DISPATCH_PROC(SProcDMXRemoveScreen); -static DISPATCH_PROC(SProcDMXGetWindowAttributes); -static DISPATCH_PROC(SProcDMXGetDesktopAttributes); -static DISPATCH_PROC(SProcDMXChangeDesktopAttributes); -static DISPATCH_PROC(SProcDMXGetInputCount); -static DISPATCH_PROC(SProcDMXGetInputAttributes); -static DISPATCH_PROC(SProcDMXAddInput); -static DISPATCH_PROC(SProcDMXRemoveInput); - -static int _DMXXineramaActive(void) -{ -#ifdef PANORAMIX - return !noPanoramiXExtension; -#endif - return 0; -} - -static void DMXResetProc(ExtensionEntry *extEntry) -{ -} - -/** Initialize the extension. */ -void DMXExtensionInit(void) -{ - ExtensionEntry *extEntry; - - if ((extEntry = AddExtension(DMX_EXTENSION_NAME, 0, 0, - ProcDMXDispatch, SProcDMXDispatch, - DMXResetProc, StandardMinorOpcode))) - DMXCode = extEntry->base; -} - -static void dmxSetScreenAttribute(int bit, DMXScreenAttributesPtr attr, - CARD32 value) -{ - switch (1 << bit) { - case DMXScreenWindowWidth: attr->screenWindowWidth = value; break; - case DMXScreenWindowHeight: attr->screenWindowHeight = value; break; - case DMXScreenWindowXoffset: attr->screenWindowXoffset = value; break; - case DMXScreenWindowYoffset: attr->screenWindowYoffset = value; break; - case DMXRootWindowWidth: attr->rootWindowWidth = value; break; - case DMXRootWindowHeight: attr->rootWindowHeight = value; break; - case DMXRootWindowXoffset: attr->rootWindowXoffset = value; break; - case DMXRootWindowYoffset: attr->rootWindowYoffset = value; break; - case DMXRootWindowXorigin: attr->rootWindowXorigin = value; break; - case DMXRootWindowYorigin: attr->rootWindowYorigin = value; break; - } -} - -static int dmxFetchScreenAttributes(unsigned int mask, - DMXScreenAttributesPtr attr, - CARD32 *value_list) -{ - int i; - CARD32 *value = value_list; - int count = 0; - - for (i = 0; i < 32; i++) { - if (mask & (1 << i)) { - dmxSetScreenAttribute(i, attr, *value); - ++value; - ++count; - } - } - return count; -} - -static void dmxSetDesktopAttribute(int bit, DMXDesktopAttributesPtr attr, - CARD32 value) -{ - switch (1 << bit) { - case DMXDesktopWidth: attr->width = value; break; - case DMXDesktopHeight: attr->height = value; break; - case DMXDesktopShiftX: attr->shiftX = value; break; - case DMXDesktopShiftY: attr->shiftY = value; break; - } -} - -static int dmxFetchDesktopAttributes(unsigned int mask, - DMXDesktopAttributesPtr attr, - CARD32 *value_list) -{ - int i; - CARD32 *value = value_list; - int count = 0; - - for (i = 0; i < 32; i++) { - if (mask & (1 << i)) { - dmxSetDesktopAttribute(i, attr, *value); - ++value; - ++count; - } - } - return count; -} - -static void dmxSetInputAttribute(int bit, DMXInputAttributesPtr attr, - CARD32 value) -{ - switch (1 << bit) { - case DMXInputType: attr->inputType = value; break; - case DMXInputPhysicalScreen: attr->physicalScreen = value; break; - case DMXInputSendsCore: attr->sendsCore = !!value; break; - } -} - -static int dmxFetchInputAttributes(unsigned int mask, - DMXInputAttributesPtr attr, - CARD32 *value_list) -{ - int i; - CARD32 *value = value_list; - int count = 0; - - for (i = 0; i < 32; i++) { - if (mask & (1 << i)) { - dmxSetInputAttribute(i, attr, *value); - ++value; - ++count; - } - } - return count; -} - -static int ProcDMXQueryVersion(ClientPtr client) -{ - xDMXQueryVersionReply rep; - int n; - - REQUEST_SIZE_MATCH(xDMXQueryVersionReq); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.majorVersion = DMX_EXTENSION_MAJOR; - rep.minorVersion = DMX_EXTENSION_MINOR; - rep.patchVersion = DMX_EXTENSION_PATCH; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.majorVersion, n); - swapl(&rep.minorVersion, n); - swapl(&rep.patchVersion, n); - } - WriteToClient(client, sizeof(xDMXQueryVersionReply), (char *)&rep); - return client->noClientException; -} - -static int ProcDMXSync(ClientPtr client) -{ - xDMXSyncReply rep; - int n; - - REQUEST_SIZE_MATCH(xDMXSyncReq); - - dmxFlushPendingSyncs(); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = 0; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - } - WriteToClient(client, sizeof(xDMXSyncReply), (char *)&rep); - return client->noClientException; -} - -static int ProcDMXForceWindowCreation(ClientPtr client) -{ - xDMXForceWindowCreationReply rep; - REQUEST(xDMXForceWindowCreationReq); - WindowPtr pWin; - int n; - - REQUEST_SIZE_MATCH(xDMXForceWindowCreationReq); - -#ifdef PANORAMIX - if (!noPanoramiXExtension) { - PanoramiXRes *win; - int i; - - if (!(win = SecurityLookupIDByType(client, stuff->window, XRT_WINDOW, - SecurityReadAccess))) - return -1; /* BadWindow */ - - FOR_NSCREENS(i) { - if (!(pWin = SecurityLookupWindow(win->info[i].id, client, - SecurityReadAccess))) - return -1; /* BadWindow */ - - dmxForceWindowCreation(pWin); - } - goto doreply; - } -#endif - - if (!(pWin = SecurityLookupWindow(stuff->window, client, - SecurityReadAccess))) - return -1; /* BadWindow */ - - dmxForceWindowCreation(pWin); - doreply: - dmxFlushPendingSyncs(); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = 0; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - } - WriteToClient(client, sizeof(xDMXForceWindowCreationReply), (char *)&rep); - return Success; -} - -static int ProcDMXGetScreenCount(ClientPtr client) -{ - xDMXGetScreenCountReply rep; - int n; - - REQUEST_SIZE_MATCH(xDMXGetScreenCountReq); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.screenCount = dmxGetNumScreens(); - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.screenCount, n); - } - WriteToClient(client, sizeof(xDMXGetScreenCountReply), (char *)&rep); - return client->noClientException; -} - -static int ProcDMXGetScreenAttributes(ClientPtr client) -{ - REQUEST(xDMXGetScreenAttributesReq); - xDMXGetScreenAttributesReply rep; - int n; - int length; - int paddedLength; - DMXScreenAttributesRec attr; - - REQUEST_SIZE_MATCH(xDMXGetScreenAttributesReq); - - if (stuff->physicalScreen < 0 - || stuff->physicalScreen >= dmxGetNumScreens()) return BadValue; - - if (!dmxGetScreenAttributes(stuff->physicalScreen, &attr)) - return BadValue; - - rep.logicalScreen = attr.logicalScreen; - rep.screenWindowWidth = attr.screenWindowWidth; - rep.screenWindowHeight = attr.screenWindowHeight; - rep.screenWindowXoffset = attr.screenWindowXoffset; - rep.screenWindowYoffset = attr.screenWindowYoffset; - rep.rootWindowWidth = attr.rootWindowWidth; - rep.rootWindowHeight = attr.rootWindowHeight; - rep.rootWindowXoffset = attr.rootWindowXoffset; - rep.rootWindowYoffset = attr.rootWindowYoffset; - rep.rootWindowXorigin = attr.rootWindowXorigin; - rep.rootWindowYorigin = attr.rootWindowYorigin; - - length = attr.displayName ? strlen(attr.displayName) : 0; - paddedLength = (length + 3) & ~3; - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = paddedLength >> 2; - rep.displayNameLength = length; - - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.displayNameLength, n); - swapl(&rep.logicalScreen, n); - swaps(&rep.screenWindowWidth, n); - swaps(&rep.screenWindowHeight, n); - swaps(&rep.screenWindowXoffset, n); - swaps(&rep.screenWindowYoffset, n); - swaps(&rep.rootWindowWidth, n); - swaps(&rep.rootWindowHeight, n); - swaps(&rep.rootWindowXoffset, n); - swaps(&rep.rootWindowYoffset, n); - swaps(&rep.rootWindowXorigin, n); - swaps(&rep.rootWindowYorigin, n); - } - WriteToClient(client, sizeof(xDMXGetScreenAttributesReply), (char *)&rep); - if (length) WriteToClient(client, length, (char *)attr.displayName); - return client->noClientException; -} - -static int ProcDMXChangeScreensAttributes(ClientPtr client) -{ - REQUEST(xDMXChangeScreensAttributesReq); - xDMXChangeScreensAttributesReply rep; - int n; - int status = DMX_BAD_XINERAMA; - unsigned int mask = 0; - unsigned int i; - CARD32 *screen_list; - CARD32 *mask_list; - CARD32 *value_list; - DMXScreenAttributesPtr attribs; - int errorScreen = 0; - unsigned int len; - int ones = 0; - - - REQUEST_AT_LEAST_SIZE(xDMXChangeScreensAttributesReq); - len = client->req_len - (sizeof(xDMXChangeScreensAttributesReq) >> 2); - if (len < stuff->screenCount + stuff->maskCount) - return BadLength; - - screen_list = (CARD32 *)(stuff + 1); - mask_list = &screen_list[stuff->screenCount]; - value_list = &mask_list[stuff->maskCount]; - - for (i = 0; i < stuff->maskCount; i++) ones += Ones(mask_list[i]); - if (len != stuff->screenCount + stuff->maskCount + ones) - return BadLength; - - if (!_DMXXineramaActive()) goto noxinerama; - - if (!(attribs = ALLOCATE_LOCAL(stuff->screenCount * sizeof(*attribs)))) - return BadAlloc; - - for (i = 0; i < stuff->screenCount; i++) { - int count; - - if (i < stuff->maskCount) mask = mask_list[i]; - dmxGetScreenAttributes(screen_list[i], &attribs[i]); - count = dmxFetchScreenAttributes(mask, &attribs[i], value_list); - value_list += count; - } - -#if PANORAMIX - status = dmxConfigureScreenWindows(stuff->screenCount, - screen_list, - attribs, - &errorScreen); -#endif - - DEALLOCATE_LOCAL(attribs); - - if (status == BadValue) return status; - - noxinerama: - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = status; - rep.errorScreen = errorScreen; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - swapl(&rep.errorScreen, n); - } - WriteToClient(client, - sizeof(xDMXChangeScreensAttributesReply), - (char *)&rep); - return client->noClientException; -} - -static int ProcDMXAddScreen(ClientPtr client) -{ - REQUEST(xDMXAddScreenReq); - xDMXAddScreenReply rep; - int n; - int status = 0; - CARD32 *value_list; - DMXScreenAttributesRec attr; - int count; - char *name; - int len; - int paddedLength; - - REQUEST_AT_LEAST_SIZE(xDMXAddScreenReq); - paddedLength = (stuff->displayNameLength + 3) & ~3; - len = client->req_len - (sizeof(xDMXAddScreenReq) >> 2); - if (len != Ones(stuff->valueMask) + paddedLength/4) - return BadLength; - - memset(&attr, 0, sizeof(attr)); - dmxGetScreenAttributes(stuff->physicalScreen, &attr); - value_list = (CARD32 *)(stuff + 1); - count = dmxFetchScreenAttributes(stuff->valueMask, &attr, value_list); - - if (!(name = ALLOCATE_LOCAL(stuff->displayNameLength + 1 + 4))) - return BadAlloc; - memcpy(name, &value_list[count], stuff->displayNameLength); - name[stuff->displayNameLength] = '\0'; - attr.displayName = name; - - status = dmxAttachScreen(stuff->physicalScreen, &attr); - - DEALLOCATE_LOCAL(name); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = status; - rep.physicalScreen = stuff->physicalScreen; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - swapl(&rep.physicalScreen, n); - } - WriteToClient(client, - sizeof(xDMXAddScreenReply), - (char *)&rep); - return client->noClientException; -} - -static int ProcDMXRemoveScreen(ClientPtr client) -{ - REQUEST(xDMXRemoveScreenReq); - xDMXRemoveScreenReply rep; - int n; - int status = 0; - - REQUEST_SIZE_MATCH(xDMXRemoveScreenReq); - - status = dmxDetachScreen(stuff->physicalScreen); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = status; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - } - WriteToClient(client, - sizeof(xDMXRemoveScreenReply), - (char *)&rep); - return client->noClientException; -} - - -#ifdef PANORAMIX -static int dmxPopulatePanoramiX(ClientPtr client, Window window, - CARD32 *screens, CARD32 *windows, - xRectangle *pos, xRectangle *vis) -{ - WindowPtr pWin; - PanoramiXRes *win; - int i; - int count = 0; - DMXWindowAttributesRec attr; - - if (!(win = SecurityLookupIDByType(client, window, XRT_WINDOW, - SecurityReadAccess))) - return -1; /* BadWindow */ - - FOR_NSCREENS(i) { - if (!(pWin = SecurityLookupWindow(win->info[i].id, client, - SecurityReadAccess))) - return -1; /* BadWindow */ - if (dmxGetWindowAttributes(pWin, &attr)) { - screens[count] = attr.screen; - windows[count] = attr.window; - pos[count] = attr.pos; - vis[count] = attr.vis; - ++count; /* Only count existing windows */ - } - } - return count; -} -#endif - -static int dmxPopulate(ClientPtr client, Window window, CARD32 *screens, - CARD32 *windows, xRectangle *pos, xRectangle *vis) -{ - WindowPtr pWin; - DMXWindowAttributesRec attr; - -#ifdef PANORAMIX - if (!noPanoramiXExtension) - return dmxPopulatePanoramiX(client, window, screens, windows, - pos, vis); -#endif - - if (!(pWin = SecurityLookupWindow(window, client, SecurityReadAccess))) - return -1; /* BadWindow */ - - dmxGetWindowAttributes(pWin, &attr); - *screens = attr.screen; - *windows = attr.window; - *pos = attr.pos; - *vis = attr.vis; - return 1; -} - -static int dmxMaxNumScreens(void) -{ -#ifdef PANORAMIX - if (!noPanoramiXExtension) return PanoramiXNumScreens; -#endif - return 1; -} - -static int ProcDMXGetWindowAttributes(ClientPtr client) -{ - REQUEST(xDMXGetWindowAttributesReq); - xDMXGetWindowAttributesReply rep; - int i, n; - CARD32 *screens; - CARD32 *windows; - xRectangle *pos, *vis; - int count = dmxMaxNumScreens(); - - REQUEST_SIZE_MATCH(xDMXGetWindowAttributesReq); - - if (!(screens = ALLOCATE_LOCAL(count * sizeof(*screens)))) - return BadAlloc; - if (!(windows = ALLOCATE_LOCAL(count * sizeof(*windows)))) { - DEALLOCATE_LOCAL(screens); - return BadAlloc; - } - if (!(pos = ALLOCATE_LOCAL(count * sizeof(*pos)))) { - DEALLOCATE_LOCAL(windows); - DEALLOCATE_LOCAL(screens); - return BadAlloc; - } - if (!(vis = ALLOCATE_LOCAL(count * sizeof(*vis)))) { - DEALLOCATE_LOCAL(pos); - DEALLOCATE_LOCAL(windows); - DEALLOCATE_LOCAL(screens); - return BadAlloc; - } - - if ((count = dmxPopulate(client, stuff->window, screens, windows, - pos, vis)) < 0) { - DEALLOCATE_LOCAL(vis); - DEALLOCATE_LOCAL(pos); - DEALLOCATE_LOCAL(windows); - DEALLOCATE_LOCAL(screens); - return BadWindow; - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = count * 6; - rep.screenCount = count; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.screenCount, n); - for (i = 0; i < count; i++) { - swapl(&screens[i], n); - swapl(&windows[i], n); - - swaps(&pos[i].x, n); - swaps(&pos[i].y, n); - swaps(&pos[i].width, n); - swaps(&pos[i].height, n); - - swaps(&vis[i].x, n); - swaps(&vis[i].y, n); - swaps(&vis[i].width, n); - swaps(&vis[i].height, n); - } - } - - dmxFlushPendingSyncs(); - - WriteToClient(client, sizeof(xDMXGetWindowAttributesReply), (char *)&rep); - if (count) { - WriteToClient(client, count * sizeof(*screens), (char *)screens); - WriteToClient(client, count * sizeof(*windows), (char *)windows); - WriteToClient(client, count * sizeof(*pos), (char *)pos); - WriteToClient(client, count * sizeof(*vis), (char *)vis); - } - - DEALLOCATE_LOCAL(vis); - DEALLOCATE_LOCAL(pos); - DEALLOCATE_LOCAL(windows); - DEALLOCATE_LOCAL(screens); - - return client->noClientException; -} - -static int ProcDMXGetDesktopAttributes(ClientPtr client) -{ - xDMXGetDesktopAttributesReply rep; - int n; - DMXDesktopAttributesRec attr; - - REQUEST_SIZE_MATCH(xDMXGetDesktopAttributesReq); - - dmxGetDesktopAttributes(&attr); - - rep.width = attr.width; - rep.height = attr.height; - rep.shiftX = attr.shiftX; - rep.shiftY = attr.shiftY; - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.width, n); - swapl(&rep.height, n); - swapl(&rep.shiftX, n); - swapl(&rep.shiftY, n); - } - WriteToClient(client, sizeof(xDMXGetDesktopAttributesReply), (char *)&rep); - return client->noClientException; -} - -static int ProcDMXChangeDesktopAttributes(ClientPtr client) -{ - REQUEST(xDMXChangeDesktopAttributesReq); - xDMXChangeDesktopAttributesReply rep; - int n; - int status = DMX_BAD_XINERAMA; - CARD32 *value_list; - DMXDesktopAttributesRec attr; - int len; - - REQUEST_AT_LEAST_SIZE(xDMXChangeDesktopAttributesReq); - len = client->req_len - (sizeof(xDMXChangeDesktopAttributesReq) >> 2); - if (len != Ones(stuff->valueMask)) - return BadLength; - - if (!_DMXXineramaActive()) goto noxinerama; - - value_list = (CARD32 *)(stuff + 1); - - dmxGetDesktopAttributes(&attr); - dmxFetchDesktopAttributes(stuff->valueMask, &attr, value_list); - -#if PANORAMIX - status = dmxConfigureDesktop(&attr); -#endif - if (status == BadValue) return status; - - noxinerama: - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = status; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - } - WriteToClient(client, - sizeof(xDMXChangeDesktopAttributesReply), - (char *)&rep); - return client->noClientException; -} - -static int ProcDMXGetInputCount(ClientPtr client) -{ - xDMXGetInputCountReply rep; - int n; - - REQUEST_SIZE_MATCH(xDMXGetInputCountReq); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.inputCount = dmxGetInputCount(); - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.inputCount, n); - } - WriteToClient(client, sizeof(xDMXGetInputCountReply), (char *)&rep); - return client->noClientException; -} - -static int ProcDMXGetInputAttributes(ClientPtr client) -{ - REQUEST(xDMXGetInputAttributesReq); - xDMXGetInputAttributesReply rep; - int n; - int length; - int paddedLength; - DMXInputAttributesRec attr; - - REQUEST_SIZE_MATCH(xDMXGetInputAttributesReq); - - if (dmxGetInputAttributes(stuff->deviceId, &attr)) return BadValue; - rep.inputType = attr.inputType; - rep.physicalScreen = attr.physicalScreen; - rep.physicalId = attr.physicalId; - rep.isCore = attr.isCore; - rep.sendsCore = attr.sendsCore; - rep.detached = attr.detached; - - length = attr.name ? strlen(attr.name) : 0; - paddedLength = (length + 3) & ~3; - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = paddedLength >> 2; - rep.nameLength = length; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.inputType, n); - swapl(&rep.physicalScreen, n); - swapl(&rep.physicalId, n); - swapl(&rep.nameLength, n); - } - WriteToClient(client, sizeof(xDMXGetInputAttributesReply), (char *)&rep); - if (length) WriteToClient(client, length, (char *)attr.name); - return client->noClientException; -} - -static int ProcDMXAddInput(ClientPtr client) -{ - REQUEST(xDMXAddInputReq); - xDMXAddInputReply rep; - int n; - int status = 0; - CARD32 *value_list; - DMXInputAttributesRec attr; - int count; - char *name; - int len; - int paddedLength; - int id = -1; - - REQUEST_AT_LEAST_SIZE(xDMXAddInputReq); - paddedLength = (stuff->displayNameLength + 3) & ~3; - len = client->req_len - (sizeof(xDMXAddInputReq) >> 2); - if (len != Ones(stuff->valueMask) + paddedLength/4) - return BadLength; - - memset(&attr, 0, sizeof(attr)); - value_list = (CARD32 *)(stuff + 1); - count = dmxFetchInputAttributes(stuff->valueMask, &attr, value_list); - - if (!(name = ALLOCATE_LOCAL(stuff->displayNameLength + 1 + 4))) - return BadAlloc; - memcpy(name, &value_list[count], stuff->displayNameLength); - name[stuff->displayNameLength] = '\0'; - attr.name = name; - - status = dmxAddInput(&attr, &id); - - DEALLOCATE_LOCAL(name); - - if (status) return status; - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = status; - rep.physicalId = id; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - swapl(&rep.physicalId, n); - } - WriteToClient(client, sizeof(xDMXAddInputReply), (char *)&rep); - return client->noClientException; -} - -static int ProcDMXRemoveInput(ClientPtr client) -{ - REQUEST(xDMXRemoveInputReq); - xDMXRemoveInputReply rep; - int n; - int status = 0; - - REQUEST_SIZE_MATCH(xDMXRemoveInputReq); - - status = dmxRemoveInput(stuff->physicalId); - - if (status) return status; - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = status; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.status, n); - } - WriteToClient(client, sizeof(xDMXRemoveInputReply), (char *)&rep); - return client->noClientException; -} - -static int ProcDMXDispatch(ClientPtr client) -{ - REQUEST(xReq); - - switch (stuff->data) { - case X_DMXQueryVersion: return ProcDMXQueryVersion(client); - case X_DMXSync: return ProcDMXSync(client); - case X_DMXForceWindowCreation: return ProcDMXForceWindowCreation(client); - case X_DMXGetScreenCount: return ProcDMXGetScreenCount(client); - case X_DMXGetScreenAttributes: return ProcDMXGetScreenAttributes(client); - case X_DMXChangeScreensAttributes: - return ProcDMXChangeScreensAttributes(client); - case X_DMXAddScreen: return ProcDMXAddScreen(client); - case X_DMXRemoveScreen: return ProcDMXRemoveScreen(client); - case X_DMXGetWindowAttributes: return ProcDMXGetWindowAttributes(client); - case X_DMXGetDesktopAttributes: return ProcDMXGetDesktopAttributes(client); - case X_DMXChangeDesktopAttributes: - return ProcDMXChangeDesktopAttributes(client); - case X_DMXGetInputCount: return ProcDMXGetInputCount(client); - case X_DMXGetInputAttributes: return ProcDMXGetInputAttributes(client); - case X_DMXAddInput: return ProcDMXAddInput(client); - case X_DMXRemoveInput: return ProcDMXRemoveInput(client); - - case X_DMXGetScreenInformationDEPRECATED: - case X_DMXForceWindowCreationDEPRECATED: - case X_DMXReconfigureScreenDEPRECATED: - return BadImplementation; - - default: return BadRequest; - } -} - -static int SProcDMXQueryVersion(ClientPtr client) -{ - int n; - REQUEST(xDMXQueryVersionReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXQueryVersionReq); - return ProcDMXQueryVersion(client); -} - -static int SProcDMXSync(ClientPtr client) -{ - int n; - REQUEST(xDMXSyncReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXSyncReq); - return ProcDMXSync(client); -} - -static int SProcDMXForceWindowCreation(ClientPtr client) -{ - int n; - REQUEST(xDMXForceWindowCreationReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXForceWindowCreationReq); - swaps(&stuff->window, n); - return ProcDMXForceWindowCreation(client); -} - -static int SProcDMXGetScreenCount(ClientPtr client) -{ - int n; - REQUEST(xDMXGetScreenCountReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXGetScreenCountReq); - return ProcDMXGetScreenCount(client); -} - -static int SProcDMXGetScreenAttributes(ClientPtr client) -{ - int n; - REQUEST(xDMXGetScreenAttributesReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXGetScreenAttributesReq); - swapl(&stuff->physicalScreen, n); - return ProcDMXGetScreenAttributes(client); -} - -static int SProcDMXChangeScreensAttributes(ClientPtr client) -{ - int n; - REQUEST(xDMXChangeScreensAttributesReq); - - swaps(&stuff->length, n); - REQUEST_AT_LEAST_SIZE(xDMXGetScreenAttributesReq); - swapl(&stuff->screenCount, n); - swapl(&stuff->maskCount, n); - SwapRestL(stuff); - return ProcDMXGetScreenAttributes(client); -} - -static int SProcDMXAddScreen(ClientPtr client) -{ - int n; - int paddedLength; - REQUEST(xDMXAddScreenReq); - - swaps(&stuff->length, n); - REQUEST_AT_LEAST_SIZE(xDMXAddScreenReq); - swapl(&stuff->displayNameLength, n); - swapl(&stuff->valueMask, n); - paddedLength = (stuff->displayNameLength + 3) & ~3; - SwapLongs((CARD32 *)(stuff+1), LengthRestL(stuff) - paddedLength/4); - return ProcDMXAddScreen(client); -} - -static int SProcDMXRemoveScreen(ClientPtr client) -{ - int n; - REQUEST(xDMXRemoveScreenReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXRemoveScreenReq); - swapl(&stuff->physicalScreen, n); - return ProcDMXRemoveScreen(client); -} - -static int SProcDMXGetWindowAttributes(ClientPtr client) -{ - int n; - REQUEST(xDMXGetWindowAttributesReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXGetWindowAttributesReq); - swapl(&stuff->window, n); - return ProcDMXGetWindowAttributes(client); -} - -static int SProcDMXGetDesktopAttributes(ClientPtr client) -{ - int n; - REQUEST(xDMXGetDesktopAttributesReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXGetDesktopAttributesReq); - return ProcDMXGetDesktopAttributes(client); -} - -static int SProcDMXChangeDesktopAttributes(ClientPtr client) -{ - int n; - REQUEST(xDMXChangeDesktopAttributesReq); - - swaps(&stuff->length, n); - REQUEST_AT_LEAST_SIZE(xDMXChangeDesktopAttributesReq); - swapl(&stuff->valueMask, n); - SwapRestL(stuff); - return ProcDMXChangeDesktopAttributes(client); -} - -static int SProcDMXGetInputCount(ClientPtr client) -{ - int n; - REQUEST(xDMXGetInputCountReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXGetInputCountReq); - return ProcDMXGetInputCount(client); -} - -static int SProcDMXGetInputAttributes(ClientPtr client) -{ - int n; - REQUEST(xDMXGetInputAttributesReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXGetInputAttributesReq); - swapl(&stuff->deviceId, n); - return ProcDMXGetInputAttributes(client); -} - -static int SProcDMXAddInput(ClientPtr client) -{ - int n; - int paddedLength; - REQUEST(xDMXAddInputReq); - - swaps(&stuff->length, n); - REQUEST_AT_LEAST_SIZE(xDMXAddInputReq); - swapl(&stuff->displayNameLength, n); - swapl(&stuff->valueMask, n); - paddedLength = (stuff->displayNameLength + 3) & ~3; - SwapLongs((CARD32 *)(stuff+1), LengthRestL(stuff) - paddedLength/4); - return ProcDMXAddInput(client); -} - -static int SProcDMXRemoveInput(ClientPtr client) -{ - int n; - REQUEST(xDMXRemoveInputReq); - - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xDMXRemoveInputReq); - swapl(&stuff->physicalId, n); - return ProcDMXRemoveInput(client); -} - -static int SProcDMXDispatch (ClientPtr client) -{ - REQUEST(xReq); - - switch (stuff->data) { - case X_DMXQueryVersion: return SProcDMXQueryVersion(client); - case X_DMXSync: return SProcDMXSync(client); - case X_DMXForceWindowCreation: return SProcDMXForceWindowCreation(client); - case X_DMXGetScreenCount: return SProcDMXGetScreenCount(client); - case X_DMXGetScreenAttributes: return SProcDMXGetScreenAttributes(client); - case X_DMXChangeScreensAttributes: - return SProcDMXChangeScreensAttributes(client); - case X_DMXAddScreen: return SProcDMXAddScreen(client); - case X_DMXRemoveScreen: return SProcDMXRemoveScreen(client); - case X_DMXGetWindowAttributes: return SProcDMXGetWindowAttributes(client); - case X_DMXGetDesktopAttributes: - return SProcDMXGetDesktopAttributes(client); - case X_DMXChangeDesktopAttributes: - return SProcDMXChangeDesktopAttributes(client); - case X_DMXGetInputCount: return SProcDMXGetInputCount(client); - case X_DMXGetInputAttributes: return SProcDMXGetInputAttributes(client); - case X_DMXAddInput: return SProcDMXAddInput(client); - case X_DMXRemoveInput: return SProcDMXRemoveInput(client); - - case X_DMXGetScreenInformationDEPRECATED: - case X_DMXForceWindowCreationDEPRECATED: - case X_DMXReconfigureScreenDEPRECATED: - return BadImplementation; - - default: return BadRequest; - } -} diff --git a/nx-X11/programs/Xserver/hw/Imakefile b/nx-X11/programs/Xserver/hw/Imakefile deleted file mode 100644 index e01dca4..0000000 --- a/nx-X11/programs/Xserver/hw/Imakefile +++ /dev/null @@ -1,18 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:48:20 cpqbld Exp $ -XCOMM This is only used on NT where we do not know how to jump over this dir - -#ifdef Win32Architecture - -#define IHaveSubdirs -#define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)" - -#if XdmxServer -XDMXDIR = dmx -#endif - -SUBDIRS= $(XDMXDIR) - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) - -#endif diff --git a/nx-libs.spec b/nx-libs.spec index 7c594cc..ad9a09b 100644 --- a/nx-libs.spec +++ b/nx-libs.spec @@ -952,7 +952,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %{_includedir}/nx/X11/extensions/Xevie.h %{_includedir}/nx/X11/extensions/Xinerama.h %{_includedir}/nx/X11/extensions/Xrandr.h -%{_includedir}/nx/X11/extensions/dmxext.h %{_includedir}/nx/X11/extensions/lbxbuf.h %{_includedir}/nx/X11/extensions/lbxbufstr.h %{_includedir}/nx/X11/extensions/lbxdeltastr.h @@ -1017,7 +1016,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %{_includedir}/nx/X11/extensions/compositeproto.h %{_includedir}/nx/X11/extensions/damageproto.h %{_includedir}/nx/X11/extensions/damagewire.h -%{_includedir}/nx/X11/extensions/dmxproto.h %{_includedir}/nx/X11/extensions/panoramiXproto.h %{_includedir}/nx/X11/extensions/randr.h %{_includedir}/nx/X11/extensions/randrproto.h -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit f5f280417cb0af489406c8c3234e4ad69b008c74 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Mar 4 13:29:02 2015 +0100 imake cleanup: Drop all references to XprtServer and BuildXprint*. --- debian/rules | 1 - nx-X11/config/cf/README | 8 - nx-X11/config/cf/X11.tmpl | 35 +- nx-X11/config/cf/host.def | 17 - nx-X11/config/cf/xf86site.def | 6 - nx-X11/config/cf/xfree86.cf | 4 - nx-X11/config/cf/xorgsite.def | 6 - nx-X11/include/extensions/Imakefile | 1 - nx-X11/include/extensions/Print.h | 552 ------ nx-X11/include/extensions/Printstr.h | 783 -------- nx-X11/lib/Imakefile | 6 +- nx-X11/programs/Imakefile | 7 - nx-X11/programs/Xserver/Imakefile | 76 - nx-X11/programs/Xserver/Xext/Imakefile | 11 +- nx-X11/programs/Xserver/Xext/xprint.c | 2760 -------------------------- nx-X11/programs/Xserver/dix/Imakefile | 6 +- nx-X11/programs/Xserver/dix/main.c | 9 - nx-X11/programs/Xserver/dix/xpstubs.c | 27 - nx-X11/programs/Xserver/hw/nxagent/Imakefile | 3 + nx-X11/programs/Xserver/mi/miinitext.c | 45 - nx-X11/programs/Xserver/os/Imakefile | 2 +- nx-X11/programs/Xserver/os/utils.c | 13 - nx-libs.spec | 2 - 23 files changed, 12 insertions(+), 4368 deletions(-) diff --git a/debian/rules b/debian/rules index d3532b3..445f015 100755 --- a/debian/rules +++ b/debian/rules @@ -48,7 +48,6 @@ override_dh_install: rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/XK*.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/*Xv*.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xtrap*.h - rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/Print*.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/XRes*.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/record*.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xf86vmode.h diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index 051d587..e1b65a3 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -325,14 +325,6 @@ X11.tmpl provides defaults for the following variables: XdmDir directory in which to install xdm files XdmServersType type of xdm Xservers file to install XinitDir directory in which to install xinit files - XPrintDir parent of X Print server config directory - XprtServer build the X Print server - XpRasterDDX include the raster print ddx driver - XpColorPclDDX include the color PCL print ddx driver - XpMonoPclDDX include the monochrome PCL print ddx driver - XpPostScriptDDX include the PostScript print ddx driver - XpPdfDDX include the PDF print ddx driver - XpSvgDDX include the SVG print ddx driver XmanLocalSearchPath non-standard path for man pages XtErrorPrefix leading text in XtError() msg; eg. 'X Toolkit ' XtWarningPrefix leading text in XtWarning()msg, same as above diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl index 09dbc8f..71a5d26 100644 --- a/nx-X11/config/cf/X11.tmpl +++ b/nx-X11/config/cf/X11.tmpl @@ -373,8 +373,7 @@ XORGRELSTRING = XorgManVersionString #if (!defined(XF86Server) || !XF86Server) && (!defined (XorgServer) || !XorgServer) #define BuildFontLib (BuildLibraries || BuildServer) #else -#define BuildFontLib (BuildLibraries || \ - (BuildServer && !DoLoadableServer) || XprtServer) +#define BuildFontLib (BuildLibraries || (BuildServer && !DoLoadableServer)) #endif #endif #ifndef BuildFontCache @@ -486,19 +485,6 @@ XORGRELSTRING = XorgManVersionString #define XpSvgDDX YES #endif -#ifndef BuildXprint -#define BuildXprint YES -#endif -#ifndef XprtServer -#define XprtServer (BuildServer && BuildXprint) -#endif -#ifndef BuildXprintLib -#define BuildXprintLib (!BuildServersOnly && BuildXprint) -#endif -#ifndef BuildXprintClients -#define BuildXprintClients BuildXprintLib -#endif - #ifndef BuildScreenSaverExt #define BuildScreenSaverExt NO #endif @@ -978,17 +964,6 @@ FCHOWN_DEFINES = -DHAS_FCHOWN #ifndef PrintOnlyServer #define PrintOnlyServer YES #endif -#ifndef XprintDefines -#if BuildXprint -#if PrintOnlyServer -#define XprintDefines -DXPRINT -DPIXPRIV -#else -#define XprintDefines -DXPRINT -DLOADABLEPRINTDDX -DPIXPRIV -#endif -#else -#define XprintDefines /**/ -#endif -#endif #ifndef XkbDefines #if BuildXKB #define XkbDefines -DXKB @@ -1221,7 +1196,7 @@ FCHOWN_DEFINES = -DHAS_FCHOWN ShapeDefines XInputDefines XkbDefines LbxDefines AppgroupDefines \ XCSecurityDefines CupDefines PervasiveDBEDefines \ XF86BigfontExtensionDefines DPMSDefines \ - XprintDefines XineramaDefines \ + XineramaDefines \ SitePervasiveExtensionDefines RenderDefines RandRDefines \ XfixesDefines XDamageDefines CompositeDefines XevieDefines \ RootlessDefines @@ -1522,9 +1497,6 @@ FCHOWN_DEFINES = -DHAS_FCHOWN #ifndef ServerConfigDir #define ServerConfigDir $(LIBDIR)/xserver #endif -#ifndef XPrintDir -#define XPrintDir ServerConfigDir -#endif #ifndef EtcX11Directory #define EtcX11Directory /etc/X11 #endif @@ -1657,7 +1629,6 @@ XCOMM X Window System make variables; these need to be coordinated with rules XLOCALEDIR = XLocaleDir /* locale files */ LBXPROXYDIR = LbxproxyDir /* lbxproxy files */ PROXYMANAGERDIR = ProxyManagerDir /* proxy manager config files */ - XPRINTDIR = XPrintDir /* print config file root */ XAPPLOADDIR = XAppLoadDir /* application default resource dir */ FONTCFLAGS = FontCompilerFlags @@ -2908,7 +2879,7 @@ UnsharedLibReferences(XA,NX_Xa,$(XALIBSRC)) #endif #ifndef BuildXaw -#define BuildXaw (BuildXprintLib && !BuildServersOnly) +#define BuildXaw !BuildServersOnly #endif /* AWIDGETSRC is needed by libXaw6 and libXaw7 */ diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index 4a5f4b2..cae87f1 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -76,21 +76,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define XorgServer NO /* - * To disable building Xprt, uncomment this. - * -#define XprtServer NO - */ -#define XprtServer NO - -/* - * Xprint is needed by Xprt. You can disable it if - * you are not going to build Xprt. - * -#define BuildXprint NO - */ -#define BuildXprint NO - -/* * Building libraries with NX enhancements is disabled * by default. You should enable this in your host.def. * @@ -949,8 +934,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define BuildServersOnly YES #define DefaultFontPath /usr/NX/share/fonts/misc/,/usr/NX/share/fonts/TTF/ #define DefaultRGBDatabase /usr/NX/share/rgb -#define XprtServer NO -#define BuildXprint NO #define BuildFontServer NO #define BuildFreeType NO #define BuildXTrueType NO diff --git a/nx-X11/config/cf/xf86site.def b/nx-X11/config/cf/xf86site.def index ca429c9..db89ffe 100644 --- a/nx-X11/config/cf/xf86site.def +++ b/nx-X11/config/cf/xf86site.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building Xprt, uncomment this. - * -#define XprtServer NO - */ - -/* * Set the default server (ie the one that gets the sym-link to "X") * #define ServerToInstall XFree86 diff --git a/nx-X11/config/cf/xfree86.cf b/nx-X11/config/cf/xfree86.cf index ea82a9d..5832096 100644 --- a/nx-X11/config/cf/xfree86.cf +++ b/nx-X11/config/cf/xfree86.cf @@ -1876,10 +1876,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 # define UseServerLock YES #endif -#ifndef XprtServer -# define XprtServer YES -#endif - #ifndef ServerExtraDefines # define ServerExtraDefines XFree86ServerDefines #endif diff --git a/nx-X11/config/cf/xorgsite.def b/nx-X11/config/cf/xorgsite.def index ee0c5db..6083ce5 100644 --- a/nx-X11/config/cf/xorgsite.def +++ b/nx-X11/config/cf/xorgsite.def @@ -45,12 +45,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building Xprt, uncomment this. - * -#define XprtServer NO - */ - -/* * Set the default server (ie the one that gets the sym-link to "X") * #define ServerToInstall Xorg diff --git a/nx-X11/include/extensions/Imakefile b/nx-X11/include/extensions/Imakefile index 269b8bb..63b9365 100644 --- a/nx-X11/include/extensions/Imakefile +++ b/nx-X11/include/extensions/Imakefile @@ -92,7 +92,6 @@ HEADERS = Xext.h \ security.h securstr.h \ shape.h shapestr.h \ sync.h syncstr.h \ - Print.h Printstr.h \ Xcup.h Xcupstr.h \ dpms.h dpmsstr.h \ XEVI.h XEVIstr.h diff --git a/nx-X11/include/extensions/Print.h b/nx-X11/include/extensions/Print.h deleted file mode 100644 index 2d45082..0000000 --- a/nx-X11/include/extensions/Print.h +++ /dev/null @@ -1,552 +0,0 @@ -/* $Xorg: Print.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */ -/****************************************************************************** - ****************************************************************************** - ** - ** File: Print.h - ** - ** Description: Definitions needed by the server, library, and - ** clients. Subportion restricted to library and - ** clients. - ** - ** Server, Library, Client portion has: - ** o All sz_* defines - ** o Revision and Name defines - ** o Common defines and constants (e.g. Keywords, Masks) - ** o Extension version structure - ** - ** Library and client subportion has: - ** o Convience Marcos - ** o Client side data structures - ** o Client side event structures (non wire) - ** o Library function prototypes - ** o some private stuff denoted with _whatever - ** - ** Printstr.h for server and library, but NOT clients. - ** - ****************************************************************************** - ** - ** (c) Copyright 1996 Hewlett-Packard Company - ** (c) Copyright 1996 International Business Machines Corp. - ** (c) Copyright 1996 Sun Microsystems, Inc. - ** (c) Copyright 1996 Novell, Inc. - ** (c) Copyright 1996 Digital Equipment Corp. - ** (c) Copyright 1996 Fujitsu Limited - ** (c) Copyright 1996 Hitachi, Ltd. - ** - ** Permission is hereby granted, free of charge, to any person obtaining a copy - ** of this software and associated documentation files (the "Software"), to deal - ** in the Software without restriction, including without limitation the rights - ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - ** copies of the Software, and to permit persons to whom the Software is - ** furnished to do so, subject to the following conditions: - ** - ** The above copyright notice and this permission notice shall be included in - ** all copies or substantial portions of the Software. - ** - ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - ** COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - ** IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - ** CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ** - ** Except as contained in this notice, the names of the copyright holders shall - ** not be used in advertising or otherwise to promote the sale, use or other - ** dealings in this Software without prior written authorization from said - ** copyright holders. - ** - ****************************************************************************** - *****************************************************************************/ -/* $XFree86: xc/include/extensions/Print.h,v 1.4 2000/01/25 18:37:31 dawes Exp $ */ - -#ifndef _XpPrint_H_ -#define _XpPrint_H_ - -#ifndef _XP_PRINT_SERVER_ -#include <X11/Xlib.h> -#include <X11/Xresource.h> -#include <X11/Xauth.h> -#endif /* _XP_PRINT_SERVER_ */ - -#include <X11/Xfuncproto.h> - -_XFUNCPROTOBEGIN - -/****************************************************************************** - * - * Definitions used by the server, library and client. - */ - -/******************************************************************** - * - * Naming and versioning information. - */ -#define XP_PRINTNAME "XpExtension" - -/* - * Add a define below for each major extension release. - */ -#define XP_DONT_CHECK 0 -#define XP_INITIAL_RELEASE 1 - -/* - * For each single entry above, create one major/minor pair. - */ -#define XP_PROTO_MAJOR 1 -#define XP_PROTO_MINOR 0 - -/* - * Identify current version. - */ -#define XP_MAJOR_VERSION XP_PROTO_MAJOR -#define XP_MINOR_VERSION XP_PROTO_MINOR - -/* - * Misc version defines. - */ -#define XP_ABSENT 0 /* Prior to XP Print support */ -#define XP_PRESENT 1 /* With XP Print support */ - -/******************************************************************** - * - * Xp Print Error codes. - */ -#define XP_ERRORS 3 /* number of error types */ - -#define XPBadContext 0 /* Print Context invalid or missing */ -#define XPBadSequence 1 /* Illegal sequence of XP operations */ -#define XPBadResourceID 2 /* X-resource not valid */ - -/******************************************************************** - * - * Xp Print Event masks and codes. - * - */ -#define XP_EVENTS 2 /* number of event types */ - -#define XPNoEventMask 0 /* not an event - just a null mask */ -#define XPPrintMask (1L<<0) -#define XPAttributeMask (1L<<1) - -#define XPPrintNotify 0 /* contains "detail" - see below */ -#define XPAttributeNotify 1 /* contains "detail" - see below */ - -#define XPStartJobNotify 0 /* value for "detail" in XPPrintNotify*/ -#define XPEndJobNotify 1 -#define XPStartDocNotify 2 -#define XPEndDocNotify 3 -#define XPStartPageNotify 4 -#define XPEndPageNotify 5 - -/******************************************************************** - * - * Xp Print Attribute Object codes (subset of ISO DPA 10175). The - * Xp Server can get and set any of the values, while the Xp Library - * may only be able to set a subset of the attribute objects. - * - * note: the codes are also used as "detail" for XPAttributeNotify - * - * note: XPPageAttr is not defined in ISO DPA 10175. It is unique - * to Xp, and its attributes are a proper subset of XPDocAttr. - */ -typedef unsigned char XPAttributes; /* type of Xp*Attr codes */ - -#define XP_ATTRIBUTES 5 /* those attrs currently supported */ - -#define XPJobAttr 1 /* get/set */ -#define XPDocAttr 2 /* get/set */ -#define XPPageAttr 3 /* get/set - subset of XPDocAttr */ -#define XPPrinterAttr 4 /* get only (library) */ -#define XPServerAttr 5 /* get only (library), no - context needed */ - -/* - * note: ISO DPA 10175 defines a number of "attribute objects", of - * which POSIX 1387.4 and the SI Xp will only support a - * subset. - */ -#define XPMediumAttr 6 /* DPA-Object Medium */ -#define XPFontAttr 7 /* DPA-Object Font */ -#define XPResAttr 8 /* DPA-Object Resource */ -#define XPTransAttr 9 /* DPA-Object Transfer method */ -#define XPDelAttr 10 /* DPA-Object Delivery method */ -#define XPAuxSPkg 11 /* DPA-Object Auxiliary sheet package */ -#define XPAuxS 12 /* DPA-Object Auxiliary sheet */ -#define XPFinishAttr 13 /* DPA-Object Finishing */ -#define XPOutputAttr 14 /* DPA-Object Output method */ -#define XPImpAttr 15 /* DPA-Object Imposition */ -#define XPSchedAttr 16 /* DPA-Object Scheduler */ -#define XPIntJobAttr 17 /* DPA-Object Initial value job */ -#define XPIntDocAttr 18 /* DPA-Object Initial value document */ -#define XPResConAttr 19 /* DPA-Object Resource context */ - - -/* - * Replacement rules for XpSetAttributes - */ -typedef unsigned char XPAttrReplacement; -#define XPAttrReplace 1 -#define XPAttrMerge 2 - - -/* - * Return codes for XpGetDocumentData - */ -typedef unsigned char XPGetDocStatus; -#define XPGetDocFinished 0 /* normal termination */ -#define XPGetDocSecondConsumer 1 /* setup error */ -#define XPGetDocError 2 /* runtime error, see generated error */ - - -/* - * Save data types for XpStartJob. - */ -typedef unsigned char XPSaveData; -#define XPSpool 1 /* Job data sent to spooler */ -#define XPGetData 2 /* Job data via XpGetDocumentData */ - - -/* - * Document types for XpStartDoc. - */ -typedef unsigned char XPDocumentType; -#define XPDocNormal 1 /* Doc data handled by Xserver */ -#define XPDocRaw 2 /* Doc data passed through Xserver */ - - -/******************************************************************** - * - * Xp Print Property Names - */ - - -#ifndef _XP_PRINT_SERVER_ - -/****************************************************************************** - * - * Definitions used by the library and clients only. - */ - -/******************************************************************* - * - * General API defines and such. - */ - -/* - * Print Context for XpInitContext and related calls. - */ -typedef XID XPContext; - -/* - * Struct for XpGetPrinterList. - */ -typedef struct { - char *name; /* name */ - char *desc; /* localized description */ -} XPPrinterRec, *XPPrinterList; - -/* - * Typedefs for XpGetDocumentData - */ -typedef void (*XPSaveProc)( Display *display, - XPContext context, - unsigned char *data, - unsigned int data_len, - XPointer client_data); - -typedef void (*XPFinishProc)( Display *display, - XPContext context, - XPGetDocStatus status, - XPointer client_data); - -/* - * Typedefs for XpSetLocaleHinter and XpGetLocaleHinter - */ -typedef char * (*XPHinterProc)(void); - -#if 0 -/******************************************************************* - * - * Extension version structures. - * - **** this structure is now defined localy in the one file that uses it - **** in order to avoid clashes with its definition in XI.h - */ -typedef struct { - int present; - short major_version; - short minor_version; -} XExtensionVersion; -#endif - -/******************************************************************** - * - * Event structs for clients. - * - * note: these events are relative to a print context, and - * not to a window as in core X. - */ -typedef struct { - int type; /* base + XPPrintNotify */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if from a SendEvent request */ - Display *display; /* Display the event was read from */ - XPContext context; /* print context where operation was requested */ - Bool cancel; /* was detailed event canceled */ - int detail; /* XPStartJobNotify, XPEndJobNotify, - XPStartDocNotify, XPEndDocNotify, - XPStartPageNotify, XPEndPageNotify */ -} XPPrintEvent; - -typedef struct { - int type; /* base + XPAttributeNotify */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if from a SendEvent request */ - Display *display; /* Display the event was read from */ - XPContext context; /* print context where operation was requested */ - int detail; /* XPJobAttr, XPDocAttr, XPPageAttr, - XPPrinterAttr, XPSpoolerAttr, - XPMediumAttr, XPServerAttr */ -} XPAttributeEvent; - -typedef struct { - int type; /* base + XPDataReadyNotify */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if from a SendEvent request */ - Display *display; /* Display the event was read from */ - XPContext context; /* print context where operation was requested */ - unsigned long available; /* bytes available for retrieval */ -} XPDataReadyEvent; - - -/********************************************************** - * - * Function prototypes for library side. - */ - -extern XPContext XpCreateContext ( - Display *display, - char *printer_name -); - -extern void XpSetContext ( - Display *display, - XPContext print_context -); - -extern XPContext XpGetContext ( - Display *display -); - -extern void XpDestroyContext ( - Display *display, - XPContext print_context -); - -extern Screen *XpGetScreenOfContext ( - Display *display, - XPContext print_context -); - -extern Status XpGetPageDimensions ( - Display *display, - XPContext print_context, - unsigned short *width, /* return value */ - unsigned short *height, /* return value */ - XRectangle *reproducible_area /* return value */ -); - -extern void XpStartJob ( - Display *display, - XPSaveData save_data -); - -extern void XpEndJob ( - Display *display -); - -extern void XpCancelJob ( - Display *display, - Bool discard -); - -extern void XpStartDoc ( - Display *display, - XPDocumentType type -); - -extern void XpEndDoc ( - Display *display -); - -extern void XpCancelDoc ( - Display *display, - Bool discard -); - -extern void XpPutDocumentData ( - Display *display, - Drawable drawable, - unsigned char *data, - int data_len, - char *doc_fmt, - char *options -); - -extern Status XpGetDocumentData ( - Display *display, - XPContext context, - XPSaveProc save_proc, - XPFinishProc finish_proc, - XPointer client_data -); - -extern void XpStartPage ( - Display *display, - Window window -); - -extern void XpEndPage ( - Display *display -); - -extern void XpCancelPage ( - Display *display, - Bool discard -); - -extern void XpSelectInput ( - Display *display, - XPContext print_context, - unsigned long event_mask -); - -extern unsigned long XpInputSelected ( - Display *display, - XPContext print_context, - unsigned long *all_events_mask -); - -extern Bool XpSetImageResolution ( - Display *display, - XPContext print_context, - int image_res, - int *prev_res -); - -extern int XpGetImageResolution ( - Display *display, - XPContext print_context -); - -extern char *XpGetAttributes ( - Display *display, - XPContext print_context, - XPAttributes type -); - -extern void XpSetAttributes ( - Display *display, - XPContext print_context, - XPAttributes type, - char *pool, - XPAttrReplacement replacement_rule -); - -extern char *XpGetOneAttribute ( - Display *display, - XPContext print_context, - XPAttributes type, - char *attribute_name -); - -extern XPPrinterList XpGetPrinterList ( - Display *display, - char *printer_name, - int *list_count /* return value */ -); - -extern void XpFreePrinterList ( - XPPrinterList printer_list -); - -extern void XpRehashPrinterList ( - Display *display -); - -extern Status XpQueryVersion ( - Display *display, - short *major_version, /* return value */ - short *minor_version /* return value */ -); - -extern Bool XpQueryExtension ( - Display *display, - int *event_base_return, /* return value */ - int *error_base_return /* return value */ -); - -extern Screen **XpQueryScreens ( - Display *display, - int *list_count /* return value */ -); - -extern Status XpGetPdmStartParams ( - Display *print_display, - Window print_window, - XPContext print_context, - Display *video_display, - Window video_window, - Display **selection_display, /* return value */ - Atom *selection, /* return value */ - Atom *type, /* return value */ - int *format, /* return value */ - unsigned char **data, /* return value */ - int *nelements /* return value */ -); - -extern Status XpGetAuthParams ( - Display *print_display, - Display *video_display, - Display **selection_display, /* return value */ - Atom *selection, /* return value */ - Atom *target /* return value */ -); - -extern Status XpSendAuth ( - Display *display, - Window window -); - -extern Status XpSendOneTicket ( - Display *display, - Window window, - Xauth *ticket, - Bool more -); - -extern void XpSetLocaleHinter ( - XPHinterProc hinter_proc, - char *hinter_desc -); - -extern char *XpGetLocaleHinter ( - XPHinterProc *hinter_proc -); - -extern char *XpGetLocaleNetString(void); - -extern char *XpNotifyPdm ( - Display *print_display, - Window print_window, - XPContext print_context, - Display *video_display, - Window video_window, - Bool auth_flag -); - -#endif /* _XP_PRINT_SERVER_ */ - -_XFUNCPROTOEND - -#endif /* _XpPrint_H_ */ diff --git a/nx-X11/include/extensions/Printstr.h b/nx-X11/include/extensions/Printstr.h deleted file mode 100644 index 45ac7a5..0000000 --- a/nx-X11/include/extensions/Printstr.h +++ /dev/null @@ -1,783 +0,0 @@ -/* $Xorg: Printstr.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */ -/****************************************************************************** - ****************************************************************************** - ** - ** File: Printstr.h - ** - ** Description: Definitions needed by the server and library, but - ** not clients. - ** - ** Print.h for server, library and clients. - ** - ****************************************************************************** - ** - ** (c) Copyright 1996 Hewlett-Packard Company - ** (c) Copyright 1996 International Business Machines Corp. - ** (c) Copyright 1996 Sun Microsystems, Inc. - ** (c) Copyright 1996 Novell, Inc. - ** (c) Copyright 1996 Digital Equipment Corp. - ** (c) Copyright 1996 Fujitsu Limited - ** (c) Copyright 1996 Hitachi, Ltd. - ** - ** Permission is hereby granted, free of charge, to any person obtaining a copy - ** of this software and associated documentation files (the "Software"), to deal - ** in the Software without restriction, including without limitation the rights - ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - ** copies of the Software, and to permit persons to whom the Software is - ** furnished to do so, subject to the following conditions: - ** - ** The above copyright notice and this permission notice shall be included in - ** all copies or substantial portions of the Software. - ** - ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - ** COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - ** IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - ** CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ** - ** Except as contained in this notice, the names of the copyright holders shall - ** not be used in advertising or otherwise to promote the sale, use or other - ** dealings in this Software without prior written authorization from said - ** copyright holders. - ** - ****************************************************************************** - *****************************************************************************/ -/* $XFree86: xc/include/extensions/Printstr.h,v 1.5 2001/08/01 00:44:35 tsi Exp $ */ - - -#ifndef _XpPrintstr_H_ -#define _XpPrintstr_H_ - -/* - * NEED_EVENTS and NEED_REPLIES are hacks to limit the linker symbol-table - * size. When function prototypes are needed from Print.h, this sets up - * a cascading dependency on Printstr.h and eventually Xproto.h to provide - * the event and reply struct definitions. - */ -#ifndef NEED_EVENTS -#define NEED_EVENTS -#endif /* NEED_EVENTS */ - -#define NEED_REPLIES - -#include <X11/Xproto.h> -#ifndef _XP_PRINT_SERVER_ -#include <X11/Xlib.h> -#endif /* _XP_PRINT_SERVER_ */ - -/* - * Pull in other definitions. Print.h will hide some things if we're - * doing server side work. - */ -#include <X11/extensions/Print.h> - -#include <X11/Xfuncproto.h> - -_XFUNCPROTOBEGIN - -/****************************************************************************** - * - * Protocol requests constants and alignment values - * - * Note: Xlib macro's expect X_ABC where ABC is the name of the - * protocol request. - */ -#define X_PrintQueryVersion 0 -#define X_PrintGetPrinterList 1 -#define X_PrintCreateContext 2 -#define X_PrintSetContext 3 -#define X_PrintGetContext 4 -#define X_PrintDestroyContext 5 -#define X_PrintGetContextScreen 6 -#define X_PrintStartJob 7 -#define X_PrintEndJob 8 -#define X_PrintStartDoc 9 -#define X_PrintEndDoc 10 -#define X_PrintPutDocumentData 11 -#define X_PrintGetDocumentData 12 -#define X_PrintStartPage 13 -#define X_PrintEndPage 14 -#define X_PrintSelectInput 15 -#define X_PrintInputSelected 16 -#define X_PrintGetAttributes 17 -#define X_PrintSetAttributes 18 -#define X_PrintGetOneAttribute 19 -#define X_PrintRehashPrinterList 20 -#define X_PrintGetPageDimensions 21 -#define X_PrintQueryScreens 22 -#define X_PrintSetImageResolution 23 -#define X_PrintGetImageResolution 24 - -/******************************************************************** - * - * Protocol data types - */ -#define PCONTEXT CARD32 -#define WINDOW CARD32 -#define DRAWABLE CARD32 -#define BITMASK CARD32 - -/****************************************************************************** - * - * Event wire struct definitions - * - * Note: Xlib macro's expect xABC struct names and sz_xABC size - * constants where ABC is the name of the protocol request. - */ - - -/********************************************************************* - * - * Events. - * - * See Print.h for the protocol "type" values. - */ -typedef struct _xPrintPrintEvent { - BYTE type; /* XPPrintNotify + extEntry->eventBase */ - BYTE detail; /* XPStartJobNotify, XPEndJobNotify, - XPStartDocNotify, XPEndDocNotify, - XPStartPageNotify, XPEndPageNotify */ - CARD16 sequenceNumber B16; - PCONTEXT printContext B32; /* print context */ - BOOL cancel; /* canceled flag */ - CARD8 pad1; /* rest is unused */ - CARD16 pad2 B16; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; - CARD32 pad7 B32; -} xPrintPrintEvent; -#define sz_xPrintPrintEvent 32; - -typedef struct _xPrintAttributeEvent { - BYTE type; /* XPAttributeNotify + extEntry->eventBase */ - BYTE detail; /* XPJobAttr, XPDocAttr, XPPageAttr, - XPPrinterAttr, XPSpoolerAttr, - XPMediumAttr, XPServerAttr */ - CARD16 sequenceNumber B16; - PCONTEXT printContext B32; /* print context */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xPrintAttributeEvent; -#define sz_xPrintAttributeEvent 32; - - -/********************************************************************* - * - * Requests - */ -typedef struct _PrintQueryVersion { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintQueryVersion */ - CARD16 length B16; -} xPrintQueryVersionReq; -#define sz_xPrintQueryVersionReq 4 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 majorVersion B16; /* major version of Xp protocol */ - CARD16 minorVersion B16; /* minor version of Xp protocol */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xPrintQueryVersionReply; -#define sz_xPrintQueryVersionReply 32 - - -typedef struct _PrintGetPrinterList { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetPrinterList */ - CARD16 length B16; - CARD32 printerNameLen B32; /* length of printer name */ - CARD32 localeLen B32; /* length of locale string */ - - /* variable portion ***************************************** - STRING8 printerName; * printer name * - BYTE pad(printerNameLen) * unused * - STRING8 locale; * locale * - BYTE pad(localeLen) * unused * - ************************************************************/ -} xPrintGetPrinterListReq; -#define sz_xPrintGetPrinterListReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 listCount B32; /* of PRINTER recs below */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - - /* variable portion ***************************************** - CARD32 nameLen B32; * length of name in bytes * - STRING8 name; * name * - BYTE pad(nameLen) * unused * - - CARD32 descLen B32; * length of desc in bytes * - STRING8 desc; * localized description * - BYTE pad(descLen) * unused * - ************************************************************/ -} xPrintGetPrinterListReply; -#define sz_xPrintGetPrinterListReply 32 - - -typedef struct _PrintRehashPrinterList { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintRehashPrinterList */ - CARD16 length B16; -} xPrintRehashPrinterListReq; -#define sz_xPrintRehashPrinterListReq 4 - - -typedef struct _PrintCreateContext { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintInitSetContext */ - CARD16 length B16; - CARD32 contextID B32; /* ID for context */ - CARD32 printerNameLen B32; /* length of printerName in bytes */ - CARD32 localeLen B32; /* length of locale in bytes */ - - /* variable portion ***************************************** - STRING8 printerName * printer name * - BYTE pad(printerNameLen) * unused * - STRING8 locale * locale * - BYTE pad(locale) * unused * - ************************************************************/ -} xPrintCreateContextReq; -#define sz_xPrintCreateContextReq 16 - - -typedef struct _PrintSetContext { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintSetContext */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ -} xPrintSetContextReq; -#define sz_xPrintSetContextReq 8 - - -typedef struct _PrintGetContext { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetContext */ - CARD16 length B16; -} xPrintGetContextReq; -#define sz_xPrintGetContextReq 4 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - PCONTEXT printContext B32; /* print context */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xPrintGetContextReply; -#define sz_xPrintGetContextReply 32 - - -typedef struct _PrintDestroyContext { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintDestroyContext */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ -} xPrintDestroyContextReq; -#define sz_xPrintDestroyContextReq 8 - - -typedef struct _PrintGetContextScreen { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetContextScreen */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ -} xPrintGetContextScreenReq; -#define sz_xPrintGetContextScreenReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - WINDOW rootWindow; /* screenPtr represented as rootWin */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xPrintGetContextScreenReply; -#define sz_xPrintGetContextScreenReply 32 - - -typedef struct _PrintStartJob { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintStartJob */ - CARD16 length B16; - CARD8 saveData; /* save data boolean */ - CARD8 pad1; - CARD16 pad2 B16; -} xPrintStartJobReq; -#define sz_xPrintStartJobReq 8 - -typedef struct _PrintEndJob { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintEndJob */ - CARD16 length B16; - BOOL cancel; /* cancel boolean */ - CARD8 pad1; - CARD16 pad2 B16; -} xPrintEndJobReq; -#define sz_xPrintEndJobReq 8 - - -typedef struct _PrintStartDoc { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintStartDoc */ - CARD16 length B16; - CARD8 type; /* type for document */ - CARD8 pad1; - CARD16 pad2 B16; -} xPrintStartDocReq; -#define sz_xPrintStartDocReq 8 - -typedef struct _PrintEndDoc { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintEndDoc */ - CARD16 length B16; - BOOL cancel; /* cancel boolean */ - CARD8 pad1; - CARD16 pad2 B16; -} xPrintEndDocReq; -#define sz_xPrintEndDocReq 8 - - -typedef struct _PrintPutDocumentData { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintPutDocumentData */ - CARD16 length B16; - DRAWABLE drawable B32; /* target drawable */ - CARD32 len_data B32; /* big len in bytes */ - CARD16 len_fmt; /* len in bytes */ - CARD16 len_options; /* len in bytes */ - - /* variable portion ***************************************** - LISTofBYTE data; * data * - BYTE pad(len_data) * unused * - STRING8 doc_fmt; * ISO compliant desc of data type * - BYTE pad(len_fmt) * unused * - STRING8 options; * additional device-dependent desc * - BYTE pad(len_options) * unused * - ************************************************************/ -} xPrintPutDocumentDataReq; -#define sz_xPrintPutDocumentDataReq 16 - - -typedef struct _PrintGetDocumentData { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetDocumentData */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ - CARD32 maxBufferSize B32; /* maximum buffer size requested */ -} xPrintGetDocumentDataReq; -#define sz_xPrintGetDocumentDataReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 statusCode B32; /* status code for reply */ - CARD32 finishedFlag B32; /* is this the last reply */ - CARD32 dataLen B32; /* data length */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - - /* variable portion ***************************************** - LISTofBYTE data; * data * - BYTE pad(count) * unused * - ************************************************************/ -} xPrintGetDocumentDataReply; -#define sz_xPrintGetDocumentDataReply 32 - - -typedef struct _PrintStartPage { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintStartPage */ - CARD16 length B16; - WINDOW window B32; /* window */ -} xPrintStartPageReq; -#define sz_xPrintStartPageReq 8 - -typedef struct _PrintEndPage { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintEndPage */ - CARD16 length B16; - BOOL cancel; /* cancel boolean */ - CARD8 pad1; - CARD16 pad2 B16; -} xPrintEndPageReq; -#define sz_xPrintEndPageReq 8 - - -typedef struct _PrintSelectInput { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintSelectInput */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ - BITMASK eventMask B32; -} xPrintSelectInputReq; -#define sz_xPrintSelectInputReq 12 - - -typedef struct _PrintInputSelected { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintInputSelected */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ -} xPrintInputSelectedReq; -#define sz_xPrintInputSelectedReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - BITMASK eventMask B32; /* your event mask */ - BITMASK allEventsMask B32; /* all event mask */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; -} xPrintInputSelectedReply; -#define sz_xPrintInputSelectedReply 32 - -typedef struct _PrintGetAttributes { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetAttributes */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ - CARD8 type; /* type */ - CARD8 pad1; /* unused */ - CARD16 pad2 B16; /* unused */ -} xPrintGetAttributesReq; -#define sz_xPrintGetAttributesReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 stringLen B32; /* length of xrm db string */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - - /* variable portion ***************************************** - STRING8 string; * xrm db as a string * - BYTE pad(stringLen) * unused * - ************************************************************/ -} xPrintGetAttributesReply; -#define sz_xPrintGetAttributesReply 32 - - -typedef struct _PrintSetAttributes { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintSetAttributes */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ - CARD32 stringLen B32; /* length of xrm db string */ - CARD8 type; /* type */ - CARD8 rule; /* replacement rule */ - CARD16 pad1 B16; /* unused */ - - /* variable portion ***************************************** - STRING8 string; * xrm db as a string * - BYTE pad(stringLen) * unused * - ************************************************************/ -} xPrintSetAttributesReq; -#define sz_xPrintSetAttributesReq 16 - - -typedef struct _PrintGetOneAttribute { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetOneAttribute */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ - CARD32 nameLen; /* length of name string */ - CARD8 type; /* type */ - CARD8 pad1; /* unused */ - CARD16 pad2 B16; /* unused */ - - /* variable portion ***************************************** - STRING8 name; * name as a string * - BYTE pad(name) * unused * - ************************************************************/ -} xPrintGetOneAttributeReq; -#define sz_xPrintGetOneAttributeReq 16 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 valueLen B32; /* length of value string */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - - /* variable portion ***************************************** - STRING8 value; * value as a string * - BYTE pad(value) * unused * - ************************************************************/ -} xPrintGetOneAttributeReply; -#define sz_xPrintGetOneAttributeReply 32 - - -typedef struct _PrintGetPageDimensions { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetPageDimensions */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ -} xPrintGetPageDimensionsReq; -#define sz_xPrintGetPageDimensionsReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 width; /* total pixel width */ - CARD16 height; /* total pixel height */ - CARD16 rx; /* reproducable x pixel offset */ - CARD16 ry; /* reproducable y pixel offset */ - CARD16 rwidth; /* reproducable x pixel width */ - CARD16 rheight; /* reproducable y pixel width */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; -} xPrintGetPageDimensionsReply; -#define sz_xPrintGetPageDimensionsReply 32 - - -typedef struct _PrintQueryScreens { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintQueryScreens */ - CARD16 length B16; -} xPrintQueryScreensReq; -#define sz_xPrintQueryScreensReq 4 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; /* not used */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 listCount; /* number of screens following */ - CARD32 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - - /* variable portion ***************************************** - WINDOW rootWindow; * root window of screen * - ************************************************************/ -} xPrintQueryScreensReply; -#define sz_xPrintQueryScreensReply 32 - -typedef struct _PrintSetImageResolution { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintSetImageResolution */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ - CARD16 imageRes B16; /* image resolution */ - CARD16 pad1 B16; -} xPrintSetImageResolutionReq; -#define sz_xPrintSetImageResolutionReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BOOL status; /* accepted or not */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 prevRes B16; /* previous resolution */ - CARD16 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xPrintSetImageResolutionReply; -#define sz_xPrintSetImageResolutionReply 32 - -typedef struct _PrintGetImageResolution { - CARD8 reqType; /* always PrintReqCode */ - CARD8 printReqType; /* always X_PrintGetImageResolution */ - CARD16 length B16; - PCONTEXT printContext B32; /* print context */ -} xPrintGetImageResolutionReq; -#define sz_xPrintGetImageResolutionReq 8 - -typedef struct { - BYTE type; /* X_Reply */ - CARD8 unused; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 imageRes B16; /* image resolution */ - CARD16 pad1 B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -} xPrintGetImageResolutionReply; -#define sz_xPrintGetImageResolutionReply 32 - -#ifndef _XP_PRINT_SERVER_ -/*********************************************************************** - * - * Library-only definitions. - */ -extern XPHinterProc _xp_hinter_proc; -extern char *_xp_hinter_desc; -extern int _xp_hinter_init; - -#else /* _XP_PRINT_SERVER_ */ - -/*********************************************************************** - * - * Server-only definitions shared between the extension and DDX layers. - * - */ - -/* - * Internal return code used to indicate that the requesting - * client has been suspended. - */ -#define Suspended 84 - -struct _XpContext; - -extern void XpRegisterPrinterScreen( - ScreenPtr pScreen, - int (*CreateContext)(struct _XpContext *)); - -typedef struct _xpprintFuncs { - int (*StartJob)( - struct _XpContext * /* pContext */, - Bool /* sendClientData */, - ClientPtr /* client */); - int (*EndJob)(struct _XpContext *, int); - int (*StartDoc)( - struct _XpContext * /* pContext */, - XPDocumentType /* type */); - int (*EndDoc)(struct _XpContext *, int); - int (*StartPage)( - struct _XpContext * /* pContext */, - WindowPtr /* pWin */); - int (*EndPage)( - struct _XpContext * /* pContext */, - WindowPtr /* pWin */); - int (*PutDocumentData)( - struct _XpContext * /* pContext */, - DrawablePtr /* pDraw */, - char * /* pData */, - int /* len_data */, - char * /* pDoc_fmt */, - int /* len_fmt */, - char * /* pOptions */, - int /* len_options */, - ClientPtr /* client */); - int (*GetDocumentData)( - struct _XpContext * /* pContext */, - ClientPtr /* client */, - int /* maxBufferSize */); - int (*DestroyContext)( - struct _XpContext *); /* pContext */ - char *(*GetAttributes)( - struct _XpContext *, - XPAttributes /* pool */); - char *(*GetOneAttribute)( - struct _XpContext * /* pContext */, - XPAttributes /* pool */, - char * /* attrs */); - int (*SetAttributes)( - struct _XpContext * /* pContext */, - XPAttributes /* pool */, - char * /* attrs */); - int (*AugmentAttributes)( - struct _XpContext * /* pContext */, - XPAttributes /* pool */, - char * /* attrs */); - int (*GetMediumDimensions)( - struct _XpContext * /* pPrintContext */, - CARD16 * /* pWidth */, - CARD16 * /* pHeight */); - int (*GetReproducibleArea)( - struct _XpContext * /* pPrintContext */, - xRectangle * /* pRect */); - int (*SetImageResolution)( - struct _XpContext * /* pPrintContext */, - int /* imageRes */, - Bool * /* pStatus */); -} XpDriverFuncs, *XpDriverFuncsPtr; - -/* - * Each print context is represented by one of the following structs - * associated with a resource ID of type RTcontext . A pointer to - * the context is placed in the Xp extension's devPrivates - * element in each client * which establishes a context via - * either initContext or setContext. - * The context pointer is also placed in the struct indicated by the - * RTpage resource associated with each StartPage'd window. - */ -typedef struct _XpContext { - XID contextID; - char *printerName; - int screenNum; /* screen containing the printer */ - struct _XpClient *clientHead; /* list of clients */ - CARD32 state; - VisualID pageWin; - DevUnion *devPrivates; - XpDriverFuncs funcs; - ClientPtr clientSlept; - int imageRes; -} XpContextRec, *XpContextPtr; - -#include <X11/fonts/fontstruct.h> /* FontResolutionPtr */ - -extern Bool XpAllocateContextPrivate(int, unsigned); -extern FontResolutionPtr XpGetClientResolutions(ClientPtr, int *); -extern XpContextPtr XpContextOfClient(ClientPtr); -extern XpContextPtr XpGetPrintContext(ClientPtr); -extern int XpAllocateContextPrivateIndex(void); -extern int XpRehashPrinterList(void); -extern void XpSetFontResFunc(ClientPtr); -extern void XpUnsetFontResFunc(ClientPtr); -extern void XpRegisterInitFunc(ScreenPtr, char *, int (*)(struct _XpContext *)); - -#endif /* _XP_PRINT_SERVER_ */ - -_XFUNCPROTOEND - -#endif /* _XpPrintstr_H_ */ diff --git a/nx-X11/lib/Imakefile b/nx-X11/lib/Imakefile index 1266724..721d3ff 100644 --- a/nx-X11/lib/Imakefile +++ b/nx-X11/lib/Imakefile @@ -181,10 +181,6 @@ REGEXDIR = regex XALIBDIR = Xa #endif -#if BuildXprintLib -XPRINTLIBDIRS = Xp XprintUtil XprintAppUtil -#endif - #if BuildFontCacheLib FONTCACHELIBDIR = Xfontcache #endif @@ -221,7 +217,7 @@ LINTSUBDIRS = $(XAULIBDIR) $(XDMCPLIBDIR) $(X11LIBDIR) \ $(OLDXLIBDIR) $(ICELIBDIR) $(SMLIBDIR) $(XEXTLIBDIR) $(XTLIBDIR) \ $(SSLIBDIR) $(XF86MISCLIBDIR) $(XF86VMLIBDIR) $(XF86DGALIBDIR) \ $(XF86RUSHLIBDIR) $(XMULIBDIR) $(XMUULIBDIR) $(XPMLIBDIR) \ - $(XPRINTLIBDIRS) $(XAW6LIBDIR) $(XAW7LIBDIR) $(XAWLIBDIR) \ + $(XAW6LIBDIR) $(XAW7LIBDIR) $(XAWLIBDIR) \ $(XINPUTLIBDIR) $(XTSTLIBDIR) $(FSLIBDIR) $(XKBLIBDIR) \ $(XKBUILIBDIR) $(LBXUTILDIR) $(XALIBDIR) $(EXPATBUILDDIR) \ $(XVLIBDIR) $(GLXLIBDIR) $(GLULIBDIR) $(GLWLIBDIR) \ diff --git a/nx-X11/programs/Imakefile b/nx-X11/programs/Imakefile index 9480baf..acecc3b 100644 --- a/nx-X11/programs/Imakefile +++ b/nx-X11/programs/Imakefile @@ -57,9 +57,6 @@ SCREENSAVESRCDIR = beforelight #if BuildLBX LBXPROXYSRCDIR = lbxproxy #endif -#if BuildXprintClients - XPSRCDIRS = xplsprinters xprehashprinterlist xphelloworld xpr -#endif PROXYMGRSRCDIR = proxymngr RSTARTSRCDIR = rstart SMPROXYSRCDIR = smproxy @@ -109,10 +106,6 @@ XTRAPCLIENTDIRS = xtrap #if BuildDPSClients DPSCLIENTDIRS = dpsinfo dpsexec texteroids #endif -#if BuildDBElib && BuildXprintClients - DBECLIENTDIRS = xdbedizzy -#endif - XPMCLIENTDIRS = cxpm sxpm #if BuildGLXLibrary diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index 979a946..c251033 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -158,49 +158,6 @@ INSTPGMFLAGS = LIBCWRAPPER = os/libcwrapper.o #endif -#if BuildXprint - -XPCONFIGDIR = XpConfig - -#ifndef XpRasterDDX -#define XpRasterDDX YES -#endif -#ifndef XpColorPclDDX -#define XpColorPclDDX YES -#endif -#ifndef XpMonoPclDDX -#define XpMonoPclDDX NO -#endif -#ifndef XpPostScriptDDX -#define XpPostScriptDDX YES -#endif - -#if XpRasterDDX -XPRASTLIB = Xprint/raster/LibraryTargetName(raster) -#endif -#if XpColorPclDDX -XPPCLLIB = Xprint/pcl/LibraryTargetName(pcl) -#endif -#if XpMonoPclDDX -XPMPCLLIB = Xprint/pcl-mono/LibraryTargetName(pcl) -#endif -#if XpPostScriptDDX -XPPSLIB = Xprint/ps/LibraryTargetName(ps) -#endif - -XPDDXLIBS = Xprint/LibraryTargetName(printer) \ - $(XPRASTLIB) $(XPPCLLIB) $(XPMPCLLIB) $(XPPSLIB) -XPDDXFBLIBS = $(MFB) $(CFB32) -#if !PrintOnlyServer - XPFBLIBS = $(XPDDXFBLIBS) - XPDDX = $(XPDDXLIBS) -#endif - XPDDXDIR = Xprint -#endif -#if !BuildXprint || PrintOnlyServer -XPFBLIBS = dix/LibraryTargetName(xpstubs) -#endif - #if BuildRender RENDERDIR = render RENDERLIB = $(RENDERDIR)/librender.a @@ -834,39 +791,6 @@ ServerDriverSDKTarget(Xorg) #endif #endif /* XorgServer */ -#if defined(XprtServer) && XprtServer -XCOMM -XCOMM Print Server -XCOMM -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -CFB32SUBDIR = cfb32 -MIDAMAGEDIR = miext/damage -XPSUBDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB32DIR) $(DEPDIRS) \ - $(MIDAMAGEDIR) -XPOBJS = Xprint/ddxInit.o Xprint/dpmsstubs.o Xprint/miinitext.o -#if PrintOnlyServer -XPLIBS = PreFbLibs $(XPDDXLIBS) $(XPDDXFBLIBS) PostFbLibs -#else -XPLIBS = PreFbLibs PostFbLibs -#endif -#if (defined(SunArchitecture) || defined(SparcArchitecture)) && \ - defined(SVR4Architecture) -XPSYSLIBS = $(FONTLIBS) $(CBRT) $(SYSLIBS) $(XONLYLIB) -lw -#else -XPSYSLIBS = $(FONTLIBS) $(CBRT) $(SYSLIBS) $(XONLYLIB) -#endif -#if HasParallelMake -MakeMutex($(XPSUBDIRS) $(XPOBJS) $(XPLIBS) $(XPSYSLIBS)) -#endif -#if ForceServerRemake -$(XPOBJS) $(XPLIBS) $(XPSYSLIBS):: $(XPSUBDIRS) - @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi -#endif -ServerTarget(Xprt,$(XPSUBDIRS),$(XPOBJS), \ - $(LIBCWRAPPER) $(XPLIBS) $(LOADABLEEXTS),$(XPSYSLIBS)) -#endif /* XprtServer */ - #if defined(NXAgentServer) && NXAgentServer XCOMM XCOMM Nested server with NXlib-based ddx and compressed transport. diff --git a/nx-X11/programs/Xserver/Xext/Imakefile b/nx-X11/programs/Xserver/Xext/Imakefile index 6846c28..6c2c060 100644 --- a/nx-X11/programs/Xserver/Xext/Imakefile +++ b/nx-X11/programs/Xserver/Xext/Imakefile @@ -131,16 +131,11 @@ XF86BIGFOBJS = xf86bigfont.o XEVIEOBJS = xevie.o #endif -#if BuildXprint - XPRINTSRCS = xprint.c - XPRINTOBJS = xprint.o -#endif - SRCS = shape.c $(SHMSRCS) $(MULTIBUFSRC) \ mitmisc.c xtest.c xtest1di.c xtest1dd.c sleepuntil.c \ bigreq.c sync.c $(SCRNSAVSRC) xcmisc.c $(VIDMODESRCS) \ $(XF86MISCSRCS) $(XF86BIGFSRCS) $(XF86DGASRCS) $(SECURITYSRCS) \ - $(APPGROUPSRCS) $(XPRINTSRCS) $(CUPSRCS) $(PNRXSRCS) $(DPMSSRCS) \ + $(APPGROUPSRCS) $(CUPSRCS) $(PNRXSRCS) $(DPMSSRCS) \ $(XEVIESRCS) \ $(EVISRCS) $(XVSRCS) $(FONTCACHESRCS) $(XRESSRCS) $(DMXSRCS) @@ -148,11 +143,11 @@ XF86BIGFOBJS = xf86bigfont.o mitmisc.o xtest.o xtest1di.o xtest1dd.o sleepuntil.o \ bigreq.o sync.o $(SCRNSAVOBJ) xcmisc.o $(VIDMODEOBJS) \ $(XF86MISCOBJS) $(XF86BIGFOBJS) $(XF86DGAOBJS) $(SECURITYOBJS) \ - $(APPGROUPOBJS) $(XPRINTOBJS) $(CUPOBJS) $(PNRXOBJS) $(DPMSOBJS) \ + $(APPGROUPOBJS) $(CUPOBJS) $(PNRXOBJS) $(DPMSOBJS) \ $(XEVIEOBJS) \ $(EVIOBJS) $(XVOBJS) $(FONTCACHEOBJS) $(XRESOBJS) $(DMXOBJS) - SOBJS = $(SHMOBJS) $(APPGROUPOBJS) $(SECURITYOBJS) $(XPRINTOBJS) \ + SOBJS = $(SHMOBJS) $(APPGROUPOBJS) $(SECURITYOBJS) \ shape.o xtest.o xtest1di.o xtest1dd.o sleepuntil.o $(PNRXOBJS) \ $(XEVIEOBJS) \ $(XF86BIGFOBJS) diff --git a/nx-X11/programs/Xserver/Xext/xprint.c b/nx-X11/programs/Xserver/Xext/xprint.c deleted file mode 100644 index 60512d3..0000000 --- a/nx-X11/programs/Xserver/Xext/xprint.c +++ /dev/null @@ -1,2760 +0,0 @@ -/* $Xorg: xprint.c,v 1.5 2001/03/05 20:42:26 pookie Exp $ */ -/* -(c) Copyright 1996 Hewlett-Packard Company -(c) Copyright 1996 International Business Machines Corp. -(c) Copyright 1996 Sun Microsystems, Inc. -(c) Copyright 1996 Novell, Inc. -(c) Copyright 1996 Digital Equipment Corp. -(c) Copyright 1996 Fujitsu Limited -(c) Copyright 1996 Hitachi, Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the names of the copyright holders shall -not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from said -copyright holders. -*/ -/******************************************************************* -** -** ********************************************************* -** * -** * File: xprint.c -** * -** * Copyright: Copyright 1993, 1995 Hewlett-Packard Company -** * -** * Copyright 1989 by The Massachusetts Institute of Technology -** * -** * Permission to use, copy, modify, and distribute this -** * software and its documentation for any purpose and without -** * fee is hereby granted, provided that the above copyright -** * notice appear in all copies and that both that copyright -** * notice and this permission notice appear in supporting -** * documentation, and that the name of MIT not be used in -** * advertising or publicity pertaining to distribution of the -** * software without specific prior written permission. -** * M.I.T. makes no representation about the suitability of -** * this software for any purpose. It is provided "as is" -** * without any express or implied warranty. -** * -** * MIT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -** * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT- -** * NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MIT BE LI- -** * ABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -** * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR -** * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -** * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH -** * THE USE OR PERFORMANCE OF THIS SOFTWARE. -** * -** ********************************************************* -** -********************************************************************/ -/* $XFree86: xc/programs/Xserver/Xext/xprint.c,v 1.14tsi Exp $ */ - -#define _XP_PRINT_SERVER_ -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xos.h> -#define NEED_EVENTS -#include <X11/Xproto.h> -#undef NEED_EVENTS -#include "misc.h" -#include "windowstr.h" -#include "scrnintstr.h" -#include "pixmapstr.h" -#include "extnsionst.h" -#include "dixstruct.h" -#include <X11/Xatom.h> -#include <X11/extensions/Print.h> -#include <X11/extensions/Printstr.h> -#include "../Xprint/DiPrint.h" -#include "../Xprint/attributes.h" -#include "modinit.h" - -static void XpResetProc(ExtensionEntry *); - -static int ProcXpDispatch(ClientPtr); -static int ProcXpSwappedDispatch(ClientPtr); - -static int ProcXpQueryVersion(ClientPtr); -static int ProcXpGetPrinterList(ClientPtr); -static int ProcXpCreateContext(ClientPtr); -static int ProcXpSetContext(ClientPtr); -static int ProcXpGetContext(ClientPtr); -static int ProcXpDestroyContext(ClientPtr); -static int ProcXpGetContextScreen(ClientPtr); -static int ProcXpStartJob(ClientPtr); -static int ProcXpEndJob(ClientPtr); -static int ProcXpStartDoc(ClientPtr); -static int ProcXpEndDoc(ClientPtr); -static int ProcXpStartPage(ClientPtr); -static int ProcXpEndPage(ClientPtr); -static int ProcXpSelectInput(ClientPtr); -static int ProcXpInputSelected(ClientPtr); -static int ProcXpPutDocumentData(ClientPtr); -static int ProcXpGetDocumentData(ClientPtr); -static int ProcXpGetAttributes(ClientPtr); -static int ProcXpGetOneAttribute(ClientPtr); -static int ProcXpSetAttributes(ClientPtr); -static int ProcXpRehashPrinterList(ClientPtr); -static int ProcXpQueryScreens(ClientPtr); -static int ProcXpGetPageDimensions(ClientPtr); -static int ProcXpSetImageResolution(ClientPtr); -static int ProcXpGetImageResolution(ClientPtr); - -static void SwapXpNotifyEvent(xPrintPrintEvent *, xPrintPrintEvent *); -static void SwapXpAttributeEvent(xPrintAttributeEvent *, xPrintAttributeEvent *); - -static int SProcXpGetPrinterList(ClientPtr); -static int SProcXpCreateContext(ClientPtr); -static int SProcXpSetContext(ClientPtr); -static int SProcXpGetContext(ClientPtr); -static int SProcXpDestroyContext(ClientPtr); -static int SProcXpGetContextScreen(ClientPtr); -static int SProcXpStartJob(ClientPtr); -static int SProcXpEndJob(ClientPtr); -static int SProcXpStartDoc(ClientPtr); -static int SProcXpEndDoc(ClientPtr); -static int SProcXpStartPage(ClientPtr); -static int SProcXpEndPage(ClientPtr); -static int SProcXpSelectInput(ClientPtr); -static int SProcXpInputSelected(ClientPtr); -static int SProcXpPutDocumentData(ClientPtr); -static int SProcXpGetDocumentData(ClientPtr); -static int SProcXpGetAttributes(ClientPtr); -static int SProcXpGetOneAttribute(ClientPtr); -static int SProcXpSetAttributes(ClientPtr); -static int SProcXpRehashPrinterList(ClientPtr); -static int SProcXpGetPageDimensions(ClientPtr); -static int SProcXpSetImageResolution(ClientPtr); -static int SProcXpGetImageResolution(ClientPtr); - -static void SendXpNotify(XpContextPtr, int, int); -static void SendAttributeNotify(XpContextPtr, int); -static int XpFreeClient(pointer, XID); -static int XpFreeContext(pointer, XID); -static int XpFreePage(pointer, XID); -static Bool XpCloseScreen(int, ScreenPtr); -static CARD32 GetAllEventMasks(XpContextPtr); -static struct _XpClient *CreateXpClient(ClientPtr); -static void InitContextPrivates(XpContextPtr); -static void ResetContextPrivates(void); -static struct _XpClient *FindClient(XpContextPtr, ClientPtr); -static struct _XpClient *AcquireClient(XpContextPtr, ClientPtr); - -typedef struct _driver { - struct _driver *next; - char *name; - int (* CreateContext)(XpContextPtr); -} XpDriverRec, *XpDriverPtr; - -typedef struct _xpScreen { - Bool (* CloseScreen)(int, ScreenPtr); - struct _driver *drivers; -} XpScreenRec, *XpScreenPtr; - -/* - * Each context has a list of XpClients indicating which clients have - * associated this context with their connection. - * Each such client has a RTclient resource allocated for it, - * and this per-client - * resource is used to delete the XpClientRec if/when the client closes - * its connection. - * The list of XpClients is also walked if/when the context is destroyed - * so that the ContextPtr can be removed from the client's devPrivates. - */ -typedef struct _XpClient { - struct _XpClient *pNext; - ClientPtr client; - XpContextPtr context; - CARD32 eventMask; - XID contextClientID; /* unneeded sanity check? */ -} XpClientRec, *XpClientPtr; - -static void FreeXpClient(XpClientPtr, Bool); - -/* - * Each StartPage request specifies a window which forms the top level - * window of the page. One of the following structs is created as a - * RTpage resource with the same ID as the window itself. This enables - * us to clean up when/if the window is destroyed, and to prevent the - * same window from being simultaneously referenced in multiple contexts. - * The page resource is created at the first StartPage on a given window, - * and is only destroyed when/if the window is destroyed. When the - * EndPage is recieved (or an EndDoc or EndJob) the context field is - * set to NULL, but the resource remains alive. - */ -typedef struct _XpPage { - XpContextPtr context; -} XpPageRec, *XpPagePtr; - -typedef struct _XpStPageRec { - XpContextPtr pContext; - Bool slept; - XpPagePtr pPage; - WindowPtr pWin; -} XpStPageRec, *XpStPagePtr; - -typedef struct _XpStDocRec { - XpContextPtr pContext; - Bool slept; - CARD8 type; -} XpStDocRec, *XpStDocPtr; - -#define QUADPAD(x) ((((x)+3)>>2)<<2) - -/* - * Possible bit-mask values in the "state" field of a XpContextRec. - */ -#define JOB_STARTED (1 << 0) -#define DOC_RAW_STARTED (1 << 1) -#define DOC_COOKED_STARTED (1 << 2) -#define PAGE_STARTED (1 << 3) -#define GET_DOC_DATA_STARTED (1 << 4) -#define JOB_GET_DATA (1 << 5) - -static XpScreenPtr XpScreens[MAXSCREENS]; -static unsigned char XpReqCode; -static int XpEventBase; -static int XpErrorBase; -static unsigned long XpGeneration = 0; -static int XpClientPrivateIndex; - -/* Variables for the context private machinery. - * These must be initialized at compile time because - * main() calls InitOutput before InitExtensions, and the - * output drivers are likely to call AllocateContextPrivate. - * These variables are reset at CloseScreen time. CloseScreen - * is used because it occurs after FreeAllResources, and before - * the next InitOutput cycle. - */ -static int contextPrivateCount = 0; -static int contextPrivateLen = 0; -static unsigned *contextPrivateSizes = (unsigned *)NULL; -static unsigned totalContextSize = sizeof(XpContextRec); - -/* - * There are three types of resources involved. One is the resource associated - * with the context itself, with an ID specified by a printing client. The - * next is a resource created by us on the client's behalf (and unknown to - * the client) when a client inits or sets a context which allows us to - * track each client's interest in events - * on a particular context, and also allows us to clean up this interest - * record when/if the client's connection is closed. Finally, there is - * a resource created for each window that's specified in a StartPage. This - * resource carries the same ID as the window itself, and enables us to - * easily prevent the same window being referenced in multiple contexts - * simultaneously, and enables us to clean up if the window is destroyed - * before the EndPage. - */ -static RESTYPE RTclient, RTcontext, RTpage; - -/* - * allEvents is the OR of all the legal event mask bits. - */ -static CARD32 allEvents = XPPrintMask | XPAttributeMask; - - -/******************************************************************************* - * - * ExtensionInit, Driver Init functions, QueryVersion, and Dispatch procs - * - ******************************************************************************/ - -/* - * XpExtensionInit - * - * Called from InitExtensions in main() usually through miinitextension - * - */ - -void -XpExtensionInit(INITARGS) -{ - ExtensionEntry *extEntry; - int i; - - RTclient = CreateNewResourceType(XpFreeClient); - RTcontext = CreateNewResourceType(XpFreeContext); - RTpage = CreateNewResourceType(XpFreePage); - if (RTclient && RTcontext && RTpage && - (extEntry = AddExtension(XP_PRINTNAME, XP_EVENTS, XP_ERRORS, - ProcXpDispatch, ProcXpSwappedDispatch, - XpResetProc, StandardMinorOpcode))) - { - XpReqCode = (unsigned char)extEntry->base; - XpEventBase = extEntry->eventBase; - XpErrorBase = extEntry->errorBase; - EventSwapVector[XpEventBase] = (EventSwapPtr) SwapXpNotifyEvent; - EventSwapVector[XpEventBase+1] = (EventSwapPtr) SwapXpAttributeEvent; - } - - if(XpGeneration != serverGeneration) - { - XpClientPrivateIndex = AllocateClientPrivateIndex(); - /* - * We allocate 0 length & simply stuff a pointer to the - * ContextRec in the DevUnion. - */ - if(AllocateClientPrivate(XpClientPrivateIndex, 0) != TRUE) - { - /* we can't alloc a client private, should we bail??? XXX */ - } - XpGeneration = serverGeneration; - } - - for(i = 0; i < MAXSCREENS; i++) - { - /* - * If a screen has registered with our extension, then we - * wrap the screen's CloseScreen function to allow us to - * reset our ContextPrivate stuff. Note that this - * requires a printing DDX to call XpRegisterInitFunc - * _before_ this extension is initialized - i.e. at screen init - * time, _not_ at root window creation time. - */ - if(XpScreens[i] != (XpScreenPtr)NULL) - { - XpScreens[i]->CloseScreen = screenInfo.screens[i]->CloseScreen; - screenInfo.screens[i]->CloseScreen = XpCloseScreen; - } - } - DeclareExtensionSecurity(XP_PRINTNAME, TRUE); -} - -static void -XpResetProc(ExtensionEntry *extEntry) -{ - /* - * We can't free up the XpScreens recs here, because extensions are - * closed before screens, and our CloseScreen function uses the XpScreens - * recs. - - int i; - - for(i = 0; i < MAXSCREENS; i++) - { - if(XpScreens[i] != (XpScreenPtr)NULL) - Xfree(XpScreens[i]); - XpScreens[i] = (XpScreenPtr)NULL; - } - */ -} - -static Bool -XpCloseScreen(int index, ScreenPtr pScreen) -{ - Bool (* CloseScreen)(int, ScreenPtr); - - CloseScreen = XpScreens[index]->CloseScreen; - if(XpScreens[index] != (XpScreenPtr)NULL) - { - XpDriverPtr pDriv, nextDriv; - - pDriv = XpScreens[index]->drivers; - while(pDriv != (XpDriverPtr)NULL) - { - nextDriv = pDriv->next; - Xfree(pDriv); - pDriv = nextDriv; - } - Xfree(XpScreens[index]); - } - XpScreens[index] = (XpScreenPtr)NULL; - - /* - * It's wasteful to call ResetContextPrivates() at every CloseScreen, - * but it's the best we know how to do for now. We do this because we - * have to wait until after all resources have been freed (so we know - * how to free the ContextRecs), and before the next InitOutput cycle. - * See dix/main.c for the order of initialization and reset. - */ - ResetContextPrivates(); - return (*CloseScreen)(index, pScreen); -} - -#if 0 /* NOT USED */ -static void -FreeScreenEntry(XpScreenPtr pScreenEntry) -{ - XpDriverPtr pDriver; - - pDriver = pScreenEntry->drivers; - while(pDriver != (XpDriverPtr)NULL) - { - XpDriverPtr tmp; - - tmp = pDriver->next; - xfree(pDriver); - pDriver = tmp; - } - xfree(pScreenEntry); -} -#endif - -/* - * XpRegisterInitFunc tells the print extension which screens - * are printers as opposed to displays, and what drivers are - * supported on each screen. This eliminates the need of - * allocating print-related private structures on windows on _all_ screens. - * It also hands the extension a pointer to the routine to be called - * whenever a context gets created for a particular driver on this screen. - */ -void -XpRegisterInitFunc(ScreenPtr pScreen, char *driverName, int (*initContext)(struct _XpContext *)) -{ - XpDriverPtr pDriver; - - if(XpScreens[pScreen->myNum] == 0) - { - if((XpScreens[pScreen->myNum] = - (XpScreenPtr) Xalloc(sizeof(XpScreenRec))) == 0) - return; - XpScreens[pScreen->myNum]->CloseScreen = 0; - XpScreens[pScreen->myNum]->drivers = 0; - } - - if((pDriver = (XpDriverPtr)Xalloc(sizeof(XpDriverRec))) == 0) - return; - pDriver->next = XpScreens[pScreen->myNum]->drivers; - pDriver->name = driverName; - pDriver->CreateContext = initContext; - XpScreens[pScreen->myNum]->drivers = pDriver; -} - -static int -ProcXpDispatch(ClientPtr client) -{ - REQUEST(xReq); - - switch(stuff->data) - { - case X_PrintQueryVersion: - return ProcXpQueryVersion(client); - case X_PrintGetPrinterList: - return ProcXpGetPrinterList(client); - case X_PrintCreateContext: - return ProcXpCreateContext(client); - case X_PrintSetContext: - return ProcXpSetContext(client); - case X_PrintGetContext: - return ProcXpGetContext(client); - case X_PrintDestroyContext: - return ProcXpDestroyContext(client); - case X_PrintGetContextScreen: - return ProcXpGetContextScreen(client); - case X_PrintStartJob: - return ProcXpStartJob(client); - case X_PrintEndJob: - return ProcXpEndJob(client); - case X_PrintStartDoc: - return ProcXpStartDoc(client); - case X_PrintEndDoc: - return ProcXpEndDoc(client); - case X_PrintStartPage: - return ProcXpStartPage(client); - case X_PrintEndPage: - return ProcXpEndPage(client); - case X_PrintSelectInput: - return ProcXpSelectInput(client); - case X_PrintInputSelected: - return ProcXpInputSelected(client); - case X_PrintPutDocumentData: - return ProcXpPutDocumentData(client); - case X_PrintGetDocumentData: - return ProcXpGetDocumentData(client); - case X_PrintSetAttributes: - return ProcXpSetAttributes(client); - case X_PrintGetAttributes: - return ProcXpGetAttributes(client); - case X_PrintGetOneAttribute: - return ProcXpGetOneAttribute(client); - case X_PrintRehashPrinterList: - return ProcXpRehashPrinterList(client); - case X_PrintQueryScreens: - return ProcXpQueryScreens(client); - case X_PrintGetPageDimensions: - return ProcXpGetPageDimensions(client); - case X_PrintSetImageResolution: - return ProcXpSetImageResolution(client); - case X_PrintGetImageResolution: - return ProcXpGetImageResolution(client); - default: - return BadRequest; - } -} - -static int -ProcXpSwappedDispatch(ClientPtr client) -{ - int temp; - REQUEST(xReq); - - switch(stuff->data) - { - case X_PrintQueryVersion: - swaps(&stuff->length, temp); - return ProcXpQueryVersion(client); - case X_PrintGetPrinterList: - return SProcXpGetPrinterList(client); - case X_PrintCreateContext: - return SProcXpCreateContext(client); - case X_PrintSetContext: - return SProcXpSetContext(client); - case X_PrintGetContext: - return SProcXpGetContext(client); - case X_PrintDestroyContext: - return SProcXpDestroyContext(client); - case X_PrintGetContextScreen: - return SProcXpGetContextScreen(client); - case X_PrintStartJob: - return SProcXpStartJob(client); - case X_PrintEndJob: - return SProcXpEndJob(client); - case X_PrintStartDoc: - return SProcXpStartDoc(client); - case X_PrintEndDoc: - return SProcXpEndDoc(client); - case X_PrintStartPage: - return SProcXpStartPage(client); - case X_PrintEndPage: - return SProcXpEndPage(client); - case X_PrintSelectInput: - return SProcXpSelectInput(client); - case X_PrintInputSelected: - return SProcXpInputSelected(client); - case X_PrintPutDocumentData: - return SProcXpPutDocumentData(client); - case X_PrintGetDocumentData: - return SProcXpGetDocumentData(client); - case X_PrintSetAttributes: - return SProcXpSetAttributes(client); - case X_PrintGetAttributes: - return SProcXpGetAttributes(client); - case X_PrintGetOneAttribute: - return SProcXpGetOneAttribute(client); - case X_PrintRehashPrinterList: - return SProcXpRehashPrinterList(client); - case X_PrintQueryScreens: - swaps(&stuff->length, temp); - return ProcXpQueryScreens(client); - case X_PrintGetPageDimensions: - return SProcXpGetPageDimensions(client); - case X_PrintSetImageResolution: - return SProcXpSetImageResolution(client); - case X_PrintGetImageResolution: - return SProcXpGetImageResolution(client); - default: - return BadRequest; - } -} - -static int -ProcXpQueryVersion(ClientPtr client) -{ - /* REQUEST(xPrintQueryVersionReq); */ - xPrintQueryVersionReply rep; - register int n; - long l; - - REQUEST_SIZE_MATCH(xPrintQueryVersionReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - rep.majorVersion = XP_MAJOR_VERSION; - rep.minorVersion = XP_MINOR_VERSION; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, l); - swaps(&rep.majorVersion, n); - swaps(&rep.minorVersion, n); - } - WriteToClient(client, sz_xPrintQueryVersionReply, (char *)&rep); - return client->noClientException; -} - -/******************************************************************************* - * - * GetPrinterList : Return a list of all printers associated with this - * server. Calls XpDiGetPrinterList, which is defined in - * the device-independent code in Xserver/Xprint. - * - ******************************************************************************/ - -static int -ProcXpGetPrinterList(ClientPtr client) -{ - REQUEST(xPrintGetPrinterListReq); - int totalSize; - int numEntries; - XpDiListEntry **pList; - xPrintGetPrinterListReply *rep; - int n, i, totalBytes; - long l; - char *curByte; - - REQUEST_AT_LEAST_SIZE(xPrintGetPrinterListReq); - - totalSize = ((sz_xPrintGetPrinterListReq) >> 2) + - ((stuff->printerNameLen + 3) >> 2) + - ((stuff->localeLen + 3) >> 2); - if(totalSize != client->req_len) - return BadLength; - - pList = XpDiGetPrinterList(stuff->printerNameLen, (char *)(stuff + 1), - stuff->localeLen, (char *)((stuff + 1) + - QUADPAD(stuff->printerNameLen))); - - for(numEntries = 0, totalBytes = sz_xPrintGetPrinterListReply; - pList[numEntries] != (XpDiListEntry *)NULL; - numEntries++) - { - totalBytes += 2 * sizeof(CARD32); - totalBytes += QUADPAD(strlen(pList[numEntries]->name)); - totalBytes += QUADPAD(strlen(pList[numEntries]->description)); - } - - if((rep = (xPrintGetPrinterListReply *)xalloc(totalBytes)) == - (xPrintGetPrinterListReply *)NULL) - return BadAlloc; - - rep->type = X_Reply; - rep->length = (totalBytes - sz_xPrintGetPrinterListReply) >> 2; - rep->sequenceNumber = client->sequence; - rep->listCount = numEntries; - if (client->swapped) { - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, l); - swapl(&rep->listCount, l); - } - - for(i = 0, curByte = (char *)(rep + 1); i < numEntries; i++) - { - CARD32 *pCrd; - int len; - - pCrd = (CARD32 *)curByte; - len = strlen(pList[i]->name); - *pCrd = len; - if (client->swapped) - swapl((long *)curByte, l); - curByte += sizeof(CARD32); - strncpy(curByte, pList[i]->name, len); - curByte += QUADPAD(len); - - pCrd = (CARD32 *)curByte; - len = strlen(pList[i]->description); - *pCrd = len; - if (client->swapped) - swapl((long *)curByte, l); - curByte += sizeof(CARD32); - strncpy(curByte, pList[i]->description, len); - curByte += QUADPAD(len); - } - - XpDiFreePrinterList(pList); - - WriteToClient(client, totalBytes, (char *)rep); - xfree(rep); - return client->noClientException; -} - -/******************************************************************************* - * - * QueryScreens: Returns the list of screens which are associated with - * print drivers. - * - ******************************************************************************/ - -static int -ProcXpQueryScreens(ClientPtr client) -{ - /* REQUEST(xPrintQueryScreensReq); */ - int i, numPrintScreens, totalSize; - WINDOW *pWinId; - xPrintQueryScreensReply *rep; - long l; - - REQUEST_SIZE_MATCH(xPrintQueryScreensReq); - - rep = (xPrintQueryScreensReply *)xalloc(sz_xPrintQueryScreensReply); - pWinId = (WINDOW *)(rep + 1); - - for(i = 0, numPrintScreens = 0, totalSize = sz_xPrintQueryScreensReply; - i < MAXSCREENS; i++) - { - /* - * If a screen has registered with our extension, then it's - * a printer screen. - */ - if(XpScreens[i] != (XpScreenPtr)NULL) - { - numPrintScreens++; - totalSize += sizeof(WINDOW); - rep = (xPrintQueryScreensReply *)xrealloc(rep, totalSize); - /* fix of bug: pWinId should be set again after reallocate rep */ - pWinId = (WINDOW *)(rep + 1); - *pWinId = WindowTable[i]->drawable.id; - if (client->swapped) - swapl((long *)pWinId, l); - } - } - - rep->type = X_Reply; - rep->sequenceNumber = client->sequence; - rep->length = (totalSize - sz_xPrintQueryScreensReply) >> 2; - rep->listCount = numPrintScreens; - if (client->swapped) - { - int n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, l); - swapl(&rep->listCount, l); - } - - WriteToClient(client, totalSize, (char *)rep); - xfree(rep); - return client->noClientException; -} - -static int -ProcXpGetPageDimensions(ClientPtr client) -{ - REQUEST(xPrintGetPageDimensionsReq); - CARD16 width, height; - xRectangle rect; - xPrintGetPageDimensionsReply rep; - XpContextPtr pContext; - int result; - - REQUEST_SIZE_MATCH(xPrintGetPageDimensionsReq); - - if((pContext =(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityReadAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - if((pContext->funcs.GetMediumDimensions == 0) || - (pContext->funcs.GetReproducibleArea == 0)) - return BadImplementation; - - result = pContext->funcs.GetMediumDimensions(pContext, &width, &height); - if(result != Success) - return result; - - result = pContext->funcs.GetReproducibleArea(pContext, &rect); - if(result != Success) - return result; - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.width = width; - rep.height = height; - rep.rx = rect.x; - rep.ry = rect.y; - rep.rwidth = rect.width; - rep.rheight = rect.height; - - if(client->swapped) - { - int n; - long l; - - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, l); - swaps(&rep.width, n); - swaps(&rep.height, n); - swaps(&rep.rx, n); - swaps(&rep.ry, n); - swaps(&rep.rwidth, n); - swaps(&rep.rheight, n); - } - - WriteToClient(client, sz_xPrintGetPageDimensionsReply, (char *)&rep); - return client->noClientException; -} - -static int -ProcXpSetImageResolution(ClientPtr client) -{ - REQUEST(xPrintSetImageResolutionReq); - xPrintSetImageResolutionReply rep; - XpContextPtr pContext; - Bool status; - int result; - - REQUEST_SIZE_MATCH(xPrintSetImageResolutionReq); - - if((pContext =(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityWriteAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - rep.prevRes = pContext->imageRes; - if(pContext->funcs.SetImageResolution != 0) { - result = pContext->funcs.SetImageResolution(pContext, - (int)stuff->imageRes, - &status); - if(result != Success) - status = FALSE; - } else - status = FALSE; - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.status = status; - - if(client->swapped) - { - int n; - long l; - - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, l); - swaps(&rep.prevRes, n); - } - - WriteToClient(client, sz_xPrintSetImageResolutionReply, (char *)&rep); - return client->noClientException; -} - -static int -ProcXpGetImageResolution(ClientPtr client) -{ - REQUEST(xPrintGetImageResolutionReq); - xPrintGetImageResolutionReply rep; - XpContextPtr pContext; - - REQUEST_SIZE_MATCH(xPrintGetImageResolutionReq); - - if((pContext =(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityReadAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.imageRes = pContext->imageRes; - - if(client->swapped) - { - int n; - long l; - - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, l); - swaps(&rep.imageRes, n); - } - - WriteToClient(client, sz_xPrintGetImageResolutionReply, (char *)&rep); - return client->noClientException; -} - -/******************************************************************************* - * - * RehashPrinterList : Cause the server's list of printers to be rebuilt. - * This allows new printers to be added, or old ones - * deleted without needing to restart the server. - * - ******************************************************************************/ - -static int -ProcXpRehashPrinterList(ClientPtr client) -{ - /* REQUEST(xPrintRehashPrinterListReq); */ - - REQUEST_SIZE_MATCH(xPrintRehashPrinterListReq); - - return XpRehashPrinterList(); -} - -/****************************************************************************** - * - * Context functions: Init, Set, Destroy, FreeContext - * AllocateContextPrivateIndex, AllocateContextPrivate - * and supporting functions. - * - * Init creates a context, creates a XpClientRec for the calling - * client, and stores the contextPtr in the client's devPrivates. - * - * Set creates a XpClientRec for the calling client, and stores the - * contextPtr in the client's devPrivates unless the context is None. - * If the context is None, then the client's connection association - * with any context is removed. - * - * Destroy frees any and all XpClientRecs associated with the context, - * frees the context itself, and removes the contextPtr from any - * relevant client devPrivates. - * - * FreeContext is called by FreeResource to free up a context. - * - ******************************************************************************/ - -/* - * CreateContext creates and initializes the memory for the context itself. - * The driver's CreateContext function - * is then called. - */ -static int -ProcXpCreateContext(ClientPtr client) -{ - REQUEST(xPrintCreateContextReq); - XpScreenPtr pPrintScreen; - WindowPtr pRoot; - char *driverName; - XpContextPtr pContext; - int result = Success; - XpDriverPtr pDriver; - - REQUEST_AT_LEAST_SIZE(xPrintCreateContextReq); - - LEGAL_NEW_RESOURCE(stuff->contextID, client); - - /* - * Check to see if the printer name is valid. - */ - if((pRoot = XpDiValidatePrinter((char *)(stuff + 1), stuff->printerNameLen)) == - (WindowPtr)NULL) - return BadMatch; - - pPrintScreen = XpScreens[pRoot->drawable.pScreen->myNum]; - - /* - * Allocate and add the context resource. - */ - if((pContext = (XpContextPtr) xalloc(totalContextSize)) == - (XpContextPtr) NULL) - return BadAlloc; - - InitContextPrivates(pContext); - - if(AddResource(stuff->contextID, RTcontext, (pointer) pContext) - != TRUE) - { - xfree(pContext); - return BadAlloc; - } - - pContext->contextID = stuff->contextID; - pContext->clientHead = (XpClientPtr)NULL; - pContext->screenNum = pRoot->drawable.pScreen->myNum; - pContext->state = 0; - pContext->clientSlept = (ClientPtr)NULL; - pContext->imageRes = 0; - - pContext->funcs.DestroyContext = 0; - pContext->funcs.StartJob = 0; - pContext->funcs.EndJob = 0; - pContext->funcs.StartDoc = 0; - pContext->funcs.EndDoc = 0; - pContext->funcs.StartPage = 0; - pContext->funcs.EndPage = 0; - pContext->funcs.PutDocumentData = 0; - pContext->funcs.GetDocumentData = 0; - pContext->funcs.GetAttributes = 0; - pContext->funcs.GetOneAttribute = 0; - pContext->funcs.SetAttributes = 0; - pContext->funcs.AugmentAttributes = 0; - pContext->funcs.GetMediumDimensions = 0; - pContext->funcs.GetReproducibleArea = 0; - pContext->funcs.SetImageResolution = 0; - - if((pContext->printerName = (char *)xalloc(stuff->printerNameLen + 1)) == - (char *)NULL) - { - /* Freeing the context also causes the XpClients to be freed. */ - FreeResource(stuff->contextID, RT_NONE); - return BadAlloc; - } - strncpy(pContext->printerName, (char *)(stuff + 1), stuff->printerNameLen); - pContext->printerName[stuff->printerNameLen] = (char)'\0'; - - driverName = XpDiGetDriverName(pRoot->drawable.pScreen->myNum, - pContext->printerName); - - for(pDriver = pPrintScreen->drivers; - pDriver != (XpDriverPtr)NULL; - pDriver = pDriver->next) - { - if(!strcmp(driverName, pDriver->name)) - { - if(pDriver->CreateContext != 0) - pDriver->CreateContext(pContext); - else - return BadImplementation; - break; - } - } - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -/* - * SetContext creates the calling client's contextClient resource, - * and stashes the contextID in the client's devPrivate. - */ -static int -ProcXpSetContext(ClientPtr client) -{ - REQUEST(xPrintSetContextReq); - - XpContextPtr pContext; - XpClientPtr pPrintClient; - int result = Success; - - REQUEST_AT_LEAST_SIZE(xPrintSetContextReq); - - if((pContext = client->devPrivates[XpClientPrivateIndex].ptr) != - (pointer)NULL) - { - /* - * Erase this client's knowledge of its old context, if any. - */ - if((pPrintClient = FindClient(pContext, client)) != (XpClientPtr)NULL) - { - XpUnsetFontResFunc(client); - - if(pPrintClient->eventMask == 0) - FreeXpClient(pPrintClient, TRUE); - } - - client->devPrivates[XpClientPrivateIndex].ptr = (pointer)NULL; - } - if(stuff->printContext == None) - return Success; - - /* - * Check to see that the supplied XID is really a valid print context - * in this server. - */ - if((pContext =(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityWriteAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - if((pPrintClient = AcquireClient(pContext, client)) == (XpClientPtr)NULL) - return BadAlloc; - - client->devPrivates[XpClientPrivateIndex].ptr = pContext; - - XpSetFontResFunc(client); - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -XpContextPtr -XpGetPrintContext(ClientPtr client) -{ - return (client->devPrivates[XpClientPrivateIndex].ptr); -} - -static int -ProcXpGetContext(ClientPtr client) -{ - /* REQUEST(xPrintGetContextReq); */ - xPrintGetContextReply rep; - - XpContextPtr pContext; - register int n; - register long l; - - REQUEST_SIZE_MATCH(xPrintGetContextReq); - - if((pContext = client->devPrivates[XpClientPrivateIndex].ptr) == - (pointer)NULL) - rep.printContext = None; - else - rep.printContext = pContext->contextID; - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, l); - swapl(&rep.printContext, l); - } - WriteToClient(client, sz_xPrintGetContextReply, (char *)&rep); - return client->noClientException; -} - - -/* - * DestroyContext frees the context associated with the calling client. - * It operates by freeing the context resource ID, thus causing XpFreeContext - * to be called. - */ -static int -ProcXpDestroyContext(ClientPtr client) -{ - REQUEST(xPrintDestroyContextReq); - - XpContextPtr pContext; - - REQUEST_SIZE_MATCH(xPrintDestroyContextReq); - - if((pContext =(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityDestroyAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - XpUnsetFontResFunc(client); - - FreeResource(pContext->contextID, RT_NONE); - - return Success; -} - -static int -ProcXpGetContextScreen(ClientPtr client) -{ - REQUEST(xPrintGetContextScreenReq); - xPrintGetContextScreenReply rep; - XpContextPtr pContext; - int n; - long l; - - if((pContext =(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityReadAccess)) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadContext; - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.rootWindow = WindowTable[pContext->screenNum]->drawable.id; - - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, l); - swapl(&rep.rootWindow, l); - } - - WriteToClient(client, sz_xPrintGetContextScreenReply, (char *)&rep); - return client->noClientException; -} - -/* - * XpFreeContext is the routine called by dix:FreeResource when a context - * resource ID is freed. - * It checks to see if there's a partial job pending on the context, and - * if so it calls the appropriate End procs with the cancel flag set. - * It calls the driver's DestroyContext routine to allow the driver to clean - * up any context-related memory or state. - * It calls FreeXpClient to free all the - * associated XpClientRecs and to set all the client->devPrivates to NULL. - * It frees the printer name string, and frees the context - * itself. - */ -static int -XpFreeContext(pointer data, XID id) -{ - XpContextPtr pContext = (XpContextPtr)data; - - /* Clean up any pending job on this context */ - if(pContext->state != 0) - { - if(pContext->state & PAGE_STARTED) - { - WindowPtr pWin = (WindowPtr )LookupIDByType( - pContext->pageWin, RT_WINDOW); - XpPagePtr pPage = (XpPagePtr)LookupIDByType( - pContext->pageWin, RTpage); - - pContext->funcs.EndPage(pContext, pWin); - SendXpNotify(pContext, XPEndPageNotify, TRUE); - pContext->state &= ~PAGE_STARTED; - if(pPage) - pPage->context = (XpContextPtr)NULL; - } - if((pContext->state & DOC_RAW_STARTED) || - (pContext->state & DOC_COOKED_STARTED)) - { - pContext->funcs.EndDoc(pContext, TRUE); - SendXpNotify(pContext, XPEndDocNotify, TRUE); - pContext->state &= ~DOC_RAW_STARTED; - pContext->state &= ~DOC_COOKED_STARTED; - } - if(pContext->funcs.EndJob != 0) - { - pContext->funcs.EndJob(pContext, TRUE); - SendXpNotify(pContext, XPEndJobNotify, TRUE); - pContext->state &= ~JOB_STARTED; - pContext->state &= ~GET_DOC_DATA_STARTED; - } - } - - /* - * Tell the driver we're destroying the context - * This allows the driver to free and ContextPrivate data - */ - if(pContext->funcs.DestroyContext != 0) - pContext->funcs.DestroyContext(pContext); - - /* Free up all the XpClientRecs */ - while(pContext->clientHead != (XpClientPtr)NULL) - { - FreeXpClient(pContext->clientHead, TRUE); - } - - xfree(pContext->printerName); - xfree(pContext); - return Success; /* ??? */ -} - -/* - * XpFreeClient is the routine called by dix:FreeResource when a RTclient - * is freed. It simply calls the FreeXpClient routine to do the work. - */ -static int -XpFreeClient(pointer data, XID id) -{ - FreeXpClient((XpClientPtr)data, TRUE); - return Success; -} - -/* - * FreeXpClient - * frees the ClientRec passed in, and sets the client->devPrivates to NULL - * if the client->devPrivates points to the same context as the XpClient. - * Called from XpFreeContext(from FreeResource), and - * XpFreeClient. The boolean freeResource specifies whether or not to call - * FreeResource for the XpClientRec's XID. We should free it except if we're - * called from XpFreeClient (which is itself called from FreeResource for the - * XpClientRec's XID). - */ -static void -FreeXpClient(XpClientPtr pXpClient, Bool freeResource) -{ - XpClientPtr pCurrent, pPrev; - XpContextPtr pContext = pXpClient->context; - - /* - * If we're freeing the clientRec associated with the context tied - * to the client's devPrivates, then we need to clear the devPrivates. - */ - if(pXpClient->client->devPrivates[XpClientPrivateIndex].ptr == - pXpClient->context) - { - pXpClient->client->devPrivates[XpClientPrivateIndex].ptr = - (pointer)NULL; - } - - for(pPrev = (XpClientPtr)NULL, pCurrent = pContext->clientHead; - pCurrent != (XpClientPtr)NULL; - pCurrent = pCurrent->pNext) - { - if(pCurrent == pXpClient) - { - if(freeResource == TRUE) - FreeResource (pCurrent->contextClientID, RTclient); - - if (pPrev != (XpClientPtr)NULL) - pPrev->pNext = pCurrent->pNext; - else - pContext->clientHead = pCurrent->pNext; - - xfree (pCurrent); - break; - } - pPrev = pCurrent; - } -} - -/* - * CreateXpClient takes a ClientPtr and returns a pointer to a - * XpClientRec which it allocates. It also initializes the Rec, - * including adding a resource on behalf of the client to enable the - * freeing of the Rec when the client's connection is closed. - */ -static XpClientPtr -CreateXpClient(ClientPtr client) -{ - XpClientPtr pNewPrintClient; - XID clientResource; - - if((pNewPrintClient = (XpClientPtr)xalloc(sizeof(XpClientRec))) == - (XpClientPtr)NULL) - return (XpClientPtr)NULL; - - clientResource = FakeClientID(client->index); - if(!AddResource(clientResource, RTclient, (pointer)pNewPrintClient)) - { - xfree (pNewPrintClient); - return (XpClientPtr)NULL; - } - - pNewPrintClient->pNext = (XpClientPtr)NULL; - pNewPrintClient->client = client; - pNewPrintClient->context = (XpContextPtr)NULL; - pNewPrintClient->eventMask = 0; - pNewPrintClient->contextClientID = clientResource; - - return pNewPrintClient; -} - -/* - * XpFreePage is the routine called by dix:FreeResource to free the page - * resource built with the same ID as a page window. It checks to see - * if we're in the middle of a page, and if so calls the driver's EndPage - * function with 'cancel' set TRUE. It frees the memory associated with - * the page resource. - */ -static int -XpFreePage(pointer data, XID id) -{ - XpPagePtr page = (XpPagePtr)data; - int result = Success; - WindowPtr pWin = (WindowPtr )LookupIDByType(id, RT_WINDOW); - - /* Check to see if the window's being deleted in the middle of a page */ - if(page->context != (XpContextPtr)NULL && - page->context->state & PAGE_STARTED) - { - if(page->context->funcs.EndPage != 0) - result = page->context->funcs.EndPage(page->context, pWin); - SendXpNotify(page->context, XPEndPageNotify, (int)TRUE); - page->context->pageWin = 0; /* None, NULL??? XXX */ - } - - xfree(page); - return result; -} - -/* - * ContextPrivate machinery. - * Context privates are intended for use by the drivers, allowing the - * drivers to maintain context-specific data. The driver should free - * the associated data at DestroyContext time. - */ - -static void -InitContextPrivates(XpContextPtr context) -{ - register char *ptr; - DevUnion *ppriv; - register unsigned *sizes; - register unsigned size; - register int i; - - if (totalContextSize == sizeof(XpContextRec)) - ppriv = (DevUnion *)NULL; - else - ppriv = (DevUnion *)(context + 1); - - context->devPrivates = ppriv; - sizes = contextPrivateSizes; - ptr = (char *)(ppriv + contextPrivateLen); - for (i = contextPrivateLen; --i >= 0; ppriv++, sizes++) - { - if ( (size = *sizes) ) - { - ppriv->ptr = (pointer)ptr; - ptr += size; - } - else - ppriv->ptr = (pointer)NULL; - } -} - -static void -ResetContextPrivates(void) -{ - contextPrivateCount = 0; - contextPrivateLen = 0; - xfree(contextPrivateSizes); - contextPrivateSizes = (unsigned *)NULL; - totalContextSize = sizeof(XpContextRec); - -} - -int -XpAllocateContextPrivateIndex(void) -{ - return contextPrivateCount++; -} - -Bool -XpAllocateContextPrivate(int index, unsigned amount) -{ - unsigned oldamount; - - if (index >= contextPrivateLen) - { - unsigned *nsizes; - nsizes = (unsigned *)xrealloc(contextPrivateSizes, - (index + 1) * sizeof(unsigned)); - if (!nsizes) - return FALSE; - while (contextPrivateLen <= index) - { - nsizes[contextPrivateLen++] = 0; - totalContextSize += sizeof(DevUnion); - } - contextPrivateSizes = nsizes; - } - oldamount = contextPrivateSizes[index]; - if (amount > oldamount) - { - contextPrivateSizes[index] = amount; - totalContextSize += (amount - oldamount); - } - return TRUE; -} - -static XpClientPtr -AcquireClient(XpContextPtr pContext, ClientPtr client) -{ - XpClientPtr pXpClient; - - if((pXpClient = FindClient(pContext, client)) != (XpClientPtr)NULL) - return pXpClient; - - if((pXpClient = CreateXpClient(client)) == (XpClientPtr)NULL) - return (XpClientPtr)NULL; - - pXpClient->context = pContext; - pXpClient->pNext = pContext->clientHead; - pContext->clientHead = pXpClient; - - return pXpClient; -} - -static XpClientPtr -FindClient(XpContextPtr pContext, ClientPtr client) -{ - XpClientPtr pXpClient; - - for(pXpClient = pContext->clientHead; pXpClient != (XpClientPtr)NULL; - pXpClient = pXpClient->pNext) - { - if(pXpClient->client == client) return pXpClient; - } - return (XpClientPtr)NULL; -} - - -/****************************************************************************** - * - * Start/End Functions: StartJob, EndJob, StartDoc, EndDoc, StartPage, EndPage - * - ******************************************************************************/ - -static int -ProcXpStartJob(ClientPtr client) -{ - REQUEST(xPrintStartJobReq); - XpContextPtr pContext; - int result = Success; - - REQUEST_SIZE_MATCH(xPrintStartJobReq); - - /* Check to see that a context has been established by this client. */ - if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadContext; - - if(pContext->state != 0) - return XpErrorBase+XPBadSequence; - - if(stuff->saveData != XPSpool && stuff->saveData != XPGetData) - { - client->errorValue = stuff->saveData; - return BadValue; - } - - if(pContext->funcs.StartJob != 0) - result = pContext->funcs.StartJob(pContext, - (stuff->saveData == XPGetData)? TRUE:FALSE, - client); - else - return BadImplementation; - - pContext->state = JOB_STARTED; - if(stuff->saveData == XPGetData) - pContext->state |= JOB_GET_DATA; - - SendXpNotify(pContext, XPStartJobNotify, FALSE); - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -static int -ProcXpEndJob(ClientPtr client) -{ - REQUEST(xPrintEndJobReq); - int result = Success; - XpContextPtr pContext; - - REQUEST_SIZE_MATCH(xPrintEndJobReq); - - if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadSequence; - - if(!(pContext->state & JOB_STARTED)) - return XpErrorBase+XPBadSequence; - - /* Check for missing EndDoc */ - if((pContext->state & DOC_RAW_STARTED) || - (pContext->state & DOC_COOKED_STARTED)) - { - if(pContext->state & PAGE_STARTED) - { - WindowPtr pWin = (WindowPtr )LookupIDByType( - pContext->pageWin, RT_WINDOW); - XpPagePtr pPage = (XpPagePtr)LookupIDByType( - pContext->pageWin, RTpage); - - if(stuff->cancel != TRUE) - return XpErrorBase+XPBadSequence; - - if(pContext->funcs.EndPage != 0) - result = pContext->funcs.EndPage(pContext, pWin); - else - return BadImplementation; - - SendXpNotify(pContext, XPEndPageNotify, TRUE); - - pContext->state &= ~PAGE_STARTED; - - if(pPage) - pPage->context = (XpContextPtr)NULL; - - if(result != Success) return result; - } - - if(pContext->funcs.EndDoc != 0) - result = pContext->funcs.EndDoc(pContext, stuff->cancel); - else - return BadImplementation; - - SendXpNotify(pContext, XPEndDocNotify, stuff->cancel); - } - - if(pContext->funcs.EndJob != 0) - result = pContext->funcs.EndJob(pContext, stuff->cancel); - else - return BadImplementation; - - pContext->state = 0; - - SendXpNotify(pContext, XPEndJobNotify, stuff->cancel); - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -static Bool -DoStartDoc(ClientPtr client, XpStDocPtr c) -{ - XpContextPtr pContext = c->pContext; - - if(c->pContext->state & JOB_GET_DATA && - !(c->pContext->state & GET_DOC_DATA_STARTED)) - { - if(!c->slept) - { - c->slept = TRUE; - ClientSleep(client, (ClientSleepProcPtr)DoStartDoc, (pointer) c); - c->pContext->clientSlept = client; - } - return TRUE; - } - - if(pContext->funcs.StartDoc != 0) - (void) pContext->funcs.StartDoc(pContext, c->type); - else - { - SendErrorToClient(client, XpReqCode, X_PrintStartPage, 0, - BadImplementation); - return TRUE; - } - - if(c->type == XPDocNormal) - pContext->state |= DOC_COOKED_STARTED; - else - pContext->state |= DOC_RAW_STARTED; - - SendXpNotify(pContext, XPStartDocNotify, (int)FALSE); - - xfree(c); - return TRUE; -} - -static int -ProcXpStartDoc(ClientPtr client) -{ - REQUEST(xPrintStartDocReq); - int result = Success; - XpContextPtr pContext; - XpStDocPtr c; - - REQUEST_SIZE_MATCH(xPrintStartDocReq); - - if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadSequence; - - if(!(pContext->state & JOB_STARTED) || - pContext->state & DOC_RAW_STARTED || - pContext->state & DOC_COOKED_STARTED) - return XpErrorBase+XPBadSequence; - - if(stuff->type != XPDocNormal && stuff->type != XPDocRaw) - { - client->errorValue = stuff->type; - return BadValue; - } - - c = (XpStDocPtr)xalloc(sizeof(XpStDocRec)); - c->pContext = pContext; - c->type = stuff->type; - c->slept = FALSE; - (void)DoStartDoc(client, c); - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -static int -ProcXpEndDoc(ClientPtr client) -{ - REQUEST(xPrintEndDocReq); - XpContextPtr pContext; - int result = Success; - - REQUEST_SIZE_MATCH(xPrintEndDocReq); - - if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadSequence; - - if(!(pContext->state & DOC_RAW_STARTED) && - !(pContext->state & DOC_COOKED_STARTED)) - return XpErrorBase+XPBadSequence; - - if(pContext->state & PAGE_STARTED) - { - if(stuff->cancel == TRUE) - { - WindowPtr pWin = (WindowPtr )LookupIDByType( - pContext->pageWin, RT_WINDOW); - XpPagePtr pPage = (XpPagePtr)LookupIDByType( - pContext->pageWin, RTpage); - - if(pContext->funcs.EndPage != 0) - result = pContext->funcs.EndPage(pContext, pWin); - else - return BadImplementation; - - SendXpNotify(pContext, XPEndPageNotify, TRUE); - - if(pPage) - pPage->context = (XpContextPtr)NULL; - } - else - return XpErrorBase+XPBadSequence; - if(result != Success) - return result; - } - - if(pContext->funcs.EndDoc != 0) - result = pContext->funcs.EndDoc(pContext, stuff->cancel); - else - return BadImplementation; - - pContext->state &= ~DOC_RAW_STARTED; - pContext->state &= ~DOC_COOKED_STARTED; - - SendXpNotify(pContext, XPEndDocNotify, stuff->cancel); - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -static Bool -DoStartPage( - ClientPtr client, - XpStPagePtr c) -{ - WindowPtr pWin = c->pWin; - int result = Success; - XpContextPtr pContext = c->pContext; - XpPagePtr pPage; - - if(c->pContext->state & JOB_GET_DATA && - !(c->pContext->state & GET_DOC_DATA_STARTED)) - { - if(!c->slept) - { - c->slept = TRUE; - ClientSleep(client, (ClientSleepProcPtr)DoStartPage, (pointer) c); - c->pContext->clientSlept = client; - } - return TRUE; - } - - if(!(pContext->state & DOC_COOKED_STARTED)) - { - /* Implied StartDoc if it was omitted */ - if(pContext->funcs.StartDoc != 0) - result = pContext->funcs.StartDoc(pContext, XPDocNormal); - else - { - SendErrorToClient(client, XpReqCode, X_PrintStartPage, 0, - BadImplementation); - return TRUE; - } - - if(result != Success) - { - SendErrorToClient(client, XpReqCode, X_PrintStartPage, 0, result); - return TRUE; - } - - pContext->state |= DOC_COOKED_STARTED; - SendXpNotify(pContext, XPStartDocNotify, (int)FALSE); - } - - /* ensure the window's not already being used as a page */ - if((pPage = (XpPagePtr)LookupIDByType(c->pWin->drawable.id, RTpage)) != - (XpPagePtr)NULL) - { - if(pPage->context != (XpContextPtr)NULL) - { - SendErrorToClient(client, XpReqCode, X_PrintStartPage, 0, - BadWindow); - return TRUE; - } - } - else - { - if((pPage = (XpPagePtr)xalloc(sizeof(XpPageRec))) == (XpPagePtr)NULL) - { - SendErrorToClient(client, XpReqCode, X_PrintStartPage, 0, - BadAlloc); - return TRUE; - } - if(AddResource(c->pWin->drawable.id, RTpage, pPage) == FALSE) - { - xfree(pPage); - SendErrorToClient(client, XpReqCode, X_PrintStartPage, 0, - BadAlloc); - return TRUE; - } - } - - pPage->context = pContext; - pContext->pageWin = c->pWin->drawable.id; - - if(pContext->funcs.StartPage != 0) - result = pContext->funcs.StartPage(pContext, pWin); - else - { - SendErrorToClient(client, XpReqCode, X_PrintStartPage, 0, - BadImplementation); - return TRUE; - } - - pContext->state |= PAGE_STARTED; - - (void)MapWindow(pWin, client); - - SendXpNotify(pContext, XPStartPageNotify, (int)FALSE); - - return TRUE; -} - -static int -ProcXpStartPage(ClientPtr client) -{ - REQUEST(xPrintStartPageReq); - WindowPtr pWin; - int result = Success; - XpContextPtr pContext; - XpStPagePtr c; - - REQUEST_SIZE_MATCH(xPrintStartPageReq); - - if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadSequence; - - if(!(pContext->state & JOB_STARTED)) - return XpErrorBase+XPBadSequence; - - /* can't have pages in a raw documented */ - if(pContext->state & DOC_RAW_STARTED) - return XpErrorBase+XPBadSequence; - - if(pContext->state & PAGE_STARTED) - return XpErrorBase+XPBadSequence; - - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin || pWin->drawable.pScreen->myNum != pContext->screenNum) - return BadWindow; - - if((c = (XpStPagePtr)xalloc(sizeof(XpStPageRec))) == (XpStPagePtr)NULL) - return BadAlloc; - c->pContext = pContext; - c->slept = FALSE; - c->pWin = pWin; - - (void)DoStartPage(client, c); - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -static int -ProcXpEndPage(ClientPtr client) -{ - REQUEST(xPrintEndPageReq); - int result = Success; - XpContextPtr pContext; - XpPagePtr page; - WindowPtr pWin; - - REQUEST_SIZE_MATCH(xPrintEndPageReq); - - if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadSequence; - - if(!(pContext->state & PAGE_STARTED)) - return XpErrorBase+XPBadSequence; - - pWin = (WindowPtr )LookupIDByType(pContext->pageWin, RT_WINDOW); - - /* Call the ddx's EndPage proc. */ - if(pContext->funcs.EndPage != 0) - result = pContext->funcs.EndPage(pContext, pWin); - else - return BadImplementation; - - if((page = (XpPagePtr)LookupIDByType(pContext->pageWin, RTpage)) != - (XpPagePtr)NULL) - page->context = (XpContextPtr)NULL; - - pContext->state &= ~PAGE_STARTED; - pContext->pageWin = 0; /* None, NULL??? XXX */ - - (void)UnmapWindow(pWin, FALSE); - - SendXpNotify(pContext, XPEndPageNotify, stuff->cancel); - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -/******************************************************************************* - * - * Document Data Functions: PutDocumentData, GetDocumentData - * - ******************************************************************************/ - -static int -ProcXpPutDocumentData(ClientPtr client) -{ - REQUEST(xPrintPutDocumentDataReq); - XpContextPtr pContext; - DrawablePtr pDraw; - int result = Success; - unsigned totalSize; - char *pData, *pDoc_fmt, *pOptions; - - REQUEST_AT_LEAST_SIZE(xPrintPutDocumentDataReq); - - if((pContext = (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr) - == (XpContextPtr)NULL) - return XpErrorBase+XPBadSequence; - - if(!(pContext->state & DOC_RAW_STARTED) && - !(pContext->state & DOC_COOKED_STARTED)) - return XpErrorBase+XPBadSequence; - - if (stuff->drawable) { - if (pContext->state & DOC_RAW_STARTED) - return BadDrawable; - pDraw = (DrawablePtr)LookupDrawable(stuff->drawable, client); - if (!pDraw || pDraw->pScreen->myNum != pContext->screenNum) - return BadDrawable; - } else { - if (pContext->state & DOC_COOKED_STARTED) - return BadDrawable; - pDraw = NULL; - } - - pData = (char *)(&stuff[1]); - - totalSize = (stuff->len_data + 3) >> 2; - pDoc_fmt = pData + (totalSize << 2); - - totalSize += (stuff->len_fmt + 3) >> 2; - pOptions = pData + (totalSize << 2); - - totalSize += (stuff->len_options + 3) >> 2; - if((totalSize + (sz_xPrintPutDocumentDataReq >> 2)) != client->req_len) - return BadLength; - - if(pContext->funcs.PutDocumentData != 0) - { - result = (*pContext->funcs.PutDocumentData)(pContext, pDraw, - pData, stuff->len_data, - pDoc_fmt, stuff->len_fmt, - pOptions, stuff->len_options, - client); - } - else - return BadImplementation; - - if (client->noClientException != Success) - return client->noClientException; - else - return result; -} - -static int -ProcXpGetDocumentData(ClientPtr client) -{ - REQUEST(xPrintGetDocumentDataReq); - xPrintGetDocumentDataReply rep; - XpContextPtr pContext; - int result = Success; - - REQUEST_SIZE_MATCH(xPrintGetDocumentDataReq); - - if((pContext = (XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityWriteAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - if(pContext->funcs.GetDocumentData == 0) - return BadImplementation; - - if(!(pContext->state & JOB_GET_DATA) || - pContext->state & GET_DOC_DATA_STARTED) - return XpErrorBase+XPBadSequence; - - if(stuff->maxBufferSize <= 0) - { - client->errorValue = stuff->maxBufferSize; - return BadValue; /* gotta have a positive buffer size */ - } - - result = (*pContext->funcs.GetDocumentData)(pContext, client, - stuff->maxBufferSize); - if(result != Success) - { - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.dataLen = 0; - rep.statusCode = 1; - rep.finishedFlag = TRUE; - if (client->swapped) { - int n; - long l; - - swaps(&rep.sequenceNumber, n); - swapl(&rep.statusCode, l); /* XXX Why are these longs??? */ - swapl(&rep.finishedFlag, l); /* XXX Why are these longs??? */ - } - (void)WriteToClient(client,sz_xPrintGetDocumentDataReply,(char *)&rep); - } - else - pContext->state |= GET_DOC_DATA_STARTED; - - if(pContext->clientSlept != (ClientPtr)NULL) - { - ClientSignal(pContext->clientSlept); - ClientWakeup(pContext->clientSlept); - pContext->clientSlept = (ClientPtr)NULL; - } - - return result; -} - -/******************************************************************************* - * - * Attribute requests: GetAttributes, SetAttributes, GetOneAttribute - * - ******************************************************************************/ - -static int -ProcXpGetAttributes(ClientPtr client) -{ - REQUEST(xPrintGetAttributesReq); - XpContextPtr pContext; - char *attrs; - xPrintGetAttributesReply *pRep; - int totalSize, n; - unsigned long l; - - REQUEST_SIZE_MATCH(xPrintGetAttributesReq); - - if(stuff->type < XPJobAttr || stuff->type > XPServerAttr) - { - client->errorValue = stuff->type; - return BadValue; - } - - if(stuff->type != XPServerAttr) - { - if((pContext = (XpContextPtr)SecurityLookupIDByType( - client, - stuff->printContext, - RTcontext, - SecurityReadAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - if(pContext->funcs.GetAttributes == 0) - return BadImplementation; - if((attrs = (*pContext->funcs.GetAttributes)(pContext, stuff->type)) == - (char *)NULL) - return BadAlloc; - } - else - { - if((attrs = XpGetAttributes((XpContextPtr)NULL, XPServerAttr)) == - (char *)NULL) - return BadAlloc; - } - - totalSize = sz_xPrintGetAttributesReply + QUADPAD(strlen(attrs)); - if((pRep = (xPrintGetAttributesReply *)malloc(totalSize)) == - (xPrintGetAttributesReply *)NULL) - return BadAlloc; - - pRep->type = X_Reply; - pRep->length = (totalSize - sz_xPrintGetAttributesReply) >> 2; - pRep->sequenceNumber = client->sequence; - pRep->stringLen = strlen(attrs); - - if (client->swapped) { - swaps(&pRep->sequenceNumber, n); - swapl(&pRep->length, l); - swapl(&pRep->stringLen, l); - } - - strncpy((char*)(pRep + 1), attrs, strlen(attrs)); - xfree(attrs); - - WriteToClient(client, totalSize, (char *)pRep); - - xfree(pRep); - - return client->noClientException; -} - -static int -ProcXpSetAttributes(ClientPtr client) -{ - REQUEST(xPrintSetAttributesReq); - int result = Success; - XpContextPtr pContext; - char *attr; - - REQUEST_AT_LEAST_SIZE(xPrintSetAttributesReq); - - if(stuff->type < XPJobAttr || stuff->type > XPServerAttr) - { - client->errorValue = stuff->type; - return BadValue; - } - - /* - * Disallow changing of read-only attribute pools - */ - if(stuff->type == XPPrinterAttr || stuff->type == XPServerAttr) - return BadMatch; - - if((pContext = (XpContextPtr)SecurityLookupIDByType( - client, - stuff->printContext, - RTcontext, - SecurityWriteAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - if(pContext->funcs.SetAttributes == 0) - return BadImplementation; - - /* - * Check for attributes being set after their relevant phase - * has already begun (e.g. Job attributes set after StartJob). - */ - if((pContext->state & JOB_STARTED) && stuff->type == XPJobAttr) - return XpErrorBase+XPBadSequence; - if(((pContext->state & DOC_RAW_STARTED) || - (pContext->state & DOC_COOKED_STARTED)) && stuff->type == XPDocAttr) - return XpErrorBase+XPBadSequence; - if((pContext->state & PAGE_STARTED) && stuff->type == XPPageAttr) - return XpErrorBase+XPBadSequence; - - if((attr = (char *)malloc(stuff->stringLen + 1)) == (char *)NULL) - return BadAlloc; - - strncpy(attr, (char *)(stuff + 1), stuff->stringLen); - attr[stuff->stringLen] = (char)'\0'; - - if(stuff->rule == XPAttrReplace) - (*pContext->funcs.SetAttributes)(pContext, stuff->type, attr); - else if(stuff->rule == XPAttrMerge) - (*pContext->funcs.AugmentAttributes)(pContext, stuff->type, attr); - else - { - client->errorValue = stuff->rule; - result = BadValue; - } - - xfree(attr); - - SendAttributeNotify(pContext, stuff->type); - - return result; -} - -static int -ProcXpGetOneAttribute(ClientPtr client) -{ - REQUEST(xPrintGetOneAttributeReq); - XpContextPtr pContext; - char *value, *attrName; - xPrintGetOneAttributeReply *pRep; - int totalSize; - int n; - unsigned long l; - - REQUEST_AT_LEAST_SIZE(xPrintGetOneAttributeReq); - - totalSize = ((sz_xPrintGetOneAttributeReq) >> 2) + - ((stuff->nameLen + 3) >> 2); - if(totalSize != client->req_len) - return BadLength; - - if(stuff->type < XPJobAttr || stuff->type > XPServerAttr) - { - client->errorValue = stuff->type; - return BadValue; - } - - if((attrName = (char *)malloc(stuff->nameLen + 1)) == (char *)NULL) - return BadAlloc; - strncpy(attrName, (char *)(stuff+1), stuff->nameLen); - attrName[stuff->nameLen] = (char)'\0'; - - if(stuff->type != XPServerAttr) - { - if((pContext = (XpContextPtr)SecurityLookupIDByType( - client, - stuff->printContext, - RTcontext, - SecurityReadAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - if(pContext->funcs.GetOneAttribute == 0) - return BadImplementation; - if((value = (*pContext->funcs.GetOneAttribute)(pContext, stuff->type, - attrName)) == (char *)NULL) - return BadAlloc; - } - else - { - if((value = XpGetOneAttribute((XpContextPtr)NULL, XPServerAttr, - attrName)) == (char *)NULL) - return BadAlloc; - } - - free(attrName); - - totalSize = sz_xPrintGetOneAttributeReply + QUADPAD(strlen(value)); - if((pRep = (xPrintGetOneAttributeReply *)malloc(totalSize)) == - (xPrintGetOneAttributeReply *)NULL) - return BadAlloc; - - pRep->type = X_Reply; - pRep->length = (totalSize - sz_xPrintGetOneAttributeReply) >> 2; - pRep->sequenceNumber = client->sequence; - pRep->valueLen = strlen(value); - - if (client->swapped) { - swaps(&pRep->sequenceNumber, n); - swapl(&pRep->length, l); - swapl(&pRep->valueLen, l); - } - - strncpy((char*)(pRep + 1), value, strlen(value)); - - WriteToClient(client, totalSize, (char *)pRep); - - xfree(pRep); - - return client->noClientException; -} - -/******************************************************************************* - * - * Print Event requests: SelectInput InputSelected, SendXpNotify - * - ******************************************************************************/ - - -static int -ProcXpSelectInput(ClientPtr client) -{ - REQUEST(xPrintSelectInputReq); - int result = Success; - XpContextPtr pContext; - XpClientPtr pPrintClient; - - REQUEST_SIZE_MATCH(xPrintSelectInputReq); - - /* - * Check to see that the supplied XID is really a valid print context - * in this server. - */ - if((pContext=(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityWriteAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - if(stuff->eventMask & ~allEvents) - { - client->errorValue = stuff->eventMask; - return BadValue; /* bogus event mask bits */ - } - - if((pPrintClient = AcquireClient(pContext, client)) == (XpClientPtr)NULL) - return BadAlloc; - - pPrintClient->eventMask = stuff->eventMask; - - return result; -} - -static int -ProcXpInputSelected(ClientPtr client) -{ - REQUEST(xPrintInputSelectedReq); - xPrintInputSelectedReply rep; - register int n; - long l; - XpClientPtr pXpClient; - XpContextPtr pContext; - - REQUEST_SIZE_MATCH(xPrintInputSelectedReq); - - if((pContext=(XpContextPtr)SecurityLookupIDByType(client, - stuff->printContext, - RTcontext, - SecurityReadAccess)) - == (XpContextPtr)NULL) - { - client->errorValue = stuff->printContext; - return XpErrorBase+XPBadContext; - } - - pXpClient = FindClient(pContext, client); - - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - rep.eventMask = (pXpClient != (XpClientPtr)NULL)? pXpClient->eventMask : 0; - rep.allEventsMask = GetAllEventMasks(pContext); - - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, l); - swapl(&rep.eventMask, l); - swapl(&rep.allEventsMask, l); - } - - WriteToClient(client, sz_xPrintInputSelectedReply, (char *)&rep); - return client->noClientException; -} - -static void -SendAttributeNotify(XpContextPtr pContext, int which) -{ - XpClientPtr pXpClient; - xPrintAttributeEvent ae; - ClientPtr client; - - pXpClient = pContext->clientHead; - if(pXpClient == (XpClientPtr)NULL) - return; /* Nobody's interested in the events (or this context). */ - - for (pXpClient = pContext->clientHead; - pXpClient != (XpClientPtr)NULL; - pXpClient = pXpClient->pNext) - { - client = pXpClient->client; - if (client == serverClient || client->clientGone || - !(pXpClient->eventMask & XPAttributeMask)) - continue; - ae.type = XPAttributeNotify + XpEventBase; - ae.detail = which; - ae.printContext = pContext->contextID; - ae.sequenceNumber = client->sequence; - WriteEventsToClient (client, 1, (xEvent *) &ae); - } -} - -static void -SendXpNotify(XpContextPtr pContext, int which, int val) -{ - XpClientPtr pXpClient; - xPrintPrintEvent pe; - ClientPtr client; - - pXpClient = pContext->clientHead; - if(pXpClient == (XpClientPtr)NULL) - return; /* Nobody's interested in the events (or this context). */ - - for (pXpClient = pContext->clientHead; - pXpClient != (XpClientPtr)NULL; - pXpClient = pXpClient->pNext) - { - client = pXpClient->client; - if (client == serverClient || client->clientGone || - !(pXpClient->eventMask & XPPrintMask)) - continue; - pe.type = XPPrintNotify + XpEventBase; - pe.detail = which; - pe.printContext = pContext->contextID; - pe.cancel = (Bool)val; - pe.sequenceNumber = client->sequence; - WriteEventsToClient (client, 1, (xEvent *) &pe); - } -} - -static CARD32 -GetAllEventMasks(XpContextPtr pContext) -{ - XpClientPtr pPrintClient; - CARD32 totalMask = (CARD32)0; - - for (pPrintClient = pContext->clientHead; - pPrintClient != (XpClientPtr)NULL; - pPrintClient = pPrintClient->pNext) - { - totalMask |= pPrintClient->eventMask; - } - return totalMask; -} - -/* - * XpContextOfClient - returns the XpContextPtr to the context - * associated with the specified client, or NULL if the client - * does not currently have a context set. - */ -XpContextPtr -XpContextOfClient(ClientPtr client) -{ - return (XpContextPtr)client->devPrivates[XpClientPrivateIndex].ptr; -} - - -/******************************************************************************* - * - * Swap-request functions - * - ******************************************************************************/ - -static int -SProcXpCreateContext(ClientPtr client) -{ - int i; - long n; - - REQUEST(xPrintCreateContextReq); - - swaps(&stuff->length, i); - swapl(&stuff->contextID, n); - swapl(&stuff->printerNameLen, n); - swapl(&stuff->localeLen, n); - return ProcXpCreateContext(client); -} - -static int -SProcXpGetPrinterList(ClientPtr client) -{ - int i; - long n; - - REQUEST(xPrintGetPrinterListReq); - - swaps(&stuff->length, i); - swapl(&stuff->printerNameLen, n); - swapl(&stuff->localeLen, n); - return ProcXpGetPrinterList(client); -} - -static int -SProcXpRehashPrinterList(ClientPtr client) -{ - int i; - - REQUEST(xPrintRehashPrinterListReq); - swaps(&stuff->length, i); - return ProcXpRehashPrinterList(client); -} - -static int -SProcXpSetContext(ClientPtr client) -{ - int i; - - REQUEST(xPrintSetContextReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, i); - return ProcXpSetContext(client); -} - -static int -SProcXpGetContext(ClientPtr client) -{ - int i; - - REQUEST(xPrintGetContextReq); - swaps(&stuff->length, i); - return ProcXpGetContext(client); -} - -static int -SProcXpDestroyContext(ClientPtr client) -{ - int i; - long n; - - REQUEST(xPrintDestroyContextReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - return ProcXpDestroyContext(client); -} - -static int -SProcXpGetContextScreen(ClientPtr client) -{ - int i; - long n; - - REQUEST(xPrintGetContextScreenReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - return ProcXpGetContextScreen(client); -} - -static int -SProcXpInputSelected(ClientPtr client) -{ - int i; - long n; - - REQUEST(xPrintInputSelectedReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - return ProcXpInputSelected(client); -} - -static int -SProcXpStartJob(ClientPtr client) -{ - int i; - - REQUEST(xPrintStartJobReq); - swaps(&stuff->length, i); - return ProcXpStartJob(client); -} - -static int -SProcXpEndJob(ClientPtr client) -{ - int i; - - REQUEST(xPrintEndJobReq); - swaps(&stuff->length, i); - return ProcXpEndJob(client); -} - -static int -SProcXpStartDoc(ClientPtr client) -{ - int i; - - REQUEST(xPrintStartDocReq); - swaps(&stuff->length, i); - return ProcXpStartDoc(client); -} - -static int -SProcXpEndDoc(ClientPtr client) -{ - int i; - - REQUEST(xPrintEndDocReq); - swaps(&stuff->length, i); - return ProcXpEndDoc(client); -} - -static int -SProcXpStartPage(ClientPtr client) -{ - int i; - long n; - - REQUEST(xPrintStartPageReq); - swaps(&stuff->length, i); - swapl(&stuff->window, n); - return ProcXpStartPage(client); -} - -static int -SProcXpEndPage(ClientPtr client) -{ - int i; - - REQUEST(xPrintEndPageReq); - swaps(&stuff->length, i); - return ProcXpEndPage(client); -} - -static int -SProcXpPutDocumentData(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintPutDocumentDataReq); - swaps(&stuff->length, i); - swapl(&stuff->drawable, n); - swapl(&stuff->len_data, n); - swaps(&stuff->len_fmt, i); - swaps(&stuff->len_options, i); - return ProcXpPutDocumentData(client); -} - -static int -SProcXpGetDocumentData(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintGetDocumentDataReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - swapl(&stuff->maxBufferSize, n); - return ProcXpGetDocumentData(client); -} - -static int -SProcXpGetAttributes(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintGetAttributesReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - return ProcXpGetAttributes(client); -} - -static int -SProcXpSetAttributes(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintSetAttributesReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - swapl(&stuff->stringLen, n); - return ProcXpSetAttributes(client); -} - -static int -SProcXpGetOneAttribute(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintGetOneAttributeReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - swapl(&stuff->nameLen, n); - return ProcXpGetOneAttribute(client); -} - -static int -SProcXpSelectInput(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintSelectInputReq); - swaps(&stuff->length, i); - swapl(&stuff->eventMask, n); - swapl(&stuff->printContext, n); - return ProcXpSelectInput(client); -} - -static int -SProcXpGetPageDimensions(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintGetPageDimensionsReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - return ProcXpGetPageDimensions(client); -} - -static int -SProcXpSetImageResolution(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintSetImageResolutionReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - swaps(&stuff->imageRes, i); - return ProcXpSetImageResolution(client); -} - -static int -SProcXpGetImageResolution(ClientPtr client) -{ - long n; - int i; - - REQUEST(xPrintGetImageResolutionReq); - swaps(&stuff->length, i); - swapl(&stuff->printContext, n); - return ProcXpGetImageResolution(client); -} - -static void -SwapXpNotifyEvent(xPrintPrintEvent *src, xPrintPrintEvent *dst) -{ - /* - * Swap the sequence number and context fields. - */ - cpswaps(src->sequenceNumber, dst->sequenceNumber); - cpswapl(src->printContext, dst->printContext); - - /* - * Copy the byte-long fields. - */ - dst->type = src->type; - dst->detail = src->detail; - dst->cancel = src->cancel; -} - -static void -SwapXpAttributeEvent(xPrintAttributeEvent *src, xPrintAttributeEvent *dst) -{ - /* - * Swap the sequence number and context fields. - */ - cpswaps(src->sequenceNumber, dst->sequenceNumber); - cpswapl(src->printContext, dst->printContext); - - /* - * Copy the byte-long fields. - */ - dst->type = src->type; - dst->detail = src->detail; -} diff --git a/nx-X11/programs/Xserver/dix/Imakefile b/nx-X11/programs/Xserver/dix/Imakefile index 529e562..a0d4208 100644 --- a/nx-X11/programs/Xserver/dix/Imakefile +++ b/nx-X11/programs/Xserver/dix/Imakefile @@ -7,10 +7,8 @@ XCOMM $XFree86: xc/programs/Xserver/dix/Imakefile,v 3.17 2003/04/15 18:30:43 ala #include <Server.tmpl> -#if !BuildXprint || PrintOnlyServer XPSRC = xpstubs.c XPOBJ = xpstubs.o -#endif #if !HasFfs FFS_SRC = ffs.c @@ -27,7 +25,7 @@ OBJS = atom.o colormap.o cursor.o devices.o dispatch.o dixutils.o events.o \ tables.o window.o initatoms.o dixfonts.o privates.o pixmap.o $(FFS_OBJ) INCLUDES = -I../include -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(EXTINCSRC) \ - -I$(SERVERSRC)/Xext -I$(SERVERSRC)/lbx -I../Xprint + -I$(SERVERSRC)/Xext -I$(SERVERSRC)/lbx LINTLIBS = ../os/llib-los.ln /* @@ -94,8 +92,6 @@ SpecialCObjectRule(pixmap,$(ICONFIGFILES),$(_NOOP_)) SpecialCObjectRule(privates,$(ICONFIGFILES),$(_NOOP_)) SpecialCObjectRule(window,$(ICONFIGFILES),$(QUARTZ_DEFINES)) -#if !BuildXprint || PrintOnlyServer NormalLibraryTarget(xpstubs,$(XPOBJ)) -#endif DependTarget() diff --git a/nx-X11/programs/Xserver/dix/main.c b/nx-X11/programs/Xserver/dix/main.c index 6a8f79a..270de6c 100644 --- a/nx-X11/programs/Xserver/dix/main.c +++ b/nx-X11/programs/Xserver/dix/main.c @@ -104,9 +104,6 @@ Equipment Corporation. #include "site.h" #include "dixfont.h" #include "extnsionst.h" -#ifdef XPRINT -#include "DiPrint.h" -#endif #ifdef PANORAMIX #include "panoramiXsrv.h" #else @@ -255,9 +252,6 @@ main(int argc, char *argv[], char *envp[]) display = "0"; InitGlobals(); -#ifdef XPRINT - PrinterInitGlobals(); -#endif /* Quartz support on Mac OS X requires that the Cocoa event loop be in * the main thread. This allows the X server main to be called again @@ -370,9 +364,6 @@ main(int argc, char *argv[], char *envp[]) InitCallbackManager(); InitVisualWrap(); InitOutput(&screenInfo, argc, argv); -#ifdef XPRINT - PrinterInitOutput(&screenInfo, argc, argv); -#endif if (screenInfo.numScreens < 1) FatalError("no screens found"); diff --git a/nx-X11/programs/Xserver/dix/xpstubs.c b/nx-X11/programs/Xserver/dix/xpstubs.c index 5135cc3..89481c6 100644 --- a/nx-X11/programs/Xserver/dix/xpstubs.c +++ b/nx-X11/programs/Xserver/dix/xpstubs.c @@ -33,9 +33,6 @@ from The Open Group. #include "misc.h" #include <X11/fonts/font.h> -#ifdef XPRINT -#include "DiPrint.h" -#endif Bool XpClientIsBitmapClient( @@ -51,27 +48,3 @@ XpClientIsPrintClient( { return FALSE; } -#ifdef XPRINT -int -PrinterOptions( - int argc, - char **argv, - int i) -{ - return i; -} -void -PrinterInitOutput( - ScreenInfo *pScreenInfo, - int argc, - char **argv) -{ -} -void PrinterUseMsg(void) -{ -} -void PrinterInitGlobals(void) -{ -} -#endif /* XPRINT */ - diff --git a/nx-X11/programs/Xserver/hw/nxagent/Imakefile b/nx-X11/programs/Xserver/hw/nxagent/Imakefile index 6c075fa..874e825 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile +++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile @@ -66,6 +66,7 @@ SRCS = NXwindow.c \ Composite.c \ Pixels.c \ stubs.c \ + xpstubs.c \ miinitext.c \ $(SRCS1) @@ -128,6 +129,7 @@ OBJS = NXwindow.o \ Composite.o \ Pixels.o \ stubs.o \ + xpstubs.o \ miinitext.o \ $(OBJS1) @@ -220,6 +222,7 @@ DEFINES = -g $(OS_DEFINES) $(EXT_DEFINES) $(UPG_DEFINES) $(NX_DEFINES) \ all:: $(OBJS) LinkSourceFile(stubs.c,$(SERVERSRC)/Xi) +LinkSourceFile(xpstubs.c,$(SERVERSRC)/dix) SpecialCObjectRule(Init,$(ICONFIGFILES),$(_NOOP_)) LinkSourceFile(miinitext.c,$(SERVERSRC)/mi) SpecialCObjectRule(miinitext,$(ICONFIGFILES), $(_NOOP_)) diff --git a/nx-X11/programs/Xserver/mi/miinitext.c b/nx-X11/programs/Xserver/mi/miinitext.c index f3be9da..b70a6a6 100644 --- a/nx-X11/programs/Xserver/mi/miinitext.c +++ b/nx-X11/programs/Xserver/mi/miinitext.c @@ -73,34 +73,6 @@ SOFTWARE. #undef GLXEXT #endif -/* Make sure Xprt only announces extensions it supports */ -#ifdef PRINT_ONLY_SERVER -#undef MITSHM /* this is incompatible to the vector-based Xprint DDX */ -#undef XKB -#undef PANORAMIX -#undef RES -#undef XINPUT -#undef XV -#undef SCREENSAVER -#undef XIDLE -#undef XRECORD -#undef XF86VIDMODE -#undef XF86MISC -#undef XFreeXDGA -#undef XF86DRI -#undef DPMSExtension -#undef DPSEXT -#undef FONTCACHE -#undef DAMAGE -#undef XFIXES -#undef XEVIE -#else -#ifndef LOADABLEPRINTDDX -#undef XPRINT -#endif /* LOADABLEPRINTDDX */ -#endif /* PRINT_ONLY_SERVER */ - - extern Bool noTestExtensions; #ifdef BIGREQS @@ -232,9 +204,6 @@ typedef void (*InitExtension)(INITARGS); #define _XLBX_SERVER_ #include <X11/extensions/lbxstr.h> #endif -#ifdef XPRINT -#include "Print.h" -#endif #ifdef XAPPGROUP #define _XAG_SERVER_ #include <X11/extensions/Xagstr.h> @@ -321,9 +290,6 @@ extern void XagExtensionInit(INITARGS); #ifdef XCSECURITY extern void SecurityExtensionInit(INITARGS); #endif -#ifdef XPRINT -extern void XpExtensionInit(INITARGS); -#endif #ifdef XF86BIGFONT extern void XFree86BigfontExtensionInit(INITARGS); #endif @@ -606,9 +572,6 @@ InitExtensions(argc, argv) #ifdef XCSECURITY if (!noSecurityExtension) SecurityExtensionInit(); #endif -#ifdef XPRINT - XpExtensionInit(); /* server-specific extension, cannot be disabled */ -#endif #ifdef TOGCUP if (!noXcupExtension) XcupExtensionInit(); #endif @@ -642,11 +605,6 @@ InitExtensions(argc, argv) if (!noGlxExtension) DarwinGlxExtensionInit(); #endif #endif -#ifdef DPSEXT -#ifndef XPRINT - if (!noDPSExtension) DPSExtensionInit(); -#endif -#endif #ifdef XFIXES /* must be before Render to layer DisplayCursor correctly */ if (!noXFixesExtension) XFixesExtensionInit(); @@ -717,9 +675,6 @@ static ExtensionModule staticExtensions[] = { #ifdef XCSECURITY { SecurityExtensionInit, SECURITY_EXTENSION_NAME, &noSecurityExtension, NULL, NULL }, #endif -#ifdef XPRINT - { XpExtensionInit, XP_PRINTNAME, NULL, NULL, NULL }, -#endif #ifdef PANORAMIX { PanoramiXExtensionInit, PANORAMIX_PROTOCOL_NAME, &noPanoramiXExtension, NULL, NULL }, #endif diff --git a/nx-X11/programs/Xserver/os/Imakefile b/nx-X11/programs/Xserver/os/Imakefile index 22be060..55f8e41 100644 --- a/nx-X11/programs/Xserver/os/Imakefile +++ b/nx-X11/programs/Xserver/os/Imakefile @@ -166,7 +166,7 @@ BOOTSTRAPCFLAGS = $(RANDOM_DEFINES) $(BUGMSG) $(XTRANS_FAILDEFINES) $(NX_DEFINES) INCLUDES = -I. -I../include -I$(XINCLUDESRC) -I$(EXTINCSRC) \ -I$(SERVERSRC)/Xext -I$(FONTINCSRC) -I$(SERVERSRC)/render \ - -I$(TOP)/lib/Xau -I../lbx -I../Xprint Krb5Includes $(NX_INCLUDES) + -I$(TOP)/lib/Xau -I../lbx Krb5Includes $(NX_INCLUDES) DEPEND_DEFINES = $(DBM_DEFINES) $(XDMCP_DEFINES) $(EXT_DEFINES) \ $(TRANS_INCLUDES) $(CONNECTION_FLAGS) $(GETPEER_DEFINES) \ DependDefines diff --git a/nx-X11/programs/Xserver/os/utils.c b/nx-X11/programs/Xserver/os/utils.c index 79e49d5..5f189c9 100644 --- a/nx-X11/programs/Xserver/os/utils.c +++ b/nx-X11/programs/Xserver/os/utils.c @@ -147,10 +147,6 @@ OR PERFORMANCE OF THIS SOFTWARE. #include "picture.h" #endif -#ifdef XPRINT -#include "DiPrint.h" -#endif - Bool noTestExtensions; #ifdef BIGREQS Bool noBigReqExtension = FALSE; @@ -691,9 +687,6 @@ void UseMsg(void) #ifdef XCSECURITY ErrorF("-sp file security policy file\n"); #endif -#ifdef XPRINT - PrinterUseMsg(); -#endif ErrorF("-su disable any save under support\n"); ErrorF("-t # mouse threshold (pixels)\n"); ErrorF("-terminate terminate at server reset\n"); @@ -1102,12 +1095,6 @@ ProcessCommandLine(int argc, char *argv[]) i = skip - 1; } #endif -#ifdef XPRINT - else if ((skip = PrinterOptions(argc, argv, i)) != i) - { - i = skip - 1; - } -#endif #ifdef XCSECURITY else if ((skip = XSecurityOptions(argc, argv, i)) != i) { diff --git a/nx-libs.spec b/nx-libs.spec index ad9a09b..2e6c5da 100644 --- a/nx-libs.spec +++ b/nx-libs.spec @@ -1005,8 +1005,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %{_includedir}/nx/X11/ap_keysym.h %{_includedir}/nx/X11/keysym.h %{_includedir}/nx/X11/keysymdef.h -%{_includedir}/nx/X11/extensions/Print.h -%{_includedir}/nx/X11/extensions/Printstr.h %{_includedir}/nx/X11/extensions/XI.h %{_includedir}/nx/X11/extensions/XIproto.h %{_includedir}/nx/X11/extensions/XResproto.h -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 78ac4396a61f784e571fe77155ae9b27065beb08 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Mar 4 13:34:21 2015 +0100 imake cleanup: Drop all references to BuildFontServer. --- nx-X11/config/cf/README | 1 - nx-X11/config/cf/X11.tmpl | 6 +----- nx-X11/config/cf/host.def | 8 -------- nx-X11/config/cf/xf86site.def | 6 ------ nx-X11/config/cf/xfree86.cf | 7 ------- nx-X11/config/cf/xorg.cf | 7 ------- nx-X11/config/cf/xorgsite.def | 6 ------ nx-X11/programs/Imakefile | 5 +---- 8 files changed, 2 insertions(+), 44 deletions(-) diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index e1b65a3..a314903 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -178,7 +178,6 @@ X11.tmpl provides defaults for the following variables: BuildDBE build DOUBLE-BUFFER extension BuildDmx build Distributed Multihead X server and extension BuildDPMS build Display Power Management Signaling extension - BuildFontServer build font server BuildFonts build pcf fonts BuildIncRoot relative path to location of headers in build BuildIncTop path from build includes directory to top diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl index 71a5d26..b6ff72e 100644 --- a/nx-X11/config/cf/X11.tmpl +++ b/nx-X11/config/cf/X11.tmpl @@ -144,9 +144,6 @@ XORGRELSTRING = XorgManVersionString #ifndef BuildLibrariesForXServers #define BuildLibrariesForXServers BuildServer #endif -#ifndef BuildFontServer -#define BuildFontServer YES -#endif #ifndef XserverStaticFontLib #define XserverStaticFontLib YES #endif @@ -166,7 +163,7 @@ XORGRELSTRING = XorgManVersionString #define BuildBuiltinFonts NO #endif #ifndef BuildFonts -#define BuildFonts (BuildServer | BuildFontServer) +#define BuildFonts BuildServer #endif #ifndef Build75DpiFonts #define Build75DpiFonts YES @@ -1688,7 +1685,6 @@ XCOMM X Window System make variables; these need to be coordinated with rules RGBSRC = $(XTOP)/programs/rgb BDFTOPCFSRC = $(PROGRAMSRC)/bdftopcf MKFONTDIRSRC = $(PROGRAMSRC)/mkfontdir - FONTSERVERSRC = $(PROGRAMSRC)/xfs FONTINCSRC = $(XTOP)/include/fonts EXTINCSRC = $(XTOP)/include/extensions FTSOURCEDIR = FreeTypeSrcDir diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index cae87f1..1bd3289 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -250,13 +250,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building the font server, uncomment this. - * -#define BuildFontServer NO - */ -#define BuildFontServer NO - -/* * Speedo fonts have been disabled by default in this release. * To re-enable support for Speedo fonts, uncomment this. * @@ -934,7 +927,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define BuildServersOnly YES #define DefaultFontPath /usr/NX/share/fonts/misc/,/usr/NX/share/fonts/TTF/ #define DefaultRGBDatabase /usr/NX/share/rgb -#define BuildFontServer NO #define BuildFreeType NO #define BuildXTrueType NO #define FontLibSharedFreeType YES diff --git a/nx-X11/config/cf/xf86site.def b/nx-X11/config/cf/xf86site.def index db89ffe..39d8980 100644 --- a/nx-X11/config/cf/xf86site.def +++ b/nx-X11/config/cf/xf86site.def @@ -139,12 +139,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building the font server, uncomment this. - * -#define BuildFontServer NO - */ - -/* * To disable support for Speedo fonts, uncomment this. * #define BuildSpeedo NO diff --git a/nx-X11/config/cf/xfree86.cf b/nx-X11/config/cf/xfree86.cf index 5832096..0348c03 100644 --- a/nx-X11/config/cf/xfree86.cf +++ b/nx-X11/config/cf/xfree86.cf @@ -1684,13 +1684,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 #endif /* - * Build the font server - */ -#ifndef BuildFontServer -# define BuildFontServer YES -#endif - -/* * Include fonts support */ #ifndef BuildSpeedo diff --git a/nx-X11/config/cf/xorg.cf b/nx-X11/config/cf/xorg.cf index 6b48242..3f92235 100644 --- a/nx-X11/config/cf/xorg.cf +++ b/nx-X11/config/cf/xorg.cf @@ -1248,13 +1248,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 #endif /* - * Build the font server - */ -#ifndef BuildFontServer -# define BuildFontServer YES -#endif - -/* * Include fonts support */ #ifndef BuildSpeedo diff --git a/nx-X11/config/cf/xorgsite.def b/nx-X11/config/cf/xorgsite.def index 6083ce5..eeaffa4 100644 --- a/nx-X11/config/cf/xorgsite.def +++ b/nx-X11/config/cf/xorgsite.def @@ -153,12 +153,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable building the font server, uncomment this. - * -#define BuildFontServer NO - */ - -/* * Speedo fonts have been disabled by default in this release. * To re-enable support for Speedo fonts, uncomment this. * diff --git a/nx-X11/programs/Imakefile b/nx-X11/programs/Imakefile index acecc3b..ffd1e6c 100644 --- a/nx-X11/programs/Imakefile +++ b/nx-X11/programs/Imakefile @@ -36,9 +36,6 @@ XCOMM $XFree86: xc/programs/Imakefile,v 3.54 2003/04/14 20:37:16 herrb Exp $ #if HasXServer XINITSRCDIR = xinit #endif -#if BuildFontServer - XFSSRCDIR = xfs -#endif #if BuildXKBlib XKBSRCDIRS = setxkbmap $(XKBCOMPDIR) xkbevd xkbprint xkbutils #endif @@ -155,7 +152,7 @@ SUBDIRS = \ $(SMPROXYSRCDIR) $(TWMSRCDIR) viewres x11perf xauth xbiff xcalc \ xclipboard xclock \ xcmsdb $(XCONSOLESRCDIR) xditview $(XDMSRCDIR) xdpyinfo \ - $(XF86DGASRCDIR) xedit xev xeyes xfd xfontsel $(XFSSRCDIR) xfsinfo \ + $(XF86DGASRCDIR) xedit xev xeyes xfd xfontsel xfsinfo \ $(XFINDPROXYSRCDIR) $(XFWPSRCDIR) $(XGAMMASRCDIR) xgc $(XHOSTSRCDIR) \ $(XINITSRCDIR) $(XKBSRCDIRS) xkill $(XLOADDIR) xlogo xlsatoms \ xlsclients xlsfonts xmag xman xmessage xmh xmodmap $(XMORE) xprop \ -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 05d208351ccc42f50910504325006c90a308cde9 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Mar 4 13:43:54 2015 +0100 imake cleanup: nx-X11/programs/Imakefile (reduce to minimal). --- nx-X11/programs/Imakefile | 136 --------------------------------------------- 1 file changed, 136 deletions(-) diff --git a/nx-X11/programs/Imakefile b/nx-X11/programs/Imakefile index ffd1e6c..77a84a6 100644 --- a/nx-X11/programs/Imakefile +++ b/nx-X11/programs/Imakefile @@ -1,8 +1,3 @@ -XCOMM $Xorg: Imakefile,v 1.4 2000/08/17 19:47:01 cpqbld Exp $ - - - -XCOMM $XFree86: xc/programs/Imakefile,v 3.54 2003/04/14 20:37:16 herrb Exp $ /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -23,146 +18,15 @@ XCOMM $XFree86: xc/programs/Imakefile,v 3.54 2003/04/14 20:37:16 herrb Exp $ #define IHaveSubdirs #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)" -#if BuildServer || UseRgbTxt - RGBSRCDIR = rgb -#endif #if BuildServer XSSRCDIR = Xserver #endif -#if BuildXkbcomp - XKBCOMPDIR = xkbcomp -#endif -#ifndef Win32Architecture -#if HasXServer - XINITSRCDIR = xinit -#endif -#if BuildXKBlib - XKBSRCDIRS = setxkbmap $(XKBCOMPDIR) xkbevd xkbprint xkbutils -#endif -#if BuildScreenSaverLibrary -SCREENSAVESRCDIR = beforelight -#endif -#if BuildXF86VidModeLibrary - XVIDTUNESRCDIR = xvidtune -#endif -#if BuildXF86DGALibrary - XF86DGASRCDIR = xf86dga -#endif -#if BuildXAServer - XASSRCDIR = Xaserver -#endif -#if BuildLBX - LBXPROXYSRCDIR = lbxproxy -#endif - PROXYMGRSRCDIR = proxymngr - RSTARTSRCDIR = rstart - SMPROXYSRCDIR = smproxy - TWMSRCDIR = twm - XCONSOLESRCDIR = xconsole - XDMSRCDIR = xdm -XFINDPROXYSRCDIR = xfindproxy - XFWPSRCDIR = xfwp -#if BuildXF86VidModeLibrary - XGAMMASRCDIR = xgamma -#endif -#if BuildXvLibrary - XVINFOSRCDIR = xvinfo -#endif - XHOSTSRCDIR = xhost -#if BuildPlugin && BuildXaw - XRXSRCDIR = xrx -#endif - XSMSRCDIR = xsm -#if BuildXterm - XTERMSRCDIR = xterm -#endif - SCRIPTSDIR = scripts -#endif /* Win32Architecture */ -#if BuildCID - MKCFMSRCDIR = mkcfm -#endif -#if (HasFreetype2 || BuildFreetype2Library) && BuildFontEncLib - MKFONTSCALEDIR = mkfontscale -#endif - -#if BuildXInputLib -XINPUTCLIENTDIRS = xsetmode xsetpointer -#endif - -#if BuildXTrapLibrary -XTRAPCLIENTDIRS = xtrap -#endif - -/* makepsres should be considered as part of the DPS libraries */ -#if BuildDPSLibraries - MAKEPSRESDIR = makepsres -#endif - -/* on the other hand, the following are independent clients */ -#if BuildDPSClients - DPSCLIENTDIRS = dpsinfo dpsexec texteroids -#endif - XPMCLIENTDIRS = cxpm sxpm - -#if BuildGLXLibrary - GLXCLIENTDIRS = glxinfo glxgears -#endif - - XLOADDIR = xload - -#if BuildRandRLibrary - XRANDRDIR = xrandr -#endif - -#if BuildXcursorgen - XCURSORGENDIR = xcursorgen -#endif - -#if BuildFontconfigLibrary - FCDIRS = fc-cache fc-list -#endif -#if 0 - FCLANGDIR = fc-lang -#endif - -#if BuildXDriInfo - XDRIINFO = xdriinfo -#endif - -#if BuildXaw - XMORE = xmore -#endif - -#if BuildServersOnly || !BuildClients #if defined(NXEmbeddedXServer) SUBDIRS = $(XSSRCDIR) #else SUBDIRS = $(XSSRCDIR) nxauth #endif -#else -SUBDIRS = \ - appres bdftopcf bitmap \ - $(SCREENSAVESRCDIR) editres $(FCDIRS) $(FCLANGDIR) fslsfonts fstobdf \ - iceauth ico listres luit \ - $(MAKEPSRESDIR) $(DPSCLIENTDIRS) $(DBECLIENTDIRS) \ - $(MKCFMSRCDIR) \ - mkfontdir $(MKFONTSCALEDIR) oclock $(PROXYMGRSRCDIR) \ - $(RGBSRCDIR) $(RSTARTSRCDIR) showfont \ - $(SMPROXYSRCDIR) $(TWMSRCDIR) viewres x11perf xauth xbiff xcalc \ - xclipboard xclock \ - xcmsdb $(XCONSOLESRCDIR) xditview $(XDMSRCDIR) xdpyinfo \ - $(XF86DGASRCDIR) xedit xev xeyes xfd xfontsel xfsinfo \ - $(XFINDPROXYSRCDIR) $(XFWPSRCDIR) $(XGAMMASRCDIR) xgc $(XHOSTSRCDIR) \ - $(XINITSRCDIR) $(XKBSRCDIRS) xkill $(XLOADDIR) xlogo xlsatoms \ - xlsclients xlsfonts xmag xman xmessage xmh xmodmap $(XMORE) xprop \ - xrdb xrefresh $(XRXSRCDIR) xset \ - xsetroot $(XSMSRCDIR) xstdcmap $(XINPUTCLIENTDIRS) \ - $(XTERMSRCDIR) $(XTRAPCLIENTDIRS) $(XVIDTUNESRCDIR) xwd xwininfo xwud \ - $(XPMCLIENTDIRS) $(XVINFOSRCDIR) \ - $(XSSRCDIR) $(XASSRCDIR) $(LBXPROXYSRCDIR) $(XPSRCDIRS) $(SCRIPTSDIR) \ - $(GLXCLIENTDIRS) $(XRANDRDIR) $(XCURSORGENDIR) $(XDRIINFO) -#endif MakeSubdirs($(SUBDIRS)) DependSubdirs($(SUBDIRS)) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 6db94c3e161136123d3cd2920cfe1b4ce672b380 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Mar 4 13:56:53 2015 +0100 imake cleanup: nx-X11/programs/Xserver/Imakefile (drop non-provided Xserver variants) --- nx-X11/programs/Xserver/Imakefile | 287 +------------------------------------ 1 file changed, 1 insertion(+), 286 deletions(-) diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index c251033..d6e67d8 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -334,161 +334,6 @@ XCOMM * even if multiple servers that share subdirectories are being built. */ -#if defined(XdecServer) && XdecServer -XCOMM -XCOMM Digital MIPS based WS server (ultrix 4.2 and beyond) -XCOMM -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -DECWSDDXDIR = hw/dec/ws -DECDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(DECWSDDXDIR) $(DEPDIRS) -DECOBJS = hw/dec/ws/init.o hw/dec/ws/sdepthinit.o -DECLIBS = hw/dec/ws/LibraryTargetName(dec) CFB8Libs -ServerTarget(Xdec,$(DECDIRS),$(DECOBJS), \ - $(DECLIBS),$(FONTLIBS) $(SYSLIBS)) -#ifndef ServerToInstall -#define ServerToInstall Xdec -#endif -#endif /* XdecServer */ - - -#if defined(XdecMultiDepthServer) && XdecMultiDepthServer -XCOMM -XCOMM Digital MIPS based WS server (ultrix 4.2 and beyond) -XCOMM Supports 8, 12, and 24 bit pixmaps -XCOMM -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -CFB16SUBDIR = cfb16 -CFB24SUBDIR = cfb24 -CFB32SUBDIR = cfb32 -DECWSDDXDIR = hw/dec/ws -DECDIRS1 = $(STDDIRS) $(MFBDIR) \ - $(CFB8DIR) $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \ - $(DECWSDDXDIR) $(DEPDIRS) -DECOBJS1 = hw/dec/ws/init.o hw/dec/ws/mdepthinit.o -DECLIBS1 = hw/dec/ws/LibraryTargetName(dec) CFBLibs -ServerTarget(Xdec_md,$(DECDIRS1),$(DECOBJS1), \ - $(DECLIBS1),$(FONTLIBS) $(SYSLIBS)) -#ifndef ServerToInstall -#define ServerToInstall Xdec_md -#endif -#endif /* XdecMultiDepthServer */ - - -#if defined(XsunServer) && XsunServer -XCOMM -XCOMM Sun server -XCOMM -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -SUNDDXDIR = hw/sun -#if DoLoadableServer -SUNOBJS = hw/sun/sunInit.o hw/sun/sunInitExt.o hw/sun/stubs.o -#elif (defined(XF86Server) && XF86Server) \ - || (defined(XorgServer) && XorgServer) -SUNOBJS = hw/sun/sunInit.o hw/sun/stubs.o -#else -SUNOBJS = hw/sun/sunInit.o -#endif -SUNDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(SUNDDXDIR) $(DEPDIRS) -SUNLIBS = hw/sun/LibraryTargetName(sun) CFB8Libs -SUNSYSLIBS = $(FONTLIBS) $(WIDECHARSYSLIB) $(SYSLIBS) -SetUIDServerTarget(Xsun,$(SUNDIRS),$(SUNOBJS), \ - $(LIBCWRAPPER) $(SUNLIBS) $(LOADABLEEXTS),$(SUNSYSLIBS)) -#ifndef ServerToInstall -#define ServerToInstall Xsun -#endif -#endif /* XsunServer */ - - -#if defined(Xsun24Server) && Xsun24Server -XCOMM -XCOMM Sun multiple pixmap depth (8, 12, 24) server -XCOMM -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -CFB16SUBDIR = cfb16 -CFB24SUBDIR = cfb24 -CFB32SUBDIR = cfb32 -SUNDDXDIR = hw/sun -SUN24DIRS = $(STDDIRS) $(MFBDIR) \ - $(CFB8DIR) $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \ - $(SUNDDXDIR) $(DEPDIRS) -#if DoLoadableServer -SUN24OBJS = hw/sun/sunInitMulti.o hw/sun/sunInitExt.o hw/sun/stubs.o -#elif defined(XF86Server) && XF86Server \ - || (defined(XorgServer) && XorgServer) -SUN24OBJS = hw/sun/sunInitMulti.o hw/sun/stubs.o -#else -SUN24OBJS = hw/sun/sunInitMulti.o -#endif -SUN24LIBS = hw/sun/LibraryTargetName(sun) CFBLibs -SetUIDServerTarget(Xsun24,$(SUN24DIRS),$(SUN24OBJS), \ - $(LIBCWRAPPER) $(SUN24LIBS) $(LOADABLEEXTS),$(FONTLIBS) $(SYSLIBS)) -#ifndef ServerToInstall -#define ServerToInstall Xsun24 -#endif -#endif /* Xsun24Server */ - - -#if defined(XsunMonoServer) && XsunMonoServer -XCOMM -XCOMM Sun monochrome server -XCOMM -MFBSUBDIR = mfb -SUNDDXDIR = hw/sun -SUNMDIRS = $(STDDIRS) $(MFBDIR) $(SUNDDXDIR) $(DEPDIRS) -#if defined(XF86Server) && XF86Server \ - || (defined(XorgServer) && XorgServer) -SUNMOBJS = hw/sun/sunInitMono.o hw/sun/sunInExMono.o hw/sun/stubs.o -#else -SUNMOBJS = hw/sun/sunInitMono.o hw/sun/sunInExMono.o -#endif -SUNMLIBS = hw/sun/LibraryTargetName(sun) MFBBareLibs $(EXTENSIONS) -SetUIDServerTarget(XsunMono,$(SUNMDIRS),$(SUNMOBJS), \ - $(LIBCWRAPPER) $(SUNMLIBS) $(LOADABLEEXTS),$(FONTLIBS) $(SYSLIBS)) -#ifndef ServerToInstall -#define ServerToInstall XsunMono -#endif -#endif /* XsunMonoServer */ - - -#if defined(XsunLynxServer) && XsunLynxServer -XCOMM -XCOMM Sun server for LynxOS microSPARC 2.4.0 -XCOMM -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -LYNXDDXDIR = hw/sunLynx -SUNDIRS = $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(LYNXDDXDIR) $(DEPDIRS) -SUNOBJS = hw/sunLynx/sunLyInit.o -SUNLIBS = hw/sunLynx/libsun.a CFB8Libs -ServerTarget(Xsun,$(SUNDIRS),$(SUNOBJS), \ - $(SUNLIBS),$(FONTLIBS) $(SYSLIBS)) -#ifndef ServerToInstall -#define ServerToInstall Xsun -#endif -#endif /* XsunLynxServer */ - - -#if defined(XsunLynxMonoServer) && XsunLynxMonoServer -XCOMM -XCOMM Sun monochrome server for LynxOS microSPARC 2.4.0 -XCOMM -MFBSUBDIR = mfb -LYNXDDXDIR = hw/sunLynx -SUNMDIRS = $(STDDIRS) $(MFBDIR) $(LYNXDDXDIR) $(DEPDIRS) -SUNMOBJS = hw/sunLynx/sunInitMono.o hw/sunLynx/sunInExMono.o -SUNMLIBS = hw/sunLynx/libsun.a MFBBareLibs $(OTHEREXTS) -ServerTarget(XsunMono,$(SUNMDIRS),$(SUNMOBJS), \ - $(SUNMLIBS),$(FONTLIBS) $(SYSLIBS)) -#ifndef ServerToInstall -#define ServerToInstall XsunMono -#endif -#endif /* XsunLynxMonoServer */ - - #if HasParallelMake XCOMM XCOMM force non-parallel build of XF86 servers to prevent MUTEX overrides @@ -955,21 +800,6 @@ nxagent_static_nolibs: nxagent $(LDPRELIBS) $(SYSLIBS) -Wl,-Bdynamic -lNX_Xext -lNX_X11 $(EXTRA_LOAD_FLAGS) #endif /* NXAgentServer */ -#if defined(XnonServer) && XnonServer -XCOMM -XCOMM non server, just compile sources for build test -XCOMM -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -CFB16SUBDIR = cfb16 -CFB32SUBDIR = cfb32 -#if HasParallelMake -MakeMutex($(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(CFB32DIR) $(DEPDIRS)) -#endif -Xnon: $(STDDIRS) $(MFBDIR) $(CFB8DIR) $(CFB16DIR) $(CFB32DIR) $(DEPDIRS) -#endif /* XnonServer */ - - #if defined(NXWinServer) && NXWinServer XCOMM XCOMM X Server for MS Windows @@ -1124,126 +954,11 @@ ServerTarget(NXWin,$(NXWINDIRS),$(NXWINOBJS), \ #endif /* NXWinServer */ #endif -#ifdef DarwinArchitecture -/* - * To allow building even when building the client-side libraries is turned - * off, libraries in ProjectRoot are listed as dependencies for some targets. - * This causes problems unless we tell make where to find these dependencies. - */ -VPATH = $(BUILDLIBDIR):$(USRLIBDIR) -#endif - -#if defined(XDarwinServer) && XDarwinServer -XCOMM -XCOMM X Darwin server for Mac OS X / Darwin -XCOMM -FBSUBDIR = fb -MIDAMAGEDIR = miext/damage -SHADOWDIR = miext/shadow -ROOTLESSDIR = miext/rootless -DARWINDDXDIR = hw/darwin -DARWINDIRS = $(STDDIRS) $(FBDIR) $(SHADOWDIR) $(DARWINDDXDIR) $(DEPDIRS) -DARWINOBJS = $(DARWINDDXDIR)/miinitext.o -DARWINLIBS = PreFbLibs $(DARWINDDXDIR)/LibraryTargetName(darwin) -DARWINEXTLIBS = MiExtLibs FbPostFbLibs $(DARWINDDXDIR)/LibraryTargetName(darwin) -DARWINSYSLIBS = $(FONTLIBS) $(SYSLIBS) -framework IOKit -IOKITLIB = $(DARWINDDXDIR)/iokit/LibraryTargetName(iokit) - -/* - * IOKit X server - */ -SetUIDServerTarget(XDarwin,$(DARWINDIRS),$(DARWINOBJS), \ - $(DARWINLIBS) $(IOKITLIB) $(DARWINEXTLIBS),$(DARWINSYSLIBS)) - -#if DarwinQuartzSupport - -QUARTZDIR = $(DARWINDDXDIR)/quartz -QUARTZLIB = $(QUARTZDIR)/LibraryTargetName(XQuartz) -QUARTZSYSLIBS = -framework ApplicationServices -framework Cocoa \ - -framework CoreAudio -framework Carbon -ObjC -ROOTLESSLIB = $(ROOTLESSDIR)/LibraryTargetName(rootless) \ - $(ROOTLESSDIR)/safeAlpha/LibraryTargetName(safeAlpha) \ - $(ROOTLESSDIR)/accel/LibraryTargetName(rlAccel) -XPLUGINLIB = XpluginLibrary - -#if NothingOutsideProjectRoot -XDARWINAPPDIR = $(BINDIR)/XDarwin.app/Contents -#else -XDARWINAPPDIR = /Applications/XDarwin.app/Contents -#endif - -/* - * Quartz X server (installed in its application bundle) - */ -SetUIDServerTarget(XDarwinApp,$(DARWINDIRS),$(DARWINOBJS), \ - $(DARWINLIBS) $(QUARTZLIB) $(DARWINEXTLIBS), \ - $(DARWINSYSLIBS) $(QUARTZSYSLIBS) -u _miDCInitialize) - -install:: - $(MKDIRHIER) $(DESTDIR)$(XDARWINAPPDIR)/MacOS - $(MV) $(DESTDIR)$(BINDIR)/XDarwinApp \ - $(DESTDIR)$(XDARWINAPPDIR)/MacOS/XDarwin - -(cd $(DESTDIR)$(BINDIR); $(RM) XDarwinQuartz; \ - $(LN) $(XDARWINAPPDIR)/MacOS/XDarwin XDarwinQuartz) - -/* - * Display mode bundles for Quartz - * (installed in their own bundles inside XDarwin's) - */ -#if HasXplugin -XPRDIRS = $(QUARTZDIR)/xpr $(ROOTLESSDIR) $(ROOTLESSDIR)/safeAlpha -XPRLIBS = $(QUARTZDIR)/xpr/LibraryTargetName(xpr) $(ROOTLESSLIB) - -BundleProgramTarget(xpr,XDarwinApp,$(XPRDIRS),$(QUARTZDIR)/xpr/xprScreen.o, \ - $(XPRLIBS),-framework ApplicationServices \ - $(XPLUGINLIB),$(XDARWINAPPDIR)/Resources) -#endif - -CRDIRS = $(QUARTZDIR)/cr $(ROOTLESSDIR) $(ROOTLESSDIR)/safeAlpha -CRLIBS = $(QUARTZDIR)/cr/LibraryTargetName(cr) $(ROOTLESSLIB) - -BundleProgramTarget(cr,XDarwinApp,$(CRDIRS),$(QUARTZDIR)/cr/crScreen.o, \ - $(CRLIBS),-framework ApplicationServices -framework Cocoa \ - -framework Carbon -ObjC,$(XDARWINAPPDIR)/Resources) - -FSDIRS = $(QUARTZDIR)/fullscreen $(SHADOWDIR) -FSLIBS = $(QUARTZDIR)/fullscreen/LibraryTargetName(fullscreen) $(SHADOW) - -BundleProgramTarget(fullscreen,XDarwinApp,$(FSDIRS), \ - $(QUARTZDIR)/fullscreen/fullscreen.o,$(FSLIBS), \ - -framework ApplicationServices,$(XDARWINAPPDIR)/Resources) - -/* - * GLX bundles for Quartz - * (installed in their own bundles inside XDarwin's) - */ -BundleProgramTarget(glxAGL,XDarwinApp,GL,GL/glx/glxext.o,GL/glx/libglx.a \ - GL/apple/libAGLcore.a, \ - -framework AGL -framework OpenGL,$(XDARWINAPPDIR)/Resources) - -#if BuildAppleDRI -BundleProgramTarget(glxCGL,XDarwinApp,GL,GL/glx/glxext.o,GL/glx/libglx.a \ - GL/apple/libCGLcore.a, \ - -framework OpenGL $(XPLUGINLIB),$(XDARWINAPPDIR)/Resources) -#endif - -BundleProgramTarget(glxMesa,XDarwinApp,GL,GL/glx/glxext.o,GL/glx/libglx.a \ - GL/mesa/GLcore/libGLcore.a,NullParameter,$(XDARWINAPPDIR)/Resources) - -#else /* !DarwinQuartzSupport */ - -#define ServerToInstall XDarwin - -#endif /* DarwinQuartzSupport */ - -#endif /* XDarwinServer */ - - CFBSUBDIRS = $(CFB8SUBDIR) $(CFB16SUBDIR) $(CFB24SUBDIR) $(CFB32SUBDIR) MIEXTDIRS = $(SHADOWDIR) $(LAYERDIR) $(ROOTLESSDIR) $(MIDAMAGEDIR) IPLANDIRS = $(IPLAN2P2DIR) $(IPLAN2P4DIR) $(IPLAN2P8DIR) DDXDIRS = $(DECWSDDXDIR) $(SUNDDXDIR) $(LYNXDDXDIR) \ - $(HPDDXDIR) $(XFREE86DDXDIR) $(DARWINDDXDIR) \ + $(HPDDXDIR) $(XFREE86DDXDIR) \ $(NXAGENTDDXDIR) $(NXWINDDXDIR) SUBDIRS = $(STDDIRS) $(MFBSUBDIR) $(CFBSUBDIRS) \ $(IPLANDIRS) $(ILBMDIR) $(AFBSUBDIR) \ -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit d280fa15e571f568125786c216f168bcbfc1d15a Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Mar 4 14:08:50 2015 +0100 imake clean: Remove (probably incomplete) support for NXZaurusXServer, NXiPAQXServer. --- nx-X11/config/cf/host.def | 54 --------------------------------------------- 1 file changed, 54 deletions(-) diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index 1bd3289..a7ae464 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -46,8 +46,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ /* */ /**************************************************************************/ -#if !defined(NXZaurusXServer) && !defined(NXiPAQXServer) && !defined(DarwinArchitecture) - #if defined(SunArchitecture) #define ProjectRoot /usr/openwin #endif @@ -920,58 +918,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define BuildXaw7 NO -#else /* #if !defined(NXZaurusXServer) && !defined(NXiPAQXServer) && !defined(DarwinArchitecture) */ - -#if defined(DarwinArchitecture) && !defined(NXZaurusXServer) && !defined(NXiPAQXServer) -#define NXDarwinServer NO -#define BuildServersOnly YES -#define DefaultFontPath /usr/NX/share/fonts/misc/,/usr/NX/share/fonts/TTF/ -#define DefaultRGBDatabase /usr/NX/share/rgb -#define BuildFreeType NO -#define BuildXTrueType NO -#define FontLibSharedFreeType YES -#endif - -#if !defined(NXZaurusXServer) && defined(NXiPAQXServer) -#define KDriveXServer YES -#define XiPAQH3500Server YES -#define BuildServersOnly YES -#define NXEmbeddedXServer YES -#define KdriveServerExtraDefines -DITSY -DMAXSCREENS=1 -#define TinyXServer YES -#define CrossCompiling YES -#define TouchScreen YES -#define ItsyCompilerBug YES -#undef BuildRandR -#define BuildRandR YES -#define BuildXInputLib YES -#define BuildXTrueType YES -#define ServerXdmcpDefines -#define XipaqServer YES -#endif - -#if !defined(NXiPAQXServer) && defined(NXZaurusXServer) -#define KDriveXServer YES -#define XiPAQH3500Server YES -#define BuildServersOnly YES -#define ZaurusXServer YES -#define NXEmbeddedXServer YES -#define KdriveServerExtraDefines -DITSY -DMAXSCREENS=1 -#define TinyXServer YES -#define CrossCompiling YES -#define TouchScreen YES -#define ItsyCompilerBug YES -#undef BuildRandR -#define BuildRandR YES -#define BuildXInputLib YES -#define BuildXTrueType YES -#define ServerXdmcpDefines -#define XipaqServer YES -#define XfbdevServer YES -#endif - -#endif /* #if !defined(NXZaurusXServer) && !defined(NXiPAQXServer) && !defined(DarwinArchitecture) */ - #define BuildRman NO #define BuildFontEncLib NO #define BuildXcursorLibrary NO -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit bb23f7a3d8e1ebdcf59d12d2e51bcaca849818b4 Merge: 8ed8a43 d280fa1 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Apr 5 20:58:58 2015 +0200 Merge branch 'feature/other-Xserver-cleanup' into arctica-3.6.x Attributes GH PR #8: https://github.com/ArcticaProject/nx-libs/pull/8 debian/rules | 3 - nx-X11/config/cf/README | 12 - nx-X11/config/cf/X11.tmpl | 105 +- nx-X11/config/cf/host.def | 105 +- nx-X11/config/cf/xf86site.def | 30 - nx-X11/config/cf/xfree86.cf | 17 - nx-X11/config/cf/xorg.cf | 14 - nx-X11/config/cf/xorgsite.def | 30 - nx-X11/include/extensions/Imakefile | 6 +- nx-X11/include/extensions/Print.h | 552 ------ nx-X11/include/extensions/Printstr.h | 783 -------- nx-X11/include/extensions/dmxext.h | 190 -- nx-X11/include/extensions/dmxproto.h | 446 ----- nx-X11/lib/Imakefile | 6 +- nx-X11/lib/X11/Imakefile | 2 +- nx-X11/programs/Imakefile | 146 -- nx-X11/programs/Xserver/Imakefile | 590 +----- nx-X11/programs/Xserver/Xext/Imakefile | 16 +- nx-X11/programs/Xserver/Xext/dmx.c | 1133 ----------- nx-X11/programs/Xserver/Xext/xprint.c | 2760 -------------------------- nx-X11/programs/Xserver/dix/Imakefile | 6 +- nx-X11/programs/Xserver/dix/main.c | 9 - nx-X11/programs/Xserver/dix/xpstubs.c | 27 - nx-X11/programs/Xserver/hw/Imakefile | 26 - nx-X11/programs/Xserver/hw/nxagent/Imakefile | 3 + nx-X11/programs/Xserver/mi/miinitext.c | 45 - nx-X11/programs/Xserver/os/Imakefile | 2 +- nx-X11/programs/Xserver/os/utils.c | 13 - nx-libs.spec | 4 - 29 files changed, 23 insertions(+), 7058 deletions(-) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit d97b0ca93ca5023ddffbb23f8c57a4622816019e Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Apr 5 22:31:33 2015 +0200 fix for ebe00df38f264ef71dac3c73d416a74685c8cbd2 (removal of DmxLibrary) --- nx-X11/lib/Imakefile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/nx-X11/lib/Imakefile b/nx-X11/lib/Imakefile index 721d3ff..599ea64 100644 --- a/nx-X11/lib/Imakefile +++ b/nx-X11/lib/Imakefile @@ -74,10 +74,6 @@ XINERAMADIR=Xinerama XRESLIBDIR = XRes #endif -#if BuildDmxLibrary -DMXLIBDIR = dmx -#endif - #if BuildGLXLibrary GLXLIBDIR = GL #endif -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 2f4d7dbb4d2fae7f6f376f7d2f032a9a0e4cea45 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sat Apr 11 17:38:02 2015 +0200 fix for libXpm4-cleanup --- debian/rules | 1 - 1 file changed, 1 deletion(-) diff --git a/debian/rules b/debian/rules index 445f015..e58b791 100755 --- a/debian/rules +++ b/debian/rules @@ -88,7 +88,6 @@ override_dh_strip: dh_strip -plibnx-xext6 --dbg-package=libnx-xext6-dbg dh_strip -plibnx-xfixes3 --dbg-package=libnx-xfixes3-dbg dh_strip -plibnx-xinerama1 --dbg-package=libnx-xinerama1-dbg - dh_strip -plibnx-xpm4 --dbg-package=libnx-xpm4-dbg dh_strip -plibnx-xrandr2 --dbg-package=libnx-xrandr2-dbg dh_strip -plibnx-xrender1 --dbg-package=libnx-xrender1-dbg dh_strip -plibnx-xtst6 --dbg-package=libnx-xtst6-dbg -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit a8dad09a56b8cde0b03b8a5cdc77370fc0a428a0 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Apr 13 15:39:36 2015 +0200 imake clean-up: nx-X11/config/Imakefile (drop BuildDPSLibrary related build-logic). --- nx-X11/config/Imakefile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/nx-X11/config/Imakefile b/nx-X11/config/Imakefile index f589e96..e0974b7 100644 --- a/nx-X11/config/Imakefile +++ b/nx-X11/config/Imakefile @@ -7,10 +7,7 @@ XCOMM $XFree86: xc/config/Imakefile,v 1.3 2001/01/17 16:22:29 dawes Exp $ #define BootstrapCleanSubdirs BOOTSTRAPSUBDIRS="$(BOOTSTRAPSUBDIRS)" BOOTSTRAPSUBDIRS = imake makedepend -#if BuildDPSLibrary -PSWRAPDIR = pswrap -#endif -SUBDIRS = cf $(BOOTSTRAPSUBDIRS) util $(PSWRAPDIR) +SUBDIRS = cf $(BOOTSTRAPSUBDIRS) util #if (defined(XFree86VersionString) || defined(XorgVersionString)) \ && defined(ProjectRoot) && \ -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 097562b8bbc04d421e0ab5e1e7a0b705e393c20e Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Apr 13 15:48:07 2015 +0200 drop: nx-X11/config/util/ (not needed at build time). --- nx-X11/config/Imakefile | 2 +- nx-X11/config/util/Imakefile | 168 ------- nx-X11/config/util/aminstall.sh | 74 ---- nx-X11/config/util/bsdinst.sh | 168 ------- nx-X11/config/util/buildos2.cmd | 1 - nx-X11/config/util/ccmakedep.man | 142 ------ nx-X11/config/util/checktree.c | 339 -------------- nx-X11/config/util/chownxterm.c | 79 ---- nx-X11/config/util/cleanlinks.man | 29 -- nx-X11/config/util/cleanlinks.sh | 27 -- nx-X11/config/util/crayar.sh | 9 - nx-X11/config/util/elistgen.hp | 202 --------- nx-X11/config/util/elistgen.ibm | 220 ---------- nx-X11/config/util/elistgen.sun | 267 ------------ nx-X11/config/util/elistgen.usl | 221 ---------- nx-X11/config/util/gccmakedep.man | 126 ------ nx-X11/config/util/gccmdep.cpp | 126 ------ nx-X11/config/util/indir.cmd | 28 -- nx-X11/config/util/install.sh | 108 ----- nx-X11/config/util/lndir.c | 391 ----------------- nx-X11/config/util/lndir.man | 119 ----- nx-X11/config/util/makedef.cmd | 620 -------------------------- nx-X11/config/util/makeg.man | 64 --- nx-X11/config/util/makeg.sh | 13 - nx-X11/config/util/makestrs.c | 752 -------------------------------- nx-X11/config/util/makestrs.man | 219 ---------- nx-X11/config/util/mdepend.cpp | 286 ------------ nx-X11/config/util/mergelib.cpp | 105 ----- nx-X11/config/util/mergelib.man | 28 -- nx-X11/config/util/mkdirhier.c | 80 ---- nx-X11/config/util/mkdirhier.cmd | 54 --- nx-X11/config/util/mkdirhier.man | 42 -- nx-X11/config/util/mkdirhier.sh | 67 --- nx-X11/config/util/mkhtmlindex.man | 32 -- nx-X11/config/util/mkhtmlindex.pl | 103 ----- nx-X11/config/util/mkhtmlindex.sh | 60 --- nx-X11/config/util/mkshadow/Imakefile | 5 - nx-X11/config/util/mkshadow/README | 38 -- nx-X11/config/util/mkshadow/mkshadow.c | 378 ---------------- nx-X11/config/util/mkshadow/savedir.c | 119 ----- nx-X11/config/util/mkshadow/wildmat.c | 167 ------- nx-X11/config/util/printver.c | 29 -- nx-X11/config/util/revpath.c | 47 -- nx-X11/config/util/revpath.man | 45 -- nx-X11/config/util/syminst.sh | 90 ---- nx-X11/config/util/x11mf.sh | 28 -- nx-X11/config/util/xmake.cmd | 5 - nx-X11/config/util/xmkmf.cpp | 70 --- nx-X11/config/util/xmkmf.man | 89 ---- 49 files changed, 1 insertion(+), 6480 deletions(-) diff --git a/nx-X11/config/Imakefile b/nx-X11/config/Imakefile index e0974b7..40fa2a0 100644 --- a/nx-X11/config/Imakefile +++ b/nx-X11/config/Imakefile @@ -7,7 +7,7 @@ XCOMM $XFree86: xc/config/Imakefile,v 1.3 2001/01/17 16:22:29 dawes Exp $ #define BootstrapCleanSubdirs BOOTSTRAPSUBDIRS="$(BOOTSTRAPSUBDIRS)" BOOTSTRAPSUBDIRS = imake makedepend -SUBDIRS = cf $(BOOTSTRAPSUBDIRS) util +SUBDIRS = cf $(BOOTSTRAPSUBDIRS) #if (defined(XFree86VersionString) || defined(XorgVersionString)) \ && defined(ProjectRoot) && \ diff --git a/nx-X11/config/util/Imakefile b/nx-X11/config/util/Imakefile deleted file mode 100644 index 016751d..0000000 --- a/nx-X11/config/util/Imakefile +++ /dev/null @@ -1,168 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ - - - -XCOMM $XFree86: xc/config/util/Imakefile,v 3.49 2003/10/21 17:41:45 tsi Exp $ - -CCMDEP_PROG = ccmakedep - -#ifdef ExportListGenSource -EXPORTLISTGEN = exportlistgen -#endif - -#if defined(Win32Architecture) && !defined(CrossCompiling) -CMKDIRHIER = mkdirhier.exe -#endif - -GCCMDEP_PROG = gccmakedep - -#if HasSymLinks -#if CrossCompiling -LNDIR_PROG = HostProgramTargetName(lndir) -#else -LNDIR_PROG = ProgramTargetName(lndir) -#endif -#endif - -#if CrossCompiling -MAKESTRS_PROG = HostProgramTargetName(makestrs) -REVPATH_PROG = HostProgramTargetName(revpath) -#else -MAKESTRS_PROG = ProgramTargetName(makestrs) -REVPATH_PROG = ProgramTargetName(revpath) -#endif - -#if BuildRman -RMAN_PROG = HostProgramTargetName(rman) -#endif - -PROGRAMS = $(RMAN_PROG) $(LNDIR_PROG) $(MAKESTRS_PROG) \ - $(REVPATH_PROG) $(EXPORTLISTGEN) $(CMKDIRHIER) -DEPLIBS = -#ifndef Win32Architecture - EXTRA_LIBRARIES = -#endif -#ifdef LinuxArchitecture - PREPROCESSCMD_MKDEPEND = PreProcessCmd StandardCppDefines $(PROJECT_DEFINES) -#else - PREPROCESSCMD_MKDEPEND = $(PREPROCESSCMD) -#endif - -XCOMM Some compilers generate fatal errors if an -L directory does -XCOMM not exist. Since BUILDLIBDIR may not exist yet suppress its use. - LDPRELIB = - LDPRELIBS = -#if CrossCompiling - LDPOSTLIBS = - LDPOSTLIB = -#endif - -all:: xmkmf mergelib $(CCMDEP_PROG) $(GCCMDEP_PROG) $(PROGRAMS) - -makedependonly:: $(CCMDEP_PROG) $(GCCMDEP_PROG) - -#if HasGcc -GCCCMD = $(CC) -#else -GCCCMD = gcc -#endif - -#if CrossCompiling -includes:: HostProgramTargetName(makestrs) -#else -includes:: ProgramTargetName(makestrs) -#endif - -#ifdef ExportListGenSource -CppScriptTarget(exportlistgen,ExportListGenSource,-DCXXFILT=$(CXXFILT),) -InstallNamedProg(exportlistgen,exportlistgen,$(BINDIR)) -#endif - -CppScriptTarget(xmkmf,xmkmf.cpp,-DCONFIGDIRSPEC='"'"-I$(CONFIGDIR)"'"',$(ICONFIGFILES)) -CppScriptTarget(ccmakedep,mdepend.cpp,-DPREPROC='"'"$(PREPROCESSCMD_MKDEPEND)"'"',$(ICONFIGFILES)) -CppScriptTarget(mergelib,mergelib.cpp,"-DARCMD=$(AR)" "-DRANLIB=$(RANLIB)",$(ICONFIGFILES)) -CppScriptTarget(gccmakedep,gccmdep.cpp,-DCCCMD='"'"$(GCCCMD)"'"' -DRMCMD='"'"$(RM)"'"' -DLNCMD='"'"$(LN)"'"' -DMVCMD='"'"$(MV)"'"',$(ICONFIGFILES)) - -#ifndef OpenBSDArchitecture -#if HasSymLinks -#if CrossCompiling -SimpleHostProgramTarget_2(lndir) -#else -AllTarget(lndir) -SimpleProgramTarget_2(lndir) -#endif -#endif -#endif - -#if defined(Win32Architecture) && !defined(CrossCompiling) -AllTarget(ProgramTargetName(mkdirhier)) -SimpleProgramTarget_3(mkdirhier) -#endif - -#if CrossCompiling -AllTarget(HostProgramTargetName(makestrs)) -SimpleHostProgramTarget_1(makestrs) -AllTarget(HostProgramTargetName(revpath)) -SimpleHostProgramTarget_4(revpath) -#else -AllTarget(ProgramTargetName(makestrs)) -SimpleProgramTarget_1(makestrs) -AllTarget(ProgramTargetName(revpath)) -SimpleProgramTarget_4(revpath) -#endif - -#if BuildRman -rmanonly:: $(RMAN_PROG) - -VOLLIST="1:2:3:4:5:6:7:8:9:o:l:n:p" -MANTITLEPRINTF="%s(%s) manual page" -MANREFPRINTF="%s.%s.html" -RMANVERSION="3.0.8+X.Org" -#if CrossCompiling -AllTarget(HostProgramTargetName(rman)) -SimpleHostProgramTarget_3(rman) -#else -AllTarget(ProgramTargetName(rman)) -SimpleProgramTarget_5(rman) -#endif -SpecialCObjectRule(rman,NullParameter,-DVOLLIST='$(VOLLIST)' -DMANTITLEPRINTF='$(MANTITLEPRINTF)' -DMANREFPRINTF='$(MANREFPRINTF)' -DPOLYGLOTMANVERSION='$(RMANVERSION)' -DXOrg) -LinkSourceFile(rman.c,$(TOP)/extras/rman) -LinkFile(rman.man,$(TOP)/extras/rman/rman.1) -#endif - -InstallManPage(xmkmf,$(MANDIR)) - -InstallNamedProg(xmkmf,xmkmf,$(BINDIR)) -InstallNamedProg(mkdirhier.sh,mkdirhier,$(BINDIR)) -InstallManPage(mkdirhier,$(MANDIR)) -InstallNamedProg(gccmakedep,gccmakedep,$(BINDIR)) -InstallManPage(gccmakedep,$(MANDIR)) -#if defined(QNX4Architecture) || defined(NTOArchitecture) -InstallNamedProg(install.sh,install,$(BINDIR)) -#endif -InstallDriverSDKNamedProg(mkdirhier.sh,mkdirhier.sh,$(DRIVERSDKDIR)/config/util) -InstallDriverSDKNamedProg(gccmakedep,gccmakedep,$(DRIVERSDKDIR)/config/util) -InstallNamedProg(mergelib,mergelib,$(BINDIR)) -InstallManPage(mergelib,$(MANDIR)) -InstallNamedProg(makeg.sh,makeg,$(BINDIR)) -InstallManPage(makeg,$(MANDIR)) -InstallNamedProg(cleanlinks.sh,cleanlinks,$(BINDIR)) -InstallManPage(cleanlinks,$(MANDIR)) -#if HasPerl -InstallNamedProg(mkhtmlindex.pl,mkhtmlindex,$(BINDIR)) -#else -InstallNamedProg(mkhtmlindex.sh,mkhtmlindex,$(BINDIR)) -#endif -InstallManPage(mkhtmlindex,$(MANDIR)) -InstallNamedProg(ccmakedep,ccmakedep,$(BINDIR)) -InstallManPage(ccmakedep,$(MANDIR)) -InstallDriverSDKNamedProg(ccmakedep,ccmakedep,$(DRIVERSDKDIR)/config/util) -#if SystemV || SystemV4 -InstallNamedProg(bsdinst.sh,bsdinst,$(BINDIR)) -InstallDriverSDKNamedProg(bsdinst.sh,bsdinst.sh,$(DRIVERSDKDIR)/config/util) -#endif - -InstallDriverSDKNamedProg(revpath,revpath,$(DRIVERSDKDIR)/config/util) -#ifdef OS2Architecture -InstallNamedProg(makedef.cmd,makedef.cmd,$(BINDIR)) -#endif diff --git a/nx-X11/config/util/aminstall.sh b/nx-X11/config/util/aminstall.sh deleted file mode 100644 index 19a8a4d..0000000 --- a/nx-X11/config/util/aminstall.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/sh -# $Xorg: aminstall.sh,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ -# aminstall - transfer cross-compiled files to system running Amoeba. -# Usage: aminstall binary-directory [-s stksz] unix-source amoeba-dest - -# -# Default soap mask for files -# -SPMASK=0xFF:2:2 -export SPMASK -PROG=$0 -USAGE="Usage: $PROG binary-directory unix-source amoeba-dest" - -# -# Argument check -# -case $# in -3|5) ;; -*) echo $USAGE >&2 - exit 1 - ;; -esac - -bindir=$1 -stksz= -case $2 in --s) if [ $# -ne 5 ] - then - echo $USAGE >&2 - exit 1 - fi - stksz="-s $3" - shift - shift - ;; -esac - -unxfile=$2 -dest=$3 - -# -# Change /public .... into /super (just for installation) -# -stripped=`echo $dest | sed 's:^/public::'` -if [ X$dest != X$stripped ]; then - dest=/super$stripped -fi - -# -# If the file already exists, then delete it -# -INFO=`$bindir/std_info $dest 2>&1` -case $INFO in -*"not found"*) ;; -*failed*) ;; -*bytes*) $bindir/del -f $dest - ;; -/??????) echo $PROG: cannot install over directory 1>&2 - exit - ;; -*) $bindir/del -d $dest - ;; -esac - -# -# Transfer the file to Amoeba -# -$bindir/../bin.scripts/ainstall $stksz $unxfile $dest > /dev/null 2>&1 -if [ $? -ne 0 ] -then - echo "This is not binary - using tob" - $bindir/tob $unxfile $dest -fi - diff --git a/nx-X11/config/util/bsdinst.sh b/nx-X11/config/util/bsdinst.sh deleted file mode 100644 index fc2673c..0000000 --- a/nx-X11/config/util/bsdinst.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/sh - -# $XFree86: xc/config/util/bsdinst.sh,v 3.3 1996/12/23 05:56:13 dawes Exp $ -# -# This accepts bsd-style install arguments and makes the appropriate calls -# to the System V install. -# $Xorg: bsdinst.sh,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ - -flags="" -dst="" -src="" -dostrip="" -owner="" -group="" -mode="" -bargs=$* - -while [ x$1 != x ]; do - case $1 in - -c) shift - continue;; - - -m) flags="$flags $1 $2 " - mode="$2" - shift - shift - continue;; - - -o) flags="$flags -u $2 " - owner="$2" - shift - shift - continue;; - - -g) flags="$flags $1 $2 " - group="$2" - shift - shift - continue;; - - -s) dostrip="strip" - shift - continue;; - - *) if [ x$src = x ] - then - src=$1 - else - dst=$1 - fi - shift - continue;; - esac -done - -if [ x$src = x ] -then - echo "$0: no input file specified" - exit 1 -fi - -if [ x$dst = x ] -then - echo "$0: no destination specified" - exit 1 -fi - -if [ -x /usr/ucb/install ] -then - if [ -d "$dst" ] - then - dst=$dst/`basename "$src"` - fi - case "$group" in - "") - bargs="-g other $bargs" - ;; - esac - /usr/ucb/install $bargs - if [ x$dostrip = xstrip -a -x /usr/bin/mcs ] - then - /usr/bin/mcs -d $dst - fi - exit 0 -fi - -case "$mode" in -"") - ;; -*) - case "$owner" in - "") - flags="$flags -u root" - ;; - esac - ;; -esac - - -# set up some variable to be used later - -rmcmd="" -srcdir="." - -# if the destination isn't a directory we'll need to copy it first - -if [ ! -d $dst ] -then - dstbase=`basename $dst` - cp $src /tmp/$dstbase - rmcmd="rm -f /tmp/$dstbase" - src=$dstbase - srcdir=/tmp - dst="`echo $dst | sed 's,^\(.*\)/.*$,\1,'`" - if [ x$dst = x ] - then - dst="." - fi -fi - - -# If the src file has a directory, copy it to /tmp to make install happy - -srcbase=`basename $src` - -if [ "$src" != "$srcbase" ] && [ "$src" != "./$srcbase" ] -then - cp $src /tmp/$srcbase - src=$srcbase - srcdir=/tmp - rmcmd="rm -f /tmp/$srcbase" -fi - -# do the actual install - -if [ -f /usr/sbin/install ] -then - installcmd=/usr/sbin/install -elif [ -f /etc/install ] -then - installcmd=/etc/install -else - installcmd=install -fi - -# This rm is commented out because some people want to be able to -# install through symbolic links. Uncomment it if it offends you. -# rm -f $dst/$srcbase -(cd $srcdir ; $installcmd -f $dst $flags $src) - -if [ x$dostrip = xstrip ] -then - strip $dst/$srcbase - if [ -x /usr/bin/mcs ] - then - /usr/bin/mcs -d $dst/$srcbase - fi -fi - -if [ x$mode != x ] -then - chmod $mode $dst/$srcbase -fi - -# and clean up - -$rmcmd - diff --git a/nx-X11/config/util/buildos2.cmd b/nx-X11/config/util/buildos2.cmd deleted file mode 100644 index cd5baa2..0000000 --- a/nx-X11/config/util/buildos2.cmd +++ /dev/null @@ -1 +0,0 @@ -make CC="gcc -D__UNIXOS2__" BOOTSTRAPCFLAGS=-Zexe World 2>&1 | tee World.log diff --git a/nx-X11/config/util/ccmakedep.man b/nx-X11/config/util/ccmakedep.man deleted file mode 100644 index 20d9e82..0000000 --- a/nx-X11/config/util/ccmakedep.man +++ /dev/null @@ -1,142 +0,0 @@ -.TH ccmakedep 1 __xorgversion__ -.SH NAME -ccmakedep \- create dependencies in makefiles using a C compiler -.SH SYNOPSIS -.B ccmakedep -[ -.BI cpp-flags -] [ -.BI \-w width -] [ -.BI \-s magic-string -] [ -.BI \-f makefile -] [ -.BI \-o object-suffix -] [ -.B \-v -] [ -.B \-a -] [ -.BI \-cc compiler -] [ -\-\^\- -.I options -\-\^\- -] -.I sourcefile -\^.\|.\|. -.SH DESCRIPTION -The -.B ccmakedep -program calls a C compiler to preprocess each -.IR sourcefile , -and uses the output to construct -.I makefile -rules describing their dependencies. -These rules instruct -.BR make (1) -on which object files must be recompiled when a dependency has changed. -.PP -By default, -.B ccmakedep -places its output in the file named -.I makefile -if it exists, otherwise -.I Makefile. -An alternate makefile may be specified with the -.B \-f -option. -It first searches the makefile for a line beginning with -.sp -\& # DO NOT DELETE -.sp -or one provided with the -.B \-s -option, as a delimiter for the dependency output. -If it finds it, it will delete everything following this up to the end of -the makefile and put the output after this line. -If it doesn't find it, the program will append the string to the makefile -and place the output after that. -.SH EXAMPLE -Normally, -.B ccmakedep -will be used in a makefile target so that typing 'make depend' will bring -the dependencies up to date for the makefile. -For example, -.nf - SRCS\0=\0file1.c\0file2.c\0.\|.\|. - CFLAGS\0=\0\-O\0\-DHACK\0\-I\^.\^.\^/foobar\0\-xyz - depend: - ccmakedep\0\-\^\-\0$(CFLAGS)\0\-\^\-\0$(SRCS) -.fi -.SH OPTIONS -The program will ignore any option that it does not understand, so you may -use the same arguments that you would for -.BR cc (1), -including -.B \-D -and -.B \-U -options to define and undefine symbols and -.B \-I -to set the include path. -.TP -.B \-a -Append the dependencies to the file instead of replacing existing -dependencies. -.TP -.BI \-cc compiler -Use this compiler to generate dependencies. -.TP -.BI \-f makefile -Filename. -This allows you to specify an alternate makefile in which -.B ccmakedep -can place its output. -Specifying \(lq\-\(rq as the file name (that is, -.BR \-f\- ) -sends the output to standard output instead of modifying an existing file. -.TP -.BI \-s string -Starting string delimiter. -This option permits you to specify a different string for -.B ccmakedep -to look for in the makefile. -The default is \(lq# DO NOT DELETE\(rq. -.TP -.BI \-v -Be verbose: display the C compiler command before running it. -.TP -.BI \-\^\- " options " \-\^\- -If -.B ccmakedep -encounters a double hyphen (\-\^\-) in the argument list, then any -unrecognized arguments following it will be silently ignored. -A second double hyphen terminates this special treatment. -In this way, -.B ccmakedep -can be made to safely ignore esoteric compiler arguments that might -normally be found in a CFLAGS -.B make -macro (see the -.B EXAMPLE -section above). -.BR \-D , -.BR \-I , -and -.B \-U -options appearing between the pair of double hyphens are still processed -normally. -.SH "SEE ALSO" -.BR cc (1), -.BR make (1), -.BR makedepend (1), -.BR ccmakedep (1). -.SH AUTHOR -.B ccmakedep -was written by the X Consortium. -.PP -Colin Watson wrote this manual page, originally for the Debian Project, -based partly on the manual page for -.BR makedepend (1). diff --git a/nx-X11/config/util/checktree.c b/nx-X11/config/util/checktree.c deleted file mode 100644 index 8bebdc5..0000000 --- a/nx-X11/config/util/checktree.c +++ /dev/null @@ -1,339 +0,0 @@ -/* $Xorg: checktree.c,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ - -/* - -Copyright (c) 1993, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. -*/ -/* $XFree86: xc/config/util/checktree.c,v 1.3 2001/07/29 05:01:10 tsi Exp $ */ - -#include <X11/Xos.h> -#include <stdio.h> -#include <sys/stat.h> -#include <sys/param.h> -#include <errno.h> - -#ifndef X_NOT_POSIX -#include <dirent.h> -#else -#ifdef SYSV -#include <dirent.h> -#else -#ifdef USG -#include <dirent.h> -#else -#include <sys/dir.h> -#ifndef dirent -#define dirent direct -#endif -#endif -#endif -#endif - -#ifdef S_IFLNK -#define Stat lstat -#else -#define Stat stat -#endif - -#define CHARSALLOWED \ -"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_." - -#define fmode_bits_minset 0444 -#define fmode_bits_maxset 0777 -#define fmode_bits_write 0222 -#define dmode_bits_minset 0775 - -int dorcs = 1; /* check RCS file */ -int do83 = 1; /* check for 8+3 clash */ -int doro = 1; /* disallow writable (checked out) files */ -int dodot = 1; /* disallow .files */ -int dotwiddle = 1; /* disallow file~ */ - -int dontcare(fn) - char *fn; -{ - char *cp; - - if (fn[strlen(fn) - 1] == '~') - return 1; - cp = strrchr(fn, '.'); - return cp && (!strcmp(cp + 1, "Z") || !strcmp(cp + 1, "PS")); -} - -checkfile(fullname, fn, fs) - char *fullname, *fn; - struct stat *fs; -{ - char *cp; - int maxlen = 12; - int len, mode; - - if (dodot && fn[0] == '.') { - printf("dot file: %s\n", fullname); - return; - } - for (len = 0, cp = fn; *cp; len++, cp++) { - if (!strchr(CHARSALLOWED, *cp)) { - if (dotwiddle || *cp != '~' || cp[1]) - printf ("bad character: %s\n", fullname); - break; - } - } - if (len > maxlen && !dontcare(fn)) - printf("too long (%d): %s\n", len, fullname); -#ifdef S_IFLNK - if ((fs->st_mode & S_IFLNK) == S_IFLNK) { - printf("symbolic link: %s\n", fullname); - return; - } -#endif - mode = fs->st_mode & (~S_IFMT); - if ((fs->st_mode & S_IFDIR) == S_IFDIR) { - maxlen = 14; - if ((mode & dmode_bits_minset) != dmode_bits_minset) - printf("directory mode 0%o not minimum 0%o: %s\n", - mode, dmode_bits_minset, fullname); - } else if ((fs->st_mode & S_IFREG) != S_IFREG) - printf("not a regular file: %s\n", fullname); - else { - if ((mode & fmode_bits_minset) != fmode_bits_minset) - printf("file mode 0%o not minimum 0%o: %s\n", - fs->st_mode, fmode_bits_minset, fullname); - if (fs->st_nlink != 1) - printf("%d links instead of 1: %s\n", fs->st_nlink, fullname); - if (doro && (mode & fmode_bits_write) && !dontcare(fn)) - printf("writable: %s\n", fullname); - } - if ((mode & ~fmode_bits_maxset) != 0) - printf("mode 0%o outside maximum set 0%o: %s\n", - mode, fmode_bits_maxset, fullname); -} - -void -checkrcs(dir, p) - char *dir; - char *p; -{ - DIR *df; - struct dirent *dp; - struct stat fs; - int i; - - if (!(df = opendir(dir))) { - fprintf(stderr, "cannot open: %s\n", dir); - return; - } - while (dp = readdir(df)) { - i = strlen(dp->d_name); - if (dp->d_name[i - 1] == 'v' && dp->d_name[i - 2] == ',') { - strcpy(p, dp->d_name); - p[i - 2] = '\0'; - if (Stat(dir, &fs) < 0) { - strcpy(p, "RCS/"); - strcat(p, dp->d_name); - printf("not used: %s\n", dir); - } - } - } - closedir(df); -} - -int -Strncmp(cp1, cp2, n) - char *cp1, *cp2; - int n; -{ - char c1, c2; - - for (; --n >= 0 && *cp1 && *cp2; cp1++, cp2++) { - if (*cp1 != *cp2) { - c1 = *cp1; - c2 = *cp2; - if (c1 >= 'A' && c1 <= 'Z') - c1 += 'a' - 'A'; - else if (c1 == '-') - c1 = '_'; - if (c2 >= 'A' && c2 <= 'Z') - c2 += 'a' - 'A'; - else if (c2 == '-') - c2 = '_'; - if (c1 != c2) - return (int)c1 - (int)c2; - } - } - if (n < 0) - return 0; - return (int)*cp1 - (int)*cp2; -} - -int -fncomp(n1, n2) - char **n1, **n2; -{ - int i, res; - char *cp1, *cp2; - char c1, c2; - - i = Strncmp(*n1, *n2, 8); - if (!i) { - cp1 = strrchr(*n1, '.'); - cp2 = strrchr(*n2, '.'); - if (cp1 || cp2) { - if (!cp1) - return -1; - if (!cp2) - return 1; - i = Strncmp(cp1 + 1, cp2 + 1, 3); - } - } - return i; -} - -void -checkdir(dir) - char *dir; -{ - DIR *df; - struct dirent *dp; - char *p; - struct stat fs; - char *s, **names; - int i, max; - - if (!(df = opendir(dir))) { - fprintf(stderr, "cannot open: %s\n", dir); - return; - } - p = dir + strlen(dir); - if (p[-1] != '/') - *p++ = '/'; - i = 0; - max = 0; - names = NULL; - while (dp = readdir(df)) { - strcpy(p, dp->d_name); - if (Stat(dir, &fs) < 0) { - perror(dir); - continue; - } - if ((fs.st_mode & S_IFDIR) == S_IFDIR) { - if (dp->d_name[0] == '.' && - (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' && - dp->d_name[2] == '\0'))) - continue; - if (!strcmp (dp->d_name, "RCS")) { - if (dorcs) - checkrcs(dir, p); - continue; - } - if (!strcmp (dp->d_name, "SCCS")) - continue; - if (!strcmp (dp->d_name, "CVS.adm")) - continue; - checkfile(dir, p, &fs); - checkdir(dir); - continue; - } - checkfile(dir, p, &fs); - if (dorcs && !dontcare(dp->d_name)) { - strcpy(p, "RCS/"); - strcat(p, dp->d_name); - strcat(p, ",v"); - if (Stat(dir, &fs) < 0) { - strcpy(p, dp->d_name); - printf("no RCS: %s\n", dir); - } - } - if (do83) { - s = (char *)malloc(strlen(dp->d_name) + 1); - strcpy(s, dp->d_name); - if (i >= max) { - max += 25; - if (names) - names = (char **)realloc((char *)names, - (max + 1) * sizeof(char *)); - else - names = (char **)malloc((max + 1) * sizeof(char *)); - } - names[i++] = s; - } - } - closedir(df); - if (do83) { - qsort((char *)names, i, sizeof(char *), fncomp); - max = i - 1; - *p = '\0'; - for (i = 0; i < max; i++) { - if (!fncomp(&names[i], &names[i + 1])) - printf("8+3 clash: %s%s and %s\n", - dir, names[i], names[i + 1]); - free(names[i]); - } - if (names) { - free(names[i]); - free((char *)names); - } - } -} - -main(argc, argv) - int argc; - char **argv; -{ - char buf[2048]; - - argc--; - argv++; - while (argc > 0) { - if (!strcmp(*argv, "-rcs")) { - dorcs = 0; - argc--; - argv++; - } else if (!strcmp(*argv, "-83")) { - do83 = 0; - argc--; - argv++; - } else if (!strcmp(*argv, "-ro")) { - doro = 0; - argc--; - argv++; - } else if (!strcmp(*argv, "-dot")) { - dodot = 0; - argc--; - argv++; - } else if (!strcmp(*argv, "-twiddle")) { - dotwiddle = 0; - argc--; - argv++; - } else - break; - } - if (!argc) { - strcpy(buf, "."); - checkdir(buf); - } else - while (--argc >= 0) { - strcpy(buf, *argv++); - checkdir(buf); - } -} diff --git a/nx-X11/config/util/chownxterm.c b/nx-X11/config/util/chownxterm.c deleted file mode 100644 index 868f99c..0000000 --- a/nx-X11/config/util/chownxterm.c +++ /dev/null @@ -1,79 +0,0 @@ -/* $Xorg: chownxterm.c,v 1.4 2001/02/09 02:03:16 xorgcvs Exp $ */ -/* - -Copyright (c) 1993, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - -/* - * chownxterm --- make xterm suid root - * - * By Stephen Gildea, December 1993 - */ - - -#define XTERM_PATH "/x11/programs/xterm/xterm" - -#include <stdio.h> -#include <errno.h> - -char *prog_name; - -void help() -{ - if (setgid(getgid()) == -1) - exit(1); - if (setuid(getuid()) == -1) - exit(1); - printf("chown-xterm makes %s suid root\n", XTERM_PATH); - printf("This is necessary on Ultrix for /dev/tty operation.\n"); - exit(0); -} - -void print_error(err_string) - char *err_string; -{ - if (setgid(getgid()) == -1) - exit(1); - if (setuid(getuid()) == -1) - exit(1); - fprintf(stderr, "%s: \"%s\"", prog_name, err_string); - perror(" failed"); - exit(1); -} - -main(argc, argv) - int argc; - char **argv; -{ - prog_name = argv[0]; - if (argc >= 2 && strcmp(argv[1], "-help") == 0) { - help(); - } else { - if (chown(XTERM_PATH, 0, -1) != 0) - print_error("chown root " XTERM_PATH); - if (chmod(XTERM_PATH, 04555) != 0) - print_error("chmod 4555 " XTERM_PATH); - } - exit(0); -} diff --git a/nx-X11/config/util/cleanlinks.man b/nx-X11/config/util/cleanlinks.man deleted file mode 100644 index d550ef5..0000000 --- a/nx-X11/config/util/cleanlinks.man +++ /dev/null @@ -1,29 +0,0 @@ -.TH cleanlinks 1 __vendorversion__ -.SH NAME -cleanlinks \- remove dangling symbolic links and empty directories -.SH SYNOPSIS -.B cleanlinks -.SH DESCRIPTION -The -.I cleanlinks -program searches the directory tree descended from the current directory for -symbolic links whose targets do not exist, and removes them. -It then removes all empty directories in that directory tree. -.PP -.I cleanlinks -is useful for cleaning up a shadow link tree created with -.BR lndir (1) -after files have been removed from the real directory. -.SH DIAGNOSTICS -A message will be printed upon encountering each dangling symlink and empty -directory. -.SH SEE ALSO -.BR lndir (1). -.SH AUTHOR -.PP -The version of the -.I cleanlinks -included in this X.Org Foundation release was originally written -by David Dawes wrote as a part of XFree86. -.PP -Colin Watson wrote this manual page, originally for the Debian Project. diff --git a/nx-X11/config/util/cleanlinks.sh b/nx-X11/config/util/cleanlinks.sh deleted file mode 100644 index 4e1a8ea..0000000 --- a/nx-X11/config/util/cleanlinks.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# -# Copyright © 2000, 2003 by The XFree86 Project, Inc -# -# Remove dangling symlinks and empty directories from a shadow link tree -# (created with lndir). -# -# Author: David Dawes <dawes@xfree86.org> -# -# $XFree86: xc/config/util/cleanlinks.sh,v 1.2 2003/04/15 03:05:16 dawes Exp $ - -find . -type l -print | -( - read i - while [ X"$i" != X ]; do - if [ ! -f "$i" ]; then - echo $i is a dangling symlink, removing - rm -f "$i" - fi - read i - done -) - -echo Removing empty directories ... -#find . -type d -depth -print | xargs rmdir > /dev/null 2>&1 -find . -type d -depth -empty -print -exec rmdir {} \; -exit 0 diff --git a/nx-X11/config/util/crayar.sh b/nx-X11/config/util/crayar.sh deleted file mode 100644 index 6296de5..0000000 --- a/nx-X11/config/util/crayar.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -lib=$1 -shift -if cray2; then - bld cr $lib `lorder $* | tsort` -else - ar clq $lib $* -fi - diff --git a/nx-X11/config/util/elistgen.hp b/nx-X11/config/util/elistgen.hp deleted file mode 100644 index fe22e79..0000000 --- a/nx-X11/config/util/elistgen.hp +++ /dev/null @@ -1,202 +0,0 @@ -XCOMM!/bin/sh -XCOMM $Xorg: elistgen.hp,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ -XCOMM -XCOMM ######################################################################### -XCOMM Construct shared-library export lists for HP-UX based on standardized -XCOMM export list description file -XCOMM -XCOMM Usage: exportlistgen libfoo.sl libfoo.elist > libfoo.lopt -XCOMM -XCOMM libfoo.sl => shared library of interest -XCOMM libfoo.elist => Meta description of necessary export list. -XCOMM -XCOMM The output may then be passed to the linker to reconstruct the -XCOMM shared library. For unknown reasons naming only exported symbols -XCOMM with "+e" does not work for debuggable C++ code, even though "nm" -XCOMM reports no difference between the resulting libraries. The linker -XCOMM complains that "first non-inline virtual function" is not defined for -XCOMM vtables. We instead hide internal symbols with "-h" as a work-around. -XCOMM -XCOMM Author: Aloke Gupta 5/25/94. -XCOMM (c) Copyright 1996 Digital Equipment Corporation. -XCOMM (c) Copyright 1994,1996 Hewlett-Packard Company. -XCOMM (c) Copyright 1996 International Business Machines Corp. -XCOMM (c) Copyright 1996 Sun Microsystems, Inc. -XCOMM (c) Copyright 1996 Novell, Inc. -XCOMM (c) Copyright 1996 FUJITSU LIMITED. -XCOMM (c) Copyright 1996 Hitachi. -XCOMM -XCOMM ######################################################################### - -XCOMM Utility programs -FILTER=CXXFILT # C++ symbol demangler -AWK=awk # awk -PATH=/usr/bin:/bin:/usr/ucb # For nm, cat, pr, expand, awk, c++filt - -XCOMM Temporary files -EXPORTLIST=/tmp/elistgen1.$$ # list of export symbols from "libfoo.elist" -NMLIST=/tmp/elistgen2.$$ # name list from libfoo.sl -FILTLIST=/tmp/elistgen3.$$ # demangled (C++) version of NMLIST - -XCOMM Print useful information at the top of the output -echo "#" `date` -echo "# This linker options list was produced by" $0 -echo "# Input export list description taken from:" $2 -echo "# Target library:" $1 -echo "# Target Operating System:" `uname -msrv` -echo "# " - -XCOMM Extract the globally visible symbols from target library -XCOMM The NMLIST generated here is later used to cross-check the symbols in the -XCOMM supplied export-list. -XCOMM -nm -p $1 | $AWK ' - / [cCTDB][S ] [^\$]/{print $3} # Text, Data, BSS, or Secondary symbols -' > $NMLIST - -XCOMM Demangle the global library symbols. This operation is necessary to -XCOMM convert mangled C++ symbols into their C++ notation. -${FILTER:-cat} $NMLIST > $FILTLIST - -XCOMM -XCOMM Cleanup the export-list description file. -XCOMM Note that C++ symbols may have embedded spaces in them. -XCOMM -cat $2 | $AWK ' - BEGIN { - csyms = 0; # C language symbols in libfoo.list - cplusplus = 0; # C++ language symbols in libfoo.list - isyms = 0; # C internal symbols in libfoo.elist - icplusplus = 0; # C++ internal symbols in libfoo.elist - implicit = ""; # Handling of implicit symbols. - } - $1 == "default" { - # A default clause suppresses warnings about implicit symbols. - if ($2 != "" && $2 != "force" && $2 != "public" && - $2 != "private" && $2 != "internal") { - print "# Warning: illegal default clause:", $2 | "cat 1>&2"; - next; - } - if (implicit != "") - print "# Warning: multiple default clauses." | "cat 1>&2"; - implicit = $2; - next; - } - $1 == "force" || $1 == "public" || $1 == "private" { - csyms ++; - print $1 ";;" $2; - next; - } - $1 == "publicC++" || $1 == "privateC++" { - cplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) - string = string " " $n; - print $1 ";;" string; - next; - } - $1 == "internal" { - isyms ++; - print $1 ";;" $2; - next; - } - $1 == "internalC++" { - icplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) - string = string " " $n; - print $1 ";;" string; - next; - } - END { - printf("# Exporting %d C and %d C++ symbols, hiding %d and %d.\n", - csyms, cplusplus, isyms, icplusplus) | "cat 1>&2"; - if (implicit != "") { - print "# Unspecified symbols are " implicit "." | "cat 1>&2"; - print "default;;" implicit; - } - } -' > $EXPORTLIST - -XCOMM Read in the above files and write result to stdout. The contents -XCOMM of NMLIST and FILTLIST are used to construct a symbol lookup table. -XCOMM The contents of EXPORTLIST are converted with the help of this table. -XCOMM Use ";" as a delimiter in the symbol lookup table. -XCOMM -(pr -m -s";" -t -w1024 $NMLIST $FILTLIST| expand -t 1;cat $EXPORTLIST ) | $AWK ' - BEGIN { - FS = ";"; - implicit = 0; - } - NF == 2 { - # This is "pr" output, i.e., symbol translation table. - syms[$2] = $1; - next; - } - NF == 3 && $1 == "default" { - # Treatment of unspecified symbols. - if ($3 == "internal" || $3 == "internalC++") - implicit = 1; - else if ($3 == "private" || $3 == "privateC++") - implicit = 2; - else if ($3 == "public" || $3 == "publicC++") - implicit = 3; - else # $3 == "force" - implicit = 4; - next; - } - NF == 3 { - # Parse our instructions for this symbol. - if ($1 == "internal" || $1 == "internalC++") - export = 1; - else if ($1 == "private" || $1 == "privateC++") - export = 2; - else if ($1 == "public" || $1 == "publicC++") - export = 3; - else # $1 == "force" - export = 4; - - # Process it. - if (length(syms[$3]) > 0) { - if (donelist[$3]) - print "# Warning: Duplicate entry for", $3, - "in export list" | "cat 1>&2"; - if (donelist[$3] < export) - donelist[$3] = export; - } else { - if (export == 4) - donelist[$3] = export; - else - print "# Warning:", $3, - "was not in the nm list for this library" | "cat 1>&2"; - } - next; - } - END { - # Force implicit exporting of errno. - if (! donelist["errno"]) - donelist["errno"] = 4; - - # Complain about some implicit symbols. - for (i in syms) { - if (!donelist[i] && (length(syms[i]) > 0)) { - # Ignore automatic symbols generated by the C++ compiler. - if (implicit == 0 && - (syms[i] !~ /^__noperfopt__/) && - (syms[i] !~ /^__ptbl_vec__/) && - (syms[i] !~ /^__vtbl__[0-9]*_/) && - (syms[i] !~ /^__cfront_version_[0-9]*_xxxxxxxx$/)) - print "# Warning:", syms[i], - "was not in the export list" | "cat 1>&2"; - donelist[i] = implicit; - } - if ((donelist[i] > 1) && (length(syms[i]) > 0)) - print "-e", syms[i]; - } - } -' - -XCOMM Clean up temporary files -rm $EXPORTLIST -rm $NMLIST -rm $FILTLIST diff --git a/nx-X11/config/util/elistgen.ibm b/nx-X11/config/util/elistgen.ibm deleted file mode 100644 index d368696..0000000 --- a/nx-X11/config/util/elistgen.ibm +++ /dev/null @@ -1,220 +0,0 @@ -XCOMM!/bin/sh -XCOMM $Xorg: elistgen.ibm,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ -XCOMM -XCOMM ######################################################################### -XCOMM Construct shared-library export lists for IBM-AIX based on standardized -XCOMM export list description file -XCOMM -XCOMM Usage: elistgen libfoo.sl libfoo.elist > libfoo.lopt -XCOMM -XCOMM libfoo.a => shared library of interest -XCOMM libfoo.elist => Meta description of necessary export list. -XCOMM -XCOMM The output file, "libfoo.lopt" may then be passed to the IBM linker to -XCOMM reconstruct the shared library, libfoo.sl. -XCOMM -XCOMM Author: Yanling Qi 10/03/94, Last updated 10/03/94 -XCOMM (c) Copyright 1996 Digital Equipment Corporation. -XCOMM (c) Copyright 1996 Hewlett-Packard Company. -XCOMM (c) Copyright 1994,1996 International Business Machines Corp. -XCOMM (c) Copyright 1996 Sun Microsystems, Inc. -XCOMM (c) Copyright 1996 Novell, Inc. -XCOMM (c) Copyright 1996 FUJITSU LIMITED. -XCOMM (c) Copyright 1996 Hitachi. -XCOMM -XCOMM ######################################################################### - -#define HASH # - -XCOMM Utility programs -FILTER=CXXFILT # C++ symbol demangler -AWK=awk # awk - -XCOMM For dump, cat, pr, expand, awk, c++filt -PATH=/usr/bin:/bin:/usr/ucb:/usr/lpp/xlC/bin - -XCOMM Temporary files -EXPORTLIST=/tmp/elistgen1.$$ # export directives from "libfoo.list" -NMLIST=/tmp/elistgen2.$$ # name list from libfoo.sl -FILTLIST=/tmp/elistgen3.$$ # demangled (C++) version of above - -XCOMM Print useful information -echo "*" `date` -echo "* This linker options list was produced by" $0 -echo "* Input export list description taken from:" $2 -echo "* Target library:" $1 -echo "* Target Operating System:" `uname` -echo "*" - -XCOMM Extract the globally visible symbols from target library -dump -g $1 | $AWK '$1 ~ /[0-9][0-9]/ && $2 !~ /^[\.]/ {print $2}' > $NMLIST - -XCOMM Demangle the global library symbols -${FILTER:-cat} $NMLIST > $FILTLIST - -XCOMM -XCOMM Clean up the export-list description file. -XCOMM Note that C++ symbols may have embedded spaces in them. -XCOMM -$AWK ' - BEGIN { - csyms = 0; # C language symbols in libfoo.list - cplusplus = 0; # C++ language symbols in libfoo.list - isyms = 0; # C internal symbols in libfoo.list - iplusplus = 0; # C++ internal symbols in libfoo.list - count = 0; # Running count of symbols - implicit = ""; # Handling of implicit symbols. - } - $1 == "default" { - HASH A default clause suppresses warnings about implicit symbols. - if ($2 != "" && $2 != "force" && $2 != "public" && - $2 != "private" && $2 != "internal") { - print "# Warning: illegal default clause:", $2 | "cat 1>&2"; - next; - } - if (implicit != "") - print "# Warning: multiple default clauses." | "cat 1>&2"; - implicit = $2; - next; - } - $1 == "force" || $1 == "public" || $1 == "private" { - csyms ++; - symbol[count++] = $1 ";;" $2; - next; - } - $1 == "publicC++" || $1 == "privateC++" { - HASH forceC++ is unsupported because we only know how to demangle, - HASH not how to mangle symbols, and the final ld input file must - HASH be mangled. - cplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) - string = string " " $n; - symbol[count++] = $1 ";;" string; - next; - } - $1 == "internal" { - isyms ++; - symbol[count++] = $1 ";;" $2; - next; - } - $1 == "internalC++" { - iplusplus ++; - string = ";;" $2; - for (n = 3; n <= NF; n++) - string = string " " $n; - symbol[count++] = $1 ";;" string; - next; - } - $1 == "#line" || $1 == "#" { - HASH cpp will have removed comments, but may have added other stuff. - next; - } - NF > 0 { - print "# Warning: unrecognized directive:", $0 | "cat 1>&2"; - next; - } - END { - printf("# Exporting %d C and %d C++ symbols, hiding %d and %d.\n", - csyms, cplusplus, isyms, iplusplus) | "cat 1>&2"; - if (implicit != "") { - print "# Unspecified symbols are " implicit "." | "cat 1>&2"; - print "default;;" implicit; - } - for (i in symbol) - print symbol[i]; - } -' $2 > $EXPORTLIST - -XCOMM -XCOMM Read in the above files and write result to stdout. Use the -XCOMM delimiter ";" to identify the entries in the symbol lookup table. -XCOMM -(pr -m -s";" -t -w1024 $NMLIST $FILTLIST | expand -t 1; cat $EXPORTLIST) | $AWK ' - BEGIN { - FS = ";"; - implicit = 0; - } - NF == 2 { - HASH This is "pr" output, i.e., symbol translation table - r2=$2 - gsub(/ /,"",r2); # Remove spaces because c++filt is unpredictable - syms[r2] = $1; - r1=$1; - gsub(/ /,"",r1); - mangled[r1] = 1; # Save the mangling because the export lists - HASH sometimes use it instead of a prototype. - next; - } - NF == 3 && $1 == "default" { - HASH Treatment of unspecified symbols. - if ($3 == "internal") - implicit = 1; - else if ($3 == "private" || $3 == "privateC++") - implicit = 2; - else if ($3 == "public" || $3 == "publicC++") - implicit = 3; - else # $3 == "force" - implicit = 4; - next; - } - NF == 3 { - HASH Generate canonical demangled form as an alternate symbol. - alt=$3; - gsub(/ \.\.\./,",...",alt); # change " ..." to ",..." to match c++filt - gsub(/ /,"",alt); # remove all spaces - gsub(/\(void\)/,"()",alt); # change "(void)" to "()" to match c++filt - - HASH Parse our instructions for this symbol. - if ($1 == "internal" || $1 == "internalC++") - export = 1; - else if ($1 == "private" || $1 == "privateC++") - export = 2; - else if ($1 == "public" || $1 == "publicC++") - export = 3; - else # $1 == "force" - export = 4; - - HASH Process it. - if ((length(syms[alt]) > 0) || mangled[alt]) { - HASH This symbol is present in the library. - if (donelist[alt]) - print "# Warning: Duplicate entry for", $3, - "in export list" | "cat 1>&2"; - if (donelist[alt] < export) { - if (export > 1) - print syms[alt]; - donelist[alt] = export; - } - } else { - HASH Print forced-export symbols without complaining. - if (export == 4) { - print alt; - donelist[alt] = export; - } else { - print "# Warning:", $3, - "was not in the nm list for this library" | "cat 1>&2"; - } - } - - next; - } - END { - HASH Process implicit symbols. - for (i in syms) { - if ((! donelist[i]) && (length(syms[i]) > 0)) { - HASH Do not complain about C++ virtual function tables. - if (implicit == 0 && syms[i] !~ /^__vft[0-9]*_/) - print "# Warning:", syms[i], - "was not in the export list" | "cat 1>&2"; - if (implicit > 1) - print syms[i]; - } - } - } -' - -XCOMM Clean up temporary files -rm $EXPORTLIST -rm $NMLIST -rm $FILTLIST diff --git a/nx-X11/config/util/elistgen.sun b/nx-X11/config/util/elistgen.sun deleted file mode 100644 index f9af50a..0000000 --- a/nx-X11/config/util/elistgen.sun +++ /dev/null @@ -1,267 +0,0 @@ -XCOMM!/bin/sh -f -XCOMM $Xorg: elistgen.sun,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ -XCOMM -XCOMM ######################################################################## -XCOMM Construct shared-library scoping mapfile for Solaris based on standardized -XCOMM export list description file -XCOMM -XCOMM Usage: exportlistgen libfoo.so libfoo.elist > mapfile.scope -XCOMM -XCOMM libfoo.so => shared library of interest -XCOMM libfoo.elist => Meta description of necessary export list. -XCOMM -XCOMM The output file, "mapfile.scope" may then be passed to the Solaris -XCOMM linker to reconstruct the shared library, libfoo.so. -XCOMM -XCOMM ######################################################################## -XCOMM -XCOMM $XFree86: xc/config/util/elistgen.sun,v 1.7 2001/01/17 16:39:01 dawes Exp $ - -XCOMM Utility programs -FILTER=CXXFILT # C++ symbol demangler -AWK=nawk # Awk - -XCOMM For nm, cat, pr, sed, awk, c++filt -PATH=/usr/bin:/bin:/usr/ccs/bin:/usr/ucb:$PATH - -XCOMM Try to detect broken versions of c++filt. -if [ `echo _okay | ${FILTER:-cat}` != "_okay" ]; then - if [ -x /opt/SUNWspro/bin/c++filt ]; then - echo "# Your $FILTER is broken -- using /opt/SUNWspro/bin/c++filt." - FILTER=/opt/SUNWspro/bin/c++filt - else - echo "# ERROR: no working $FILTER available." - exit 1 - fi; -fi; - -XCOMM Temporary files -EXPORTLIST=/tmp/elistgen1.$$ # export directives from "libfoo.list" -NMLIST=/tmp/elistgen2.$$ # name list from libfoo.sl -FILTLIST=/tmp/elistgen3.$$ # demangled (C++) version of above - -XCOMM Print useful information at the top of the output -echo "#" `date` -echo "# This scoping mapfile was produced by" $0 -echo "# Export list description taken from:" $2 -echo "# Target library:" $1 -echo "# Target Operating System:" `uname -msrv` -echo "# " - -XCOMM Extract the globally visible symbols from target library -XCOMM The NMLIST generated here is later used to cross-check the symbols in the -XCOMM nm stopped working on Solaris 2.5, use dump instead. -nm -p $1 | $AWK '/ [ TDBS] /{print $3}' > $NMLIST -XCOMM /usr/ccs/bin/dump -t -v $1 | $AWK '/(FUNC|OBJT).(GLOB|WEAK)/{print $8}' > $NMLIST - -XCOMM Extract the globally visible symbols from target library -XCOMM The NMLIST generated here is later used to cross-check the symbols in the -${FILTER:-cat} < $NMLIST > $FILTLIST - -XCOMM Clean up the export-list description file. Sort the directives. -$AWK ' - BEGIN { - csyms = 0; # C public symbols in libfoo.list - cplusplus = 0; # C++ public symbols in libfoo.list - isyms = 0; # C internal symbols in libfoo.list - iplusplus = 0; # C++ internal symbols in libfoo.list - implicit = ""; # Handling of implicit symbols - } - $1 == "default" { - # A default clause suppresses warnings about implicit symbols. - if ($2 != "" && $2 != "force" && $2 != "public" && $2 != "private" && $2 != "internal") { - print "# Warning: illegal default clause:", $2 | "cat 1>&2"; - next; - } - if (implicit != "") - print "# Warning: multiple default clauses." | "cat 1>&2"; - implicit = $2; - next; - } - $1 == "force" { - csyms ++; - print $1 ";;" $2; - next; - } - $1 == "public" { - csyms ++; - print $1 ";;" $2; - next; - } - $1 == "publicC++" { - cplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) - string = string " " $n; - print $1 ";;" string; - next; - } - $1 == "private" { - csyms ++; - print $1 ";;" $2; - next; - } - $1 == "privateC++" { - cplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) - string = string " " $n; - print $1 ";;" string; - next; - } - $1 == "internal" { - isyms ++; - print $1 ";;" $2; - next; - } - $1 == "internalC++" { - iplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) - string = string " " $n; - print $1 ";;" string; - next; - } - $1 == "#line" || $1 == "#" { - # cpp will have removed comments, but may have added other stuff. - next; - } - NF > 0 { - print "# Warning: unrecognized directive:", $0 | "cat 1>&2"; - next; - } - END { - printf("# Exporting %d C and %d C++ symbols, hiding %d and %d.\n", csyms, cplusplus, isyms, iplusplus) | "cat 1>&2"; - if (implicit != "") { - print "# Unspecified symbols are " implicit "." | "cat 1>&2"; - print "default;;" implicit; - } - } -' $2 1>$EXPORTLIST - - -XCOMM Read in the above files and write result to stdout. The contents -XCOMM of NMLIST and FILTLIST are used to construct a symbol lookup table. -XCOMM The contents of EXPORTLIST are converted with the help of this table. -XCOMM Use ";" as a delimiter in the symbol lookup table. -(pr -m -s";" -t -w1024 $NMLIST $FILTLIST | sed 's/ / /g'; cat $EXPORTLIST) | $AWK ' - BEGIN { - FS = ";"; - implicit = 0; - } - NF == 2 { - # This is "pr" output, i.e., symbol translation table - r2=$2; - gsub(/static /,"",r2); # remove keyword "static" as above - gsub(/ /,"",r2); # Remove spaces because c++filt is unpredictable - syms[r2] = $1; - r1=$1; - gsub(/ /,"",r1); - mangled[r1] = 1; # Save the mangling because the export lists - # sometimes use it instead of a prototype. - next; - } - NF == 3 && $1 == "default" { - # Treatment of unspecified symbols. - if ($3 == "internal" || $3 == "internalC++") - implicit = 1; - else if ($3 == "private" || $3 == "privateC++") - implicit = 2; - else if ($3 == "public" || $3 == "publicC++") - implicit = 3; - else # $3 == "force" - implicit = 4; - next; - } - NF == 3 { - # Generate canonical demangled form as an alternate symbol. - alt=$3; - gsub(/ \.\.\./,",...",alt); # change " ..." to ",..." to match c++filt - gsub(/ /,"",alt); # remove all spaces - - # An export directive. Parse our instructions for this symbol. - if ($1 == "internal" || $1 == "internalC++") - export = 1; - else if ($3 == "private" || $3 == "privateC++") - export = 2; - else if ($3 == "public" || $3 == "publicC++") - export = 3; - else # $3 == "force" - export = 4; - - # Process it. - if ((length(syms[alt]) > 0) || mangled[alt]) { - # This symbol is present in the library. - if (donelist[alt]) - print "# Warning: Duplicate entry for", $3, - "in export list" | "cat 1>&2"; - if (donelist[alt] < export) { - donelist[alt] = export; - } - } else { - # Print forced-export symbols without complaining. - if (export == 4) { - donelist[alt] = export; - } else { - print "# Warning:", $3, - "was not in the nm list for this library" | "cat 1>&2"; - } - } - - next; - } - END { - # Ignore magic linker symbols. - if (implicit == 0) { - if (!donelist["_DYNAMIC"]) - donelist["_DYNAMIC"] = 1; - if (!donelist["_GLOBAL_OFFSET_TABLE_"]) - donelist["_GLOBAL_OFFSET_TABLE_"] = 1; - if (!donelist["_PROCEDURE_LINKAGE_TABLE_"]) - donelist["_PROCEDURE_LINKAGE_TABLE_"] = 1; - if (!donelist["_edata"]) - donelist["_edata"] = 1; - if (!donelist["_end"]) - donelist["_end"] = 1; - if (!donelist["_etext"]) - donelist["_etext"] = 1; - } - - # Process implicit symbols. - for (i in syms) { - if (donelist[i] == 0 && length(syms[i]) > 0) { - if (implicit == 0) { - # Ignore magic symbols introduced by the C++ compiler. - if ((syms[i] !~ /^__vtbl__[0-9]*_/) && (syms[i] !~ /^__ptbl_vec__/)) - print "# Warning:", syms[i], "was not in the export list" | "cat 1>&2"; - } else { - donelist[i] = implicit; - } - } - } - - # Generate the linker file. - print ""; - print "SUNW.1.1 {"; - print " global:"; - for (i in syms) - if (donelist[i] >= 2 && length(syms[i]) > 0) - print " " syms[i] ";"; - print " local:"; - print " *;"; - print "};"; - - print ""; - print "SUNW_private.1.1 {"; - print " global:"; - for (i in syms) - if (donelist[i] == 1 && length(syms[i]) > 0) - print " " syms[i] ";"; - print "} SUNW.1.1;" - } -' - -XCOMM Clean up temporary files -rm $EXPORTLIST -rm $NMLIST -rm $FILTLIST diff --git a/nx-X11/config/util/elistgen.usl b/nx-X11/config/util/elistgen.usl deleted file mode 100644 index f17bcdb..0000000 --- a/nx-X11/config/util/elistgen.usl +++ /dev/null @@ -1,221 +0,0 @@ -XCOMM!/bin/sh -XCOMM $Xorg: elistgen.usl,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ -XCOMM -XCOMM ######################################################################### -XCOMM Construct shared-library export lists for Novell based on standardized -XCOMM export list description file -XCOMM -XCOMM Usage: exportlistgen libFoo.so libFoo.elist > libFoo.lopt -XCOMM -XCOMM libFoo.so => shared library of interest -XCOMM libFoo.elist => Meta description of necessary export list. -XCOMM -XCOMM The output file, "libFoo.lopt" may then be passed to the linker to -XCOMM reconstruct the shared library. -XCOMM -XCOMM (c) Copyright 1996 Digital Equipment Corporation. -XCOMM (c) Copyright 1996 Hewlett-Packard Company. -XCOMM (c) Copyright 1996 International Business Machines Corp. -XCOMM (c) Copyright 1996 Sun Microsystems, Inc. -XCOMM (c) Copyright 1996 Novell, Inc. -XCOMM (c) Copyright 1996 FUJITSU LIMITED. -XCOMM (c) Copyright 1996 Hitachi. -XCOMM -XCOMM ######################################################################### -XCOMM -XCOMM $XFree86$ - -XCOMM Utility programs -FILTER=CXXFILT # C++ symbol demangler -AWK=awk # awk - -XCOMM For nm, cat, pr, sed, awk, c++filt -PATH=/usr/bin:/bin:/usr/ucb:/usr/ccs/bin - -XCOMM Temporary files -EXPORTLIST=/tmp/elistgen1.$$ # list of export symbols from "libfoo.elist" -NMLIST=/tmp/elistgen2.$$ # name list from libfoo.sl -FILTLIST=/tmp/elistgen3.$$ # demangled (C++) version of NMLIST - -XCOMM Print useful information at the top of the output -echo "#" `date` -echo "# This linker options list was produced by" $0 -echo "# Input export list description taken from:" $2 -echo "# Target library:" $1 -echo "# Target Operating System:" `uname -msrv` -echo "# " - -XCOMM Extract the globally visible symbols from target library. -XCOMM The NMLIST generated here is later used to cross-check the symbols in the -XCOMM supplied export-list. -nm -p $1 | $AWK ' - / [TD] [^\$]/{print $3} # Text, Data, BSS, or Secondary symbols -' > $NMLIST - -XCOMM Demangle the global library symbols. This operation is necessary to convert -XCOMM mangled C++ symbols into their C++ notation. -${FILTER:-cat} $NMLIST > $FILTLIST - -XCOMM Clean up the export-list description file. -XCOMM Note that C++ symbols may have embedded spaces in them. -cat $2 | $AWK ' - BEGIN { - csyms = 0; # C language symbols in libfoo.list - cplusplus = 0; # C++ language symbols in libfoo.list - isyms = 0; # C internal symbols in libfoo.elist - iplusplus = 0; # C++ internal symbols in libfoo.elist - implicit = ""; # Handling of implicit symbols - } - $1 == "default" { - # A default clause suppresses warnings about implicit symbols. - if ($2 != "" && $2 != "force" && $2 != "public" && - $2 != "private" && $2 != "internal") { - print "# Warning: illegal default clause:", $2 | "cat 1>&2"; - next; - } - if (implicit != "") - print "# Warning: multiple default clauses." | "cat 1>&2"; - implicit = $2; - next; - } - $1 == "force" || $1 == "public" || $1 == "private" { - csyms ++; - print $1 ";;" $2; - next; - } - $1 == "publicC++" || $1 == "privateC++" { - cplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) { - string = string " " $n; - } - print $1 ";;" string; - next; - } - $1 == "internal" { - isyms ++; - print $1 ";;" $2; - next; - } - $1 == "internalC++" { - iplusplus ++; - string = $2; - for (n = 3; n <= NF; n++) { - string = string " " $n; - } - print $1 ";;" string; - next; - } - $1 == "#line" || $1 == "#" { - # cpp will have removed comments, but may have added other stuff. - next; - } - NF > 0 { - print "# Warning: unrecognized directive:", $0 | "cat 1>&2"; - next; - } - END { - printf("# Exporting %d C and %d C++ symbols, hiding %d and %d.\n", - csyms, cplusplus, isyms, iplusplus) | "cat 1>&2"; - if (implicit != "") { - print "# Unspecified symbols are " implicit "." | "cat 1>&2"; - print "default;;" implicit; - } - } -' > $EXPORTLIST - -XCOMM Read in the above files and write result to stdout. The contents -XCOMM of NMLIST and FILTLIST are used to construct a symbol lookup table. -XCOMM The contents of EXPORTLIST are converted with the help of this table. -XCOMM Use ";" as a delimiter in the symbol lookup table. -(pr -m -s";" -t -w1024 $NMLIST $FILTLIST | sed 's/ / /g'; cat $EXPORTLIST) | $AWK ' - BEGIN { - FS = ";"; - implicit = 0; - } - NF == 2 { - # This is "pr" output, i.e., symbol translation table - syms[$2] = $1; - next; - } - NF == 3 && $1 == "default" { - # Treatment of unspecified symbols. - if ($3 == "internal") - implicit = 1; - else if ($3 == "private" || $3 == "privateC++") - implicit = 2; - else if ($3 == "public" || $3 == "publicC++") - implicit = 3; - else # $3 == "force" - implicit = 4; - next; - } - NF == 3 { - # Parse our instructions for this symbol. - if ($1 == "internal" || $1 == "internalC++") - export = 1; - else if ($1 == "private" || $1 == "privateC++") - export = 2; - else if ($1 == "public" || $1 == "publicC++") - export = 3; - else # $1 == "force" - export = 4; - - # Process it. - if (length(syms[$3]) > 0) { - # This symbol is present in the library. - if (donelist[$3]) - print "# Warning: Duplicate entry for", $3, - "in export list" | "cat 1>&2"; - if (donelist[$3] < export) { - if (export > 1) - print syms[$3]; - donelist[$3] = export; - } - } else { - # Do not complain about unknown forced-export symbols. - if (export == 4) { - print $3; - donelist[$3] = export; - } else - print "# Warning:", $3, - "was not in the nm list for this library" | "cat 1>&2"; - } - - next; - } - END { - # Ignore built-in linker symbols. - if (implicit == 0) { - if (!donelist["_DYNAMIC"]) - donelist["_DYNAMIC"] = 1; - if (!donelist["_GLOBAL_OFFSET_TABLE_"]) - donelist["_GLOBAL_OFFSET_TABLE_"] = 1; - if (!donelist["_edata"]) - donelist["_edata"] = 1; - if (!donelist["_end"]) - donelist["_end"] = 1; - if (!donelist["_etext"]) - donelist["_etext"] = 1; - } - - # Process implicit symbols. - for (i in syms) { - if (!donelist[i] && (length(syms[i]) > 0)) { - # Ignore C++ compiler symbols - if (implicit == 0 && - (syms[i] !~ /^__vtbl__[0-9]*_/) && - (syms[i] !~ /^__cpp_unixware_[0-9]*$/)) - print "# Warning:", syms[i], - "was not in the export list" | "cat 1>&2"; - if (implicit > 1) - print syms[i]; - } - } - } -' - -XCOMM Clean up temporary files -rm $EXPORTLIST -rm $NMLIST -rm $FILTLIST diff --git a/nx-X11/config/util/gccmakedep.man b/nx-X11/config/util/gccmakedep.man deleted file mode 100644 index 5a97a3e..0000000 --- a/nx-X11/config/util/gccmakedep.man +++ /dev/null @@ -1,126 +0,0 @@ -.TH gccmakedep 1 __vendorversion__ -.SH NAME -gccmakedep \- create dependencies in makefiles using 'gcc -M' -.SH SYNOPSIS -.B gccmakedep -[ -.BI \-s separator -] [ -.BI \-f makefile -] [ -.BI \-a -] [ -\-\^\- -.I options -\-\^\- -] -.I sourcefile -\&.\|.\|. -.SH DESCRIPTION -The -.B gccmakedep -program calls 'gcc -M' to output -.I makefile -rules describing the dependencies of each -.IR sourcefile , -so that -.BR make (1) -knows which object files must be recompiled when a dependency has changed. -.PP -By default, -.B gccmakedep -places its output in the file named -.I makefile -if it exists, otherwise -.I Makefile. -An alternate makefile may be specified with the -.B \-f -option. -It first searches the makefile for a line beginning with -.sp -\& # DO NOT DELETE -.sp -or one provided with the -.B \-s -option, as a delimiter for the dependency output. -If it finds it, it will delete everything following this up to the end of -the makefile and put the output after this line. -If it doesn't find it, the program will append the string to the makefile -and place the output after that. -.SH EXAMPLE -Normally, -.B gccmakedep -will be used in a makefile target so that typing 'make depend' will bring -the dependencies up to date for the makefile. -For example, -.nf - SRCS\0=\0file1.c\0file2.c\0.\|.\|. - CFLAGS\0=\0\-O\0\-DHACK\0\-I\^.\^.\^/foobar\0\-xyz - depend: - gccmakedep\0\-\^\-\0$(CFLAGS)\0\-\^\-\0$(SRCS) -.fi -.SH OPTIONS -The program will ignore any option that it does not understand, so you may -use the same arguments that you would for -.BR gcc (1), -including -.B \-D -and -.B \-U -options to define and undefine symbols and -.B \-I -to set the include path. -.TP -.B \-a -Append the dependencies to the file instead of replacing existing -dependencies. -.TP -.BI \-f makefile -Filename. -This allows you to specify an alternate makefile in which -.B gccmakedep -can place its output. -Specifying \(lq\-\(rq as the file name (that is, -.BR \-f\- ) -sends the output to standard output instead of modifying an existing file. -.TP -.BI \-s string -Starting string delimiter. -This option permits you to specify a different string for -.B gccmakedep -to look for in the makefile. -The default is \(lq# DO NOT DELETE\(rq. -.TP -.BI \-\^\- " options " \-\^\- -If -.B gccmakedep -encounters a double hyphen (\-\^\-) in the argument list, then any -unrecognized arguments following it will be silently ignored. -A second double hyphen terminates this special treatment. -In this way, -.B gccmakedep -can be made to safely ignore esoteric compiler arguments that might -normally be found in a CFLAGS -.B make -macro (see the -.B EXAMPLE -section above). -.BR \-D , -.BR \-I , -and -.B \-U -options appearing between the pair of double hyphens are still processed -normally. -.SH "SEE ALSO" -.BR gcc (1), -.BR make (1), -.BR makedepend (1). -.SH AUTHOR -The version of the -.B gccmakedep -included in this X.Org Foundation release was originally -written by the XFree86 Project based on code supplied by Hongjiu Lu. -.PP -Colin Watson wrote this manual page, originally for the Debian Project, -based partly on the manual page for -.BR makedepend (1). diff --git a/nx-X11/config/util/gccmdep.cpp b/nx-X11/config/util/gccmdep.cpp deleted file mode 100644 index ff4b12a..0000000 --- a/nx-X11/config/util/gccmdep.cpp +++ /dev/null @@ -1,126 +0,0 @@ -XCOMM!/bin/sh - -XCOMM -XCOMM makedepend which uses 'gcc -M' -XCOMM -XCOMM $XFree86: xc/config/util/gccmdep.cpp,v 3.10tsi Exp $ -XCOMM -XCOMM Based on mdepend.cpp and code supplied by Hongjiu Lu <hjl@nynexst.com> -XCOMM - -TMP=mdep$$.tmp -CC=CCCMD -RM=RMCMD -LN=LNCMD -MV=MVCMD - -${RM} ${TMP} - -trap "${RM} ${TMP}*; exit 1" 1 2 15 -trap "${RM} ${TMP}*; exit 0" 1 2 13 - -files= -makefile= -endmarker= -magic_string='# DO NOT DELETE' -append=n -args= - -while [ $# != 0 ]; do - if [ "$endmarker"x != x -a "$endmarker" = "$1" ]; then - endmarker= - else - case "$1" in - -D*|-I*|-U*) - args="$args '$1'" - ;; - -g*|-O*) - ;; - *) - if [ "$endmarker"x = x ]; then - case $1 in -XCOMM ignore these flags - -w|-o|-cc) - shift - ;; - -v) - ;; - -s) - magic_string="$2" - shift - ;; - -f*) - if [ "$1" = "-f-" ]; then - makefile="-" - elif [ "$1" = "-f" ]; then - makefile="$2" - shift - else - echo "$1" | sed 's/^\-f//' >${TMP}arg - makefile="`cat ${TMP}arg`" - rm -f ${TMP}arg - fi - ;; - --*) - endmarker=`echo $1 | sed 's/^\-\-//'` - if [ "$endmarker"x = x ]; then - endmarker="--" - fi - ;; - -a) - append=y - ;; - -*) - echo "Unknown option '$1' ignored" 1>&2 - ;; - *) - files="$files $1" - ;; - esac - fi - ;; - esac - fi - shift -done - -if [ x"$files" = x ]; then -XCOMM Nothing to do - exit 0 -fi - -case "$makefile" in - '') - if [ -r makefile ]; then - makefile=makefile - elif [ -r Makefile ]; then - makefile=Makefile - else - echo 'no makefile or Makefile found' 1>&2 - exit 1 - fi - ;; -esac - -if [ X"$makefile" != X- ]; then - if [ x"$append" = xn ]; then - sed -e "/^$magic_string/,\$d" < $makefile > $TMP - echo "$magic_string" >> $TMP - else - cp $makefile $TMP - fi -fi - -CMD="$CC -M $args $files" -if [ X"$makefile" != X- ]; then - CMD="$CMD >> $TMP" -fi -eval $CMD -if [ X"$makefile" != X- ]; then - $RM ${makefile}.bak - $MV $makefile ${makefile}.bak - $MV $TMP $makefile -fi - -$RM ${TMP}* -exit 0 diff --git a/nx-X11/config/util/indir.cmd b/nx-X11/config/util/indir.cmd deleted file mode 100644 index 2c86690..0000000 --- a/nx-X11/config/util/indir.cmd +++ /dev/null @@ -1,28 +0,0 @@ -/* OS/2 rexx script to emulate the "cd dir; command" mechanism in make - * which does not work with stupid CMD.EXE - * - * $XFree86: xc/config/util/indir.cmd,v 3.1 1996/01/24 21:56:12 dawes Exp $ - */ -curdir = directory() -line = fixbadprefix(ARG(1)) -w1 = TRANSLATE(WORD(line,1),'\','/') -new = directory(w1) -/*IF (SUBSTR(w1,1,2) = '..') | (POS(w1,new) > 0) THEN DO*/ - subword(line,2) - old = directory(curdir) -/*END -ELSE DO - say 'Directory 'new' does not exist, ignoring command (nonfatal)' -END*/ -EXIT - -/* somehow make or cmd manages to convert a relative path ..\..\. to ..... */ -fixbadprefix: -count = 1 -str = ARG(1) -DO WHILE SUBSTR(str,count,3) = '...' - count = count+1 - str = INSERT('\',str,count) - count = count+2 -END -RETURN str diff --git a/nx-X11/config/util/install.sh b/nx-X11/config/util/install.sh deleted file mode 100644 index 7b2d40b..0000000 --- a/nx-X11/config/util/install.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/sh - -# -# install - install a program, script, or datafile -# -# $Xorg: install.sh,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ -# -# This script is compatible with the BSD install script, but was written -# from scratch. -# - - -# set DOITPROG to echo to test this script - -doit="${DOITPROG:-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG:-mv}" -cpprog="${CPPROG:-cp}" -chmodprog="${CHMODPROG:-chmod}" -chownprog="${CHOWNPROG:-chown}" -chgrpprog="${CHGRPPROG:-chgrp}" -stripprog="${STRIPPROG:-strip}" -rmprog="${RMPROG:-rm}" - -instcmd="$mvprog" -chmodcmd="" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -src="" -dst="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -fi - -if [ x"$dst" = x ] -then - echo "install: no destination specified" - exit 1 -fi - - -# if destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - -if [ -d $dst ] -then - dst="$dst"/`basename $src` -fi - - -# get rid of the old one and mode the new one in - -$doit $rmcmd $dst -$doit $instcmd $src $dst - - -# and set any options; do chmod last to preserve setuid bits - -if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; fi -if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; fi -if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; fi -if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; fi - -exit 0 diff --git a/nx-X11/config/util/lndir.c b/nx-X11/config/util/lndir.c deleted file mode 100644 index cd1d983..0000000 --- a/nx-X11/config/util/lndir.c +++ /dev/null @@ -1,391 +0,0 @@ -/* $Xorg: lndir.c,v 1.5 2001/02/09 02:03:17 xorgcvs Exp $ */ -/* Create shadow link tree (after X11R4 script of the same name) - Mark Reinhold (mbr@lcs.mit.edu)/3 January 1990 */ - -/* -Copyright (c) 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/config/util/lndir.c,v 3.18 2003/06/24 15:44:45 eich Exp $ */ - -/* From the original /bin/sh script: - - Used to create a copy of the a directory tree that has links for all - non-directories (except, by default, those named BitKeeper, RCS, SCCS - or CVS.adm). If you are building the distribution on more than one - machine, you should use this technique. - - If your master sources are located in /usr/local/src/X and you would like - your link tree to be in /usr/local/src/new-X, do the following: - - % mkdir /usr/local/src/new-X - % cd /usr/local/src/new-X - % lndir ../X -*/ - -#include <X11/Xos.h> -#include <X11/Xfuncproto.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/stat.h> -#if !defined(MINIX) && !defined(Lynx) -#include <sys/param.h> -#endif -#include <errno.h> - -#ifndef X_NOT_POSIX -#include <dirent.h> -#else -#ifdef SYSV -#include <dirent.h> -#else -#ifdef USG -#include <dirent.h> -#else -#include <sys/dir.h> -#ifndef dirent -#define dirent direct -#endif -#endif -#endif -#endif -#ifndef MAXPATHLEN -#define MAXPATHLEN 2048 -#endif - -#include <stdarg.h> - -int silent = 0; /* -silent */ -int ignore_links = 0; /* -ignorelinks */ -int with_revinfo = 0; /* -withrevinfo */ - -char *rcurdir; -char *curdir; - -static void -quit (int code, char * fmt, ...) -{ - va_list args; - va_start(args, fmt); - vfprintf (stderr, fmt, args); - va_end(args); - putc ('\n', stderr); - exit (code); -} - -static void -quiterr (int code, char *s) -{ - perror (s); - exit (code); -} - -static void -msg (char * fmt, ...) -{ - va_list args; - if (curdir) { - fprintf (stderr, "%s:\n", curdir); - curdir = 0; - } - va_start(args, fmt); - vfprintf (stderr, fmt, args); - va_end(args); - putc ('\n', stderr); -} - -static void -mperror (char *s) -{ - if (curdir) { - fprintf (stderr, "%s:\n", curdir); - curdir = 0; - } - perror (s); -} - - -static int -equivalent(char *lname, char *rname, char **p) -{ - char *s; - - if (!strcmp(lname, rname)) - return 1; - for (s = lname; *s && (s = strchr(s, '/')); s++) { - while (s[1] == '/') { - strcpy(s+1, s+2); - if (*p) (*p)--; - } - } - return !strcmp(lname, rname); -} - - -/* Recursively create symbolic links from the current directory to the "from" - directory. Assumes that files described by fs and ts are directories. */ -static int -dodir (char *fn, /* name of "from" directory, either absolute or - relative to cwd */ - struct stat *fs, - struct stat *ts, /* stats for the "from" directory and cwd */ - int rel) /* if true, prepend "../" to fn before using */ -{ - DIR *df; - struct dirent *dp; - char buf[MAXPATHLEN + 1], *p; - char symbuf[MAXPATHLEN + 1]; - char basesym[MAXPATHLEN + 1]; - struct stat sb, sc; - int n_dirs; - int symlen; - int basesymlen = -1; - char *ocurdir; - - if ((fs->st_dev == ts->st_dev) && (fs->st_ino == ts->st_ino)) { - msg ("%s: From and to directories are identical!", fn); - return 1; - } - - if (rel) - strcpy (buf, "../"); - else - buf[0] = '\0'; - strcat (buf, fn); - - if (!(df = opendir (buf))) { - msg ("%s: Cannot opendir", buf); - return 1; - } - - p = buf + strlen (buf); - if (*(p - 1) != '/') - *p++ = '/'; - n_dirs = fs->st_nlink; - while ((dp = readdir (df))) { - if (dp->d_name[strlen(dp->d_name) - 1] == '~') - continue; -#ifdef __DARWIN__ - /* Ignore these Mac OS X Finder data files */ - if (!strcmp(dp->d_name, ".DS_Store") || - !strcmp(dp->d_name, "._.DS_Store")) - continue; -#endif - strcpy (p, dp->d_name); - - if (n_dirs > 0) { - if (lstat (buf, &sb) < 0) { - mperror (buf); - continue; - } - -#ifdef S_ISDIR - if(S_ISDIR(sb.st_mode)) -#else - if ((sb.st_mode & S_IFMT) == S_IFDIR) -#endif - { - /* directory */ - n_dirs--; - if (dp->d_name[0] == '.' && - (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' && - dp->d_name[2] == '\0'))) - continue; - if (!with_revinfo) { - if (!strcmp (dp->d_name, "BitKeeper")) - continue; - if (!strcmp (dp->d_name, "RCS")) - continue; - if (!strcmp (dp->d_name, "SCCS")) - continue; - if (!strcmp (dp->d_name, "CVS")) - continue; - if (!strcmp (dp->d_name, "CVS.adm")) - continue; - if (!strcmp (dp->d_name, ".svn")) - continue; - } - ocurdir = rcurdir; - rcurdir = buf; - curdir = silent ? buf : (char *)0; - if (!silent) - printf ("%s:\n", buf); - if ((stat (dp->d_name, &sc) < 0) && (errno == ENOENT)) { - if (mkdir (dp->d_name, 0777) < 0 || - stat (dp->d_name, &sc) < 0) { - mperror (dp->d_name); - curdir = rcurdir = ocurdir; - continue; - } - } - if (readlink (dp->d_name, symbuf, sizeof(symbuf) - 1) >= 0) { - msg ("%s: is a link instead of a directory", dp->d_name); - curdir = rcurdir = ocurdir; - continue; - } - if (chdir (dp->d_name) < 0) { - mperror (dp->d_name); - curdir = rcurdir = ocurdir; - continue; - } - dodir (buf, &sb, &sc, (buf[0] != '/')); - if (chdir ("..") < 0) - quiterr (1, ".."); - curdir = rcurdir = ocurdir; - continue; - } - } - - /* non-directory */ - symlen = readlink (dp->d_name, symbuf, sizeof(symbuf) - 1); - if (symlen >= 0) - symbuf[symlen] = '\0'; - - /* The option to ignore links exists mostly because - checking for them slows us down by 10-20%. - But it is off by default because this really is a useful check. */ - if (!ignore_links) { - /* see if the file in the base tree was a symlink */ - basesymlen = readlink(buf, basesym, sizeof(basesym) - 1); - if (basesymlen >= 0) - basesym[basesymlen] = '\0'; - } - - if (symlen >= 0) { - /* Link exists in new tree. Print message if it doesn't match. */ - if (!equivalent (basesymlen>=0 ? basesym : buf, symbuf, - basesymlen>=0 ? (char **) 0 : &p)) - msg ("%s: %s", dp->d_name, symbuf); - } else { - char *sympath; - - if (basesymlen>=0) { - if ((buf[0] == '.') && (buf[1] == '.') && (buf[2] == '/') && - (basesym[0] == '.') && (basesym[1] == '.') && - (basesym[2] == '/')) { - /* It becomes very tricky here. We have - ../../bar/foo symlinked to ../xxx/yyy. We - can't just use ../xxx/yyy. We have to use - ../../bar/foo/../xxx/yyy. */ - - int i; - char *start, *end; - - strcpy (symbuf, buf); - /* Find the first char after "../" in symbuf. */ - start = symbuf; - do { - start += 3; - } while ((start[0] == '.') && (start[1] == '.') && - (start[2] == '/')); - - /* Then try to eliminate "../"s in basesym. */ - i = 0; - end = strrchr (symbuf, '/'); - if (start < end) { - do { - i += 3; - end--; - while ((*end != '/') && (end != start)) - end--; - if (end == start) - break; - } while ((basesym[i] == '.') && - (basesym[i + 1] == '.') && - (basesym[i + 2] == '/')); - } - if (*end == '/') - end++; - strcpy (end, &basesym[i]); - sympath = symbuf; - } - else - sympath = basesym; - } - else - sympath = buf; - if (symlink (sympath, dp->d_name) < 0) - mperror (dp->d_name); - } - } - - closedir (df); - return 0; -} - -int -main (int ac, char *av[]) -{ - char *prog_name = av[0]; - char *fn, *tn; - struct stat fs, ts; - - while (++av, --ac) { - if (strcmp(*av, "-silent") == 0) - silent = 1; - else if (strcmp(*av, "-ignorelinks") == 0) - ignore_links = 1; - else if (strcmp(*av, "-withrevinfo") == 0) - with_revinfo = 1; - else if (strcmp(*av, "--") == 0) { - ++av, --ac; - break; - } - else - break; - } - - if (ac < 1 || ac > 2) - quit (1, "usage: %s [-silent] [-ignorelinks] fromdir [todir]", - prog_name); - - fn = av[0]; - if (ac == 2) - tn = av[1]; - else - tn = "."; - - /* to directory */ - if (stat (tn, &ts) < 0) - quiterr (1, tn); -#ifdef S_ISDIR - if (!(S_ISDIR(ts.st_mode))) -#else - if (!(ts.st_mode & S_IFMT) == S_IFDIR) -#endif - quit (2, "%s: Not a directory", tn); - if (chdir (tn) < 0) - quiterr (1, tn); - - /* from directory */ - if (stat (fn, &fs) < 0) - quiterr (1, fn); -#ifdef S_ISDIR - if (!(S_ISDIR(fs.st_mode))) -#else - if (!(fs.st_mode & S_IFMT) == S_IFDIR) -#endif - quit (2, "%s: Not a directory", fn); - - exit (dodir (fn, &fs, &ts, 0)); -} diff --git a/nx-X11/config/util/lndir.man b/nx-X11/config/util/lndir.man deleted file mode 100644 index 244e8a5..0000000 --- a/nx-X11/config/util/lndir.man +++ /dev/null @@ -1,119 +0,0 @@ -.\" $Xorg: lndir.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ -.\" -.\" Copyright (c) 1993, 1994, 1998 The Open Group -.\" -.\" Permission to use, copy, modify, distribute, and sell this software and its -.\" documentation for any purpose is hereby granted without fee, provided that -.\" the above copyright notice appear in all copies and that both that -.\" copyright notice and this permission notice appear in supporting -.\" documentation. -.\" -.\" The above copyright notice and this permission notice shall be -.\" included in all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -.\" IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -.\" OTHER DEALINGS IN THE SOFTWARE. -.\" -.\" Except as contained in this notice, the name of The Open Group shall -.\" not be used in advertising or otherwise to promote the sale, use or -.\" other dealings in this Software without prior written authorization -.\" from The Open Group. -.\" -.\" -.\" $XFree86: xc/config/util/lndir.man,v 1.3tsi Exp $ -.\" -.TH LNDIR 1 __xorgversion__ -.SH NAME -lndir \- create a shadow directory of symbolic links to another directory tree -.SH SYNOPSIS -.B lndir -[ -.B \-silent -] [ -.B \-ignorelinks -] [ -.B \-withrevinfo -] -.I \|fromdir\| -[ -.I todir -] -.SH DESCRIPTION -The -.I lndir -program makes a shadow copy -.I todir -of a directory tree -.I fromdir, -except that the shadow is not -populated with real files but instead with symbolic links pointing at -the real files in the -.I fromdir -directory tree. This is usually useful for maintaining source code for -different machine architectures. You create a shadow directory -containing links to the real source, which you will have usually -mounted from a remote machine. You can build in the shadow tree, and -the object files will be in the shadow directory, while the -source files in the shadow directory are just symlinks to the real -files. -.PP -This scheme has the advantage that if you update the source, you need not -propagate the change to the other architectures by hand, since all -source in all shadow directories are symlinks to the real thing: just cd -to the shadow directory and recompile away. -.PP -The -.I todir -argument is optional and defaults to the current directory. The -.I fromdir -argument may be relative (e.g., ../src) and is relative to -.I todir -(not the current directory). -.PP -.\" CVS.adm is used by the Concurrent Versions System. -Note that BitKeeper, RCS, SCCS, .svn, CVS and CVS.adm directories are -shadowed only if the \fB\-withrevinfo\fP flag is specified. -.PP -If you add files, simply run -.I lndir -again. New files will be silently added. Old files will be -checked that they have the correct link. -.PP -Deleting files is a more painful problem; the symlinks will -just point into never never land. -.PP -If a file in \fIfromdir\fP is a symbolic link, \fIlndir\fP will make -the same link in \fItodir\fP rather than making a link back to the -(symbolic link) entry in \fIfromdir.\fP The \fB\-ignorelinks\fP flag -changes this behavior. -.SH OPTIONS -.IP \-silent -Normally \fIlndir\fP outputs the name of each subdirectory as it -descends into it. The \fB\-silent\fP option suppresses these status -messages. -.IP \-ignorelinks -Causes the program to not treat symbolic links in \fIfromdir\fP -specially. The link created in \fItodir\fP will point back to the -corresponding (symbolic link) file in \fIfromdir\fP. -If the link is to a directory, this is almost certainly the wrong thing. -.IP -This option exists mostly to emulate the behavior the C version of -\fIlndir\fP had in X11R6. Its use is not recommended. -.IP \-withrevinfo -Causes any BitKeeper, RCS, SCCS, .svn, CVS and CVS.adm subdirectories to be -treated as any other directory, rather than ignored. -.SH DIAGNOSTICS -The program displays the name of each subdirectory it enters, followed -by a colon. The \fB\-silent\fP option suppresses these messages. -.PP -A warning message is displayed if the symbolic link cannot be created. -The usual problem is that a regular file of the same name already -exists. -.PP -If the link already exists but doesn't point to the correct file, the -program prints the link name and the location where it does point. diff --git a/nx-X11/config/util/makedef.cmd b/nx-X11/config/util/makedef.cmd deleted file mode 100644 index 9d5d6de..0000000 --- a/nx-X11/config/util/makedef.cmd +++ /dev/null @@ -1,620 +0,0 @@ -/* This is OS/2 REXX */ -/* $XFree86: xc/config/util/makedef.cmd,v 1.4 2003/11/12 00:10:24 dawes Exp $ - * - * This file was taken from Odin32 project, modified to suit - * XFree86 4.x build process and then modified to suit - * the X.org monolithic build process for X11R6.7 - * - * Generate *os2.def linker definition files for OS/2 - */ - -if RxFuncQuery('SysLoadFuncs')=1 THEN -DO - call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'; - call SysLoadFuncs; -END - -/* - * Set default parameter values. - */ -sLibrary = ''; -sDBFile = ''; -sOrdinals = 0; -sASDFeatureId = ''; -sCountryCode = ''; -sDateTime = left(' 'date()' 'time(), 26); -sDescription = 'X.Org 6.9'; -sFixPakVer = ''; -sHostname = strip(substr(VALUE('HOSTNAME',,'OS2ENVIRONMENT'), 1, 11)); -sLanguageCode = ''; -sMiniVer = ''; -sVendor = 'X.Org'; -sVersion = '6.9'; - - -/* - * Parse parameters. - */ -parse arg sArgs -if (sArgs = '') then -do - call syntax; - exit(1); -end - -do while (sArgs <> '') - sArgs = strip(sArgs); - if (substr(sArgs, 1, 1) = '-' | substr(sArgs, 1, 1) = '/') then - do /* - * Option. - */ - ch = translate(substr(sArgs, 2, 1)); - if (pos(ch, 'ACDHLMNOPRTV') < 1) then - do - say 'invalid option:' substr(sArgs, 1, 2); - call syntax; - exit(2); - end - - /* get value and advance sArgs to next or to end. */ - if (substr(sArgs, 3, 1) = '"') then - do - iNext = pos('"', sArgs, 4); - fQuote = 1; - end - else - do - iNext = pos(' ', sArgs, 3); - if (iNext <= 0) then - iNext = length(sArgs); - fQuote = 0; - end - - if (iNext > 3 | ch = 'R') then - do - sValue = substr(sArgs, 3 + fQuote, iNext - 3 - fQuote); - sArgs = strip(substr(sArgs, iNext+1)); - /*say 'iNext:' iNext 'sValue:' sValue 'sArgs:' sArgs; */ - - /* check if we're gonna search for something in an file. */ - if (sValue <> '' & pos('#define=', sValue) > 0) then - sValue = LookupDefine(sValue); - end - else - do - say 'syntax error near' substr(sArgs, 1, 2)'.'; - call syntax; - exit(3); - end - - - /* set value */ - select - when (ch = 'A') then /* ASD Feature Id */ - sASDFeatureId = sValue; - - when (ch = 'C') then /* Country code */ - sCountryCode = sValue; - - when (ch = 'D') then /* Description */ - sDescription = sValue; - - when (ch = 'H') then /* Hostname */ - sHostname = sValue; - - when (ch = 'L') then /* Language code */ - sLanguageCode = sValue; - - when (ch = 'M') then /* MiniVer */ - sMiniVer = sValue; - - when (ch = 'N') then /* Vendor */ - sVendor = sValue; - - when (ch = 'O') then /* Ordinals */ - sOrdinals = 1; - - when (ch = 'R') then /* Vendor */ - sDescription = ReadDescription(sValue, sDefFile); - - when (ch = 'P') then /* Fixpak version */ - sFixPakVer = sValue; - - when (ch = 'T') then /* Date Time */ - sDateTime = sValue; - - when (ch = 'V') then /* Version */ - sVersion = sValue; - - /* Otherwise it's an illegal option */ - otherwise: - say 'invalid option:' substr(sArgs, 1, 2); - call syntax; - exit(2); - end /* select */ - end - else - do /* - * Table file name, typically xc/config/cf/os2def.db - */ - if (sLibrary <> '') then - do - say 'Syntax error: Can''t specify more than two files!'; - exit(4); - end - if (sDBFile = '') then - parse value sArgs with sDBFile' 'sArgs - else - parse value sArgs with sLibrary' 'sArgs - sArgs = strip(sArgs); - end -end - -/* check that a definition file was specified. */ -if (sLibrary = '') then -do - say 'Syntax error: Will have to specify a library stem.'; - call syntax; - exit(5); -end - - -/* - * Trim strings to correct lengths. - */ -sVendor = strip(substr(sVendor, 1, 31)); -if (substr(sDateTime, 1, 1) <> ' ') then - sDateTime = ' ' || sDateTime; -sDateTime = left(sDateTime, 26); -sHostname = strip(substr(sHostname, 1, 11)); -sMiniVer = strip(substr(sMiniVer, 1, 11)); -sDescription = strip(substr(sDescription, 1, 80)); -sCountryCode = strip(substr(sCountryCode, 1, 4)); -sLanguageCode = strip(substr(sLanguageCode, 1, 4)); -sASDFeatureId = strip(substr(sASDFeatureId, 1, 11)); -sFixPakVer = strip(substr(sFixPakVer, 1, 11)); - -/* load database file, only accept lines for the specified sLibrary */ -ordHash.0 = 0 -sRealName = '' -sInitTerm = 0 - -rc = LoadDBFile(sDBFile,sLibrary) - -/* engage gcc to parse the corresponding -def.cpp file */ -'@gcc -E -D__UNIXOS2__ 'sLibrary'-def.cpp >tmpos2.def' - -/* Signature */ -sEnhSign = '##1##' - -/* - * Build description string. - */ -sDescription = '@#'sVendor':'sVersion'#@'sEnhSign||, - sDateTime||sHostname||, - ':'sASDFeatureId':'sLanguageCode':'sCountryCode':'sMiniVer||, - '::'sFixPakVer'@@'sDescription; - -/* - * Update .def-file. - */ -rc = UpdateDefFile(sLibrary,sDescription,sRealName,sOrdinals,sInitTerm); -call SysFileDelete('tmpos2.def') - -exit(rc); - -LoadDBFile: procedure expose ordHash. sRealname sInitTerm - parse arg dbfile,libname; - - rc = stream(dbfile, 'c', 'open read'); - if (pos('READY', rc) <> 1) then - do - say 'error: failed to open 'dbfile; - exit(-1); - end - do while (lines(dbfile) > 0) - line = translate(strip(linein(dbfile)),' ',' '); - if pos(';',line) > 0 then iterate; - if pos('LIBRARY',line) > 0 then do - if word(line,2) = libname then do - sRealname = word(line,3) - if word(line,4) <> '' then - sInitTerm = 1 - end - iterate - end - if word(line,1) = libname then do - name = word(line,2) - ordHash.name = word(line,3) - end - end - rc = stream(dbfile,'c','close') - return rc - -/** - * Display script syntax. - */ -syntax: procedure - say 'Syntax: MakeDef.cmd [options] <dbfile> <libname> [options]' - say ' <dbfile> Ordinals database.' - say ' <libname> Library stem' - say 'Options:' - say ' -A<string> ASD Feature Id.' - say ' -C<string> Country code.' - say ' -D<string> Description.' - say ' -O<string> Ordinals definition file.' - say ' -R[deffile] Read description from .def file.' - say ' -H<string> Hostname.' - say ' -L<string> Language code.' - say ' -M<string> MiniVer.' - say ' -N<string> Vendor.' - say ' -P<string> Fixpak version.' - say ' -T<string> Date Time.' - say ' -V<string> Version.' - say '<string> could be a double quoted string or a single word.' - say ' You could also reference #defines in C/C++ include files.' - say ' The string should then have this form:' - say ' "#define=<DEFINE_NAME>,<includefile.h>"' - say ''; - - return; - - -/** - * Search for a #define in an C/C++ header or source file. - * - * @returns String containing the defined value - * found for the define in the header file. - * Quits on fatal errors. - * @param A string on the form: "#define=DEFINETOFIND,includefile.h" - * @remark Write only code... - let's hope it works. - */ -LookupDefine: procedure - parse arg '#'sDefine'='sMacro','sIncludeFile - - /* - * Validate parameters. - */ - sMacro = strip(sMacro); - sIncludeFile = strip(sIncludeFile); - if (sMacro = '') then - do - say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.'; - say ' <DEFINE_NAME> was empty.'; - exit(-20); - end - if (sIncludeFile = '') then - do - say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.'; - say ' <includefile.h> was empty.'; - exit(-20); - end - - - sIllegal = translate(translate(sMacro),, - '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!',, - 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_'); - - if (strip(translate(sIllegal, ' ', '!')) <> '') then - do - say 'syntax error: #define=<DEFINE_NAME>,<includefile.h>.'; - say ' <DEFINE_NAME> contains illegal charater(s).' - say ' 'sMacro; - say ' 'translate(sIllegal, ' ', '!'); - exit(-20); - end - - /* - * Open include file. - */ - sRc = stream(sIncludeFile, 'c', 'open read'); - if (pos('READY', sRc) <> 1) then - do /* search INCLUDE variable */ - sFile = SysSearchPath('INCLUDE', sIncludeFile); - if (sFile = '') then - do - say 'Can''t find include file 'sIncludeFile'.'; - exit(-20); - end - sIncludeFile = sFile; - - sRc = stream(sIncludeFile, 'c', 'open read'); - if (pos('READY', sRc) <> 1) then - do - say 'Failed to open include file' sIncludeFile'.'; - exit(-20); - end - end - - /* - * Search the file line by line. - * We'll check for lines starting with a hash (#) char. - * Then check that the word after the hash is 'define'. - * Then match the next word with the macro name. - * Then then get the next rest of the line to comment or continuation char. - * (continuation is not supported) - * Finally strip quotes. - */ - sValue = ''; - do while (lines(sIncludeFile) > 0) - sLine = strip(linein(sIncludeFile)); - if (sLine = '') then - iterate; - if (substr(sLine, 1, 1) <> '#') then - iterate; - sLine = substr(sLine, 2); - if (word(sLine, 1) <> 'define') then - iterate; - sLine = strip(substr(sLine, wordpos(sLine, 1) + length('define')+1)); - if ( substr(sLine, 1, length(sMacro)) <> sMacro, - | substr(sLine, length(sMacro)+1, 1) <> ' ') then - iterate; - sLine = strip(substr(sLine, length(sMacro) + 1)); - if (sLine = '') then - do - say 'error: #define' sMacro' is empty.'; - call stream sIncludeFile, 'c', 'close'; - exit(-20); - end - - chQuote = substr(sLine, 1, 1); - if (chQuote = '"' | chQuote = "'") then - do /* quoted string */ - iLastQuote = 0; - do forever - iLast = pos(chQuote, sLine, 2); - if (iLast <= 0) then - leave; - if (substr(sLine, iLast, 1) = '\') then - iterate; - iLastQuote = iLast; - leave; - end - - if (iLastQuote <= 0) then - do - say 'C/C++ syntax error in 'sIncludefile': didn''t find end quote.'; - call stream sIncludeFile, 'c', 'close'; - exit(-20); - end - - call stream sIncludeFile, 'c', 'close'; - sValue = substr(sLine, 2, iLastQuote - 2); - say 'Found 'sMacro'='sValue; - return sValue; - end - else - do - iCommentCPP = pos('//',sLine); - iCommentC = pos('/*',sLine); - if (iCommentC > 0 & iCommentCPP > 0 & iCommentC > iCommentCPP) then - iComment = iCommentCPP; - else if (iCommentC > 0 & iCommentCPP > 0 & iCommentC < iCommentCPP) then - iComment = iCommentC; - else if (iCommentCPP > 0) then - iComment = iCommentCPP; - else if (iCommentC > 0) then - iComment = iCommentC; - else - iComment = 0; - - if (iComment > 0) then - sValue = strip(substr(sLine, 1, iComment-1)); - else - sValue = strip(sLine); - - if (sValue <> '') then - do - if (substr(sValue, length(sValue)) = '\') then - do - say 'Found continuation char: Multiline definitions are not supported!\n'; - call stream sIncludeFile, 'c', 'close'; - exit(-20); - end - end - - if (sValue = '') then - say 'warning: The #define has no value.'; - - call stream sIncludeFile, 'c', 'close'; - say 'Found 'sMacro'='sValue; - return sValue; - end - end - - call stream sIncludeFile, 'c', 'close'; - say 'error: didn''t find #define' sMacro'.'; - exit(-20); - - - -/** - * Reads the description line for a .def-file. - * @returns The Description string, with quotes removed. - * Empty string is acceptable. - * On error we'll terminate the script. - * @param sDefFile Filename of .def-file to read the description from. - * @param sDefFile2 Used if sDefFile is empty. - * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no) - */ -ReadDescription: procedure; - parse arg sDefFile, sDefFile2 - - /* - * Validate parameters. - */ - if (sDefFile = '') then - sDefFile = sDefFile2; - if (sDefFile = '') then - do - say 'error: no definition file to get description from.' - exit(-1); - end - - /* - * Open file - */ - rc = stream(sDefFile, 'c', 'open read'); - if (pos('READY', rc) <> 1) then - do - say 'error: failed to open deffile file.'; - exit(-1); - end - - - /* - * Search for the 'DESCRIPTION' line. - */ - do while (lines(sDefFile) > 0) - sLine = strip(linein(sDefFile)); - if (sLine = '') then - iterate; - if (translate(word(sLine, 1)) <> 'DESCRIPTION') then - iterate; - sLine = strip(substr(sLine, wordpos(sLine, 1) + length('DESCRIPTION')+1)); - - ch = substr(sLine, 1, 1); - if (ch <> "'" & ch <> '"') then - do - say 'syntax error: description line in' sDefFile 'is misformed.'; - call stream sDefFile, 'c', 'close'; - exit(-10); - end - - iEnd = pos(ch, sLine, 2); - if (iEnd <= 0) then - do - say 'syntax error: description line in' sDefFile 'is misformed.'; - call stream sDefFile, 'c', 'close'; - exit(-10); - end - - call stream sDefFile, 'c', 'close'; - sValue = substr(sLine, 2, iEnd - 2); - say 'Found Description:' sValue; - return sValue; - end - - call stream sDefFile, 'c', 'close'; - say 'info: Didn''t find description line in' sDefFile'.'; - return ''; - -AddCodeDataSection: procedure - parse arg outfile; - call lineout outfile,"CODE PRELOAD"; - call lineout outfile,"DATA MULTIPLE NONSHARED"; - return ''; - -findOrdinal: procedure expose ordHash. - parse arg line,sOrdinal; - line = strip(line,,' '); - line = word(translate(strip(line),' ','='),1) - if (sOrdinal) then do - ordinal = ordHash.line; - if (ordinal = 'ORDHASH.'line) then do - say 'Oops: DB lacks ordinal for symbol "'line'" Create one!' - return ' 'line - end - else - return ' 'line' @ 'ordinal - end - else - return ' 'line -/** - * This is a function which reads sLibrary into an - * internal array and changes the DESCRIPTION text if found. - * If DESCRIPTION isn't found, it is added at the end. - * The array is written to sDBFile. - * @returns 0 on succes. - * Errorcode on error. - * @param sLibrary library stem - * @param sDescription New description string. - * @param sRealname real 8.3 name of library - * @param sOrdinals flag to denote generation of ordinals - * @param sInitTerm flag to denote adding INITINSTANCE/TERM... qualifiers - * @author knut st. osmundsen (knut.stange.osmundsen@mynd.no) - * @author heavily modified by Platon & Holger - */ -UpdateDefFile: procedure expose ordHash.; - parse arg sLibrary, sDescription, sRealname, sOrdinals, sInitTerm - - initterm = '' - if sInitTerm = 1 then initterm = 'INITINSTANCE TERMINSTANCE' - - /* Open input file. */ - infile = 'tmpos2.def' - rc = stream(infile, 'c', 'open read'); - if (pos('READY', rc) <> 1) then do - say 'error: failed to open' infile 'file.'; - return 110; - end - /* open output file. */ - if sOrdinals = 1 then - outfile = sLibrary'o_os2.def' - else - outfile = sLibrary'os2.def' - call SysFileDelete(outfile) - rc = stream(outfile, 'c', 'open write'); - if (pos('READY', rc) <> 1) then do - say 'error: failed to open outputfile' outfile 'file.'; - return 110; - end - call lineout outfile, '; Created by makedef.cmd on' date() time()'. Do not edit.', 1; - - /* - * Search for the specific lines. - */ - fDescription = 0; - fExports = 0; - fWinLib = 0; - do while (lines(infile) > 0) - line = strip(linein(infile)); - line = strip(line,,' '); - if line = '' then iterate; - if pos('#',line) = 1 then iterate; - if pos(';',line) = 1 then iterate; - if pos('/*',line) = 1 then iterate; - - firstsym = translate(word(line,1)) - if firstsym = 'LIBRARY' then do - call lineout outfile,'LIBRARY 'sRealName' 'initterm - iterate - end - if firstsym = 'VERSION' then do - call lineout outfile, 'DESCRIPTION "'sDescription sLibrary'"' - fDescription = 1; - AddCodeDataSection(outfile); - end - if (firstsym = 'EXPORTS') then do - call lineout outfile,'EXPORTS' - fExports = 1; - iterate; - end - if (fExports) then do - call lineout outfile, findOrdinal(line,sOrdinals); - iterate; - end - end - - /* - * Add description is none was found. - */ - if (\fDescription) then - do - call lineout outfile,"DESCRIPTION '"||sDescription sLibrary||"'"; - AddCodeDataSection(outfile); - end - - /* - * Close input file and open output file. - */ - call stream outfile, 'c', 'close'; - call stream infile, 'c', 'close'; - if sOrdinals = 1 then do - call SysFileDelete('dll.name'); - call stream 'dll.name', 'c', 'open write'; - call charout 'dll.name', sRealName".dll"; - call stream 'dll.name', 'c'. 'close'; - end - return 0; - diff --git a/nx-X11/config/util/makeg.man b/nx-X11/config/util/makeg.man deleted file mode 100644 index 815031d..0000000 --- a/nx-X11/config/util/makeg.man +++ /dev/null @@ -1,64 +0,0 @@ -.\" $Xorg: makeg.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ -.\" Copyright (c) 1996, 1998 The Open Group -.\" -.\" Permission to use, copy, modify, distribute, and sell this software and its -.\" documentation for any purpose is hereby granted without fee, provided that -.\" the above copyright notice appear in all copies and that both that -.\" copyright notice and this permission notice appear in supporting -.\" documentation. -.\" -.\" The above copyright notice and this permission notice shall be -.\" included in all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -.\" IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -.\" OTHER DEALINGS IN THE SOFTWARE. -.\" -.\" Except as contained in this notice, the name of The Open Group shall -.\" not be used in advertising or otherwise to promote the sale, use or -.\" other dealings in this Software without prior written authorization -.\" from The Open Group. -.\" -.\" -.\" $XFree86: xc/config/util/makeg.man,v 1.2 2001/01/27 18:19:55 dawes Exp $ -.\" -.TH MAKEG 1 __xorgversion__ -.SH NAME -makeg \- make a debuggable executable -.SH SYNOPSIS -.B makeg -[ -.I make-options .\|.\|. -] [ -.I targets .\|.\|. -] -.SH DESCRIPTION -The -.I makeg -script runs -.I make, -passing it variable settings to create a debuggable target when used -with a Makefile generated by -.I imake. -For example, it arranges for the C compiler to be called with the -.B \-g -option. -.SH ENVIRONMENT -.TP 8 -.B MAKE -The -.I make -program to use. Default ``make''. -.TP 8 -.B GDB -Set to a non-null value if using the -.I gdb -debugger on Solaris 2, which requires additional debugging options to -be passed to the compiler. -.SH "SEE ALSO" -.I make (1), -.I imake (1) diff --git a/nx-X11/config/util/makeg.sh b/nx-X11/config/util/makeg.sh deleted file mode 100644 index 38be8c9..0000000 --- a/nx-X11/config/util/makeg.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/sh -# makeg - run "make" with options necessary to make a debuggable executable -# $Xorg: makeg.sh,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ - -# set GDB=1 in your environment if using gdb on Solaris 2. - -make="${MAKE-make}" -flags="CDEBUGFLAGS=-g CXXDEBUGFLAGS=-g" - -# gdb on Solaris needs the stabs included in the executable -test "${GDB+yes}" = yes && flags="$flags -xs" - -exec "$make" $flags LDSTRIPFLAGS= ${1+"$@"} diff --git a/nx-X11/config/util/makestrs.c b/nx-X11/config/util/makestrs.c deleted file mode 100644 index af4b696..0000000 --- a/nx-X11/config/util/makestrs.c +++ /dev/null @@ -1,752 +0,0 @@ -/* $XdotOrg: xc/config/util/makestrs.c,v 1.4 2005/05/24 15:58:51 ago Exp $ */ - -/* - -Copyright (c) 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/config/util/makestrs.c,v 3.6 2001/07/25 15:04:41 dawes Exp $ */ - -/* Constructs string definitions */ - -#include <stdio.h> -#include <X11/Xos.h> -#include <stdlib.h> -#include <unistd.h> -#if defined(macII) && !defined(__STDC__) /* stdlib.h fails to define these */ -char *malloc(); -#endif /* macII */ - -typedef struct _TableEnt { - struct _TableEnt* next; - char* left; - char* right; - int offset; -} TableEnt; - -typedef struct _Table { - struct _Table* next; - TableEnt* tableent; - TableEnt* tableentcurrent; - TableEnt** tableenttail; - char* name; - int offset; -} Table; - -typedef struct _File { - struct _File* next; - FILE* tmpl; - char* name; - Table* table; - Table* tablecurrent; - Table** tabletail; -} File; - -static File* file = NULL; -static File* filecurrent = NULL; -static File** filetail = &file; -static char* conststr; -static char* prefixstr = NULL; -static char* featurestr = NULL; -static char* ctmplstr = NULL; -static char* fileprotstr; -static char* externrefstr; -static char* externdefstr; - -#ifndef FALSE -# define FALSE 0 -# define TRUE !(FALSE) -#endif - -static int solaris_abi_names = FALSE; - -#define X_DEFAULT_ABI 0 -#define X_ARRAYPER_ABI 1 -#define X_INTEL_ABI 2 -#define X_INTEL_ABI_BC 3 -#define X_SPARC_ABI 4 -#define X_FUNCTION_ABI 5 - -#define X_MAGIC_STRING "<<<STRING_TABLE_GOES_HERE>>>" - -/* Wrapper for fopen() - * Prepend filename with an includedir which can be specified on the - * commandline. Needed to separate source and build directories. - */ -static char* includedir = NULL; -static FILE *ifopen(const char *file, const char *mode) -{ - size_t len; - char *buffer; - FILE *ret; - - if (includedir == NULL) - return fopen(file, mode); - - len = strlen(file) + strlen(includedir) + 1; - buffer = (char*)malloc(len + 1); - if (buffer == NULL) - return NULL; - - strcpy(buffer, includedir); - strcat(buffer, "/"); - strcat(buffer, file); - - ret = fopen(buffer, mode); - - free(buffer); - return ret; -} - -static void WriteHeaderProlog (FILE *f, File *phile) -{ - Table* t; - TableEnt* te; - - (void) fprintf (f, "#ifdef %s\n", featurestr); - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) { - if (strcmp (te->left, "RAtom") == 0) { - (void) fprintf (f, - "#ifndef %s%s\n#define %s%s \"%s\"\n#endif\n", - prefixstr, te->left, prefixstr, te->left, te->right); - } else { - (void) fprintf (f, - "#define %s%s \"%s\"\n", - prefixstr, te->left, te->right); - } - } - (void) fprintf (f, "%s", "#else\n"); -} - -static void IntelABIWriteHeader (FILE *f, File *phile) -{ - Table* t; - TableEnt* te; - - WriteHeaderProlog (f, phile); - - for (t = phile->table; t; t = t->next) { - (void) fprintf (f, "%s %sConst char %s[];\n", - externrefstr, conststr ? conststr : fileprotstr, t->name); - for (te = t->tableent; te; te = te->next) - (void) fprintf (f, - "#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n", - prefixstr, te->left, prefixstr, te->left, t->name, te->offset); - } - - (void) fprintf (f, "#endif /* %s */\n", featurestr); -} - -static void SPARCABIWriteHeader (FILE *f, File *phile) -{ - Table* t; - TableEnt* te; - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) - (void) fprintf (f, "#define %s%s \"%s\"\n", - prefixstr, te->left, te->right); -} - -static void FunctionWriteHeader (FILE *f, File *phile) -{ - Table* t; - TableEnt* te; - - WriteHeaderProlog (f, phile); - - (void) fprintf (f, "%s %sConst char* %s();\n", - externrefstr, conststr ? conststr : fileprotstr, - phile->table->name); - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) - (void) fprintf (f, - "#ifndef %s%s\n#define %s%s (%s(%d))\n#endif\n", - prefixstr, te->left, prefixstr, te->left, phile->table->name, - te->offset); - - (void) fprintf (f, "#endif /* %s */\n", featurestr); -} - -static void ArrayperWriteHeader (FILE *f, File *phile) -{ - Table* t; - TableEnt* te; - - WriteHeaderProlog (f, phile); - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) - (void) fprintf (f, - "#ifndef %s%s\n%s %sConst char %s%s[];\n#endif\n", - prefixstr, te->left, - externrefstr, conststr ? conststr : fileprotstr, - prefixstr, te->left); - - (void) fprintf (f, "#endif /* %s */\n", featurestr); -} - -static void DefaultWriteHeader (FILE *f, File *phile) -{ - Table* t; - TableEnt* te; - - WriteHeaderProlog (f, phile); - - (void) fprintf (f, "%s %sConst char %s[];\n", - externrefstr, conststr ? conststr : fileprotstr, - phile->table->name); - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) - (void) fprintf (f, - "#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n", - prefixstr, te->left, prefixstr, te->left, phile->table->name, - te->offset); - - (void) fprintf (f, "#endif /* %s */\n", featurestr); -} - -static void CopyTmplProlog (FILE *tmpl, FILE *f) -{ - char buf[1024]; - static char* magic_string = X_MAGIC_STRING; - int magic_string_len = strlen (magic_string); - - while (fgets (buf, sizeof buf, tmpl)) { - if (strncmp (buf, magic_string, magic_string_len) == 0) { - return; - } - (void) fputs (buf, f); - } -} - -static void CopyTmplEpilog (FILE *tmpl, FILE *f) -{ - char buf[1024]; - - while (fgets (buf, sizeof buf, tmpl)) - (void) fputs (buf, f); -} - -static char* abistring[] = { - "Default", "Array per string", "Intel", "Intel BC", "SPARC", "Function" }; - -static void WriteHeader (char *tagline, File *phile, int abi) -{ - FILE* f; - char* tmp; - static void (*headerproc[])(FILE *f, File *phile) = { - DefaultWriteHeader, ArrayperWriteHeader, - IntelABIWriteHeader, IntelABIWriteHeader, - SPARCABIWriteHeader, FunctionWriteHeader }; - - if ((f = fopen (phile->name, "w+")) == NULL) exit (1); - - if (phile->tmpl) CopyTmplProlog (phile->tmpl, f); - - (void) fprintf (f, - "%s\n%s\n/* %s ABI version -- Do not edit */\n", - "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */", - "/* This file is automatically generated. */", - abistring[abi]); - - if (tagline) (void) fprintf (f, "/* %s */\n\n", tagline); - - /* do the right thing for Motif, i.e. avoid _XmXmStrDefs_h_ */ - if (strcmp (prefixstr, "Xm") == 0) { - if ((fileprotstr = malloc (strlen (phile->name) + 3)) == NULL) - exit (1); - (void) sprintf (fileprotstr, "_%s_", phile->name); - } else { - if ((fileprotstr = malloc (strlen (phile->name) + strlen (prefixstr) + 3)) == NULL) - exit (1); - (void) sprintf (fileprotstr, "_%s%s_", prefixstr, phile->name); - } - - for (tmp = fileprotstr; *tmp; tmp++) if (*tmp == '.') *tmp = '_'; - - (*headerproc[abi])(f, phile); - - if (phile->tmpl) CopyTmplEpilog (phile->tmpl, f); - - (void) free (fileprotstr); - (void) fclose (phile->tmpl); - (void) fclose (f); -} - -static void WriteSourceLine (TableEnt *te, int abi, int fudge) -{ - char* c; - - for (c = te->right; *c; c++) (void) printf ("'%c',", *c); - (void) printf ("%c", '0'); - if (te->next || fudge) (void) printf ("%c", ','); - (void) printf ("%s", "\n"); -} - -static char* const_string = "%s %sConst char %s[] = {\n"; - -static void IntelABIWriteSource (int abi) -{ - File* phile; - - for (phile = file; phile; phile = phile->next) { - Table* t; - TableEnt* te; - - for (t = phile->table; t; t = t->next) { - (void) printf (const_string, externdefstr, - conststr ? conststr : "", t->name); - for (te = t->tableent; te; te = te->next) - WriteSourceLine (te, abi, 0); - (void) printf ("%s\n\n", "};"); - } - } -} - -static void IntelABIBCWriteSource (int abi) -{ - File* phile; - - for (phile = file; phile; phile = phile->next) { - Table* t; - TableEnt* te; - - (void) printf (const_string, externdefstr, - conststr ? conststr : "", phile->table->name); - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) - WriteSourceLine (te, abi, t->next ? 1 : 0); - (void) printf ("%s\n\n", "};"); - - if (phile->table->next) { - (void) printf (const_string, externdefstr, - conststr ? conststr : "", phile->table->next->name); - for (t = phile->table->next; t; t = t->next) - for (te = t->tableent; te; te = te->next) - WriteSourceLine (te, abi, 0); - (void) printf ("%s\n\n", "};"); - } - } -} - -static void FunctionWriteSource (int abi) -{ - File* phile; - - for (phile = file; phile; phile = phile->next) { - Table* t; - TableEnt* te; - - (void) printf ("static %sConst char _%s[] = {\n", - conststr ? conststr : "", phile->table->name); - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) - WriteSourceLine (te, abi, t->next ? 1 : 0); - (void) printf ("%s\n\n", "};"); - - (void) printf ("%sConst char* %s(index)\n int index;\n{\n return &_%s[index];\n}\n\n", - conststr ? conststr : "", - phile->table->name, phile->table->name); - } -} - -static void ArrayperWriteSource (int abi) -{ - File* phile; - static int done_atom; - - for (phile = file; phile; phile = phile->next) { - Table* t; - TableEnt* te; - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) { - if (strcmp (te->left, "RAtom") == 0) { - if (done_atom) return; - done_atom = 1; - } - (void) printf ("%s %sConst char %s%s[] = \"%s\";\n", - externdefstr, conststr ? conststr : "", - prefixstr, - te->left, te->right); - } - } -} - -static void DefaultWriteSource (int abi) -{ - File* phile; - - for (phile = file; phile; phile = phile->next) { - Table* t; - TableEnt* te; - - (void) printf (const_string, externdefstr, conststr ? conststr : "", - phile->table->name); - - for (t = phile->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) - WriteSourceLine (te, abi, t->next ? 1 : 0); - (void) printf ("%s\n\n", "};"); - } -} - -static void WriteSource(char *tagline, int abi) -{ - static void (*sourceproc[])(int) = { - DefaultWriteSource, ArrayperWriteSource, - IntelABIWriteSource, IntelABIBCWriteSource, - DefaultWriteSource, FunctionWriteSource }; - - FILE* tmpl; - - if (ctmplstr) { - tmpl = ifopen (ctmplstr, "r"); - - if (tmpl) CopyTmplProlog (tmpl, stdout); - else { - (void) fprintf (stderr, "Expected template %s, not found\n", - ctmplstr); - exit (1); - } - } else - tmpl = NULL; - - - (void) printf ("%s\n%s\n/* %s ABI version -- Do not edit */\n", - "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */", - "/* This file is automatically generated. */", - abistring[abi]); - - if (tagline) (void) printf ("/* %s */\n\n", tagline); - - (*sourceproc[abi])(abi); - - if (tmpl) CopyTmplEpilog (tmpl, stdout); -} - -static void DoLine(char *buf) -{ -#define X_NO_TOKEN 0 -#define X_FILE_TOKEN 1 -#define X_TABLE_TOKEN 2 -#define X_PREFIX_TOKEN 3 -#define X_FEATURE_TOKEN 4 -#define X_EXTERNREF_TOKEN 5 -#define X_EXTERNDEF_TOKEN 6 -#define X_CTMPL_TOKEN 7 -#define X_HTMPL_TOKEN 8 -#define X_CONST_TOKEN 9 - - int token; - char lbuf[1024]; - static char* file_str = "#file"; - static char* table_str = "#table"; - static char* prefix_str = "#prefix"; - static char* feature_str = "#feature"; - static char* externref_str = "#externref"; - static char* externdef_str = "#externdef"; - static char* ctmpl_str = "#ctmpl"; - static char* htmpl_str = "#htmpl"; - static char* const_str = "#const"; - - if (strncmp (buf, file_str, strlen (file_str)) == 0) - token = X_FILE_TOKEN; - else if (strncmp (buf, table_str, strlen (table_str)) == 0) - token = X_TABLE_TOKEN; - else if (strncmp (buf, prefix_str, strlen (prefix_str)) == 0) - token = X_PREFIX_TOKEN; - else if (strncmp (buf, feature_str, strlen (feature_str)) == 0) - token = X_FEATURE_TOKEN; - else if (strncmp (buf, externref_str, strlen (externref_str)) == 0) - token = X_EXTERNREF_TOKEN; - else if (strncmp (buf, externdef_str, strlen (externdef_str)) == 0) - token = X_EXTERNDEF_TOKEN; - else if (strncmp (buf, ctmpl_str, strlen (ctmpl_str)) == 0) - token = X_CTMPL_TOKEN; - else if (strncmp (buf, htmpl_str, strlen (htmpl_str)) == 0) - token = X_HTMPL_TOKEN; - else if (strncmp (buf, const_str, strlen (const_str)) == 0) - token = X_CONST_TOKEN; - else - token = X_NO_TOKEN; - - switch (token) { - case X_FILE_TOKEN: - { - File* phile; - - if ((phile = (File*) malloc (sizeof(File))) == NULL) - exit(1); - if ((phile->name = malloc (strlen (buf + strlen (file_str)) + 1)) == NULL) - exit(1); - (void) strcpy (phile->name, buf + strlen (file_str) + 1); - phile->table = NULL; - phile->tablecurrent = NULL; - phile->tabletail = &phile->table; - phile->next = NULL; - phile->tmpl = NULL; - - *filetail = phile; - filetail = &phile->next; - filecurrent = phile; - } - break; - case X_TABLE_TOKEN: - { - Table* table; - if ((table = (Table*) malloc (sizeof(Table))) == NULL) - exit(1); - if ((table->name = malloc (strlen (buf + strlen (table_str)) + 1)) == NULL) - exit(1); - (void) strcpy (table->name, buf + strlen (table_str) + 1); - if (solaris_abi_names) { - if (strcmp(table->name, "XtStringsR6") == 0) { - strcpy(table->name, "XtR6Strings"); - } else if (strcmp(table->name, "XtShellStringsR6") == 0) { - strcpy(table->name, "XtR6ShellStrings"); - } - } - table->tableent = NULL; - table->tableentcurrent = NULL; - table->tableenttail = &table->tableent; - table->next = NULL; - table->offset = 0; - - *filecurrent->tabletail = table; - filecurrent->tabletail = &table->next; - filecurrent->tablecurrent = table; - } - break; - case X_PREFIX_TOKEN: - if ((prefixstr = malloc (strlen (buf + strlen (prefix_str)) + 1)) == NULL) - exit(1); - (void) strcpy (prefixstr, buf + strlen (prefix_str) + 1); - break; - case X_FEATURE_TOKEN: - if ((featurestr = malloc (strlen (buf + strlen (feature_str)) + 1)) == NULL) - exit(1); - (void) strcpy (featurestr, buf + strlen (feature_str) + 1); - break; - case X_EXTERNREF_TOKEN: - if ((externrefstr = malloc (strlen (buf + strlen (externref_str)) + 1)) == NULL) - exit(1); - (void) strcpy (externrefstr, buf + strlen (externref_str) + 1); - break; - case X_EXTERNDEF_TOKEN: - if ((externdefstr = malloc (strlen (buf + strlen (externdef_str)) + 1)) == NULL) - exit(1); - (void) strcpy (externdefstr, buf + strlen (externdef_str) + 1); - break; - case X_CTMPL_TOKEN: - if ((ctmplstr = malloc (strlen (buf + strlen (ctmpl_str)) + 1)) == NULL) - exit(1); - (void) strcpy (ctmplstr, buf + strlen (ctmpl_str) + 1); - break; - case X_HTMPL_TOKEN: - if ((filecurrent->tmpl = ifopen (buf + strlen (htmpl_str) + 1, "r")) == NULL) { - (void) fprintf (stderr, - "Expected template %s, not found\n", htmpl_str); - exit (1); - } - break; - case X_CONST_TOKEN: - if ((conststr = malloc (strlen (buf + strlen (const_str)) + 1)) == NULL) - exit(1); - (void) strcpy (conststr, buf + strlen (const_str) + 1); - break; - default: - { - char* right; - TableEnt* tableent; - int llen; - int rlen; - int len; - - if ((right = index(buf, ' '))) - *right++ = 0; - else - right = buf + 1; - if (buf[0] == 'H') { - strcpy (lbuf, prefixstr); - strcat (lbuf, right); - right = lbuf; - } - - llen = len = strlen(buf) + 1; - rlen = strlen(right) + 1; - if (right != buf + 1) len += rlen; - if ((tableent = (TableEnt*)malloc(sizeof(TableEnt) + len)) == NULL) - exit(1); - tableent->left = (char *)(tableent + 1); - strcpy(tableent->left, buf); - if (llen != len) { - tableent->right = tableent->left + llen; - strcpy(tableent->right, right); - } else { - tableent->right = tableent->left + 1; - } - tableent->next = NULL; - - *filecurrent->tablecurrent->tableenttail = tableent; - filecurrent->tablecurrent->tableenttail = &tableent->next; - filecurrent->tablecurrent->tableentcurrent = tableent; - } - break; - } -} - -static void IntelABIIndexEntries (File *file) -{ - Table* t; - TableEnt* te; - - for (t = file->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) { - te->offset = t->offset; - t->offset += strlen (te->right); - t->offset++; - } -} - -static void DefaultIndexEntries (File *file) -{ - Table* t; - TableEnt* te; - int offset = 0; - - for (t = file->table; t; t = t->next) - for (te = t->tableent; te; te = te->next) { - te->offset = offset; - offset += strlen (te->right); - offset++; - } -} - -static void IndexEntries (File *file, int abi) -{ - switch (abi) { - case X_SPARC_ABI: - break; - case X_INTEL_ABI: - case X_INTEL_ABI_BC: - IntelABIIndexEntries (file); - break; - default: - DefaultIndexEntries (file); - break; - } -} - -static char* DoComment (char *line) -{ - char* tag; - char* eol; - char* ret; - int len; - - /* assume that the first line with two '$' in it is the RCS tag line */ - if ((tag = index (line, '$')) == NULL) return NULL; - if ((eol = index (tag + 1, '$')) == NULL) return NULL; - len = eol - tag; - if ((ret = malloc (len)) == NULL) - exit (1); - (void) strncpy (ret, tag + 1, len - 1); - ret[len - 2] = 0; - return ret; -} - -int main(int argc, char *argv[]) -{ - int len, i; - char* tagline = NULL; - File* phile; - FILE *f; - char buf[1024]; - int abi = -#ifndef ARRAYPERSTR - X_DEFAULT_ABI; -#else - X_ARRAYPER_ABI; -#endif - - f = stdin; - if (argc > 1) { - for (i = 1; i < argc; i++) { - if (strcmp (argv[i], "-f") == 0) { - if (++i < argc) - f = fopen (argv[i], "r"); - else - return 1; - } - if (strcmp (argv[i], "-i") == 0) { - if (++i < argc) - includedir = argv[i]; - else - return 1; - } - if (strcmp (argv[i], "-sparcabi") == 0) - abi = X_SPARC_ABI; - if (strcmp (argv[i], "-intelabi") == 0) - abi = X_INTEL_ABI; - if (strcmp (argv[i], "-functionabi") == 0) - abi = X_FUNCTION_ABI; - if (strcmp (argv[i], "-earlyR6bc") == 0 && abi == X_INTEL_ABI) - abi = X_INTEL_ABI_BC; - if (strcmp (argv[i], "-arrayperabi") == 0) - abi = X_ARRAYPER_ABI; -#ifdef ARRAYPERSTR - if (strcmp (argv[i], "-defaultabi") == 0) - abi = X_DEFAULT_ABI; -#endif - if (strcmp (argv[i], "-solarisabinames") == 0) - solaris_abi_names = TRUE; - } - } - - if (f == NULL) return 1; - while (fgets(buf, sizeof buf, f)) { - if (!buf[0] || buf[0] == '\n') - continue; - if (buf[0] == '!') { - if (tagline) continue; - tagline = DoComment (buf); - continue; - } - if (buf[(len = strlen (buf) - 1)] == '\n') buf[len] = '\0'; - DoLine(buf); - } - for (phile = file; phile; phile = phile->next) { - if (abi != X_ARRAYPER_ABI) IndexEntries (phile, abi); - WriteHeader (tagline, phile, abi); - } - WriteSource(tagline, abi); - return 0; -} - diff --git a/nx-X11/config/util/makestrs.man b/nx-X11/config/util/makestrs.man deleted file mode 100644 index cd96841..0000000 --- a/nx-X11/config/util/makestrs.man +++ /dev/null @@ -1,219 +0,0 @@ -.\" $Xorg: makestrs.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ -.\" Copyright (c) 1993, 1994, 1998 The Open Group -.\" -.\" Permission to use, copy, modify, distribute, and sell this software and its -.\" documentation for any purpose is hereby granted without fee, provided that -.\" the above copyright notice appear in all copies and that both that -.\" copyright notice and this permission notice appear in supporting -.\" documentation. -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -.\" SOFTWARE. -.\" -.\" Except as contained in this notice, the name of The Open Group shall not -.\" be used in advertising or otherwise to promote the sale, use or other -.\" dealing in this Software without prior written authorization from The -.\" Open Group. -.\" -.\" $XFree86: xc/config/util/makestrs.man,v 3.8 2001/12/14 19:53:22 dawes Exp $ -.\" -.TH MAKESTRS 1 __xorgversion__ -.SH NAME -makestrs \- makes string table C source and header(s) -.SH SYNOPSIS -.B makestrs [-f source] [-i includedir] [-abioptions ...] -.SH DESCRIPTION -The -.I makestrs -command creates string table C source files and headers. -If -.I -f -.I source -is not specified -.I makestrs -will read from -.I stdin. -The C source file is always written to -.I stdout. -.I makestrs -creates one or more C header files as specified in the source file. -The following options may be specified: -.I -sparcabi, -.I -intelabi, -.I -functionabi, -.I -arrayperabi, -and -.I -defaultabi. -.LP -.I -sparcabi -is used on SPARC platforms conforming to the SPARC -Compliance Definition, i.e. SVR4/Solaris. -.LP -.I -intelabi -is used on Intel platforms conforming to the System -V Application Binary Interface, i.e. SVR4. -.LP -.I -earlyR6abi -may be used in addition to -.I -intelabi -for situations -where the vendor wishes to maintain binary compatibility between -X11R6 public-patch 11 (and earlier) and X11R6 public-patch 12 (and later). -.LP -.I -functionabi -generates a functional abi to the string table. This -mechanism imposes a severe performance penalty and it's recommended -that you not use it. -.LP -.I -arrayperabi -results in a separate array for each string. This is -the default behavior if makestrs was compiled with -DARRAYPERSTR -(it almost never is). -.LP -.I -defaultabi -forces the generation of the "normal" string table even -if makestrs was compiled with -DARRAYPERSTR. Since makestrs is almost -never compiled with -DARRAYPERSTR this is the default behavior if -no abioptions are specified. -.LP -.I -i includedir -forces the reading of templates from the includedir instead of the local -directory. This is useful to have separate source and build directories. -.SH SYNTAX -The syntax for string-list file is (items in square brackets are optional): -.RS 4 -\prefix <text> -.RE -.RS 4 -\feature <text> -.RE -.RS 4 -\externref <text> -.RE -.RS 4 -\externdef [<text>] -.RE -.RS 4 -[#ctempl <text>] -.RE -.LP -.RS 4 -\file <filename> -.RE -.RS 4 -\table <tablename> -.RE -.RS 4 -[#htempl] -.RE -.RS 4 -<text> -.RE -.RS 4 -... -.RE -.RS 4 -<text> -.RE -.RS 4 -[#table <tablename> -.RE -.RS 4 -<text> -.RE -.RS 4 -... -.RE -.RS 4 -<text> -.RE -.RS 4 - ... -.RE -.RS 4 -\table <tablename> -.RE -.RS 4 - ...] -.RE -.RS 4 -[#file <filename> -.RE -.RS 4 - ...] -.RE -.LP -In words you may have one or more #file directives. Each #file may have -one or more #table directives. -.LP -The #prefix directive determines the string that makestr will prefix -to each definition. -.LP -The #feature directive determines the string that makestr will use -for the feature-test macro, e.g. X[TM]STRINGDEFINES. -.LP -The #externref directive determines the string that makestr will use -for the extern clause, typically this will be "extern" but Motif wants -it to be "externalref" -.LP -The #externdef directive determines the string that makestr will use -for the declaration, typically this will be the null string (note that -makestrs requires a trailing space in this case, i.e. "#externdef "), -and Motif will use "externaldef(_xmstrings). -.LP -The #ctmpl directive determines the name of the file used as a template -for the C source file that is generated -.LP -Each #file <filename> directive will result in a corresponding header -file by that name containing the appropriate definitions as specified -by command line options. A single C source file containing the -declarations for the definitions in all the headers will be printed -to stdout. -.LP -The #htmpl directive determines the name of the file used as a template -for the C header file that is generated. -.LP -Each #table <tablename> directive will be processed in accordance with -the ABI. On most platforms all tables will be catenated into a single -table with the name of the first table for that file. To conform to -the Intel ABI separate tables will be generated with the names indicated. -.LP -The template files specified by the #ctmpl and #htmpl directives -are processed by copying line for line from the template file to -the appropriate output file. The line containing the string -.I <<<STRING_TABLE_GOES_HERE>>> -is not copied to the output file. The appropriate data is then -copied to the output file and then the remainder of the template -file is copied to the output file. -.SH BUGS -makestrs is not very forgiving of syntax errors. Sometimes you need -a trailing space after # directives, other times they will mess you -up. No warning messages are emitted. -.SH SEE ALSO -SPARC Compliance Definition 2.2., SPARC International Inc., -535 Middlefield Road, Suite 210, Menlo Park, CA 94025 -.LP -System V Application Binary Interface, Third Edition, -ISBN 0-13-100439-5 -UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, -NJ 07632 -.LP -System V Application Binary Interface, Third Edition, Intel386 -Architecture Processor Supplement -ISBN 0-13-104670-5 -UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, -NJ 07632 -.LP -System V Application Binary Interface, Third Edition, SPARC -Architecture Processor Supplement -ISBN 0-13-104696-9 -UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, -NJ 07632 diff --git a/nx-X11/config/util/mdepend.cpp b/nx-X11/config/util/mdepend.cpp deleted file mode 100644 index 35cab0b..0000000 --- a/nx-X11/config/util/mdepend.cpp +++ /dev/null @@ -1,286 +0,0 @@ -XCOMM!/bin/sh -XCOMM -XCOMM $Xorg: mdepend.cpp,v 1.3 2000/08/17 19:41:52 cpqbld Exp $ -XCOMM $XdotOrg: xc/config/util/mdepend.cpp,v 1.4 2005/08/26 05:01:37 daniels Exp $ -XCOMM -XCOMM Do the equivalent of the 'makedepend' program, but do it right. -XCOMM -XCOMM Usage: -XCOMM -XCOMM makedepend [cpp-flags] [-w width] [-s magic-string] [-f makefile] -XCOMM [-o object-suffix] [-v] [-a] [-cc compiler] [-d dependencyflag] -XCOMM -XCOMM Notes: -XCOMM -XCOMM The C compiler used can be overridden with the environment -XCOMM variable "CC" or the command line flag -cc. -XCOMM -XCOMM The "-v" switch of the "makedepend" program is not supported. -XCOMM -XCOMM -XCOMM This script should -XCOMM work on both USG and BSD systems. However, when System V.4 comes out, -XCOMM USG users will probably have to change "silent" to "-s" instead of -XCOMM "-" (at least, that is what the documentation implies). -XCOMM -XCOMM $XFree86: xc/config/util/mdepend.cpp,v 3.9 2001/04/26 20:55:10 dawes Exp $ -XCOMM - -CC=PREPROC - -silent='-' - -TMP=`pwd`/.mdep$$ - -rm -rf ${TMP} -if ! mkdir -p ${TMP}; then - echo "$0: cannot create ${TMP}, exit." >&2 -fi - -CPPCMD=${TMP}/a -DEPENDLINES=${TMP}/b -TMPMAKEFILE=${TMP}/c -MAGICLINE=${TMP}/d -ARGS=${TMP}/e - -trap "rm -rf ${TMP}; exit 1" 1 2 15 -trap "rm -rf ${TMP}; exit 0" 1 2 13 - -echo " \c" > $CPPCMD -if [ `wc -c < $CPPCMD` -eq 1 ] -then - c="\c" - n= -else - c= - n="-n" -fi - -echo $n "$c" >$ARGS - -files= -makefile= -magic_string='# DO NOT DELETE' -objsuffix='.o' -width=78 -endmarker="" -verbose=n -append=n -compilerlistsdepends=n - -while [ $# != 0 ] -do - if [ "$endmarker"x != x ] && [ "$endmarker" = "$1" ]; then - endmarker="" - else - case "$1" in - -D*|-I*|-U*) - echo $n " '$1'$c" >> $ARGS - ;; - - -g|-O) # ignore so we can just pass $(CFLAGS) in - ;; - - *) - if [ "$endmarker"x = x ]; then - case "$1" in - -w) - width="$2" - shift - ;; - -s) - magic_string="$2" - shift - ;; - -f*) - if [ "$1" = "-f-" ]; then - makefile="-" - elif [ "$1" = "-f" ]; then - makefile="$2" - shift - else - echo "$1" | sed 's/^\-f//' >${TMP}arg - makefile="`cat ${TMP}arg`" - rm -f ${TMP}arg - fi - ;; - -o) - objsuffix="$2" - shift - ;; - - --*) - echo "$1" | sed 's/^\-\-//' >${TMP}end - endmarker="`cat ${TMP}end`" - rm -f ${TMP}end - if [ "$endmarker"x = x ]; then - endmarker="--" - fi - ;; - -v) - verbose="y" - ;; - - -a) - append="y" - ;; - - -cc) - CC="$2" - shift - ;; - - # Flag to tell compiler to output dependencies directly - # For example, with Sun compilers, -xM or -xM1 or - # with gcc, -M - -d) - compilerlistsdepends="y" - compilerlistdependsflag="$2" - shift - ;; - - -*) - echo "Unknown option '$1' ignored" 1>&2 - ;; - *) - files="$files $1" - ;; - esac - fi - ;; - esac - fi - shift -done -echo ' $*' >> $ARGS - -if [ "$compilerlistsdepends"x = "y"x ] ; then - CC="$CC $compilerlistdependsflag" -fi - -echo "#!/bin/sh" > $CPPCMD -echo "exec $CC `cat $ARGS`" >> $CPPCMD -chmod +x $CPPCMD -rm $ARGS - -case "$makefile" in - '') - if [ -r makefile ] - then - makefile=makefile - elif [ -r Makefile ] - then - makefile=Makefile - else - echo 'no makefile or Makefile found' 1>&2 - exit 1 - fi - ;; - -) - makefile=$TMPMAKEFILE - ;; -esac - -if [ "$verbose"x = "y"x ]; then - cat $CPPCMD -fi - -echo '' > $DEPENDLINES - -if [ "$compilerlistsdepends"x = "y"x ] ; then - for i in $files - do - $CPPCMD $i >> $DEPENDLINES - done -else -for i in $files -do - $CPPCMD $i \ - | sed -n "/^#/s;^;$i ;p" -done \ - | sed -e 's|/[^/.][^/]*/\.\.||g' -e 's|/\.[^.][^/]*/\.\.||g' \ - -e 's|"||g' -e 's| \./| |' \ - | awk '{ - if ($1 != $4 && $2 != "#ident" && $2 != "#pragma") - { - numparts = split( $1, ofileparts, "\." ) - ofile = "" - for ( i = 1; i < numparts; i = i+1 ) - { - if (i != 1 ) - ofile = ofile "." - ofile = ofile ofileparts[i] - } - print ofile "'"$objsuffix"'", $4 - } - }' \ - | sort -u \ - | awk ' - { - newrec = rec " " $2 - if ($1 != old1) - { - old1 = $1 - if (rec != "") - print rec - rec = $1 ": " $2 - } - else if (length (newrec) > '"$width"') - { - print rec - rec = $1 ": " $2 - } - else - rec = newrec - } - END \ - { - if (rec != "") - print rec - }' \ - | egrep -v '^[^:]*:[ ]*$' >> $DEPENDLINES -fi - -trap "" 1 2 13 15 # Now we are committed -case "$makefile" in - $TMPMAKEFILE) - ;; - *) - rm -f $makefile.bak - cp $makefile $makefile.bak - echo "Appending dependencies to $makefile" - ;; -esac - -XCOMM -XCOMM If not -a, append the magic string and a blank line so that -XCOMM /^$magic_string/+1,\$d can be used to delete everything from after -XCOMM the magic string to the end of the file. Then, append a blank -XCOMM line again and then the dependencies. -XCOMM -if [ "$append" = "n" ] -then - cat >> $makefile << END_OF_APPEND - -$magic_string - -END_OF_APPEND - ed $silent $makefile << END_OF_ED_SCRIPT -/^$magic_string/+1,\$d -w -q -END_OF_ED_SCRIPT - echo '' >>$makefile -fi - -cat $DEPENDLINES >>$makefile - -case "$makefile" in - $TMPMAKEFILE) - cat $TMPMAKEFILE - ;; - -esac - -rm -rf ${TMP}* -exit 0 diff --git a/nx-X11/config/util/mergelib.cpp b/nx-X11/config/util/mergelib.cpp deleted file mode 100644 index 1c7cc64..0000000 --- a/nx-X11/config/util/mergelib.cpp +++ /dev/null @@ -1,105 +0,0 @@ -XCOMM!/bin/sh -XCOMM -XCOMM $Xorg: mergelib.cpp,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ -XCOMM -XCOMM Copyright (c) 1989, 1998 The Open Group -XCOMM -XCOMM Permission to use, copy, modify, distribute, and sell this software and -XCOMM its documentation for any purpose is hereby granted without fee, provided -XCOMM that the above copyright notice appear in all copies and that both that -XCOMM copyright notice and this permission notice appear in supporting -XCOMM documentation. -XCOMM -XCOMM The above copyright notice and this permission notice shall be included in -XCOMM all copies or substantial portions of the Software. -XCOMM -XCOMM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -XCOMM IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -XCOMM FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -XCOMM OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -XCOMM AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -XCOMM CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -XCOMM -XCOMM Except as contained in this notice, the name of The Open Group shall not be -XCOMM used in advertising or otherwise to promote the sale, use or other dealings -XCOMM in this Software without prior written authorization from The Open Group. -XCOMM -XCOMM Author: Jim Fulton, MIT X Consortium -XCOMM -XCOMM mergelib - merge one library into another; this is commonly used by X -XCOMM to add the extension library into the base Xlib. -XCOMM - -usage="usage: $0 to-library from-library [object-filename-prefix]" -objprefix=_ - -case $# in - 2) ;; - 3) objprefix=$3 ;; - *) echo "$usage" 1>&2; exit 1 ;; -esac - -tolib=$1 -fromlib=$2 - -if [ ! -f $fromlib ]; then - echo "$0: no such from-library $fromlib" 1>&2 - exit 1 -fi - -if [ ! -f $tolib ]; then - echo "$0: no such to-library $tolib" 1>&2 - exit 1 -fi - - -XCOMM -XCOMM Create a temp directory, and figure out how to reference the -XCOMM object files from it (i.e. relative vs. absolute path names). -XCOMM - -tmpdir=tmp.$$ -origdir=.. - -XCOMM Remove directory if we fail -trap "rm -rf $tmpdir; exit 1" 1 2 15 -trap "rm -rf $tmpdir; exit 0" 1 2 13 - -mkdir $tmpdir - -XCOMM Security: if $tmpdir exists before mkdir exit immediately -if [ $? -gt 0 -o ! -d $tmpdir ]; then - echo "$0: unable to create temporary directory $tmpdir" 1>&2 - exit 1 -fi - -case "$fromlib" in - /?*) upfrom= ;; - *) upfrom=../ ;; -esac - -case "$tolib" in - /?*) upto= ;; - *) upto=../ ;; -esac - - -XCOMM -XCOMM In the temp directory, extract all of the object files and prefix -XCOMM them with some symbol to avoid name clashes with the base library. -XCOMM -cd $tmpdir || exit 1 -ar x ${upfrom}$fromlib -for i in *.o; do - mv $i ${objprefix}$i -done - - -XCOMM -XCOMM Merge in the object modules, ranlib (if appropriate) and cleanup -XCOMM -ARCMD ${upto}$tolib *.o -RANLIB ${upto}$tolib -cd $origdir -rm -rf $tmpdir - diff --git a/nx-X11/config/util/mergelib.man b/nx-X11/config/util/mergelib.man deleted file mode 100644 index 7685166..0000000 --- a/nx-X11/config/util/mergelib.man +++ /dev/null @@ -1,28 +0,0 @@ -.\" $XFree86$ -.\" shorthand for double quote that works everywhere. -.ds q \N'34' -.TH MERGELIB 1 __xorgversion__ -.SH NAME -mergelib \- merge one library into another -.SH SYNOPSIS -.B mergelib -.I to-library -.I from-library -.RI [ object-filename-prefix ] -.SH DESCRIPTION -The -.I mergelib -program merges objects from one library into another. -The names of object files in -.I from-library -will be prefixed by -.I object-filename-prefix -(\*q_\*q by default) to avoid name clashes. -The merged library will be left in -.IR to-library . -.SH AUTHOR -Jim Fulton wrote the -.I mergelib -program for the X Consortium. -.PP -Colin Watson wrote this manual page, originally for the Debian Project. diff --git a/nx-X11/config/util/mkdirhier.c b/nx-X11/config/util/mkdirhier.c deleted file mode 100644 index 61207b5..0000000 --- a/nx-X11/config/util/mkdirhier.c +++ /dev/null @@ -1,80 +0,0 @@ -/* $Xorg: mkdirhier.c,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ */ -/* - -Copyright (C) 1996, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86$ */ - -/* - * Simple mkdirhier program for Windows NT - */ -#include <sys/types.h> -#include <sys/stat.h> -#ifndef __UNIXOS2__ -#include <direct.h> -#else -#include <dirent.h> -#endif -#include <stdlib.h> -#include <string.h> - -char * -next_sep(char *path) -{ - while (*path) - if (*path == '/' || *path == '\\') - return path; - else - path++; - return NULL; -} - -int -main(int argc, char *argv[]) -{ - char *dirname, *next, *prev; - char buf[1024]; - struct _stat sb; - - if (argc < 2) - exit(1); - dirname = argv[1]; - - prev = dirname; - while (next = next_sep(prev)) { - strncpy(buf, dirname, next - dirname); - buf[next - dirname] = '\0'; - /* if parent dir doesn't exist yet create it */ - if (_stat(buf, &sb)) - _mkdir(buf); /* no error checking to avoid barfing on C: */ - prev = next + 1; - } - if (_mkdir(dirname) == -1) { - perror("mkdirhier failed"); - exit(1); - } - exit(0); -} diff --git a/nx-X11/config/util/mkdirhier.cmd b/nx-X11/config/util/mkdirhier.cmd deleted file mode 100644 index 9ee8fa7..0000000 --- a/nx-X11/config/util/mkdirhier.cmd +++ /dev/null @@ -1,54 +0,0 @@ -/* OS/2 REXX SCRIPT */ -/* $XFree86: xc/config/util/mkdirhier.cmd,v 3.1 1996/02/09 08:18:04 dawes Exp $ */ - -CALL RxFuncAdd 'SysMkDir', 'RexxUtil', 'SysMkDir' - -IF ARG() = 0 THEN DO - SAY "mkdirhier: usage: mkdirhier directory ..." - EXIT 1 -END - -curdir=DIRECTORY() -drive=DELSTR(curdir,3) - -status="" -PARSE ARG all - -DO i=1 TO WORDS(all) - direc = TRANSLATE(WORD(all,i),'/','\') - SELECT - WHEN direc = "" THEN DO - SAY "mkdirhier: empty directory name" - status=1 - ITERATE - END - WHEN POS('0a'x,direc) > 0 THEN DO - SAY "mkdirhier: directory name contains a newline: '" direc "'" - status=1 - ITERATE - END - OTHERWISE NOP - END - IF POS(":",direc) = 0 THEN direc = INSERT(drive,direc) - - dirbuf.0 = direc - DO k=1 TO 1000 - direc1 = STRIP(direc,"t","/") - dpath1 = FILESPEC("path",direc1) - dirbuf.k=FILESPEC("drive",direc1)||STRIP(dpath1,"t","/") - IF POS("/",dirbuf.k) = 0 THEN LEAVE k - direc=dirbuf.k - END - DO m=k-1 TO 0 BY -1 - dospath = TRANSLATE(dirbuf.m,'\','/') - targetdir=DIRECTORY(dospath) - IF targetdir = dospath THEN - NOP - ELSE - CALL SysMkDir(dospath) - CALL DIRECTORY curdir - END -END - - -EXIT status diff --git a/nx-X11/config/util/mkdirhier.man b/nx-X11/config/util/mkdirhier.man deleted file mode 100644 index 4ad475e..0000000 --- a/nx-X11/config/util/mkdirhier.man +++ /dev/null @@ -1,42 +0,0 @@ -.\" $Xorg: mkdirhier.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ -.\" Copyright (c) 1993, 1994, 1998 The Open Group -.\" -.\" Permission to use, copy, modify, distribute, and sell this software and its -.\" documentation for any purpose is hereby granted without fee, provided that -.\" the above copyright notice appear in all copies and that both that -.\" copyright notice and this permission notice appear in supporting -.\" documentation. -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -.\" SOFTWARE. -.\" -.\" Except as contained in this notice, the name of The Open Group shall not -.\" be used in advertising or otherwise to promote the sale, use or other -.\" dealing in this Software without prior written authorization from The -.\" Open Group. -.\" -.\" $XFree86: xc/config/util/mkdirhier.man,v 1.2 2001/01/27 18:19:55 dawes Exp $ -.\" -.TH MKDIRHIER 1 __xorgversion__ -.SH NAME -mkdirhier \- makes a directory hierarchy -.SH SYNOPSIS -.B mkdirhier -directory ... -.SH DESCRIPTION -The -.I mkdirhier -command creates the specified directories. Unlike -.I mkdir -if any of the parent directories of the specified directory -do not exist, it creates them as well. -.SH "SEE ALSO" -mkdir(1) diff --git a/nx-X11/config/util/mkdirhier.sh b/nx-X11/config/util/mkdirhier.sh deleted file mode 100644 index 09b89ee..0000000 --- a/nx-X11/config/util/mkdirhier.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/sh -# $Xorg: mkdirhier.sh,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ -# Courtesy of Paul Eggert - -newline=' -' -IFS=$newline - -case ${1--} in --*) echo >&2 "mkdirhier: usage: mkdirhier directory ..."; exit 1 -esac - -status= - -for directory -do - case $directory in - '') - echo >&2 "mkdirhier: empty directory name" - status=1 - continue;; - *"$newline"*) - echo >&2 "mkdirhier: directory name contains a newline: \`\`$directory''" - status=1 - continue;; - ///*) prefix=/;; # See Posix 2.3 "path". - //*) prefix=//;; - /*) prefix=/;; - -*) prefix=./;; - *) prefix= - esac - - IFS=/ - set x $directory - case $2 in - */*) # IFS parsing is broken - IFS=' ' - set x `echo $directory | tr / ' '` - ;; - esac - IFS=$newline - shift - - for filename - do - path=$prefix$filename - prefix=$path/ - shift - - test -d "$path" || { - paths=$path - for filename - do - if [ -n "$filename" -a "$filename" != "." ]; then - path=$path/$filename - paths=$paths$newline$path - fi - done - - mkdir $paths || status=$? - - break - } - done - done - -exit $status diff --git a/nx-X11/config/util/mkhtmlindex.man b/nx-X11/config/util/mkhtmlindex.man deleted file mode 100644 index fc8a427..0000000 --- a/nx-X11/config/util/mkhtmlindex.man +++ /dev/null @@ -1,32 +0,0 @@ -.TH mkhtmlindex 1 __vendorversion__ -.SH NAME -mkhtmlindex \- generate index files for HTML man pages -.SH SYNOPSIS -.B mkhtmlindex -.I htmlmandir -.SH DESCRIPTION -The -.I mkhtmlindex -program generates index files for a directory of HTML-formatted manual -pages. -It searches for files whose names are of the form \(lqname.1.html\(rq, -and outputs index files \(lqmanindex1.html\(rq, \(lqmanindex.2.html\(rq, -and so on, one for each manual volume. -Empty index files will be removed. -Names and descriptions are found by scanning the first -.I <H2> -section of each page. -.SH OPTIONS -.I mkhtmlindex -takes only one argument: the directory to process. -.SH NOTES -This utility is currently rather specific to X manual pages. -In particular, the format of the index files it outputs is not configurable, -nor is the HTML formatting it expects of manual pages. -.SH AUTHOR -The version of the -.I mkhtmlindex -included in this X.Org Foundation release was originally written -by David Dawes wrote as a part of XFree86. -.PP -Colin Watson wrote this manual page, originally for the Debian Project. diff --git a/nx-X11/config/util/mkhtmlindex.pl b/nx-X11/config/util/mkhtmlindex.pl deleted file mode 100644 index 1003091..0000000 --- a/nx-X11/config/util/mkhtmlindex.pl +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/perl -# -# $XFree86: xc/config/util/mkhtmlindex.pl,v 1.2 2001/03/15 19:02:31 dawes Exp $ -# -# Copyright © 2000,2001 by VA Linux Systems, Inc. -# -# Generate index files for HTML man pages. -# -# Author: David Dawes <dawes@xfree86.org> -# - -# -# Best viewed with tabs set to 4 -# - -if ($#ARGV ne 0) { - print STDERR "Usage: mkhtmlindex.pl htmlmandir\n"; - exit 1; -} - -$dir = $ARGV[0]; - -if (! -d $dir) { - print STDERR "$dir is not a directory\n"; - exit 1; -} - -@vollist = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "o", "l", "n", "p"); - -$indexprefix = "manindex"; - -foreach $vol (@vollist) { - $empty = "yes"; - $indexname="$dir/$indexprefix$vol.html"; - - # print "Processing volume $vol\n"; - - open(mindex, ">$indexname") || die "Can't create $indexname"; - opendir(dir, "$dir") || die "Can't open $dir"; - - print mindex <<EOF; -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<HTML> -<HEAD> -<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> -<TITLE>X.Org Manual pages: Section $vol</TITLE> -</HEAD> -<BODY BGCOLOR="#efefef" TEXT="black" LINK="blue" VLINK="#551A8B" ALINK="red"> - -<H1>X.Org Manual pages: Section $vol</H1> -<P> -<UL> -EOF - - foreach $file (sort readdir dir) { - if ($file =~ "\.$vol\.html") { - open(file, "<$dir/$file") || die "Can't open $dir/$file"; - while (<file>) { - chop; - if (/^<[hH]2>/) { - if (! /<\/[hH]2>$/) { - while (<file> && ! /<\/[hH]2>$/) { - ; - } - } - $heading = ""; - while (<file>) { - if (/^<[hH]2>/) { - last; - } - $heading = "$heading" . "$_"; - } - if ($heading) { - undef $empty; - $heading =~ s/--/-/; - ($name, $descr) = split(/-/, $heading, 2); - $file =~ /(.*)\.$vol\.html/; - $fname = $1; - $descr =~ s/<[pP]>//g; - print mindex - "<LI><A href=\"$file\">$fname</A> - $descr</LI>"; - } - last; - } - } - close file; - } - } - - print mindex <<EOF; -</UL> -<P> -</BODY> -</HTML> -EOF - - close mindex; - closedir dir; - if (defined $empty) { - # print "Removing empty $indexname\n"; - unlink $indexname; - } -} diff --git a/nx-X11/config/util/mkhtmlindex.sh b/nx-X11/config/util/mkhtmlindex.sh deleted file mode 100644 index ab1c894..0000000 --- a/nx-X11/config/util/mkhtmlindex.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -# -# $XFree86: xc/config/util/mkhtmlindex.sh,v 1.3 2000/08/26 04:30:49 dawes Exp $ -# -# Copyright © 2000 by Precision Insight, Inc. -# -# Generate index files for the HTML man pages -# -# Author: David Dawes <dawes@xfree86.org> -# - -VOLLIST="1 2 3 4 5 6 7 8 9 o l n p" -INDEX="manindex" - -if [ $# != 1 ]; then - echo Usage: $0 htmlmandir - exit 1 -fi - -if [ ! -d $1 ]; then - echo $1 is not a directory - exit 1 -fi - -cd $1 - -for s in $VOLLIST; do - list="`ls *.$s.html 2> /dev/null`" || : # ignore failed glob expansion - if [ X"$list" != X ]; then - file=$INDEX$s.html - rm -f $file - cat <<EOF > $file -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<HTML> -<HEAD> -<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> -<TITLE>X.Org Manual pages: Section $s</TITLE> -</HEAD> -<BODY BGCOLOR="#efefef" TEXT="black" LINK="blue" VLINK="#551A8B" ALINK="red"> - -<H1>X.Org Manual pages: Section $s</H1> -<P> -<UL> -EOF - for i in $list; do - title="`sed -e '/^[^0-9A-Za-z]/d' -e '/^$/' -e '/^Name/d' -e q $i`" - name="`echo \"$title\" | sed -e 's/ - .*//'`" - desc="`echo \"$title\" | sed -e 's/[^-]* - //' -e 's/<P>//'`" - echo "<LI><A href=\"$i\">$name</A> - $desc</LI>" >> $file - done - cat <<EOF >> $file -</UL> -<P> -</BODY> -</HTML> -EOF - fi -done - -exit 0 diff --git a/nx-X11/config/util/mkshadow/Imakefile b/nx-X11/config/util/mkshadow/Imakefile deleted file mode 100644 index e8a879d..0000000 --- a/nx-X11/config/util/mkshadow/Imakefile +++ /dev/null @@ -1,5 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ - SRCS = mkshadow.c savedir.c wildmat.c - OBJS = mkshadow.o savedir.o wildmat.o - -ComplexProgramTarget(mkshadow) diff --git a/nx-X11/config/util/mkshadow/README b/nx-X11/config/util/mkshadow/README deleted file mode 100644 index eea4b8b..0000000 --- a/nx-X11/config/util/mkshadow/README +++ /dev/null @@ -1,38 +0,0 @@ -The mkshadow programs makes a "shadow tree" of a directory tree. -It logically copies all of the "MASTER" directory into ".". -However, ordinary files, and RCS/SCCS directories are "copied" -by creating a sybolic link to the corresponding file in MASTER. - -The wildmat.c file is by Rich Salz, and from comp.sources.misc, volume 17. -The savedir.c file is lightly modified from the version written -by David MacKenzie for GNU fileutils; the Free Software Foundation -has graciously agreed to waive their usual copyright so this -program can be distributed by the X Consortium. - -If you have problems compiling savedir.c, try setting the DIRENT make -variable as suggested in the Makefile. - - * Usage: mkshadow [-X exclude_file] [-x exclude_pattern] ... MASTER - * Makes the current directory be a "shadow copy" of MASTER. - * Sort of like a recursive copy of MASTER to . - * However, symbolic links are used instead of actually - * copying (non-directory) files. - * Also, directories named RCS or SCCS are shared (with a symbolic link). - * Warning messages are printed for files (and directories) in . - * that don't match a corresponding file in MASTER (though - * symbolic links are silently removed). - * Also, a warning message is printed for non-directory files - * under . that are not symbolic links. - * - * Files and directories can be excluded from the sharing - * with the -X and -x flags. The flag `-x pattern' (or `-xpattern') - * means that mkshadow should ignore any file whose name matches - * the pattern. The pattern is a "globbing" pattern, i.e. the - * characters *?[^-] are interpreted as by the shell. - * If the pattern contains a '/' is is matched against the complete - * current path (relative to '.'); otherwise, it is matched - * against the last component of the path. - * A `-X filename' flag means to read a set of exclusion patterns - * from the named file, one pattern to a line. - -Author: Per Bothner. bothner@cygnus.com. November 1990, 1993. diff --git a/nx-X11/config/util/mkshadow/mkshadow.c b/nx-X11/config/util/mkshadow/mkshadow.c deleted file mode 100644 index d9c5eb8..0000000 --- a/nx-X11/config/util/mkshadow/mkshadow.c +++ /dev/null @@ -1,378 +0,0 @@ -/* $Xorg: mkshadow.c,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ */ -/* mkshadow.c - make a "shadow copy" of a directory tree with symlinks. - Copyright 1990, 1993 Free Software Foundation, Inc. - - Permission to use, copy, modify, and distribute this program for - any purpose and without fee is hereby granted, provided that this - copyright and permission notice appear on all copies, and that - notice be given that copying and distribution is by permission of - the Free Software Foundation. The Free Software Foundation makes - no representations about the suitability of this software for any - purpose. It is provided "as is" without expressed or implied - warranty. - - (The FSF has modified its usual distribution terms, for this file, - as a courtesy to the X project.) */ - -/* - * Usage: mkshadow [-X exclude_file] [-x exclude_pattern] ... MASTER [SHADOW] - * Makes SHADOW be a "shadow copy" of MASTER. SHADOW defaults to the current - * directory. Sort of like a recursive copy of MASTER to SHADOW. - * However, symbolic links are used instead of actually - * copying (non-directory) files. - * Also, directories named RCS or SCCS are shared (with a symbolic link). - * Warning messages are printed for files (and directories) in . - * that don't match a corresponding file in MASTER (though - * symbolic links are silently removed). - * Also, a warning message is printed for non-directory files - * under SHADOW that are not symbolic links. - * - * Files and directories can be excluded from the sharing - * with the -X and -x flags. The flag `-x pattern' (or `-xpattern') - * means that mkshadow should ignore any file whose name matches - * the pattern. The pattern is a "globbing" pattern, i.e. the - * characters *?[^-] are interpreted as by the shell. - * If the pattern contains a '/' is is matched against the complete - * current path (relative to '.'); otherwise, it is matched - * against the last component of the path. - * A `-X filename' flag means to read a set of exclusion patterns - * from the named file, one pattern to a line. - * - * Originally written by Per Bothner at University of Wisconsin-Madison, - * inspired by the lndir script distributed with X11. - * Modified by Per Bothner <bothner@cygnus.com> November 1993 - * to more-or-less follow Posix. - */ - -#include <sys/types.h> -#include <stdio.h> -#ifdef BSD -#include <strings.h> -#define strchr index -#else -#include <string.h> -#endif -#include <sys/stat.h> -#if defined(S_IFDIR) && !defined(S_ISDIR) -#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) -#endif -#if defined(S_IFLNK) && !defined(S_ISLNK) -#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) -#endif -#ifndef S_ISLNK -#define lstat stat -#endif -#ifndef MAXPATHLEN -#define MAXPATHLEN 1024 -#endif -#include <errno.h> -#ifndef errno -extern int errno; -#endif - -extern char * savedir(); - -fatal(msg) - char *msg; -{ - if (errno) perror(msg ? msg : ""); - else if (msg) fprintf(stderr, "mkshadow: %s\n", msg); - exit(-1); -} - -/* When handling symbolic links to relative directories, - * we need to prepend "../" to the "source". - * We preallocate MAX_DEPTH repetations of "../" using a simple trick. - */ -#define MAX_DEPTH 20 -#define PREPEND_BUFFER_SIZE (MAX_DEPTH*3) -char master_buffer[MAXPATHLEN+PREPEND_BUFFER_SIZE] = - "../../../../../../../../../../../../../../../../../../../../"; -/* The logical start of the master_buffer is defined by - * master_start, which skips the fixed prepend area. - */ -#define master_start (master_buffer+PREPEND_BUFFER_SIZE) -char shadow_buffer[MAXPATHLEN]; - -void bad_args(msg) -{ - if (msg) fprintf(stderr, "%s\n", msg); - fprintf (stderr, "usage: mkshadow [-X exclude_file] [-x exclude_pattern]"); - fprintf (stderr, " master [shadow]\n"); - exit(-1); -} - -int exclude_count = 0; -char **exclude_patterns = NULL; -int exclude_limit = 0; - -void add_exclude(pattern) - char *pattern; -{ - if (exclude_limit == 0) { - exclude_limit = 100; - exclude_patterns = (char**)malloc(exclude_limit * sizeof(char*)); - } else if (exclude_count + 1 >= exclude_limit) { - exclude_limit += 100; - exclude_patterns = (char**)realloc(exclude_patterns, - exclude_limit * sizeof(char*)); - } - exclude_patterns[exclude_count] = pattern; - exclude_count++; -} - -void add_exclude_file(name) - char *name; -{ - char buf[MAXPATHLEN]; - FILE *file = fopen(name, "r"); - if (file == NULL) fatal("failed to find -X (exclude) file"); - for (;;) { - int len; - char *str = fgets(buf, MAXPATHLEN, file); - if (str == NULL) break; - len = strlen(str); - if (len && str[len-1] == '\n') str[--len] = 0; - if (!len) continue; - str = (char*)malloc(len+1); - strcpy(str, buf); - add_exclude(str); - } - fclose(file); -} - -main(argc, argv) - char **argv; -{ - char *master_name = NULL; - char *shadow_name = NULL; - int i; - for (i = 1; i < argc; i++) { - if (argv[i][0] == '-') { - switch(argv[i][1]) { - case 'X': - if (argv[i][2]) add_exclude_file(&argv[i][2]); - else if (++i >= argc) bad_args(NULL); - else add_exclude_file(argv[i]); - break; - case 'x': - if (argv[i][2]) add_exclude(&argv[i][2]); - else if (++i >= argc) bad_args(NULL); - else add_exclude(argv[i]); - break; - default: - bad_args(NULL); - } - } else if (master_name == NULL) - master_name = argv[i]; - else if (shadow_name == NULL) - shadow_name = argv[i]; - else bad_args (NULL); - } - - if (master_name == NULL) bad_args(NULL); - if (shadow_name == NULL) - shadow_name = "."; - else if ((shadow_name[0] != '.' || shadow_name[1]) - && master_name[0] != '/') { - fprintf(stderr, "Shadowing a relative directory pathname to a \n"); - fprintf(stderr, "shadow other than '.' is not supported!\n"); - exit(-1); - } - strcpy(shadow_buffer, shadow_name); - strcpy(master_start, master_name); - DoCopy(master_start, shadow_buffer, 0); - return 0; -} - -int compare_strings(ptr1, ptr2) - char **ptr1, **ptr2; -{ - return strcmp(*ptr1, *ptr2); -} - -void MakeLink(master, current, depth) - char *master; - char *current; - int depth; -{ - if (master[0] != '/') { - /* Source directory was specified with a relative pathname. */ - if (master != master_start) { - fatal("Internal bug: bad string buffer use"); - } - /* Pre-pend "../" depth times. This compensates for - * the directories we've entered. */ - master -= 3 * depth; - } - if (symlink(master, current)) { - fprintf(stderr, "Failed to create symbolic link %s->%s\n", - current, master); - exit (-1); - } -} - - -/* Get a sorted NULL_terminator array of (char*) using 'names' - * (created by save_dir) as data. - */ -char ** get_name_pointers(names) - char *names; -{ - int n_names = 0; - int names_buf_size = 64; - char *namep; - char ** pointers = (char**)malloc(names_buf_size * sizeof(char*)); - if (!names || !pointers) fatal("virtual memory exhausted"); - - for (namep = names; *namep; namep += strlen(namep) + 1) { - if (n_names + 1 >= names_buf_size) { - names_buf_size *= 2; - pointers = (char**)realloc(pointers, - names_buf_size * sizeof(char*)); - if (!pointers) fatal("virtual memory exhausted"); - } - pointers[n_names++] = namep; - } - pointers[n_names] = 0; - qsort(pointers, n_names, sizeof(char*), compare_strings); - return pointers; -} - -/* Recursively shadow the directory whose name is in MASTER - * (which is == MASTER_START) into the destination directory named CURRENT. - */ - -DoCopy(master, current, depth) - char *master; /* The source directory. */ - char *current; /* The destination directory. */ - int depth; -{ - struct stat stat_master, stat_current; - char **master_pointer, **current_pointer; - char **master_names, **current_names; - char *master_end, *current_end; - char *master_name_buf, *current_name_buf; - master_end = master + strlen(master); - current_end = current + strlen(current); - - /* Get rid of terminal '/' */ - if (master_end[-1] == '/' && master != master_end - 1) - *--master_end = 0; - if (current_end[-1] == '/' && current != current_end - 1) - *--current_end = 0; - - if (depth >= MAX_DEPTH) { - fprintf(stderr, - "Nesting too deep (depth %d at %s). Probable circularity.\n", - depth, master); - exit(-1); - } - - master_name_buf = savedir(master, 500); - if (master_name_buf == NULL) { - fprintf(stderr, "Not enough memory or no such directory: %s\n", - master); - exit(-1); - } - current_name_buf = savedir(current, 500); - if (current_name_buf == NULL) { - fprintf(stderr, "Not enough memory or no such directory: %s\n", - current); - exit(-1); - } - - master_names = get_name_pointers(master_name_buf); - current_names = get_name_pointers(current_name_buf); - - master_pointer = master_names; - current_pointer = current_names; - for (;;) { - int cmp, ipat; - int in_master, in_current; - char *cur_name; - if (*master_pointer == NULL && *current_pointer == NULL) - break; - if (*master_pointer == NULL) cmp = 1; - else if (*current_pointer == NULL) cmp = -1; - else cmp = strcmp(*master_pointer, *current_pointer); - if (cmp < 0) { /* file only exists in master directory */ - in_master = 1; in_current = 0; - } else if (cmp == 0) { /* file exists in both directories */ - in_master = 1; in_current = 1; - } else { /* file only exists in current directory */ - in_current = 1; in_master = 0; - } - cur_name = in_master ? *master_pointer : *current_pointer; - sprintf(master_end, "/%s", cur_name); - sprintf(current_end, "/%s", cur_name); - for (ipat = 0; ipat < exclude_count; ipat++) { - char *pat = exclude_patterns[ipat]; - char *cur; - if (strchr(pat, '/')) cur = current + 2; /* Skip initial "./" */ - else cur = cur_name; - if (wildmat(cur, pat)) goto skip; - } - if (in_master) - if (lstat(master, &stat_master) != 0) fatal("stat failed"); - if (in_current) - if (lstat(current, &stat_current) != 0) fatal("stat failed"); - if (in_current && !in_master) { - if (S_ISLNK(stat_current.st_mode)) - if (unlink(current)) { - fprintf(stderr, "Failed to remove symbolic link %s.\n", - current); - } - else - fprintf(stderr, "Removed symbolic link %s.\n", - current); - else { - fprintf(stderr, - "The file %s does not exist in the master tree.\n", - current); - } - } - else if (S_ISDIR(stat_master.st_mode) - && strcmp(cur_name, "RCS") != 0 - && strcmp(cur_name, "SCCS") != 0) { - if (!in_current) { - if (mkdir(current, 0775)) fatal("mkdir failed"); - } - else if (stat(current, &stat_current)) fatal("stat failed"); - if (!in_current || stat_current.st_dev != stat_master.st_dev - || stat_current.st_ino != stat_master.st_ino) - DoCopy(master, current, depth+1); - else - fprintf(stderr, "Link %s is the same as directory %s.\n", - current, master); - } - else { - if (!in_current) - MakeLink(master, current, depth); - else if (!S_ISLNK(stat_current.st_mode)) { - fprintf(stderr, "Existing file %s is not a symbolic link.\n", - current); - } else { - if (stat(current, &stat_current) || stat(master, &stat_master)) - fatal("stat failed"); - if (stat_current.st_dev != stat_master.st_dev - || stat_current.st_ino != stat_master.st_ino) { - fprintf(stderr, "Fixing incorrect symbolic link %s.\n", - current); - if (unlink(current)) { - fprintf(stderr, "Failed to remove symbolic link %s.\n", - current); - } - else - MakeLink(master, current, depth); - } - } - } - skip: - if (in_master) master_pointer++; - if (in_current) current_pointer++; - } - - free(master_names); free(current_names); - free(master_name_buf); free(current_name_buf); -} diff --git a/nx-X11/config/util/mkshadow/savedir.c b/nx-X11/config/util/mkshadow/savedir.c deleted file mode 100644 index 6629f5a..0000000 --- a/nx-X11/config/util/mkshadow/savedir.c +++ /dev/null @@ -1,119 +0,0 @@ -/* $Xorg: savedir.c,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ */ -/* savedir.c -- save the list of files in a directory in a string - Copyright 1990, 1993 Free Software Foundation, Inc. - - Permission to use, copy, modify, and distribute this program for - any purpose and without fee is hereby granted, provided that this - copyright and permission notice appear on all copies, and that - notice be given that copying and distribution is by permission of - the Free Software Foundation. The Free Software Foundation makes - no representations about the suitability of this software for any - purpose. It is provided "as is" without expressed or implied - warranty. - - (The FSF has modified its usual distribution terms, for this file, - as a courtesy to the X project.) */ - -/* $XFree86$ */ - -/* Written by David MacKenzie <djm@ai.mit.edu>. - Modified to use <dirent.h> by default. Per Bothner <bothner@cygnus.com>. */ - -#include <sys/types.h> -#if !defined(DIRECT) && !defined(BSD) -#include <dirent.h> -#define NLENGTH(direct) (strlen((direct)->d_name)) -#else -#undef dirent -#define dirent direct -#define NLENGTH(direct) ((direct)->d_namlen) -#ifdef BSD -#include <sys/dir.h> -#else -#ifdef SYSNDIR -#include <sys/ndir.h> -#else -#include <ndir.h> -#endif -#endif -#endif - -#if defined(VOID_CLOSEDIR) || defined(BSD) -/* Fake a return value. */ -#define CLOSEDIR(d) (closedir (d), 0) -#else -#define CLOSEDIR(d) closedir (d) -#endif - -#include <stdlib.h> -#include <string.h> -#include <stddef.h> - -char *stpcpy (); - -/* Return a freshly allocated string containing the filenames - in directory DIR, separated by '\0' characters; - the end is marked by two '\0' characters in a row. - NAME_SIZE is the number of bytes to initially allocate - for the string; it will be enlarged as needed. - Return NULL if DIR cannot be opened or if out of memory. */ - -char * -savedir (dir, name_size) - char *dir; - unsigned name_size; -{ - DIR *dirp; - struct dirent *dp; - char *name_space; - char *namep; - - dirp = opendir (dir); - if (dirp == NULL) - return NULL; - - name_space = (char *) malloc (name_size); - if (name_space == NULL) - { - closedir (dirp); - return NULL; - } - namep = name_space; - - while ((dp = readdir (dirp)) != NULL) - { - /* Skip "." and ".." (some NFS filesystems' directories lack them). */ - if (dp->d_name[0] != '.' - || (dp->d_name[1] != '\0' - && (dp->d_name[1] != '.' || dp->d_name[2] != '\0'))) - { - unsigned size_needed = (namep - name_space) + NLENGTH (dp) + 2; - - if (size_needed > name_size) - { - char *new_name_space; - - while (size_needed > name_size) - name_size += 1024; - - new_name_space = realloc (name_space, name_size); - if (new_name_space == NULL) - { - closedir (dirp); - return NULL; - } - namep += new_name_space - name_space; - name_space = new_name_space; - } - strcpy (namep, dp->d_name); - namep += strlen (namep) + 1; - } - } - *namep = '\0'; - if (CLOSEDIR (dirp)) - { - free (name_space); - return NULL; - } - return name_space; -} diff --git a/nx-X11/config/util/mkshadow/wildmat.c b/nx-X11/config/util/mkshadow/wildmat.c deleted file mode 100644 index 8e0c179..0000000 --- a/nx-X11/config/util/mkshadow/wildmat.c +++ /dev/null @@ -1,167 +0,0 @@ -/* $Xorg: wildmat.c,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ */ -/* -** -** Do shell-style pattern matching for ?, \, [], and * characters. -** Might not be robust in face of malformed patterns; e.g., "foo[a-" -** could cause a segmentation violation. It is 8bit clean. -** -** Written by Rich $alz, mirror!rs, Wed Nov 26 19:03:17 EST 1986. -** Rich $alz is now <rsalz@bbn.com>. -** April, 1991: Replaced mutually-recursive calls with in-line code -** for the star character. -** -** Special thanks to Lars Mathiesen <thorinn@diku.dk> for the ABORT code. -** This can greatly speed up failing wildcard patterns. For example: -** pattern: -*-*-*-*-*-*-12-*-*-*-m-*-*-* -** text 1: -adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1 -** text 2: -adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1 -** Text 1 matches with 51 calls, while text 2 fails with 54 calls. Without -** the ABORT, then it takes 22310 calls to fail. Ugh. The following -** explanation is from Lars: -** The precondition that must be fulfilled is that DoMatch will consume -** at least one character in text. This is true if *p is neither '*' nor -** '\0'.) The last return has ABORT instead of FALSE to avoid quadratic -** behaviour in cases like pattern "*a*b*c*d" with text "abcxxxxx". With -** FALSE, each star-loop has to run to the end of the text; with ABORT -** only the last one does. -** -** Once the control of one instance of DoMatch enters the star-loop, that -** instance will return either TRUE or ABORT, and any calling instance -** will therefore return immediately after (without calling recursively -** again). In effect, only one star-loop is ever active. It would be -** possible to modify the code to maintain this context explicitly, -** eliminating all recursive calls at the cost of some complication and -** loss of clarity (and the ABORT stuff seems to be unclear enough by -** itself). I think it would be unwise to try to get this into a -** released version unless you have a good test data base to try it out -** on. -*/ - -#define TRUE 1 -#define FALSE 0 -#define ABORT -1 - - - /* What character marks an inverted character class? */ -#define NEGATE_CLASS '^' - /* Is "*" a common pattern? */ -#define OPTIMIZE_JUST_STAR - /* Do tar(1) matching rules, which ignore a trailing slash? */ -#undef MATCH_TAR_PATTERN - - -/* -** Match text and p, return TRUE, FALSE, or ABORT. -*/ -static int -DoMatch(text, p) - register char *text; - register char *p; -{ - register int last; - register int matched; - register int reverse; - - for ( ; *p; text++, p++) { - if (*text == '\0' && *p != '*') - return ABORT; - switch (*p) { - case '\\': - /* Literal match with following character. */ - p++; - /* FALLTHROUGH */ - default: - if (*text != *p) - return FALSE; - continue; - case '?': - /* Match anything. */ - continue; - case '*': - while (*++p == '*') - /* Consecutive stars act just like one. */ - continue; - if (*p == '\0') - /* Trailing star matches everything. */ - return TRUE; - while (*text) - if ((matched = DoMatch(text++, p)) != FALSE) - return matched; - return ABORT; - case '[': - reverse = p[1] == NEGATE_CLASS ? TRUE : FALSE; - if (reverse) - /* Inverted character class. */ - p++; - for (last = 0400, matched = FALSE; *++p && *p != ']'; last = *p) - /* This next line requires a good C compiler. */ - if (*p == '-' ? *text <= *++p && *text >= last : *text == *p) - matched = TRUE; - if (matched == reverse) - return FALSE; - continue; - } - } - -#ifdef MATCH_TAR_PATTERN - if (*text == '/') - return TRUE; -#endif /* MATCH_TAR_ATTERN */ - return *text == '\0'; -} - - -/* -** User-level routine. Returns TRUE or FALSE. -*/ -int -wildmat(text, p) - char *text; - char *p; -{ -#ifdef OPTIMIZE_JUST_STAR - if (p[0] == '*' && p[1] == '\0') - return TRUE; -#endif /* OPTIMIZE_JUST_STAR */ - return DoMatch(text, p) == TRUE; -} - - - -#ifdef TEST -#include <stdio.h> - -/* Yes, we use gets not fgets. Sue me. */ -extern char *gets(); - - -main() -{ - char p[80]; - char text[80]; - - printf("Wildmat tester. Enter pattern, then strings to test.\n"); - printf("A blank line gets prompts for a new pattern; a blank pattern\n"); - printf("exits the program.\n"); - - for ( ; ; ) { - printf("\nEnter pattern: "); - (void)fflush(stdout); - if (gets(p) == NULL || p[0] == '\0') - break; - for ( ; ; ) { - printf("Enter text: "); - (void)fflush(stdout); - if (gets(text) == NULL) - exit(0); - if (text[0] == '\0') - /* Blank line; go back and get a new pattern. */ - break; - printf(" %s\n", wildmat(text, p) ? "YES" : "NO"); - } - } - - exit(0); - /* NOTREACHED */ -} -#endif /* TEST */ diff --git a/nx-X11/config/util/printver.c b/nx-X11/config/util/printver.c deleted file mode 100644 index 2dbca74..0000000 --- a/nx-X11/config/util/printver.c +++ /dev/null @@ -1,29 +0,0 @@ - -/* - * A simple program to make it possible to print the XFree86 version and - * date info as defined in xf86Version.h and xf86Date.h very early in the - * build process. - */ - -/* $XFree86: xc/config/util/printver.c,v 1.2 2003/02/26 09:21:33 dawes Exp $ */ - -#include <stdio.h> -#include <stdlib.h> -#include "xf86Version.h" -#include "xf86Date.h" - -int -main() -{ -#ifdef XF86_VERSION_MAJOR - printf(" version %d.%d.%d", XF86_VERSION_MAJOR, XF86_VERSION_MINOR, - XF86_VERSION_PATCH); - if (XF86_VERSION_SNAP != 0) - printf(".%d", XF86_VERSION_SNAP); -#ifdef XF86_DATE - printf(" (%s)", XF86_DATE); -#endif -#endif - exit(0); -} - diff --git a/nx-X11/config/util/revpath.c b/nx-X11/config/util/revpath.c deleted file mode 100644 index db88393..0000000 --- a/nx-X11/config/util/revpath.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 1999 by The XFree86 Project, Inc. - */ -/* $XFree86: xc/config/util/revpath.c,v 1.2 1999/02/01 11:55:49 dawes Exp $ */ - -/* - * Reverse a pathname. It returns a relative path that can be used to undo - * 'cd argv[1]'. - * - * It is impossible to do this in general, but this handles the cases that - * come up in imake. Maybe imake should use an absolute path for $(TOP) - * instead of a relative path so that this problem can be avoided? - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -int -main(int argc, char *argv[]) -{ - int levels = 0; - char *p; - - /* Silently ignore invalid usage */ - if (argc != 2) - exit(0); - - /* Split the path and count the levels */ - p = strtok(argv[1], "/"); - while (p) { - if (strcmp(p, ".") == 0) - ; - else if (strcmp(p, "..") == 0) - levels--; - else - levels++; - p = strtok(NULL, "/"); - } - - while (levels-- > 0) - printf("../"); - - printf("\n"); - - exit(0); -} diff --git a/nx-X11/config/util/revpath.man b/nx-X11/config/util/revpath.man deleted file mode 100644 index 5b9cace..0000000 --- a/nx-X11/config/util/revpath.man +++ /dev/null @@ -1,45 +0,0 @@ -.\" $XFree86: xc/config/util/revpath.man,v 1.1 1999/01/03 03:58:14 dawes Exp $ -.TH REVPATH 1 __vendorversion__ -.SH NAME -revpath \- generate a relative path that can be used to undo a change-directory -.SH SYNOPSIS -.B revpath -.I path -.SH DESCRIPTION -The -.I revpath -program prints out a relative path that is the ``reverse'' or ``inverse'' of -.IR path . -Start with two directories -.I top -and -.IR bottom , -with the latter below the former, and -.I path -is the location of -.I bottom -relative to -.IR top . -The output of -.I revpath -is the location of -.I top -relative to -.IR bottom . -The resulting path contains a trailing `/' character when the result is -non-trivial. -If -.I path -is equivalent to `.', the resulting output is empty. -If -.I path -is invalid in some way (e.g., doesn't represent the path to a subdirectory) -the output is also empty and no error messages are ever generated. -.SH DIAGNOSTICS -There are no diagnostics. Error conditions are silently ignored, and the -exit status is always 0. -.SH BUGS -It isn't possible to reverse arbitrary relative paths. -If any path element between the two end points of -.I path -is a symbolic link, the results will probably be incorrect. diff --git a/nx-X11/config/util/syminst.sh b/nx-X11/config/util/syminst.sh deleted file mode 100644 index f9e1863..0000000 --- a/nx-X11/config/util/syminst.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh - -# -# syminst - install with a symbolic link back to the build tree -# - -# set DOITPROG to echo to test this script - -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -lnprog="${LNPROG-ln -s}" -rmprog="${RMPROG-rm}" - -instcmd="$lnprog" -rmcmd="$rmprog -f" -srcdir=`pwd`/ -src="" -dst="" - -while [ x"$1" != x ]; do - case $1 in - -c) shift - continue;; - - -m) shift - shift - continue;; - - -o) shift - shift - continue;; - - -g) shift - shift - continue;; - - -s) shift - continue;; - - -DIR) srcdir=`echo $2 | sed 's;/\./;/;g'`/ - shift - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "syminst: no input file specified" - exit 1 -fi - -if [ x"$dst" = x ] -then - echo "syminst: no destination specified" - exit 1 -fi - - -# if destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - -if [ -d $dst ] -then - dst="$dst"/`basename $src` -fi - -case $src in - /*) srcdir="" - instcmd=cp;; -esac - -# get rid of the old one and mode the new one in - -$doit $rmcmd $dst -$doit $instcmd $srcdir$src $dst - -exit 0 diff --git a/nx-X11/config/util/x11mf.sh b/nx-X11/config/util/x11mf.sh deleted file mode 100644 index 2c44194..0000000 --- a/nx-X11/config/util/x11mf.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -# -# generate a Makefile within the build tree -# -# usage: x11mf [treedir] -# - -if [ x$1 != x ]; then - tree=$1 -else - tree=/x11 -fi - -dir=`pwd` -top=`(cd $tree; /bin/pwd)` -intree=no - -case $dir in - $top*) intree=yes;; -esac - -if [ $intree != yes ]; then - echo "$0: Must be underneath $tree" - exit 1 -fi - -(cd ..; make SUBDIRS=`basename $dir` Makefiles) diff --git a/nx-X11/config/util/xmake.cmd b/nx-X11/config/util/xmake.cmd deleted file mode 100644 index 24e1494..0000000 --- a/nx-X11/config/util/xmake.cmd +++ /dev/null @@ -1,5 +0,0 @@ -/* REXX */ -/* $XFree86: xc/config/util/xmake.cmd,v 3.0 1996/01/24 21:56:17 dawes Exp $ */ -'@echo off' -PARSE ARG a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 -x11make.exe 'MAKE=x11make.exe SHELL=' a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 diff --git a/nx-X11/config/util/xmkmf.cpp b/nx-X11/config/util/xmkmf.cpp deleted file mode 100644 index 3d03bde..0000000 --- a/nx-X11/config/util/xmkmf.cpp +++ /dev/null @@ -1,70 +0,0 @@ -XCOMM!/bin/sh - -XCOMM $XFree86: xc/config/util/xmkmf.cpp,v 1.3 2000/11/06 21:57:10 dawes Exp $ -XCOMM -XCOMM make a Makefile from an Imakefile from inside or outside the sources -XCOMM -XCOMM $Xorg: xmkmf.cpp,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ - -usage="usage: $0 [-a] [top_of_sources_pathname [current_directory]]" - -configdirspec=CONFIGDIRSPEC -topdir= -curdir=. -do_all= -imake_defines= - -while [ $# -gt 0 ] -do - case "$1" in - -D*) - imake_defines="$imake_defines $1" - shift - ;; - -a) - do_all="yes" - shift - ;; - *) - break - ;; - esac -done - -case $# in - 0) ;; - 1) topdir=$1 ;; - 2) topdir=$1 curdir=$2 ;; - *) echo "$usage" 1>&2; exit 1 ;; -esac - -case "$topdir" in - -*) echo "$usage" 1>&2; exit 1 ;; -esac - -if [ -f Makefile ]; then - echo mv -f Makefile Makefile.bak - mv -f Makefile Makefile.bak -fi - -if [ "$topdir" = "" ]; then - args="-DUseInstalled "$configdirspec -else - args="-I$topdir/config/cf -DTOPDIR=$topdir -DCURDIR=$curdir" -fi - -echo imake $imake_defines $args -case "$do_all" in -yes) - imake $imake_defines $args && - echo "make Makefiles" && - make Makefiles && - echo "make includes" && - make includes && - echo "make depend" && - make depend - ;; -*) - imake $imake_defines $args - ;; -esac diff --git a/nx-X11/config/util/xmkmf.man b/nx-X11/config/util/xmkmf.man deleted file mode 100644 index 8a4f234..0000000 --- a/nx-X11/config/util/xmkmf.man +++ /dev/null @@ -1,89 +0,0 @@ -.\" $Xorg: xmkmf.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ -.\" Copyright (c) 1993, 1994, 1998 The Open Group -.\" -.\" Permission to use, copy, modify, distribute, and sell this software and its -.\" documentation for any purpose is hereby granted without fee, provided that -.\" the above copyright notice appear in all copies and that both that -.\" copyright notice and this permission notice appear in supporting -.\" documentation. -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -.\" SOFTWARE. -.\" -.\" Except as contained in this notice, the name of The Open Group shall not -.\" be used in advertising or otherwise to promote the sale, use or other -.\" dealing in this Software without prior written authorization from The -.\" Open Group. -.\" -.\" $XFree86: xc/config/util/xmkmf.man,v 1.2 2001/01/27 18:19:55 dawes Exp $ -.\" -.TH XMKMF 1 __xorgversion__ -.SH NAME -xmkmf \- create a Makefile from an Imakefile -.SH SYNOPSIS -.B xmkmf -[ -a ] [ -.I topdir -[ -.I curdir -] ] -.SH DESCRIPTION -The -.I xmkmf -command is the normal way to create a -.I Makefile -from an -.I Imakefile -shipped with third-party software. -.PP -When invoked with no arguments in a directory containing an -.I Imakefile, -the -.I imake -program is run with arguments appropriate for your system -(configured into -.I xmkmf -when X was built) and generates a -.I Makefile. -.PP -When invoked with the -.I \-a -option, -.I xmkmf -builds the -.I Makefile -in the current directory, and then automatically executes -``make Makefiles'' (in case there are subdirectories), -``make includes'', -and ``make depend'' for you. -This is the normal way to configure software that is outside -the X Consortium build tree. -.PP -If working inside the X Consortium build tree (unlikely unless you -are an X developer, and even then this option is never really used), the -.I topdir -argument should be specified as the relative pathname from the -current directory to the top of the build tree. Optionally, -.I curdir -may be specified as a relative pathname from the top of the build -tree to the current directory. It is necessary to supply -.I curdir -if the current directory has subdirectories, or the -.I Makefile -will not be able to build the subdirectories. -If a -.I topdir -is given, -.I xmkmf -assumes nothing is installed on your system and looks for files in -the build tree instead of using the installed versions. -.SH "SEE ALSO" -imake(1) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit fad840cfe558601a8ec02414f1235824bc9f3168 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Apr 15 12:37:30 2015 +0200 test script: doc/examples/run-nxproxy2nxproxy-test Launch this script (after nxproxy has been installed into $PATH) and you will be able to evoke any local command through a nxproxy -C <-> nxproxy -S connection on DISPLAY=:8. This eases testing NX compression without using NX agent on the server side. How to use: # install nxproxy into $PATH, then... $ cd doc/examples/ $ ./run-nxproxy2nxproxy-test $ export DISPLAY=:8 $ xterm --- doc/examples/run-nxproxy2nxproxy-test | 140 +++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/doc/examples/run-nxproxy2nxproxy-test b/doc/examples/run-nxproxy2nxproxy-test new file mode 100755 index 0000000..b7bf64d --- /dev/null +++ b/doc/examples/run-nxproxy2nxproxy-test @@ -0,0 +1,140 @@ +#!/bin/bash + +set -e + +#/**************************************************************************/ +#/* */ +#/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +#/* Copyright (c) 2015 Mike Gabriel <mike.gabriel@das-netzwerkteam.de */ +#/* */ +#/* NXSCRIPTS, NX protocol compression and NX extensions to this software */ +#/* are copyright of NoMachine. Redistribution and use of the present */ +#/* software is allowed according to terms specified in the file LICENSE */ +#/* which comes in the source distribution. */ +#/* */ +#/* Check http://www.nomachine.com/licensing.html for applicability. */ +#/* */ +#/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +#/* */ +#/* All rights reserved. */ +#/* */ +#/**************************************************************************/ + +# +# Uncomment this to enable echo. +# +# set -x +# + +ulimit -c unlimited + +NX_PORT=8 + +NX_SYSTEM=${HOME}/.nx + +NX_ROOT=${HOME}/.nx + +mkdir -p "${NX_ROOT}" + +# +# This should be randlomly generated. +# + +#NX_COOKIE=`xauth list |grep "${HOSTNAME}/unix:\<${NX_PORT}\>" | grep MIT | cut -f 5 -d ' '` +NX_COOKIE=123efa980d2cba234ef6f73deac810ff + + +# +# Create the directories for the NX session. +# + +rm -rf ${NX_ROOT}/C-${NX_PORT} || exit +mkdir -p ${NX_ROOT}/C-${NX_PORT} || exit + +rm -rf ${HOME}/.nx/S-${NX_PORT} || exit +mkdir -p ${HOME}/.nx/S-${NX_PORT} || exit + +# +# Set the path to libraries and NX executables. +# + +LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${HOME}/NX/nxcomp:${HOME}/NX/nxcompext:${HOME}/NX/nx-X11/exports/lib" +export LD_LIBRARY_PATH + +PATH="${PATH}:${HOME}/NX/nxclient/nxclient:${HOME}/NX/nx-X11/programs/Xserver/" +export PATH + +# +# Create the fake cookie for this display. +# + +echo -ne "Creating the X authorization cookie.\n" + +xauth add ${HOSTNAME}/unix:${NX_PORT} MIT-MAGIC-COOKIE-1 ${NX_COOKIE} +xauth add ${HOSTNAME}:${NX_PORT} MIT-MAGIC-COOKIE-1 ${NX_COOKIE} + +# +# Options are written in a file 'options' in the session +# directory. The agent will use the DISPLAY settings, so +# we pass in the DISPLAY the name of the options file. +# +# cache=8M,images=32M,link=modem,type=unix-kde,cleanup=0, +# accept=62.98.198.1,cookie=$NX_COOKIE, +# id=giulietta.nomachine.com-1098-6A4649FD0FCA57FAC275AF3F1C45B10F, +# media=1:1098 +# + +#NX_HOST=nx/nx,link=lan,pack=no-pack,keybd=1,samba=1,cups=1,limit=0,\ +#accept=127.0.0.1,cookie=$NX_COOKIE,errors=${NX_ROOT}/C-${NX_PORT}/session + +#NX_HOST=nx/nx,link=lan,pack=16m-jpeg-9,keybd=1,samba=1,cups=1,limit=0,\ +#accept=127.0.0.1,cookie=$NX_COOKIE,errors=${NX_ROOT}/C-${NX_PORT}/session + +#NX_HOST=nx/nx,cache=8192k,link=modem,keybd=1,samba=1,cups=1,limit=0,\ +#connect=127.0.0.1,cookie=$NX_COOKIE,errors=${NX_ROOT}/C-${NX_PORT}/session + +NX_HOST=nx/nx,link=lan,pack=16m-jpeg-9,keybd=1,samba=1,cups=1,limit=0,\ +accept=127.0.0.1,cookie=$NX_COOKIE,errors=${NX_ROOT}/C-${NX_PORT}/session + +echo "${NX_HOST}:${NX_PORT}" >${NX_ROOT}/C-${NX_PORT}/options + +# +# Run the local proxy impersonating the X display. +# + +echo -ne "Running the X client side NX proxy.\n" + +#valgrind -v --num-callers=8 --error-limit=no --trace-children=no \ +#valgrind --tool=memcheck --track-fds=yes \ +nxproxy -C nx/nx,options=${NX_ROOT}/C-${NX_PORT}/options:${NX_PORT} \ +2>>${HOME}/.nx/C-${NX_PORT}/session & + +# +# The X server side proxy will forward the connection +# to the original DISPLAY. +# + +# +# These are the nxproxy options used to run a typical session. +# +# cookie=$NX_COOKIE,root=/home/pinzari/.nx,media=32824, +# session=kde_on_giulietta,id=giulietta.nomachine.com-1098-6A4649FD0FCA57FAC275AF3F1C45B10F, +# connect=giulietta.nomachine.com:1098 +# + +NX_HOST=nx/nx,keybd=1,samba=1,cups=1,connect=localhost,cookie=$NX_COOKIE,errors=${NX_ROOT}/S-${NX_PORT}/session + +echo "${NX_HOST}:${NX_PORT}" >${NX_ROOT}/S-${NX_PORT}/options + +echo -ne "Running the X server side NX proxy.\n" + +#cachegrind -v --dumps=100000000 \ +#cachegrind -v \ +#valgrind -v --leak-check=yes --leak-resolution=high --show-reachable=yes \ +# --show-reachable=yes --suppressions=nxproxy/nxproxy.supp \ +# --weird-hacks=lax-ioctls --num-callers=8 --logfile-fd=2 \ +nxproxy -S nx/nx,options=${NX_ROOT}/S-${NX_PORT}/options:${NX_PORT} \ +2>>${HOME}/.nx/S-${NX_PORT}/session & + +echo -ne "Session running on display :$NX_PORT.\n" + -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit bad67799229b94ea2ba0174319949766ad1c2fc6 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Apr 15 09:58:01 2015 +0200 old-arch cleanup: Drop CRAY support (i.e., drop code related to CRAY, _CRAY, WORD64, WORD64ALIGN, MUSTCOPY, UNSIGNEDBITFIELDS definitions). --- nx-X11/config/cf/Imake.cf | 11 -- nx-X11/config/imake/imakemdep.h | 20 +-- nx-X11/config/makedepend/main.c | 2 +- nx-X11/include/Xmd.h | 53 +------ nx-X11/include/Xos.h | 10 +- nx-X11/include/Xpoll.h.in | 4 +- nx-X11/include/Xproto.h | 13 -- nx-X11/include/extensions/XKBstr.h | 5 - nx-X11/include/extensions/lbxopts.h | 2 +- nx-X11/include/extensions/lbxstr.h | 4 - nx-X11/include/extensions/xf86bigfstr.h | 4 - nx-X11/lib/X11/ChWindow.c | 9 -- nx-X11/lib/X11/ConfWind.c | 13 -- nx-X11/lib/X11/CrWindow.c | 9 -- nx-X11/lib/X11/DrArc.c | 13 -- nx-X11/lib/X11/DrLine.c | 16 -- nx-X11/lib/X11/DrPoint.c | 15 -- nx-X11/lib/X11/DrRect.c | 16 -- nx-X11/lib/X11/FillArc.c | 16 -- nx-X11/lib/X11/FillRct.c | 15 -- nx-X11/lib/X11/Font.c | 45 +----- nx-X11/lib/X11/FontInfo.c | 24 +-- nx-X11/lib/X11/ImUtil.c | 8 - nx-X11/lib/X11/LiHosts.c | 7 - nx-X11/lib/X11/Macros.c | 5 - nx-X11/lib/X11/MoveWin.c | 9 -- nx-X11/lib/X11/PolyTxt16.c | 26 +--- nx-X11/lib/X11/Quarks.c | 4 - nx-X11/lib/X11/RestackWs.c | 11 +- nx-X11/lib/X11/SendEvent.c | 5 - nx-X11/lib/X11/StColor.c | 13 -- nx-X11/lib/X11/Text16.c | 23 --- nx-X11/lib/X11/XKBNames.c | 56 ------- nx-X11/lib/X11/XKBRdBuf.c | 27 +--- nx-X11/lib/X11/XKBlibint.h | 2 +- nx-X11/lib/X11/Xlib.h | 4 - nx-X11/lib/X11/XlibAsync.c | 5 - nx-X11/lib/X11/XlibInt.c | 252 ------------------------------- nx-X11/lib/X11/Xlibint.h | 63 +------- nx-X11/lib/X11/cmsTrig.c | 4 - nx-X11/lib/X11/omXChar.c | 71 --------- nx-X11/lib/Xrender/FillRect.c | 15 -- nx-X11/lib/Xrender/Xrenderint.h | 7 +- nx-X11/lib/Xtst/XRecord.c | 28 ---- nx-X11/lib/Xxf86vm/XF86VMode.c | 2 - nx-X11/lib/font/fc/fslibos.h | 4 - nx-X11/lib/font/fontfile/ffcheck.c | 2 - nx-X11/lib/font/fontfile/register.c | 12 +- nx-X11/lib/xtrans/Xtrans.c | 38 ----- nx-X11/lib/xtrans/Xtrans.h | 2 +- nx-X11/lib/xtrans/Xtransint.h | 8 +- nx-X11/lib/xtrans/Xtranssock.c | 16 -- nx-X11/lib/xtrans/Xtransutil.c | 9 -- 53 files changed, 26 insertions(+), 1031 deletions(-) diff --git a/nx-X11/config/cf/Imake.cf b/nx-X11/config/cf/Imake.cf index 16b79c8..76e4664 100644 --- a/nx-X11/config/cf/Imake.cf +++ b/nx-X11/config/cf/Imake.cf @@ -520,17 +520,6 @@ XCOMM $XFree86: xc/config/cf/Imake.cf,v 3.88 2003/12/16 21:30:21 herrb Exp $ # define MacIIArchitecture #endif /* macII */ -#ifdef _CRAY -# define MacroIncludeFile <cray.cf> -# define MacroFile cray.cf -# undef cray -# undef CRAY -# undef CRAY1 -# undef CRAY2 -# undef YMP -# define CrayArchitecture -#endif /* _CRAY */ - #ifdef sgi # define MacroIncludeFile <sgi.cf> # define MacroFile sgi.cf diff --git a/nx-X11/config/imake/imakemdep.h b/nx-X11/config/imake/imakemdep.h index bacc3af..4694541 100644 --- a/nx-X11/config/imake/imakemdep.h +++ b/nx-X11/config/imake/imakemdep.h @@ -112,9 +112,6 @@ in this Software without prior written authorization from The Open Group. #endif #endif #endif -#ifdef _CRAY -#define imake_ccflags "-DSYSV -DUSG" -#endif #if defined(_IBMR2) || defined(aix) #define imake_ccflags "-Daix -DSYSV" @@ -225,7 +222,7 @@ in this Software without prior written authorization from The Open Group. * descriptor onto another, define such a mechanism here (if you don't * already fall under the existing category(ies). */ -#if defined(SYSV) && !defined(_CRAY) && !defined(Mips) && !defined(_SEQUENT_) && !defined(__SCO__) +#if defined(SYSV) && !defined(Mips) && !defined(_SEQUENT_) && !defined(__SCO__) #define dup2(fd1,fd2) ((fd1 == fd2) ? fd1 : (close(fd2), \ fcntl(fd1, F_DUPFD, fd2))) #endif @@ -309,9 +306,6 @@ in this Software without prior written authorization from The Open Group. #ifdef __sxg__ #define DEFAULT_CPP "/usr/lib/cpp" #endif -#ifdef _CRAY -#define DEFAULT_CPP "/lib/pcpp" -#endif #if defined(__386BSD__) #define DEFAULT_CPP "/usr/libexec/cpp" #endif @@ -497,9 +491,6 @@ char *cpp_argv[ARGUMENTS] = { "-Duniosu", #endif #endif /* luna */ -#ifdef _CRAY /* Cray */ - "-Ucray", -#endif #ifdef Mips "-DMips", /* Define and use Mips for Mips Co. OS/mach. */ # if defined(SYSTYPE_BSD) || defined(BSD) || defined(BSD43) @@ -1098,15 +1089,6 @@ struct symtab predefs[] = { #ifdef VMS {"VMS", "1"}, #endif -#ifdef cray - {"cray", "1"}, -#endif -#ifdef CRAY - {"CRAY", "1"}, -#endif -#ifdef _CRAY - {"_CRAY", "1"}, -#endif #ifdef att {"att", "1"}, #endif diff --git a/nx-X11/config/makedepend/main.c b/nx-X11/config/makedepend/main.c index d413964..94fed05 100644 --- a/nx-X11/config/makedepend/main.c +++ b/nx-X11/config/makedepend/main.c @@ -746,7 +746,7 @@ char *base_name(char *file) # define NEED_RENAME # endif #else /* Imake configured, check known OS'es without rename() */ -# if defined(USG) && !defined(CRAY) && !defined(SVR4) && !defined(__UNIXOS2__) && !defined(clipper) && !defined(__clipper__) +# if defined(USG) && !defined(SVR4) && !defined(__UNIXOS2__) && !defined(clipper) && !defined(__clipper__) # define NEED_RENAME # endif #endif diff --git a/nx-X11/include/Xmd.h b/nx-X11/include/Xmd.h index 8c70de9..78dd895 100644 --- a/nx-X11/include/Xmd.h +++ b/nx-X11/include/Xmd.h @@ -55,9 +55,6 @@ SOFTWARE. /* * Special per-machine configuration flags. */ -#ifdef CRAY -#define WORD64 /* 64-bit architecture */ -#endif #if defined (_LP64) || \ defined(__alpha) || defined(__alpha__) || \ defined(__ia64__) || defined(ia64) || \ @@ -71,15 +68,6 @@ SOFTWARE. #endif /* - * Stuff to handle large architecture machines; the constants were generated - * on a 32-bit machine and must coorespond to the protocol. - */ -#ifdef WORD64 -#define MUSTCOPY -#endif /* WORD64 */ - - -/* * Definition of macro used to set constants for size of network structures; * machines with preprocessors that can't handle all of the sz_ symbols * can define this macro to be sizeof(x) if and only if their compiler doesn't @@ -105,24 +93,6 @@ SOFTWARE. * need them. Note that bitfields are not guarranteed to be signed * (or even unsigned) according to ANSI C. */ -#ifdef WORD64 -typedef long INT64; -typedef unsigned long CARD64; -#define B32 :32 -#define B16 :16 -#ifdef UNSIGNEDBITFIELDS -typedef unsigned int INT32; -typedef unsigned int INT16; -#else -#ifdef __STDC__ -typedef signed int INT32; -typedef signed int INT16; -#else -typedef int INT32; -typedef int INT16; -#endif -#endif -#else #define B32 #define B16 #ifdef LONG64 @@ -132,7 +102,6 @@ typedef int INT32; typedef long INT32; #endif typedef short INT16; -#endif #if defined(__STDC__) || defined(sgi) || defined(AIXV3) typedef signed char INT8; @@ -163,17 +132,6 @@ typedef CARD8 BOOL; /* * definitions for sign-extending bitfields on 64-bit architectures */ -#if defined(WORD64) && defined(UNSIGNEDBITFIELDS) -#define cvtINT8toInt(val) (((val) & 0x00000080) ? ((val) | 0xffffffffffffff00) : (val)) -#define cvtINT16toInt(val) (((val) & 0x00008000) ? ((val) | 0xffffffffffff0000) : (val)) -#define cvtINT32toInt(val) (((val) & 0x80000000) ? ((val) | 0xffffffff00000000) : (val)) -#define cvtINT8toShort(val) cvtINT8toInt(val) -#define cvtINT16toShort(val) cvtINT16toInt(val) -#define cvtINT32toShort(val) cvtINT32toInt(val) -#define cvtINT8toLong(val) cvtINT8toInt(val) -#define cvtINT16toLong(val) cvtINT16toInt(val) -#define cvtINT32toLong(val) cvtINT32toInt(val) -#else #define cvtINT8toInt(val) (val) #define cvtINT16toInt(val) (val) #define cvtINT32toInt(val) (val) @@ -183,21 +141,12 @@ typedef CARD8 BOOL; #define cvtINT8toLong(val) (val) #define cvtINT16toLong(val) (val) #define cvtINT32toLong(val) (val) -#endif /* WORD64 and UNSIGNEDBITFIELDS */ -#ifdef MUSTCOPY -/* - * This macro must not cast or else pointers will get aligned and be wrong - */ -#define NEXTPTR(p,t) (((char *) p) + SIZEOF(t)) -#else /* else not MUSTCOPY, this is used for 32-bit machines */ /* - * this version should leave result of type (t *), but that should only be - * used when not in MUSTCOPY + * this version should leave result of type (t *) */ #define NEXTPTR(p,t) (((t *)(p)) + 1) -#endif /* MUSTCOPY - used machines whose C structs don't line up with proto */ #endif /* XMD_H */ diff --git a/nx-X11/include/Xos.h b/nx-X11/include/Xos.h index 99cb3be..04b14b6 100644 --- a/nx-X11/include/Xos.h +++ b/nx-X11/include/Xos.h @@ -45,9 +45,6 @@ in this Software without prior written authorization from The Open Group. #ifdef USG #ifndef __TYPES__ -#ifdef CRAY -#define word word_t -#endif /* CRAY */ #include <sys/types.h> /* forgot to protect it... */ #define __TYPES__ #endif /* __TYPES__ */ @@ -149,7 +146,7 @@ extern int sys_nerr; */ #if defined(X_NOT_POSIX) #include <fcntl.h> -#if defined(USL) || defined(CRAY) || defined(MOTOROLA) || (defined(i386) && (defined(SYSV) || defined(SVR4))) || defined(__sxg__) +#if defined(USL) || defined(MOTOROLA) || (defined(i386) && (defined(SYSV) || defined(SVR4))) || defined(__sxg__) #include <unistd.h> #endif #ifdef WIN32 @@ -179,10 +176,7 @@ extern int sys_nerr; #include <sys/time.h> #endif #include <time.h> -#ifdef CRAY -#undef word -#endif /* CRAY */ -#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__) && !defined(clipper) && !defined(__clipper__) +#if defined(USG) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__) && !defined(clipper) && !defined(__clipper__) struct timeval { long tv_sec; long tv_usec; diff --git a/nx-X11/include/Xpoll.h.in b/nx-X11/include/Xpoll.h.in index dcea39c..3200c37 100644 --- a/nx-X11/include/Xpoll.h.in +++ b/nx-X11/include/Xpoll.h.in @@ -81,12 +81,12 @@ from The Open Group. * 'the branch below is the fallthrough for halfway modern systems', and include * <sys/select.h>, so we get the FD_* macros. */ #if !defined(DGUX) -# if (defined(SVR4) || defined(CRAY) || defined(AIXV3)) && !defined(FD_SETSIZE) +# if (defined(SVR4) || defined(AIXV3)) && !defined(FD_SETSIZE) # include <sys/select.h> # ifdef luna # include <sysent.h> # endif -# else /* not SVR4/CRAY/AIXv3 */ +# else /* not SVR4/AIXv3 */ # if defined(AIXV4) /* AIX 4.2 fubar-ed <sys/select.h>, so try really hard. */ # if !defined(NFDBITS) # include <sys/select.h> diff --git a/nx-X11/include/Xproto.h b/nx-X11/include/Xproto.h index cb6b79f..877aab4 100644 --- a/nx-X11/include/Xproto.h +++ b/nx-X11/include/Xproto.h @@ -629,13 +629,9 @@ typedef struct _xQueryFontReply { CARD16 sequenceNumber B16; CARD32 length B32; /* definitely > 0, even if "nCharInfos" is 0 */ xCharInfo minBounds; -#ifndef WORD64 CARD32 walign1 B32; -#endif xCharInfo maxBounds; -#ifndef WORD64 CARD32 walign2 B32; -#endif CARD16 minCharOrByte2 B16, maxCharOrByte2 B16; CARD16 defaultChar B16; CARD16 nFontProps B16; /* followed by this many xFontProp structures */ @@ -678,13 +674,9 @@ typedef struct { CARD16 sequenceNumber B16; CARD32 length B32; /* definitely > 0, even if "nameLength" is 0 */ xCharInfo minBounds; -#ifndef WORD64 CARD32 walign1 B32; -#endif xCharInfo maxBounds; -#ifndef WORD64 CARD32 walign2 B32; -#endif CARD16 minCharOrByte2 B16, maxCharOrByte2 B16; CARD16 defaultChar B16; CARD16 nFontProps B16; /* followed by this many xFontProp structures */ @@ -1419,12 +1411,7 @@ typedef struct { CARD16 length B16; Window destination B32; CARD32 eventMask B32; -#ifdef WORD64 - /* the structure should have been quad-aligned */ - BYTE eventdata[SIZEOF(xEvent)]; -#else xEvent event; -#endif /* WORD64 */ } xSendEventReq; typedef struct { diff --git a/nx-X11/include/extensions/XKBstr.h b/nx-X11/include/extensions/XKBstr.h index bc63f49..6131c93 100644 --- a/nx-X11/include/extensions/XKBstr.h +++ b/nx-X11/include/extensions/XKBstr.h @@ -33,12 +33,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. #define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f)) #define XkbIntTo2Chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff))) -#if defined(WORD64) && defined(UNSIGNEDBITFIELDS) -#define Xkb2CharsToInt(h,l) ((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)):\ - (int)(((h)<<8)|(l)&0x7fff)) -#else #define Xkb2CharsToInt(h,l) ((short)(((h)<<8)|(l))) -#endif /* * Common data structures and access macros diff --git a/nx-X11/include/extensions/lbxopts.h b/nx-X11/include/extensions/lbxopts.h index 02e87fd..ac1e121 100644 --- a/nx-X11/include/extensions/lbxopts.h +++ b/nx-X11/include/extensions/lbxopts.h @@ -78,7 +78,7 @@ #include <sys/types.h> -#if defined(WIN32) || (defined(USG) && !defined(CRAY) && !defined(umips) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)) +#if defined(WIN32) || (defined(USG) && !defined(umips) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)) struct iovec { caddr_t iov_base; diff --git a/nx-X11/include/extensions/lbxstr.h b/nx-X11/include/extensions/lbxstr.h index 5b79e36..a7521b1 100644 --- a/nx-X11/include/extensions/lbxstr.h +++ b/nx-X11/include/extensions/lbxstr.h @@ -377,13 +377,9 @@ typedef struct { typedef struct { xCharInfo minBounds; /* XXX do we need to leave this gunk? */ -#ifndef WORD64 CARD32 walign1 B32; -#endif xCharInfo maxBounds; -#ifndef WORD64 CARD32 walign2 B32; -#endif CARD16 minCharOrByte2 B16, maxCharOrByte2 B16; CARD16 defaultChar B16; CARD16 nFontProps B16; /* followed by this many xFontProp structures */ diff --git a/nx-X11/include/extensions/xf86bigfstr.h b/nx-X11/include/extensions/xf86bigfstr.h index 7ba199b..95f107a 100644 --- a/nx-X11/include/extensions/xf86bigfstr.h +++ b/nx-X11/include/extensions/xf86bigfstr.h @@ -58,13 +58,9 @@ typedef struct { CARD16 sequenceNumber B16; CARD32 length B32; xCharInfo minBounds; -#ifndef WORD64 CARD32 walign1 B32; -#endif xCharInfo maxBounds; -#ifndef WORD64 CARD32 walign2 B32; -#endif CARD16 minCharOrByte2 B16; CARD16 maxCharOrByte2 B16; CARD16 defaultChar B16; diff --git a/nx-X11/lib/X11/ChWindow.c b/nx-X11/lib/X11/ChWindow.c index a403d76..615b6d2 100644 --- a/nx-X11/lib/X11/ChWindow.c +++ b/nx-X11/lib/X11/ChWindow.c @@ -44,20 +44,11 @@ unsigned int width, height; req->window = w; req->mask = CWWidth | CWHeight; -#ifdef MUSTCOPY - { - unsigned long lwidth = width, lheight = height; - dpy->bufptr -= 8; - Data32 (dpy, (long *) &lwidth, 4); /* order dictated by values of */ - Data32 (dpy, (long *) &lheight, 4); /* CWWidth and CWHeight */ - } -#else { CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq); *valuePtr++ = width; *valuePtr = height; } -#endif /* MUSTCOPY */ UnlockDisplay(dpy); SyncHandle(); return 1; diff --git a/nx-X11/lib/X11/ConfWind.c b/nx-X11/lib/X11/ConfWind.c index fddd283..adcc7b6 100644 --- a/nx-X11/lib/X11/ConfWind.c +++ b/nx-X11/lib/X11/ConfWind.c @@ -44,18 +44,6 @@ unsigned int width, height; GetReqExtra(ConfigureWindow, 16, req); req->window = w; req->mask = CWX | CWY | CWWidth | CWHeight; -#ifdef MUSTCOPY - { - long lx = x, ly = y; - unsigned long lwidth = width, lheight = height; - - dpy->bufptr -= 16; - Data32 (dpy, (long *) &lx, 4); /* order must match values of */ - Data32 (dpy, (long *) &ly, 4); /* CWX, CWY, CWWidth, and CWHeight */ - Data32 (dpy, (long *) &lwidth, 4); - Data32 (dpy, (long *) &lheight, 4); - } -#else { register CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq); @@ -64,7 +52,6 @@ unsigned int width, height; *valuePtr++ = width; *valuePtr = height; } -#endif /* MUSTCOPY */ UnlockDisplay(dpy); SyncHandle(); return 1; diff --git a/nx-X11/lib/X11/CrWindow.c b/nx-X11/lib/X11/CrWindow.c index 9a15f2e..f64ca9f 100644 --- a/nx-X11/lib/X11/CrWindow.c +++ b/nx-X11/lib/X11/CrWindow.c @@ -56,20 +56,11 @@ Window XCreateSimpleWindow(dpy, parent, x, y, width, height, wid = req->wid = XAllocID(dpy); req->mask = CWBackPixel | CWBorderPixel; -#ifdef MUSTCOPY - { - unsigned long lbackground = background, lborder = border; - dpy->bufptr -= 8; - Data32 (dpy, (long *) &lbackground, 4); - Data32 (dpy, (long *) &lborder, 4); - } -#else { register CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xCreateWindowReq); *valuePtr++ = background; *valuePtr = border; } -#endif /* MUSTCOPY */ UnlockDisplay(dpy); SyncHandle(); diff --git a/nx-X11/lib/X11/DrArc.c b/nx-X11/lib/X11/DrArc.c index 3111676..58e5577 100644 --- a/nx-X11/lib/X11/DrArc.c +++ b/nx-X11/lib/X11/DrArc.c @@ -48,12 +48,6 @@ XDrawArc(dpy, d, gc, x, y, width, height, angle1, angle2) { register xPolyArcReq *req; register xArc *arc; -#ifdef MUSTCOPY - xArc arcdata; - long len = SIZEOF(xArc); - - arc = &arcdata; -#endif /* MUSTCOPY */ LockDisplay(dpy); FlushGC(dpy, gc); @@ -62,9 +56,7 @@ XDrawArc(dpy, d, gc, x, y, width, height, angle1, angle2) req->drawable = d; req->gc = gc->gid; -#ifndef MUSTCOPY arc = (xArc *) NEXTPTR(req,xPolyArcReq); -#endif /* MUSTCOPY */ arc->x = x; arc->y = y; @@ -73,11 +65,6 @@ XDrawArc(dpy, d, gc, x, y, width, height, angle1, angle2) arc->angle1 = angle1; arc->angle2 = angle2; -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xArc); - Data (dpy, (char *) arc, len); -#endif /* MUSTCOPY */ - UnlockDisplay(dpy); SyncHandle(); return 1; diff --git a/nx-X11/lib/X11/DrLine.c b/nx-X11/lib/X11/DrLine.c index 5909506..4a7c620 100644 --- a/nx-X11/lib/X11/DrLine.c +++ b/nx-X11/lib/X11/DrLine.c @@ -44,12 +44,6 @@ XDrawLine (dpy, d, gc, x1, y1, x2, y2) int x1, y1, x2, y2; { register xSegment *segment; -#ifdef MUSTCOPY - xSegment segmentdata; - long len = SIZEOF(xSegment); - - segment = &segmentdata; -#endif /* not MUSTCOPY */ LockDisplay(dpy); FlushGC(dpy, gc); @@ -66,21 +60,15 @@ XDrawLine (dpy, d, gc, x1, y1, x2, y2) && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ? wsize : zsize)) ) { req->length += SIZEOF(xSegment) >> 2; -#ifndef MUSTCOPY segment = (xSegment *) dpy->bufptr; dpy->bufptr += SIZEOF(xSegment); -#endif /* not MUSTCOPY */ } else { GetReqExtra (PolySegment, SIZEOF(xSegment), req); req->drawable = d; req->gc = gc->gid; -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xSegment); -#else segment = (xSegment *) NEXTPTR(req,xPolySegmentReq); -#endif /* MUSTCOPY */ } segment->x1 = x1; @@ -88,10 +76,6 @@ XDrawLine (dpy, d, gc, x1, y1, x2, y2) segment->x2 = x2; segment->y2 = y2; -#ifdef MUSTCOPY - Data (dpy, (char *) &segmentdata, len); -#endif /* MUSTCOPY */ - UnlockDisplay(dpy); SyncHandle(); } diff --git a/nx-X11/lib/X11/DrPoint.c b/nx-X11/lib/X11/DrPoint.c index 3cd6b7f..26d17ef 100644 --- a/nx-X11/lib/X11/DrPoint.c +++ b/nx-X11/lib/X11/DrPoint.c @@ -43,12 +43,6 @@ XDrawPoint(dpy, d, gc, x, y) int x, y; /* INT16 */ { xPoint *point; -#ifdef MUSTCOPY - xPoint pointdata; - long len = SIZEOF(xPoint); - - point = &pointdata; -#endif /* MUSTCOPY */ LockDisplay(dpy); FlushGC(dpy, gc); @@ -66,10 +60,8 @@ XDrawPoint(dpy, d, gc, x, y) && ((dpy->bufptr + SIZEOF(xPoint)) <= dpy->bufmax) && (((char *)dpy->bufptr - (char *)req) < size) ) { req->length += SIZEOF(xPoint) >> 2; -#ifndef MUSTCOPY point = (xPoint *) dpy->bufptr; dpy->bufptr += SIZEOF(xPoint); -#endif /* not MUSTCOPY */ } else { @@ -77,19 +69,12 @@ XDrawPoint(dpy, d, gc, x, y) req->drawable = d; req->gc = gc->gid; req->coordMode = CoordModeOrigin; -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xPoint); -#else point = (xPoint *) NEXTPTR(req,xPolyPointReq); -#endif /* MUSTCOPY */ } point->x = x; point->y = y; -#ifdef MUSTCOPY - Data (dpy, (char *) point, len); -#endif /* MUSTCOPY */ } UnlockDisplay(dpy); SyncHandle(); diff --git a/nx-X11/lib/X11/DrRect.c b/nx-X11/lib/X11/DrRect.c index 984e291..affbc98 100644 --- a/nx-X11/lib/X11/DrRect.c +++ b/nx-X11/lib/X11/DrRect.c @@ -45,12 +45,6 @@ XDrawRectangle(dpy, d, gc, x, y, width, height) unsigned int width, height; /* CARD16 */ { xRectangle *rect; -#ifdef MUSTCOPY - xRectangle rectdata; - long len = SIZEOF(xRectangle); - - rect = &rectdata; -#endif /* MUSTCOPY */ LockDisplay(dpy); FlushGC(dpy, gc); @@ -67,21 +61,15 @@ XDrawRectangle(dpy, d, gc, x, y, width, height) && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ? wsize : zsize)) ) { req->length += SIZEOF(xRectangle) >> 2; -#ifndef MUSTCOPY rect = (xRectangle *) dpy->bufptr; dpy->bufptr += SIZEOF(xRectangle); -#endif /* not MUSTCOPY */ } else { GetReqExtra(PolyRectangle, SIZEOF(xRectangle), req); req->drawable = d; req->gc = gc->gid; -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xRectangle); -#else rect = (xRectangle *) NEXTPTR(req,xPolyRectangleReq); -#endif /* MUSTCOPY */ } rect->x = x; @@ -89,10 +77,6 @@ XDrawRectangle(dpy, d, gc, x, y, width, height) rect->width = width; rect->height = height; -#ifdef MUSTCOPY - Data (dpy, (char *) rect, len); /* subtracted bufptr up above */ -#endif /* MUSTCOPY */ - } UnlockDisplay(dpy); SyncHandle(); diff --git a/nx-X11/lib/X11/FillArc.c b/nx-X11/lib/X11/FillArc.c index 2aa88d8..12d17db 100644 --- a/nx-X11/lib/X11/FillArc.c +++ b/nx-X11/lib/X11/FillArc.c @@ -45,12 +45,6 @@ XFillArc(dpy, d, gc, x, y, width, height, angle1, angle2) int angle1, angle2; /* INT16 */ { xArc *arc; -#ifdef MUSTCOPY - xArc arcdata; - long len = SIZEOF(xArc); - - arc = &arcdata; -#endif /* MUSTCOPY */ LockDisplay(dpy); FlushGC(dpy, gc); @@ -66,10 +60,8 @@ XFillArc(dpy, d, gc, x, y, width, height, angle1, angle2) && ((dpy->bufptr + SIZEOF(xArc)) <= dpy->bufmax) && (((char *)dpy->bufptr - (char *)req) < size) ) { req->length += SIZEOF(xArc) >> 2; -#ifndef MUSTCOPY arc = (xArc *) dpy->bufptr; dpy->bufptr += SIZEOF(xArc); -#endif /* not MUSTCOPY */ } else { @@ -77,11 +69,7 @@ XFillArc(dpy, d, gc, x, y, width, height, angle1, angle2) req->drawable = d; req->gc = gc->gid; -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xArc); -#else arc = (xArc *) NEXTPTR(req,xPolyFillArcReq); -#endif /* MUSTCOPY */ } arc->x = x; arc->y = y; @@ -90,10 +78,6 @@ XFillArc(dpy, d, gc, x, y, width, height, angle1, angle2) arc->angle1 = angle1; arc->angle2 = angle2; -#ifdef MUSTCOPY - Data (dpy, (char *) arc, len); -#endif /* MUSTCOPY */ - } UnlockDisplay(dpy); SyncHandle(); diff --git a/nx-X11/lib/X11/FillRct.c b/nx-X11/lib/X11/FillRct.c index d4a362a..e1b7ad0 100644 --- a/nx-X11/lib/X11/FillRct.c +++ b/nx-X11/lib/X11/FillRct.c @@ -44,12 +44,6 @@ XFillRectangle(dpy, d, gc, x, y, width, height) unsigned int width, height; /* CARD16 */ { xRectangle *rect; -#ifdef MUSTCOPY - xRectangle rectdata; - long len = SIZEOF(xRectangle); - - rect = &rectdata; -#endif /* MUSTCOPY */ LockDisplay(dpy); FlushGC(dpy, gc); @@ -66,30 +60,21 @@ XFillRectangle(dpy, d, gc, x, y, width, height) && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax) && (((char *)dpy->bufptr - (char *)req) < size) ) { req->length += SIZEOF(xRectangle) >> 2; -#ifndef MUSTCOPY rect = (xRectangle *) dpy->bufptr; dpy->bufptr += SIZEOF(xRectangle); -#endif /* not MUSTCOPY */ } else { GetReqExtra(PolyFillRectangle, SIZEOF(xRectangle), req); req->drawable = d; req->gc = gc->gid; -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xRectangle); -#else rect = (xRectangle *) NEXTPTR(req,xPolyFillRectangleReq); -#endif /* MUSTCOPY */ } rect->x = x; rect->y = y; rect->width = width; rect->height = height; -#ifdef MUSTCOPY - Data (dpy, (char *) rect, len); -#endif /* MUSTCOPY */ } UnlockDisplay(dpy); SyncHandle(); diff --git a/nx-X11/lib/X11/Font.c b/nx-X11/lib/X11/Font.c index c37617c..92a6a8f 100644 --- a/nx-X11/lib/X11/Font.c +++ b/nx-X11/lib/X11/Font.c @@ -35,7 +35,7 @@ authorization from the X Consortium and the XFree86 Project. #endif #include "Xlibint.h" -#if defined(XF86BIGFONT) && !defined(MUSTCOPY) +#if defined(XF86BIGFONT) #define USE_XF86BIGFONT #endif #ifdef USE_XF86BIGFONT @@ -231,31 +231,9 @@ _XQueryFont (dpy, fid, seq) fs->ascent = cvtINT16toInt (reply.fontAscent); fs->descent = cvtINT16toInt (reply.fontDescent); -#ifdef MUSTCOPY - { - xCharInfo *xcip; - - xcip = (xCharInfo *) &reply.minBounds; - fs->min_bounds.lbearing = cvtINT16toShort(xcip->leftSideBearing); - fs->min_bounds.rbearing = cvtINT16toShort(xcip->rightSideBearing); - fs->min_bounds.width = cvtINT16toShort(xcip->characterWidth); - fs->min_bounds.ascent = cvtINT16toShort(xcip->ascent); - fs->min_bounds.descent = cvtINT16toShort(xcip->descent); - fs->min_bounds.attributes = xcip->attributes; - - xcip = (xCharInfo *) &reply.maxBounds; - fs->max_bounds.lbearing = cvtINT16toShort(xcip->leftSideBearing); - fs->max_bounds.rbearing = cvtINT16toShort(xcip->rightSideBearing); - fs->max_bounds.width = cvtINT16toShort(xcip->characterWidth); - fs->max_bounds.ascent = cvtINT16toShort(xcip->ascent); - fs->max_bounds.descent = cvtINT16toShort(xcip->descent); - fs->max_bounds.attributes = xcip->attributes; - } -#else /* XXX the next two statements won't work if short isn't 16 bits */ fs->min_bounds = * (XCharStruct *) &reply.minBounds; fs->max_bounds = * (XCharStruct *) &reply.maxBounds; -#endif /* MUSTCOPY */ fs->n_properties = reply.nFontProps; /* @@ -279,7 +257,6 @@ _XQueryFont (dpy, fid, seq) * If no characters in font, then it is a bad font, but * shouldn't try to read nothing. */ - /* have to unpack charinfos on some machines (CRAY) */ fs->per_char = NULL; if (reply.nCharInfos > 0){ nbytes = reply.nCharInfos * sizeof(XCharStruct); @@ -290,28 +267,8 @@ _XQueryFont (dpy, fid, seq) (reply.nCharInfos * SIZEOF(xCharInfo))); return (XFontStruct *)NULL; } - -#ifdef MUSTCOPY - { - register XCharStruct *cs = fs->per_char; - register int i; - - for (i = 0; i < reply.nCharInfos; i++, cs++) { - xCharInfo xcip; - - _XRead(dpy, (char *)&xcip, SIZEOF(xCharInfo)); - cs->lbearing = cvtINT16toShort(xcip.leftSideBearing); - cs->rbearing = cvtINT16toShort(xcip.rightSideBearing); - cs->width = cvtINT16toShort(xcip.characterWidth); - cs->ascent = cvtINT16toShort(xcip.ascent); - cs->descent = cvtINT16toShort(xcip.descent); - cs->attributes = xcip.attributes; - } - } -#else nbytes = reply.nCharInfos * SIZEOF(xCharInfo); _XRead16 (dpy, (char *)fs->per_char, nbytes); -#endif } /* call out to any extensions interested */ diff --git a/nx-X11/lib/X11/FontInfo.c b/nx-X11/lib/X11/FontInfo.c index f923758..bc096fe 100644 --- a/nx-X11/lib/X11/FontInfo.c +++ b/nx-X11/lib/X11/FontInfo.c @@ -32,7 +32,7 @@ in this Software without prior written authorization from The Open Group. #endif #include "Xlibint.h" -#if defined(XF86BIGFONT) && !defined(MUSTCOPY) +#if defined(XF86BIGFONT) #define USE_XF86BIGFONT #endif #ifdef USE_XF86BIGFONT @@ -135,31 +135,9 @@ XFontStruct **info) /* RETURN */ fs->ascent = cvtINT16toInt (reply.fontAscent); fs->descent = cvtINT16toInt (reply.fontDescent); -#ifdef MUSTCOPY - { - xCharInfo *xcip; - - xcip = (xCharInfo *) &reply.minBounds; - fs->min_bounds.lbearing = xcip->leftSideBearing; - fs->min_bounds.rbearing = xcip->rightSideBearing; - fs->min_bounds.width = xcip->characterWidth; - fs->min_bounds.ascent = xcip->ascent; - fs->min_bounds.descent = xcip->descent; - fs->min_bounds.attributes = xcip->attributes; - - xcip = (xCharInfo *) &reply.maxBounds; - fs->max_bounds.lbearing = xcip->leftSideBearing; - fs->max_bounds.rbearing = xcip->rightSideBearing; - fs->max_bounds.width = xcip->characterWidth; - fs->max_bounds.ascent = xcip->ascent; - fs->max_bounds.descent = xcip->descent; - fs->max_bounds.attributes = xcip->attributes; - } -#else /* XXX the next two statements won't work if short isn't 16 bits */ fs->min_bounds = * (XCharStruct *) &reply.minBounds; fs->max_bounds = * (XCharStruct *) &reply.maxBounds; -#endif /* MUSTCOPY */ fs->n_properties = reply.nFontProps; if (fs->n_properties > 0) { diff --git a/nx-X11/lib/X11/ImUtil.c b/nx-X11/lib/X11/ImUtil.c index 9e667bb..85f4183 100644 --- a/nx-X11/lib/X11/ImUtil.c +++ b/nx-X11/lib/X11/ImUtil.c @@ -533,9 +533,7 @@ static unsigned long _XGetPixel (ximage, x, y) return (pixel & low_bits_table[ximage->depth]); } -#ifndef WORD64 static CARD32 const byteorderpixel = MSBFirst << 24; -#endif static unsigned long _XGetPixel32 (ximage, x, y) register XImage *ximage; @@ -548,11 +546,9 @@ static unsigned long _XGetPixel32 (ximage, x, y) if ((ximage->format == ZPixmap) && (ximage->bits_per_pixel == 32)) { addr = &((unsigned char *)ximage->data) [y * ximage->bytes_per_line + (x << 2)]; -#ifndef WORD64 if (*((const char *)&byteorderpixel) == ximage->byte_order) pixel = *((CARD32 *)addr); else -#endif if (ximage->byte_order == MSBFirst) pixel = ((unsigned long)addr[0] << 24 | (unsigned long)addr[1] << 16 | @@ -739,11 +735,9 @@ static int _XPutPixel32 (ximage, x, y, pixel) if ((ximage->format == ZPixmap) && (ximage->bits_per_pixel == 32)) { addr = &((unsigned char *)ximage->data) [y * ximage->bytes_per_line + (x << 2)]; -#ifndef WORD64 if (*((const char *)&byteorderpixel) == ximage->byte_order) *((CARD32 *)addr) = pixel; else -#endif if (ximage->byte_order == MSBFirst) { addr[0] = pixel >> 24; addr[1] = pixel >> 16; @@ -1002,7 +996,6 @@ _XAddPixel (ximage, value) x = ximage->bytes_per_line * ximage->height; while (--x >= 0) *dp++ += value; -#ifndef WORD64 } else if ((ximage->format == ZPixmap) && (ximage->bits_per_pixel == 16) && (*((const char *)&byteorderpixel) == ximage->byte_order)) { @@ -1017,7 +1010,6 @@ _XAddPixel (ximage, value) x = (ximage->bytes_per_line >> 2) * ximage->height; while (--x >= 0) *dp++ += value; -#endif } else { for (y = ximage->height; --y >= 0; ) { for (x = ximage->width; --x >= 0; ) { diff --git a/nx-X11/lib/X11/LiHosts.c b/nx-X11/lib/X11/LiHosts.c index 01cfadb..bd08644 100644 --- a/nx-X11/lib/X11/LiHosts.c +++ b/nx-X11/lib/X11/LiHosts.c @@ -95,15 +95,8 @@ XHostAddress *XListHosts ( _XRead (dpy, (char *) buf, nbytes); for (i = 0; i < reply.nHosts; i++) { -#ifdef WORD64 - xHostEntry xhe; - memcpy((char *)&xhe, bp, SIZEOF(xHostEntry)); - op->family = xhe.family; - op->length = xhe.length; -#else op->family = ((xHostEntry *) bp)->family; op->length =((xHostEntry *) bp)->length; -#endif if (op->family == FamilyServerInterpreted) { char *tp = (char *) (bp + SIZEOF(xHostEntry)); char *vp = memchr(tp, 0, op->length); diff --git a/nx-X11/lib/X11/Macros.c b/nx-X11/lib/X11/Macros.c index 34d11fe..ebb5132 100644 --- a/nx-X11/lib/X11/Macros.c +++ b/nx-X11/lib/X11/Macros.c @@ -126,12 +126,7 @@ int XImageByteOrder(dpy) Display *dpy; { return (ImageByteOrder(dpy)); } unsigned long XNextRequest(dpy) Display *dpy; { -#ifdef WORD64 - WORD64ALIGN - return dpy->request + 1; -#else return (NextRequest(dpy)); -#endif } unsigned long XLastKnownRequestProcessed(dpy) diff --git a/nx-X11/lib/X11/MoveWin.c b/nx-X11/lib/X11/MoveWin.c index d3c4f88..44097fe 100644 --- a/nx-X11/lib/X11/MoveWin.c +++ b/nx-X11/lib/X11/MoveWin.c @@ -45,20 +45,11 @@ XMoveWindow (dpy, w, x, y) req->window = w; req->mask = CWX | CWY; -#ifdef MUSTCOPY - { - long lx = (long) x, ly = (long) y; - dpy->bufptr -= 8; - Data32 (dpy, (long *) &lx, 4); /* order dictated by CWX and CWY */ - Data32 (dpy, (long *) &ly, 4); - } -#else { CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq); *valuePtr++ = x; *valuePtr = y; } -#endif /* MUSTCOPY */ UnlockDisplay(dpy); SyncHandle(); return 1; diff --git a/nx-X11/lib/X11/PolyTxt16.c b/nx-X11/lib/X11/PolyTxt16.c index ddaa62d..ded535d 100644 --- a/nx-X11/lib/X11/PolyTxt16.c +++ b/nx-X11/lib/X11/PolyTxt16.c @@ -169,18 +169,7 @@ XDrawText16(dpy, d, gc, x, y, items, nitems) } elt->len = 254; -#if defined(MUSTCOPY) || defined(MUSTCOPY2B) - { - register int i; - register unsigned char *cp; - for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) { - *cp++ = CharacterOffset[i].byte1; - *cp++ = CharacterOffset[i].byte2; - } - } -#else memcpy ((char *) (elt + 1), (char *)CharacterOffset, 254 * 2); -#endif PartialNChars = PartialNChars - 254; CharacterOffset += 254; @@ -214,21 +203,8 @@ XDrawText16(dpy, d, gc, x, y, items, nitems) } elt->len = PartialNChars; -#if defined(MUSTCOPY) || defined(MUSTCOPY2B) - { - register int i; - register unsigned char *cp; - for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars; - i++) { - *cp++ = CharacterOffset[i].byte1; - *cp++ = CharacterOffset[i].byte2; - } - } -#else memcpy ((char *) (elt + 1), (char *)CharacterOffset, - PartialNChars * -2); -#endif + PartialNChars * 2); } } item++; diff --git a/nx-X11/lib/X11/Quarks.c b/nx-X11/lib/X11/Quarks.c index a5ffa8a..d47bce3 100644 --- a/nx-X11/lib/X11/Quarks.c +++ b/nx-X11/lib/X11/Quarks.c @@ -133,10 +133,8 @@ static char *permalloc(unsigned int length) return(ret); } -#ifndef WORD64 typedef struct {char a; double b;} TestType1; typedef struct {char a; unsigned long b;} TestType2; -#endif #ifdef XTHREADS static char *_Xpermalloc(unsigned int length); @@ -159,7 +157,6 @@ char *Xpermalloc(unsigned int length) int i; if (neverFreeTableSize && length < NEVERFREETABLESIZE) { -#ifndef WORD64 if ((sizeof(TestType1) != (sizeof(TestType2) - sizeof(unsigned long) + sizeof(double))) && !(length & (DALIGN-1)) && @@ -167,7 +164,6 @@ char *Xpermalloc(unsigned int length) neverFreeTableSize -= DALIGN - i; neverFreeTable += DALIGN - i; } else -#endif if ((i = (NEVERFREETABLESIZE - neverFreeTableSize) & (WALIGN-1))) { neverFreeTableSize -= WALIGN - i; neverFreeTable += WALIGN - i; diff --git a/nx-X11/lib/X11/RestackWs.c b/nx-X11/lib/X11/RestackWs.c index 1887e7c..ab53862 100644 --- a/nx-X11/lib/X11/RestackWs.c +++ b/nx-X11/lib/X11/RestackWs.c @@ -38,9 +38,6 @@ XRestackWindows (dpy, windows, n) int n; { int i = 0; -#ifdef MUSTCOPY - unsigned long val = Below; /* needed for macro below */ -#endif LockDisplay(dpy); while (windows++, ++i < n) { @@ -49,19 +46,13 @@ XRestackWindows (dpy, windows, n) GetReqExtra (ConfigureWindow, 8, req); req->window = *windows; req->mask = CWSibling | CWStackMode; -#ifdef MUSTCOPY - dpy->bufptr -= 8; - Data32 (dpy, (long *)(windows-1), 4); - Data32 (dpy, (long *)&val, 4); -#else { register CARD32 *values = (CARD32 *) NEXTPTR(req,xConfigureWindowReq); *values++ = *(windows-1); *values = Below; } -#endif /* MUSTCOPY */ - } + } UnlockDisplay(dpy); SyncHandle(); return 1; diff --git a/nx-X11/lib/X11/SendEvent.c b/nx-X11/lib/X11/SendEvent.c index 06e23a5..a1b8d66 100644 --- a/nx-X11/lib/X11/SendEvent.c +++ b/nx-X11/lib/X11/SendEvent.c @@ -65,12 +65,7 @@ XSendEvent(dpy, w, propagate, event_mask, event) req->destination = w; req->propagate = propagate; req->eventMask = event_mask; -#ifdef WORD64 - /* avoid quad-alignment problems */ - memcpy ((char *) req->eventdata, (char *) &ev, SIZEOF(xEvent)); -#else req->event = ev; -#endif /* WORD64 */ } UnlockDisplay(dpy); diff --git a/nx-X11/lib/X11/StColor.c b/nx-X11/lib/X11/StColor.c index b2b197a..b6784b5 100644 --- a/nx-X11/lib/X11/StColor.c +++ b/nx-X11/lib/X11/StColor.c @@ -39,21 +39,13 @@ XColor *def; { xColorItem *citem; register xStoreColorsReq *req; -#ifdef MUSTCOPY - xColorItem citemdata; - long len = SIZEOF(xColorItem); - - citem = &citemdata; -#endif /* MUSTCOPY */ LockDisplay(dpy); GetReqExtra(StoreColors, SIZEOF(xColorItem), req); /* assume size is 4*n */ req->cmap = cmap; -#ifndef MUSTCOPY citem = (xColorItem *) NEXTPTR(req,xStoreColorsReq); -#endif /* not MUSTCOPY */ citem->pixel = def->pixel; citem->red = def->red; @@ -61,11 +53,6 @@ XColor *def; citem->blue = def->blue; citem->flags = def->flags; /* do_red, do_green, do_blue */ -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xColorItem); /* adjust for GetReqExtra */ - Data (dpy, (char *) citem, len); -#endif /* MUSTCOPY */ - UnlockDisplay(dpy); SyncHandle(); return 1; diff --git a/nx-X11/lib/X11/Text16.c b/nx-X11/lib/X11/Text16.c index 96d5911..dbf8763 100644 --- a/nx-X11/lib/X11/Text16.c +++ b/nx-X11/lib/X11/Text16.c @@ -84,18 +84,7 @@ XDrawString16( BufAlloc (xTextElt *, elt, nbytes); elt->delta = 0; elt->len = 254; -#if defined(MUSTCOPY) || defined(MUSTCOPY2B) - { - register int i; - register unsigned char *cp; - for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) { - *cp++ = CharacterOffset[i].byte1; - *cp++ = CharacterOffset[i].byte2; - } - } -#else memcpy (((char *) elt) + 2, (char *)CharacterOffset, 254 * 2); -#endif PartialNChars = PartialNChars - 254; CharacterOffset += 254; } @@ -106,19 +95,7 @@ XDrawString16( BufAlloc (xTextElt *, elt, nbytes); elt->delta = 0; elt->len = PartialNChars; -#if defined(MUSTCOPY) || defined(MUSTCOPY2B) - { - register int i; - register unsigned char *cp; - for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars; - i++) { - *cp++ = CharacterOffset[i].byte1; - *cp++ = CharacterOffset[i].byte2; - } - } -#else memcpy(((char *)elt) + 2, (char *)CharacterOffset, PartialNChars * 2); -#endif } } diff --git a/nx-X11/lib/X11/XKBNames.c b/nx-X11/lib/X11/XKBNames.c index a8eeb2a..8483187 100644 --- a/nx-X11/lib/X11/XKBNames.c +++ b/nx-X11/lib/X11/XKBNames.c @@ -498,38 +498,10 @@ XkbSetNames( Display * dpy, if (which&XkbGroupNamesMask) _XkbCopyAtoms(dpy,names->groups,groups,XkbNumKbdGroups); if (which&XkbKeyNamesMask) { -#ifdef WORD64 - char *tmp; - register int i; - BufAlloc(char *,tmp,nKeys*XkbKeyNameLength); - for (i=0;i<nKeys;i++,tmp+= XkbKeyNameLength) { - tmp[0]= names->keys[firstKey+i].name[0]; - tmp[1]= names->keys[firstKey+i].name[1]; - tmp[2]= names->keys[firstKey+i].name[2]; - tmp[3]= names->keys[firstKey+i].name[3]; - } -#else Data(dpy,(char *)&names->keys[firstKey],nKeys*XkbKeyNameLength); -#endif } if (which&XkbKeyAliasesMask) { -#ifdef WORD64 - char *tmp; - register int i; - BufAlloc(char *,tmp,nKA*XkbKeyNameLength*2); - for (i=0;i<nKeys;i++,tmp+= 2*XkbKeyNameLength) { - tmp[0]= names->key_aliases[i].real[0]; - tmp[1]= names->key_aliases[i].real[1]; - tmp[2]= names->key_aliases[i].real[2]; - tmp[3]= names->key_aliases[i].real[3]; - tmp[4]= names->key_aliases[i].alias[0]; - tmp[5]= names->key_aliases[i].alias[1]; - tmp[6]= names->key_aliases[i].alias[2]; - tmp[7]= names->key_aliases[i].alias[3]; - } -#else Data(dpy,(char *)names->key_aliases,nKA*XkbKeyNameLength*2); -#endif } if (which&XkbRGNamesMask) { Data32(dpy,(long *)names->radio_groups,nRG*4); @@ -754,38 +726,10 @@ XkbChangeNames(Display *dpy,XkbDescPtr xkb,XkbNameChangesPtr changes) if (which&XkbGroupNamesMask) _XkbCopyAtoms(dpy,names->groups,groups,XkbNumKbdGroups); if (which&XkbKeyNamesMask) { -#ifdef WORD64 - char *tmp; - register int i; - BufAlloc(char *,tmp,nKeys*4); - for (i=0;i<nKeys;i++,tmp+= 4) { - tmp[0]= names->keys[firstKey+i].name[0]; - tmp[1]= names->keys[firstKey+i].name[1]; - tmp[2]= names->keys[firstKey+i].name[2]; - tmp[3]= names->keys[firstKey+i].name[3]; - } -#else Data(dpy,(char *)&names->keys[firstKey],nKeys*XkbKeyNameLength); -#endif } if (which&XkbKeyAliasesMask) { -#ifdef WORD64 - char *tmp; - register int i; - BufAlloc(char *,tmp,nKA*XkbKeyNameLength*2); - for (i=0;i<nKeys;i++,tmp+= 2*XkbKeyNameLength) { - tmp[0]= names->key_aliases[i].real[0]; - tmp[1]= names->key_aliases[i].real[1]; - tmp[2]= names->key_aliases[i].real[2]; - tmp[3]= names->key_aliases[i].real[3]; - tmp[4]= names->key_aliases[i].alias[0]; - tmp[5]= names->key_aliases[i].alias[1]; - tmp[6]= names->key_aliases[i].alias[2]; - tmp[7]= names->key_aliases[i].alias[3]; - } -#else Data(dpy,(char *)names->key_aliases,nKA*XkbKeyNameLength*2); -#endif } if (which&XkbRGNamesMask) { Data32(dpy,(long *)names->radio_groups,nRG*4); diff --git a/nx-X11/lib/X11/XKBRdBuf.c b/nx-X11/lib/X11/XKBRdBuf.c index a68a80a..d0b7045 100644 --- a/nx-X11/lib/X11/XKBRdBuf.c +++ b/nx-X11/lib/X11/XKBRdBuf.c @@ -121,29 +121,8 @@ _XkbReadCopyData32(int *wire,long *to,int num_words) return 1; } #endif -#ifdef WORD64 -int -_XkbReadCopyData32(int *from,long *lp,int num_words) -{ -long *lpack; -long mask32 = 0x00000000ffffffff; -long maskw, i, bits; - - lpack = (long *)from; - bits = 32; - - for (i=0;i<num_words;i++) { - maskw = mask32 << bits; - *lp++ = (*lpack & maskw) >> bits; - bits = bits ^ 32; - if (bits) - lpack++; - } - return 1; -} -#endif -#if defined(LONG64) || defined(WORD64) +#if defined(LONG64) int _XkbReadBufferCopy32(XkbReadBufferPtr from,long *to,int num_words) { @@ -167,10 +146,6 @@ _XkbWriteCopyData32 (register unsigned long *from,CARD32 *to,int len) } #endif /* LONG64 */ -#ifdef WORD64 -_XkbWriteCopyData32 Not Implemented Yet for sizeof(int)==8 -#endif - char * _XkbPeekAtReadBuffer(XkbReadBufferPtr from,int size) { diff --git a/nx-X11/lib/X11/XKBlibint.h b/nx-X11/lib/X11/XKBlibint.h index a154d1b..0244e2e 100644 --- a/nx-X11/lib/X11/XKBlibint.h +++ b/nx-X11/lib/X11/XKBlibint.h @@ -215,7 +215,7 @@ extern int _XkbCopyFromReadBuffer( ); -#if defined(WORD64) || defined(LONG64) +#if defined(LONG64) extern int _XkbReadCopyData32( int * /* from */, long * /* to */, diff --git a/nx-X11/lib/X11/Xlib.h b/nx-X11/lib/X11/Xlib.h index e21d9ff..8ce7fb5 100644 --- a/nx-X11/lib/X11/Xlib.h +++ b/nx-X11/lib/X11/Xlib.h @@ -144,11 +144,7 @@ typedef char *XPointer; #define BitmapBitOrder(dpy) (((_XPrivDisplay)dpy)->bitmap_bit_order) #define BitmapPad(dpy) (((_XPrivDisplay)dpy)->bitmap_pad) #define ImageByteOrder(dpy) (((_XPrivDisplay)dpy)->byte_order) -#ifdef CRAY /* unable to get WORD64 without pulling in other symbols */ -#define NextRequest(dpy) XNextRequest(dpy) -#else #define NextRequest(dpy) (((_XPrivDisplay)dpy)->request + 1) -#endif #define LastKnownRequestProcessed(dpy) (((_XPrivDisplay)dpy)->last_request_read) /* macros for screen oriented applications (toolkit) */ diff --git a/nx-X11/lib/X11/XlibAsync.c b/nx-X11/lib/X11/XlibAsync.c index 70bd82b..81403eb 100644 --- a/nx-X11/lib/X11/XlibAsync.c +++ b/nx-X11/lib/X11/XlibAsync.c @@ -119,11 +119,6 @@ _XGetAsyncReply(dpy, replbuf, rep, buf, len, extra, discard) _XRead(dpy, replbuf + len, size - len); buf = replbuf; len = size; -#ifdef MUSTCOPY - } else { - memcpy(replbuf, buf, size); - buf = replbuf; -#endif } if (discard && rep->generic.length > extra && diff --git a/nx-X11/lib/X11/XlibInt.c b/nx-X11/lib/X11/XlibInt.c index 47e2ea1..0514470 100644 --- a/nx-X11/lib/X11/XlibInt.c +++ b/nx-X11/lib/X11/XlibInt.c @@ -202,20 +202,6 @@ extern int _X11TransSocketCongestionChange(XtransConnInfo, int *); #define MAX_PATH _POSIX_PATH_MAX #endif -#ifdef MUSTCOPY - -#define STARTITERATE(tpvar,type,start,endcond) \ - { register char *cpvar; \ - for (cpvar = (char *) (start); endcond; ) { \ - type dummy; memcpy ((char *) &dummy, cpvar, SIZEOF(type)); \ - tpvar = &dummy; -#define ITERPTR(tpvar) cpvar -#define RESETITERPTR(tpvar,type,start) cpvar = start -#define INCITERPTR(tpvar,type) cpvar += SIZEOF(type) -#define ENDITERATE }} - -#else - #define STARTITERATE(tpvar,type,start,endcond) \ for (tpvar = (type *) (start); endcond; ) #define ITERPTR(tpvar) (char *)tpvar @@ -223,8 +209,6 @@ extern int _X11TransSocketCongestionChange(XtransConnInfo, int *); #define INCITERPTR(tpvar,type) tpvar++ #define ENDITERATE -#endif /* MUSTCOPY */ - typedef union { xReply rep; char buf[BUFSIZE]; @@ -1611,125 +1595,6 @@ void _XRead32( } #endif /* LONG64 */ -#ifdef WORD64 - -/* - * XXX This is a *really* stupid way of doing this.... - * PACKBUFFERSIZE must be a multiple of 4. - */ - -#define PACKBUFFERSIZE 4096 - - -/* - * _XRead32 - Read bytes from the socket unpacking each 32 bits - * into a long (64 bits on a CRAY computer). - * - */ -static void _doXRead32( - register Display *dpy, - register long *data - register long size, - register char *packbuffer) -{ - long *lpack,*lp; - long mask32 = 0x00000000ffffffff; - long maskw, nwords, i, bits; - - _XReadPad (dpy, packbuffer, size); - - lp = data; - lpack = (long *) packbuffer; - nwords = size >> 2; - bits = 32; - - for(i=0;i<nwords;i++){ - maskw = mask32 << bits; - *lp++ = ( *lpack & maskw ) >> bits; - bits = bits ^32; - if(bits){ - lpack++; - } - } -} - -void _XRead32( - Display *dpy, - long *data, - long len) -{ - char packbuffer[PACKBUFFERSIZE]; - unsigned nunits = PACKBUFFERSIZE >> 2; - - for (; len > PACKBUFFERSIZE; len -= PACKBUFFERSIZE, data += nunits) { - _doXRead32 (dpy, data, PACKBUFFERSIZE, packbuffer); - } - if (len) _doXRead32 (dpy, data, len, packbuffer); -} - - - -/* - * _XRead16 - Read bytes from the socket unpacking each 16 bits - * into a long (64 bits on a CRAY computer). - * - */ -static _doXRead16( - register Display *dpy, - register short *data, - register long size, - char *packbuffer) -{ - long *lpack,*lp; - long mask16 = 0x000000000000ffff; - long maskw, nwords, i, bits; - - (void) _XRead(dpy,packbuffer,size); /* don't do a padded read... */ - - lp = (long *) data; - lpack = (long *) packbuffer; - nwords = size >> 1; /* number of 16 bit words to be unpacked */ - bits = 48; - for(i=0;i<nwords;i++){ - maskw = mask16 << bits; - *lp++ = ( *lpack & maskw ) >> bits; - bits -= 16; - if(bits < 0){ - lpack++; - bits = 48; - } - } -} - -void _XRead16( - Display *dpy, - short *data, - long len) -{ - char packbuffer[PACKBUFFERSIZE]; - unsigned nunits = PACKBUFFERSIZE >> 1; - - for (; len > PACKBUFFERSIZE; len -= PACKBUFFERSIZE, data += nunits) { - _doXRead16 (dpy, data, PACKBUFFERSIZE, packbuffer); - } - if (len) _doXRead16 (dpy, data, len, packbuffer); -} - -void _XRead16Pad( - Display *dpy, - short *data, - long size) -{ - int slop = (size & 3); - short slopbuf[3]; - - _XRead16 (dpy, data, size); - if (slop > 0) { - _XRead16 (dpy, slopbuf, 4 - slop); - } -} -#endif /* WORD64 */ - /* * _XReadPad - Read bytes from the socket taking into account incomplete @@ -3795,123 +3660,6 @@ _XData32( } #endif /* LONG64 */ -#ifdef WORD64 - -/* - * XXX This is a *really* stupid way of doing this. It should just use - * dpy->bufptr directly, taking into account where in the word it is. - */ - -/* - * Data16 - Place 16 bit data in the buffer. - * - * "dpy" is a pointer to a Display. - * "data" is a pointer to the data. - * "len" is the length in bytes of the data. - */ - -static doData16( - register Display *dpy, - short *data, - unsigned len, - char *packbuffer) -{ - long *lp,*lpack; - long i, nwords,bits; - long mask16 = 0x000000000000ffff; - - lp = (long *)data; - lpack = (long *)packbuffer; - -/* nwords is the number of 16 bit values to be packed, - * the low order 16 bits of each word will be packed - * into 64 bit words - */ - nwords = len >> 1; - bits = 48; - - for(i=0;i<nwords;i++){ - if (bits == 48) *lpack = 0; - *lpack ^= (*lp & mask16) << bits; - bits -= 16 ; - lp++; - if(bits < 0){ - lpack++; - bits = 48; - } - } - Data(dpy, packbuffer, len); -} - -_XData16 ( - Display *dpy, - short *data, - unsigned len) -{ - char packbuffer[PACKBUFFERSIZE]; - unsigned nunits = PACKBUFFERSIZE >> 1; - - for (; len > PACKBUFFERSIZE; len -= PACKBUFFERSIZE, data += nunits) { - doData16 (dpy, data, PACKBUFFERSIZE, packbuffer); - } - if (len) doData16 (dpy, data, len, packbuffer); -} - -/* - * Data32 - Place 32 bit data in the buffer. - * - * "dpy" is a pointer to a Display. - * "data" is a pointer to the data. - * "len" is the length in bytes of the data. - */ - -static doData32( - register Display *dpy - long *data, - unsigned len, - char *packbuffer) -{ - long *lp,*lpack; - long i,bits,nwords; - long mask32 = 0x00000000ffffffff; - - lpack = (long *) packbuffer; - lp = data; - -/* nwords is the number of 32 bit values to be packed - * the low order 32 bits of each word will be packed - * into 64 bit words - */ - nwords = len >> 2; - bits = 32; - - for(i=0;i<nwords;i++){ - if (bits == 32) *lpack = 0; - *lpack ^= (*lp & mask32) << bits; - bits = bits ^32; - lp++; - if(bits) - lpack++; - } - Data(dpy, packbuffer, len); -} - -void _XData32( - Display *dpy, - long *data, - unsigned len, -{ - char packbuffer[PACKBUFFERSIZE]; - unsigned nunits = PACKBUFFERSIZE >> 2; - - for (; len > PACKBUFFERSIZE; len -= PACKBUFFERSIZE, data += nunits) { - doData32 (dpy, data, PACKBUFFERSIZE, packbuffer); - } - if (len) doData32 (dpy, data, len, packbuffer); -} - -#endif /* WORD64 */ - /* Make sure this produces the same string as DefineLocal/DefineSelf in xdm. * Otherwise, Xau will not be able to find your cookies in the Xauthority file. diff --git a/nx-X11/lib/X11/Xlibint.h b/nx-X11/lib/X11/Xlibint.h index 56da234..b9a39b2 100644 --- a/nx-X11/lib/X11/Xlibint.h +++ b/nx-X11/lib/X11/Xlibint.h @@ -215,13 +215,6 @@ struct _XDisplay #define XAllocIDs(dpy,ids,n) (*(dpy)->idlist_alloc)(dpy,ids,n) -/* - * define the following if you want the Data macro to be a procedure instead - */ -#ifdef CRAY -#define DataRoutineIsProcedure -#endif /* CRAY */ - #ifndef _XEVENT_ /* * _QEvent datatype for use in input queueing. @@ -426,26 +419,8 @@ extern LockInfoPtr _Xglobal_lock; * X Protocol packetizing macros. */ -/* Need to start requests on 64 bit word boundaries - * on a CRAY computer so add a NoOp (127) if needed. - * A character pointer on a CRAY computer will be non-zero - * after shifting right 61 bits of it is not pointing to - * a word boundary. - */ -#ifdef WORD64 -#define WORD64ALIGN if ((long)dpy->bufptr >> 61) {\ - dpy->last_req = dpy->bufptr;\ - *(dpy->bufptr) = X_NoOperation;\ - *(dpy->bufptr+1) = 0;\ - *(dpy->bufptr+2) = 0;\ - *(dpy->bufptr+3) = 1;\ - dpy->request++;\ - dpy->bufptr += 4;\ - } -#else /* else does not require alignment on 64-bit boundaries */ +/* Leftover from CRAY support - was defined empty on all non-Cray systems */ #define WORD64ALIGN -#endif /* WORD64 */ - /* * GetReq - Get the next available X request packet in the buffer and @@ -458,7 +433,6 @@ extern LockInfoPtr _Xglobal_lock; #if !defined(UNIXCPP) || defined(ANSICPP) #define GetReq(name, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(x##name##Req)) > dpy->bufmax)\ _XFlush(dpy);\ req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\ @@ -469,7 +443,6 @@ extern LockInfoPtr _Xglobal_lock; #else /* non-ANSI C uses empty comment instead of "##" for token concatenation */ #define GetReq(name, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(x/**/name/**/Req)) > dpy->bufmax)\ _XFlush(dpy);\ req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\ @@ -484,7 +457,6 @@ extern LockInfoPtr _Xglobal_lock; #if !defined(UNIXCPP) || defined(ANSICPP) #define GetReqExtra(name, n, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(x##name##Req) + n) > dpy->bufmax)\ _XFlush(dpy);\ req = (x##name##Req *)(dpy->last_req = dpy->bufptr);\ @@ -494,7 +466,6 @@ extern LockInfoPtr _Xglobal_lock; dpy->request++ #else #define GetReqExtra(name, n, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(x/**/name/**/Req) + n) > dpy->bufmax)\ _XFlush(dpy);\ req = (x/**/name/**/Req *)(dpy->last_req = dpy->bufptr);\ @@ -513,7 +484,6 @@ extern LockInfoPtr _Xglobal_lock; #if !defined(UNIXCPP) || defined(ANSICPP) #define GetResReq(name, rid, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(xResourceReq)) > dpy->bufmax)\ _XFlush(dpy);\ req = (xResourceReq *) (dpy->last_req = dpy->bufptr);\ @@ -524,7 +494,6 @@ extern LockInfoPtr _Xglobal_lock; dpy->request++ #else #define GetResReq(name, rid, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(xResourceReq)) > dpy->bufmax)\ _XFlush(dpy);\ req = (xResourceReq *) (dpy->last_req = dpy->bufptr);\ @@ -541,7 +510,6 @@ extern LockInfoPtr _Xglobal_lock; */ #if !defined(UNIXCPP) || defined(ANSICPP) #define GetEmptyReq(name, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(xReq)) > dpy->bufmax)\ _XFlush(dpy);\ req = (xReq *) (dpy->last_req = dpy->bufptr);\ @@ -551,7 +519,6 @@ extern LockInfoPtr _Xglobal_lock; dpy->request++ #else #define GetEmptyReq(name, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(xReq)) > dpy->bufmax)\ _XFlush(dpy);\ req = (xReq *) (dpy->last_req = dpy->bufptr);\ @@ -561,18 +528,6 @@ extern LockInfoPtr _Xglobal_lock; dpy->request++ #endif -#ifdef WORD64 -#define MakeBigReq(req,n) \ - { \ - char _BRdat[4]; \ - unsigned long _BRlen = req->length - 1; \ - req->length = 0; \ - memcpy(_BRdat, ((char *)req) + (_BRlen << 2), 4); \ - memmove(((char *)req) + 8, ((char *)req) + 4, _BRlen << 2); \ - memcpy(((char *)req) + 4, _BRdat, 4); \ - Data32(dpy, (long *)&_BRdat, 4); \ - } -#else #ifdef LONG64 #define MakeBigReq(req,n) \ { \ @@ -596,7 +551,6 @@ extern LockInfoPtr _Xglobal_lock; Data32(dpy, &_BRdat, 4); \ } #endif -#endif #define SetReqLen(req,n,badlen) \ if ((req->length + n) > (unsigned)65535) { \ @@ -655,10 +609,6 @@ extern void _XFlushGCCache(Display *dpy, GC gc); (void)ptr; \ dpy->bufptr += (n); -#ifdef WORD64 -#define Data16(dpy, data, len) _XData16(dpy, (short *)data, len) -#define Data32(dpy, data, len) _XData32(dpy, (long *)data, len) -#else #define Data16(dpy, data, len) Data((dpy), (char *)(data), (len)) #define _XRead16Pad(dpy, data, len) _XReadPad((dpy), (char *)(data), (len)) #define _XRead16(dpy, data, len) _XRead((dpy), (char *)(data), (len)) @@ -678,7 +628,6 @@ extern void _XRead32( #define Data32(dpy, data, len) Data((dpy), (char *)(data), (len)) #define _XRead32(dpy, data, len) _XRead((dpy), (char *)(data), (len)) #endif -#endif /* not WORD64 */ #define PackData16(dpy,data,len) Data16 (dpy, data, len) #define PackData32(dpy,data,len) Data32 (dpy, data, len) @@ -747,20 +696,10 @@ extern void _XRead32( } -#ifdef MUSTCOPY - -/* for when 32-bit alignment is not good enough */ -#define OneDataCard32(dpy,dstaddr,srcvar) \ - { dpy->bufptr -= 4; Data32 (dpy, (char *) &(srcvar), 4); } - -#else - /* srcvar must be a variable for large architecture version */ #define OneDataCard32(dpy,dstaddr,srcvar) \ { *(CARD32 *)(dstaddr) = (srcvar); } -#endif /* MUSTCOPY */ - typedef struct _XInternalAsync { struct _XInternalAsync *next; /* diff --git a/nx-X11/lib/X11/cmsTrig.c b/nx-X11/lib/X11/cmsTrig.c index 1859fa9..a2d100c 100644 --- a/nx-X11/lib/X11/cmsTrig.c +++ b/nx-X11/lib/X11/cmsTrig.c @@ -82,12 +82,8 @@ _XcmsModuloF( #define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x)) /* XCMS_DMAXPOWTWO - largest power of two exactly representable as a double */ -#ifdef _CRAY -#define XCMS_DMAXPOWTWO ((double)(1 < 47)) -#else #define XCMS_DMAXPOWTWO ((double)(XCMS_LONG_MAX) * \ (1L << ((XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(int) + 1))) -#endif /* * LOCAL VARIABLES diff --git a/nx-X11/lib/X11/omXChar.c b/nx-X11/lib/X11/omXChar.c index 4afafd4..5ddd035 100644 --- a/nx-X11/lib/X11/omXChar.c +++ b/nx-X11/lib/X11/omXChar.c @@ -264,47 +264,6 @@ _XomGetFontSetFromCharSet( return (FontSet) NULL; } -#ifdef MUSTCOPY -static void -cs_to_xchar2b( - register char *from, - register XChar2b *to, - register length) -{ - while (length-- > 0) { - to->byte1 = *from++; - to->byte2 = *from++; - to++; - } -} - -static void -cs_to_xchar2b_gl( - register char *from, - register XChar2b *to, - register length) -{ - while (length-- > 0) { - to->byte1 = *from++ & 0x7f; - to->byte2 = *from++ & 0x7f; - to++; - } -} - -static void -cs_to_xchar2b_gr( - register char *from, - register XChar2b *to, - register length) -{ - while (length-- > 0) { - to->byte1 = *from++ | 0x80; - to->byte2 = *from++ | 0x80; - to++; - } -} -#endif - static void shift_to_gl( register char *text, @@ -360,10 +319,6 @@ _XomConvert( XlcCharSet charset; int length, cs_left, ret; FontSet font_set; -#ifdef MUSTCOPY - XChar2b *xchar2b; - char *buf, buf_local[BUFSIZ]; -#endif cs = *to; cs_left = *to_left; @@ -382,32 +337,6 @@ _XomConvert( length = *to_left - cs_left; -#ifdef MUSTCOPY - if (font_set->is_xchar2b) { - buf = (length > BUFSIZ) ? Xmalloc(length) : buf_local; - if (buf == NULL) - return -1; - memcpy(buf, (char *) *to, length); - - xchar2b = (XChar2b *) *to; - length >>= 1; - - if (font_set->side == charset->side) - cs_to_xchar2b(buf, xchar2b, length); - else if (font_set->side == XlcGL) - cs_to_xchar2b_gl(buf, xchar2b, length); - else if (font_set->side == XlcGR) - cs_to_xchar2b_gr(buf, xchar2b, length); - else - cs_to_xchar2b(buf, xchar2b, length); - - if (buf != buf_local) - Xfree(buf); - - *to = (XPointer) (xchar2b + length); - *to_left -= length; - } else -#endif { if (font_set->side != charset->side) { if (font_set->side == XlcGL) diff --git a/nx-X11/lib/Xrender/FillRect.c b/nx-X11/lib/Xrender/FillRect.c index 319c35d..7591537 100644 --- a/nx-X11/lib/Xrender/FillRect.c +++ b/nx-X11/lib/Xrender/FillRect.c @@ -44,12 +44,6 @@ XRenderFillRectangle (Display *dpy, XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy); xRectangle *rect; xRenderFillRectanglesReq *req; -#ifdef MUSTCOPY - xRectangle rectdata; - long len = SIZEOF(xRectangle); - - rect = &rectdata; -#endif /* MUSTCOPY */ RenderSimpleCheckExtension (dpy, info); LockDisplay(dpy); @@ -68,10 +62,8 @@ XRenderFillRectangle (Display *dpy, (char *)dpy->bufptr - (char *)req < size) { req->length += SIZEOF(xRectangle) >> 2; -#ifndef MUSTCOPY rect = (xRectangle *) dpy->bufptr; dpy->bufptr += SIZEOF(xRectangle); -#endif /* not MUSTCOPY */ } else { @@ -86,20 +78,13 @@ XRenderFillRectangle (Display *dpy, req->color.blue = color->blue; req->color.alpha = color->alpha; -#ifdef MUSTCOPY - dpy->bufptr -= SIZEOF(xRectangle); -#else rect = (xRectangle *) NEXTPTR(req,xRenderFillRectanglesReq); -#endif /* MUSTCOPY */ } rect->x = x; rect->y = y; rect->width = width; rect->height = height; -#ifdef MUSTCOPY - Data (dpy, (char *) rect, len); -#endif /* MUSTCOPY */ UnlockDisplay(dpy); SyncHandle(); } diff --git a/nx-X11/lib/Xrender/Xrenderint.h b/nx-X11/lib/Xrender/Xrenderint.h index 49a294b..a90fe65 100644 --- a/nx-X11/lib/Xrender/Xrenderint.h +++ b/nx-X11/lib/Xrender/Xrenderint.h @@ -101,14 +101,9 @@ XRenderFindDisplay (Display *dpy); /* * Xlib uses long for 32-bit values. Xrender uses int. This - * matters on alpha. Note that this macro assumes that int is 32 bits - * except on WORD64 machines where it is 64 bits. + * matters on alpha. Note that this macro assumes that int is 32 bits. */ -#ifdef WORD64 -#define DataInt32(dpy,d,len) Data32(dpy,(long *) (d),len) -#else #define DataInt32(dpy,d,len) Data(dpy,(char *) (d),len) -#endif #endif /* _XRENDERINT_H_ */ diff --git a/nx-X11/lib/Xtst/XRecord.c b/nx-X11/lib/Xtst/XRecord.c index 16eaeff..05cbda8 100644 --- a/nx-X11/lib/Xtst/XRecord.c +++ b/nx-X11/lib/Xtst/XRecord.c @@ -672,8 +672,6 @@ XRecordFreeData(data) /* the EXTRACT macros are adapted from ICElibint.h */ -#ifndef WORD64 - #define EXTRACT_CARD16(swap, src, dst) \ { \ (dst) = *((CARD16 *) (src)); \ @@ -688,32 +686,6 @@ XRecordFreeData(data) (dst) = lswapl (dst); \ } -#else /* WORD64 */ - -#define EXTRACT_CARD16(swap, src, dst) \ -{ \ - (dst) = *((src) + 0); \ - (dst) <<= 8; \ - (dst) |= *((src) + 1); \ - if (swap) \ - (dst) = lswaps (dst); \ -} - -#define EXTRACT_CARD32(swap, src, dst) \ -{ \ - (dst) = *((src) + 0); \ - (dst) <<= 8; \ - (dst) |= *((src) + 1); \ - (dst) <<= 8; \ - (dst) |= *((src) + 2); \ - (dst) <<= 8; \ - (dst) |= *((src) + 3); \ - if (swap) \ - (dst) = lswapl (dst); \ -} - -#endif /* WORD64 */ - /* byte swapping macros from xfs/include/misc.h */ /* byte swap a long literal */ diff --git a/nx-X11/lib/Xxf86vm/XF86VMode.c b/nx-X11/lib/Xxf86vm/XF86VMode.c index 75a49d2..edff93f 100644 --- a/nx-X11/lib/Xxf86vm/XF86VMode.c +++ b/nx-X11/lib/Xxf86vm/XF86VMode.c @@ -421,7 +421,6 @@ XF86VidModeGetAllModeLines(dpy, screen, modecount, modelinesPtr) */ #if !defined(UNIXCPP) || defined(ANSICPP) #define GetOldReq(name, oldname, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(x##oldname##Req)) > dpy->bufmax)\ _XFlush(dpy);\ req = (x##oldname##Req *)(dpy->last_req = dpy->bufptr);\ @@ -432,7 +431,6 @@ XF86VidModeGetAllModeLines(dpy, screen, modecount, modelinesPtr) #else /* non-ANSI C uses empty comment instead of "##" for token concatenation */ #define GetOldReq(name, oldname, req) \ - WORD64ALIGN\ if ((dpy->bufptr + SIZEOF(x/**/oldname/**/Req)) > dpy->bufmax)\ _XFlush(dpy);\ req = (x/**/oldname/**/Req *)(dpy->last_req = dpy->bufptr);\ diff --git a/nx-X11/lib/font/fc/fslibos.h b/nx-X11/lib/font/fc/fslibos.h index acc1f16..dd266bd 100644 --- a/nx-X11/lib/font/fc/fslibos.h +++ b/nx-X11/lib/font/fc/fslibos.h @@ -90,11 +90,7 @@ from The Open Group. #endif /* FONT_OPEN_MAX */ -#ifdef WORD64 -#define NMSKBITS 64 -#else #define NMSKBITS 32 -#endif #define MSKCNT ((FONT_OPEN_MAX + NMSKBITS - 1) / NMSKBITS) diff --git a/nx-X11/lib/font/fontfile/ffcheck.c b/nx-X11/lib/font/fontfile/ffcheck.c index 9a70a17..d3d1217 100644 --- a/nx-X11/lib/font/fontfile/ffcheck.c +++ b/nx-X11/lib/font/fontfile/ffcheck.c @@ -125,14 +125,12 @@ FontFileCheckRegisterFpeFunctions (void) BitmapRegisterFontFileFunctions (); -#ifndef CRAY #ifdef BUILD_SPEEDO SpeedoRegisterFontFileFunctions (); #endif #ifdef BUILD_TYPE1 Type1RegisterFontFileFunctions(); #endif -#endif #ifdef BUILD_CID CIDRegisterFontFileFunctions(); #endif diff --git a/nx-X11/lib/font/fontfile/register.c b/nx-X11/lib/font/fontfile/register.c index cb74c7c..5ddab03 100644 --- a/nx-X11/lib/font/fontfile/register.c +++ b/nx-X11/lib/font/fontfile/register.c @@ -54,13 +54,11 @@ in this Software without prior written authorization from The Open Group. * with other packages. */ -#ifndef CRAY -# ifdef BUILD_SPEEDO -# define XFONT_SPEEDO 1 -# endif -# ifdef BUILD_TYPE1 -# define XFONT_TYPE1 1 -# endif +#ifdef BUILD_SPEEDO +# define XFONT_SPEEDO 1 +#endif +#ifdef BUILD_TYPE1 +# define XFONT_TYPE1 1 #endif #ifdef BUILD_CID diff --git a/nx-X11/lib/xtrans/Xtrans.c b/nx-X11/lib/xtrans/Xtrans.c index a6bfbed..ef4d64a 100644 --- a/nx-X11/lib/xtrans/Xtrans.c +++ b/nx-X11/lib/xtrans/Xtrans.c @@ -1265,44 +1265,6 @@ TRANS(MakeAllCLTSServerListeners) (char *port, int *partial, int *count_ret, * may be used by it. */ -#ifdef CRAY - -/* - * Cray UniCOS does not have readv and writev so we emulate - */ - -static int TRANS(ReadV) (XtransConnInfo ciptr, struct iovec *iov, int iovcnt) - -{ - struct msghdr hdr; - - hdr.msg_iov = iov; - hdr.msg_iovlen = iovcnt; - hdr.msg_accrights = 0; - hdr.msg_accrightslen = 0; - hdr.msg_name = 0; - hdr.msg_namelen = 0; - - return (recvmsg (ciptr->fd, &hdr, 0)); -} - -static int TRANS(WriteV) (XtransConnInfo ciptr, struct iovec *iov, int iovcnt) - -{ - struct msghdr hdr; - - hdr.msg_iov = iov; - hdr.msg_iovlen = iovcnt; - hdr.msg_accrights = 0; - hdr.msg_accrightslen = 0; - hdr.msg_name = 0; - hdr.msg_namelen = 0; - - return (sendmsg (ciptr->fd, &hdr, 0)); -} - -#endif /* CRAY */ - #if (defined(SYSV) && defined(i386) && !defined(__SCO__)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__) /* diff --git a/nx-X11/lib/xtrans/Xtrans.h b/nx-X11/lib/xtrans/Xtrans.h index e8d4bdf..ae80866 100644 --- a/nx-X11/lib/xtrans/Xtrans.h +++ b/nx-X11/lib/xtrans/Xtrans.h @@ -198,7 +198,7 @@ typedef long BytesReadable_t; #endif -#if defined(WIN32) || (defined(USG) && !defined(CRAY) && !defined(umips) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)) +#if defined(WIN32) || (defined(USG) && !defined(umips) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)) /* * TRANS(Readv) and TRANS(Writev) use struct iovec, normally found diff --git a/nx-X11/lib/xtrans/Xtransint.h b/nx-X11/lib/xtrans/Xtransint.h index 5ca0d93..60d3a9e 100644 --- a/nx-X11/lib/xtrans/Xtransint.h +++ b/nx-X11/lib/xtrans/Xtransint.h @@ -384,7 +384,7 @@ typedef struct _Xtransport_table { * systems, so they may be emulated. */ -#if defined(CRAY) || (defined(SYSV) && defined(i386) && !defined(__SCO__)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__) +#if (defined(SYSV) && defined(i386) && !defined(__SCO__)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__) #define READV(ciptr, iov, iovcnt) TRANS(ReadV)(ciptr, iov, iovcnt) @@ -398,10 +398,10 @@ static int TRANS(ReadV)( #define READV(ciptr, iov, iovcnt) readv(ciptr->fd, iov, iovcnt) -#endif /* CRAY || (SYSV && i386) || WIN32 || __sxg__ || */ +#endif /* (SYSV && i386) || WIN32 || __sxg__ || */ -#if defined(CRAY) || (defined(SYSV) && defined(i386) && !defined(__SCO__)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__) +#if (defined(SYSV) && defined(i386) && !defined(__SCO__)) || defined(WIN32) || defined(__sxg__) || defined(__UNIXOS2__) #define WRITEV(ciptr, iov, iovcnt) TRANS(WriteV)(ciptr, iov, iovcnt) @@ -415,7 +415,7 @@ static int TRANS(WriteV)( #define WRITEV(ciptr, iov, iovcnt) writev(ciptr->fd, iov, iovcnt) -#endif /* CRAY || WIN32 || __sxg__ */ +#endif /* WIN32 || __sxg__ */ static int is_numeric ( diff --git a/nx-X11/lib/xtrans/Xtranssock.c b/nx-X11/lib/xtrans/Xtranssock.c index 091fc1c..62feefe 100644 --- a/nx-X11/lib/xtrans/Xtranssock.c +++ b/nx-X11/lib/xtrans/Xtranssock.c @@ -2359,26 +2359,10 @@ TRANS(SocketINETConnect) (XtransConnInfo ciptr, char *host, char *port) ESET(EPROTOTYPE); return TRANS_CONNECT_FAILED; } - -#if defined(CRAY) && defined(OLDTCP) - /* Only Cray UNICOS3 and UNICOS4 will define this */ - { - long t; - memcpy ((char *)&t, (char *) hostp->h_addr, sizeof (t)); - sockname.sin_addr = t; - } -#else memcpy ((char *) &sockname.sin_addr, (char *) hostp->h_addr, sizeof (sockname.sin_addr)); -#endif /* CRAY and OLDTCP */ - } else { -#if defined(CRAY) && defined(OLDTCP) - /* Only Cray UNICOS3 and UNICOS4 will define this */ - sockname.sin_addr = tmpaddr; -#else sockname.sin_addr.s_addr = tmpaddr; -#endif /* CRAY and OLDTCP */ } /* diff --git a/nx-X11/lib/xtrans/Xtransutil.c b/nx-X11/lib/xtrans/Xtransutil.c index 253e8b0..729e65c 100644 --- a/nx-X11/lib/xtrans/Xtransutil.c +++ b/nx-X11/lib/xtrans/Xtransutil.c @@ -104,17 +104,8 @@ TRANS(ConvertAddress)(int *familyp, int *addrlenp, Xtransaddr **addrp) */ struct sockaddr_in saddr; -#ifdef CRAY -#ifdef OLDTCP - int len = sizeof(saddr.sin_addr); -#else - int len = SIZEOF_in_addr; -#endif /* OLDTCP */ - char *cp = (char *) &saddr.sin_addr; -#else /* else not CRAY */ int len = sizeof(saddr.sin_addr.s_addr); char *cp = (char *) &saddr.sin_addr.s_addr; -#endif /* CRAY */ memcpy (&saddr, *addrp, sizeof (struct sockaddr_in)); -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit ac9fbaabd6bdbca6dd1d94fa385aea41fdebf2c1 Author: Karl Tomlinson <xmail@karlt.net> Date: Wed Apr 15 10:16:18 2015 +0200 MakeBigReq: don't move the last word, already handled by Data32 (X.Org CVE-2013-7439). MakeBigReq inserts a length field after the first 4 bytes of the request (after req->length), pushing everything else back by 4 bytes. The current memmove moves everything but the first 4 bytes back. If a request aligns to the end of the buffer pointer when MakeBigReq is invoked for that request, this runs over the buffer. Instead, we need to memmove minus the first 4 bytes (which aren't moved), minus the last 4 bytes (so we still align to the previous tail). The 4 bytes that fell out are already handled with Data32, which will handle the buffermax correctly. The case where req->length = 1 was already not functional. Reported by Abhishek Arya <inferno@chromium.org> (against X.Org BTS). https://bugzilla.mozilla.org/show_bug.cgi?id=803762 Reviewed-by: Jeff Muizelaar <jmuizelaar@mozilla.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Rebased-for-NX: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> --- nx-X11/lib/X11/Xlibint.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/nx-X11/lib/X11/Xlibint.h b/nx-X11/lib/X11/Xlibint.h index b9a39b2..bcd42b5 100644 --- a/nx-X11/lib/X11/Xlibint.h +++ b/nx-X11/lib/X11/Xlibint.h @@ -528,6 +528,14 @@ extern LockInfoPtr _Xglobal_lock; dpy->request++ #endif +/* + * MakeBigReq sets the CARD16 "req->length" to 0 and inserts a new CARD32 + * length, after req->length, before the data in the request. The new length + * includes the "n" extra 32-bit words. + * + * Do not use MakeBigReq if there is no data already in the request. + * req->length must already be >= 2. + */ #ifdef LONG64 #define MakeBigReq(req,n) \ { \ @@ -535,7 +543,7 @@ extern LockInfoPtr _Xglobal_lock; CARD32 _BRlen = req->length - 1; \ req->length = 0; \ _BRdat = ((CARD32 *)req)[_BRlen]; \ - memmove(((char *)req) + 8, ((char *)req) + 4, _BRlen << 2); \ + memmove(((char *)req) + 8, ((char *)req) + 4, (_BRlen - 1) << 2); \ ((CARD32 *)req)[1] = _BRlen + n + 2; \ Data32(dpy, &_BRdat, 4); \ } @@ -546,12 +554,19 @@ extern LockInfoPtr _Xglobal_lock; CARD32 _BRlen = req->length - 1; \ req->length = 0; \ _BRdat = ((CARD32 *)req)[_BRlen]; \ - memmove(((char *)req) + 8, ((char *)req) + 4, _BRlen << 2); \ + memmove(((char *)req) + 8, ((char *)req) + 4, (_BRlen - 1) << 2); \ ((CARD32 *)req)[1] = _BRlen + n + 2; \ Data32(dpy, &_BRdat, 4); \ } #endif +/* + * SetReqLen increases the count of 32-bit words in the request by "n", + * or by "badlen" if "n" is too large. + * + * Do not use SetReqLen if "req" does not already have data after the + * xReq header. req->length must already be >= 2. + */ #define SetReqLen(req,n,badlen) \ if ((req->length + n) > (unsigned)65535) { \ if (dpy->bigreq_size) { \ -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit a5f71f084e9f32e947a04da69edb7aae96d61697 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Apr 14 09:42:35 2015 +0200 NXAGENT_UPGRADE code cleanup: NX agent contains/ed two build trees. An old one (probably pre-3.x.y) and a "newer" one. The "newer" code tree used to become enabled by setting NXUpgradeAgentServer in nx-X11/config/cf/host.def to YES. As building the NXUpgradeAgentServer has been the default for years now, we drop all code that does not get used at build time for NXUpgradeAgentServer == YES (i.e., the code that belongs to the pre-3.x.y phase of NX agent). --- nx-X11/config/cf/host.def | 7 - nx-X11/programs/Xserver/hw/nxagent/Composite.c | 10 - nx-X11/programs/Xserver/hw/nxagent/Imakefile | 8 +- nx-X11/programs/Xserver/hw/nxagent/Init.c | 8 - nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c | 359 -- nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h | 4 - .../programs/Xserver/hw/nxagent/NXcompositeext.h | 4 - .../programs/Xserver/hw/nxagent/NXcompositeint.h | 76 - .../programs/Xserver/hw/nxagent/NXcompositeproto.h | 148 - nx-X11/programs/Xserver/hw/nxagent/NXdamage.c | 2072 +++++++- nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c | 541 +-- nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c | 276 +- nx-X11/programs/Xserver/hw/nxagent/NXevents.c | 1049 ++-- nx-X11/programs/Xserver/hw/nxagent/NXextension.c | 54 +- nx-X11/programs/Xserver/hw/nxagent/NXglxext.c | 63 +- nx-X11/programs/Xserver/hw/nxagent/NXglyph.c | 94 +- nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c | 25 +- nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h | 35 +- nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c | 71 +- nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c | 16 +- nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c | 129 +- nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c | 49 +- nx-X11/programs/Xserver/hw/nxagent/NXpicture.c | 944 +++- nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h | 206 +- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 157 +- nx-X11/programs/Xserver/hw/nxagent/NXrender.c | 909 +++- nx-X11/programs/Xserver/hw/nxagent/NXresource.c | 319 +- nx-X11/programs/Xserver/hw/nxagent/NXshm.c | 161 +- nx-X11/programs/Xserver/hw/nxagent/NXwindow.c | 566 ++- nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c | 94 +- nx-X11/programs/Xserver/hw/nxagent/Render.c | 60 - nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c | 2073 -------- nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c | 4682 ------------------ nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c | 2805 ----------- nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c | 5044 -------------------- nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c | 508 -- nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c | 575 --- nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c | 581 --- nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c | 241 - nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h | 174 - nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c | 979 ---- nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c | 318 -- nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c | 233 - nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c | 1222 ----- nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c | 2274 --------- .../programs/Xserver/hw/nxagent/X/NXpicturestr.h | 679 --- nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c | 992 ---- nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c | 3861 --------------- nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c | 1250 ----- nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c | 1498 ------ nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c | 4167 ---------------- nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c | 2292 --------- 52 files changed, 6098 insertions(+), 38864 deletions(-) diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index a7ae464..58b3df9 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -89,13 +89,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ #define NXAgentServer YES -/* - * Assume the new build tree. - * -#define NXUpgradeAgentServer NO - */ -#define NXUpgradeAgentServer YES - #ifdef NXAgentServer #define BuildRenderLibrary YES #define SharedLibFreetype2 YES diff --git a/nx-X11/programs/Xserver/hw/nxagent/Composite.c b/nx-X11/programs/Xserver/hw/nxagent/Composite.c index c79104f..ae3cbb5 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Composite.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Composite.c @@ -24,18 +24,8 @@ #include "Options.h" #include "Windows.h" -#undef NXAGENT_UPGRADE - -#ifndef NXAGENT_UPGRADE - #include "NXcomposite.h" -#else - -#include "composite.h" - -#endif - /* * Set here the required log level. */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/Imakefile b/nx-X11/programs/Xserver/hw/nxagent/Imakefile index 874e825..3d4331c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile +++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile @@ -185,18 +185,12 @@ INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \ # NXAGENT FULLSCREEN Fullscreen mode # -#if NXUpgradeAgentServer -UPG_DEFINES=-DNXAGENT_UPGRADE -#else -UPG_DEFINES= -#endif - #if nxVersion NX_DEFINES=-DNX_VERSION_CURRENT="$(NX_VERSION_CURRENT)" \ -DNX_VERSION_CURRENT_STRING="\"$(NX_VERSION_CURRENT_STRING)\"" #endif -DEFINES = -g $(OS_DEFINES) $(EXT_DEFINES) $(UPG_DEFINES) $(NX_DEFINES) \ +DEFINES = -g $(OS_DEFINES) $(EXT_DEFINES) $(NX_DEFINES) \ -UXF86VIDMODE -UXFreeXDGA -UXF86MISC -UXF86DRI -UXFree86LOADER \ -DNXAGENT_SERVER \ -DNXAGENT_CONSTRAINCURSOR \ diff --git a/nx-X11/programs/Xserver/hw/nxagent/Init.c b/nx-X11/programs/Xserver/hw/nxagent/Init.c index dbc706c..d0e3e57 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Init.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c @@ -135,8 +135,6 @@ void OsVendorEndRedirectErrorFFunction(); static void nxagentGrabServerCallback(CallbackListPtr *callbacks, pointer data, pointer args); -#ifdef NXAGENT_UPGRADE - void ddxInitGlobals(void) { /* @@ -149,8 +147,6 @@ void ddxInitGlobals(void) OsVendorEndRedirectErrorFProc = OsVendorEndRedirectErrorFFunction; } -#endif - /* * Set if the remote display supports * backing store. @@ -476,14 +472,10 @@ void ddxGiveUp() AbortDDX(); } -#ifdef NXAGENT_UPGRADE - void ddxBeforeReset(void) { } -#endif - void OsVendorInit() { return; diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c b/nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c deleted file mode 100644 index 09bdaeb..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c +++ /dev/null @@ -1,359 +0,0 @@ -#ifndef NXAGENT_UPGRADE - -/* - * $Id: Xcomposite.c,v 1.2 2005/07/03 07:00:56 daniels Exp $ - * - * Copyright © 2003 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef NXAGENT_SERVER - -#include "NXcompositeint.h" - -#else - -#include "compositeint.h" - -#endif - -XCompositeExtInfo XCompositeExtensionInfo; - -const char XCompositeExtensionName[] = COMPOSITE_NAME; - -/* - * XCompositeExtRemoveDisplay - remove the indicated display from the - * extension object. (Replaces XextRemoveDisplay.) - */ -static int -XCompositeExtRemoveDisplay (XCompositeExtInfo *extinfo, Display *dpy) -{ - XCompositeExtDisplayInfo *info, *prev; - - /* - * locate this display and its back link so that it can be removed - */ - _XLockMutex(_Xglobal_lock); - prev = NULL; - for (info = extinfo->head; info; info = info->next) { - if (info->display == dpy) break; - prev = info; - } - if (!info) { - _XUnlockMutex(_Xglobal_lock); - return 0; /* hmm, actually an error */ - } - - /* - * remove the display from the list; handles going to zero - */ - if (prev) - prev->next = info->next; - else - extinfo->head = info->next; - - extinfo->ndisplays--; - if (info == extinfo->cur) extinfo->cur = NULL; /* flush cache */ - _XUnlockMutex(_Xglobal_lock); - - Xfree ((char *) info); - return 1; -} - -static int -XCompositeCloseDisplay (Display *dpy, XExtCodes *codes) -{ - return XCompositeExtRemoveDisplay (&XCompositeExtensionInfo, dpy); -} - -/* - * XCompositeExtAddDisplay - add a display to this extension. (Replaces - * XextAddDisplay) - */ -static XCompositeExtDisplayInfo * -XCompositeExtAddDisplay (XCompositeExtInfo *extinfo, - Display *dpy, - const char *ext_name) -{ - XCompositeExtDisplayInfo *info; - - #ifndef NXAGENT_SERVER - - int ev; - - #endif - - info = (XCompositeExtDisplayInfo *) Xmalloc (sizeof (XCompositeExtDisplayInfo)); - if (!info) return NULL; - info->display = dpy; - - info->codes = XInitExtension (dpy, ext_name); - - /* - * if the server has the extension, then we can initialize the - * appropriate function vectors - */ - if (info->codes) { - xCompositeQueryVersionReply rep; - xCompositeQueryVersionReq *req; - XESetCloseDisplay (dpy, info->codes->extension, - XCompositeCloseDisplay); - /* - * Get the version info - */ - LockDisplay (dpy); - GetReq (CompositeQueryVersion, req); - req->reqType = info->codes->major_opcode; - req->compositeReqType = X_CompositeQueryVersion; - req->majorVersion = COMPOSITE_MAJOR; - req->minorVersion = COMPOSITE_MINOR; - if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) - { - UnlockDisplay (dpy); - SyncHandle (); - return 0; - } - info->major_version = rep.majorVersion; - info->minor_version = rep.minorVersion; - UnlockDisplay (dpy); - } else { - /* The server doesn't have this extension. - * Use a private Xlib-internal extension to hang the close_display - * hook on so that the "cache" (extinfo->cur) is properly cleaned. - * (XBUG 7955) - */ - XExtCodes *codes = XAddExtension(dpy); - if (!codes) { - XFree(info); - return NULL; - } - XESetCloseDisplay (dpy, codes->extension, XCompositeCloseDisplay); - } - - /* - * now, chain it onto the list - */ - _XLockMutex(_Xglobal_lock); - info->next = extinfo->head; - extinfo->head = info; - extinfo->cur = info; - extinfo->ndisplays++; - _XUnlockMutex(_Xglobal_lock); - return info; -} - -/* - * XCompositeExtFindDisplay - look for a display in this extension; keeps a - * cache of the most-recently used for efficiency. (Replaces - * XextFindDisplay.) - */ -static XCompositeExtDisplayInfo * -XCompositeExtFindDisplay (XCompositeExtInfo *extinfo, - Display *dpy) -{ - XCompositeExtDisplayInfo *info; - - /* - * see if this was the most recently accessed display - */ - if ((info = extinfo->cur) && info->display == dpy) - return info; - - /* - * look for display in list - */ - _XLockMutex(_Xglobal_lock); - for (info = extinfo->head; info; info = info->next) { - if (info->display == dpy) { - extinfo->cur = info; /* cache most recently used */ - _XUnlockMutex(_Xglobal_lock); - return info; - } - } - _XUnlockMutex(_Xglobal_lock); - - return NULL; -} - -XCompositeExtDisplayInfo * -XCompositeFindDisplay (Display *dpy) -{ - XCompositeExtDisplayInfo *info; - - info = XCompositeExtFindDisplay (&XCompositeExtensionInfo, dpy); - if (!info) - info = XCompositeExtAddDisplay (&XCompositeExtensionInfo, dpy, - XCompositeExtensionName); - return info; -} - - -Bool -XCompositeQueryExtension (Display *dpy, int *event_basep, int *error_basep) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - - if (XCompositeHasExtension(info)) - { - *event_basep = info->codes->first_event; - *error_basep = info->codes->first_error; - return True; - } - else - return False; -} - -Status -XCompositeQueryVersion (Display *dpy, - int *major_versionp, - int *minor_versionp) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - - XCompositeCheckExtension (dpy, info, 0); - *major_versionp = info->major_version; - *minor_versionp = info->minor_version; - UnlockDisplay (dpy); - SyncHandle (); - return 1; -} - -int -XCompositeVersion (void) -{ - return XCOMPOSITE_VERSION; -} - -void -XCompositeRedirectWindow (Display *dpy, Window window, int update) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - xCompositeRedirectWindowReq *req; - - XCompositeSimpleCheckExtension (dpy, info); - LockDisplay (dpy); - GetReq (CompositeRedirectWindow, req); - req->reqType = info->codes->major_opcode; - req->compositeReqType = X_CompositeRedirectWindow; - req->window = window; - req->update = update; - UnlockDisplay (dpy); - SyncHandle (); -} - -void -XCompositeRedirectSubwindows (Display *dpy, Window window, int update) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - xCompositeRedirectSubwindowsReq *req; - - XCompositeSimpleCheckExtension (dpy, info); - LockDisplay (dpy); - GetReq (CompositeRedirectSubwindows, req); - req->reqType = info->codes->major_opcode; - req->compositeReqType = X_CompositeRedirectSubwindows; - req->window = window; - req->update = update; - UnlockDisplay (dpy); - SyncHandle (); -} - -void -XCompositeUnredirectWindow (Display *dpy, Window window, int update) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - xCompositeUnredirectWindowReq *req; - - XCompositeSimpleCheckExtension (dpy, info); - LockDisplay (dpy); - GetReq (CompositeUnredirectWindow, req); - req->reqType = info->codes->major_opcode; - req->compositeReqType = X_CompositeUnredirectWindow; - req->window = window; - req->update = update; - UnlockDisplay (dpy); - SyncHandle (); -} - -void -XCompositeUnredirectSubwindows (Display *dpy, Window window, int update) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - xCompositeUnredirectSubwindowsReq *req; - - XCompositeSimpleCheckExtension (dpy, info); - LockDisplay (dpy); - GetReq (CompositeUnredirectSubwindows, req); - req->reqType = info->codes->major_opcode; - req->compositeReqType = X_CompositeUnredirectSubwindows; - req->window = window; - req->update = update; - UnlockDisplay (dpy); - SyncHandle (); -} - -XserverRegion -XCompositeCreateRegionFromBorderClip (Display *dpy, Window window) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - xCompositeCreateRegionFromBorderClipReq *req; - XserverRegion region; - - XCompositeCheckExtension (dpy, info, 0); - LockDisplay (dpy); - GetReq (CompositeCreateRegionFromBorderClip, req); - req->reqType = info->codes->major_opcode; - req->compositeReqType = X_CompositeCreateRegionFromBorderClip; - req->window = window; - region = req->region = XAllocID (dpy); - UnlockDisplay (dpy); - SyncHandle (); - - #ifdef NXAGENT_SERVER - - return region; - - #else - - return region; - - #endif -} - -Pixmap -XCompositeNameWindowPixmap (Display *dpy, Window window) -{ - XCompositeExtDisplayInfo *info = XCompositeFindDisplay (dpy); - xCompositeNameWindowPixmapReq *req; - Pixmap pixmap; - - XCompositeCheckExtension (dpy, info, 0); - LockDisplay (dpy); - GetReq (CompositeNameWindowPixmap, req); - req->reqType = info->codes->major_opcode; - req->compositeReqType = X_CompositeNameWindowPixmap; - req->window = window; - pixmap = req->pixmap = XAllocID (dpy); - UnlockDisplay (dpy); - SyncHandle (); - return pixmap; -} - -#endif /* #ifndef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h b/nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h index 952e0d3..d11561e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h +++ b/nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h @@ -1,5 +1,3 @@ -#ifndef NXAGENT_UPGRADE - /* * $Id: Xcomposite.h,v 1.3 2005/07/03 07:00:56 daniels Exp $ * @@ -82,5 +80,3 @@ XCompositeNameWindowPixmap (Display *dpy, Window window); _XFUNCPROTOEND #endif /* _XCOMPOSITE_H_ */ - -#endif /* #ifndef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXcompositeext.h b/nx-X11/programs/Xserver/hw/nxagent/NXcompositeext.h index a223351..8667ded 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXcompositeext.h +++ b/nx-X11/programs/Xserver/hw/nxagent/NXcompositeext.h @@ -1,5 +1,3 @@ -#ifndef NXAGENT_UPGRADE - /* * $Id: composite.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ * @@ -51,5 +49,3 @@ #define CompositeNumberRequests (X_CompositeNameWindowPixmap + 1) #endif /* _COMPOSITE_H_ */ - -#endif /* #ifndef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXcompositeint.h b/nx-X11/programs/Xserver/hw/nxagent/NXcompositeint.h deleted file mode 100644 index 044335a..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/NXcompositeint.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef NXAGENT_UPGRADE - -/* - * $Id: xcompositeint.h,v 1.3 2005/07/12 03:10:35 keithp Exp $ - * - * Copyright © 2003 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef _XDAMAGEINT_H_ -#define _XDAMAGEINT_H_ - -#define NEED_EVENTS -#define NEED_REPLIES -#include <stdio.h> -#include <X11/Xlib.h> -#include <X11/Xlibint.h> -#include <X11/Xutil.h> - -#ifdef NXAGENT_SERVER -#include "NXcompositeproto.h" -#include "NXcomposite.h" -#else -#include <X11/extensions/compositeproto.h> -#include <X11/extensions/Xcomposite.h> -#endif - -typedef struct _XCompositeExtDisplayInfo { - struct _XCompositeExtDisplayInfo *next; /* keep a linked list */ - Display *display; /* which display this is */ - XExtCodes *codes; /* the extension protocol codes */ - int major_version; /* -1 means we don't know */ - int minor_version; /* -1 means we don't know */ -} XCompositeExtDisplayInfo; - -/* replaces XExtensionInfo */ -typedef struct _XCompositeExtInfo { - XCompositeExtDisplayInfo *head; /* start of the list */ - XCompositeExtDisplayInfo *cur; /* most recently used */ - int ndisplays; /* number of displays */ -} XCompositeExtInfo; - -extern XCompositeExtInfo XCompositeExtensionInfo; -extern const char XCompositeExtensionName[]; - -XCompositeExtDisplayInfo * -XCompositeFindDisplay (Display *dpy); - -#define XCompositeHasExtension(i) ((i) && ((i)->codes)) - -#define XCompositeCheckExtension(dpy,i,val) \ - if (!XCompositeHasExtension(i)) { return val; } - -#define XCompositeSimpleCheckExtension(dpy,i) \ - if (!XCompositeHasExtension(i)) { return; } - -#endif /* _XDAMAGEINT_H_ */ - -#endif /* #ifndef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXcompositeproto.h b/nx-X11/programs/Xserver/hw/nxagent/NXcompositeproto.h deleted file mode 100644 index cd31c7c..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/NXcompositeproto.h +++ /dev/null @@ -1,148 +0,0 @@ -#ifndef NXAGENT_UPGRADE - -/* - * $Id: compositeproto.h,v 1.4 2004/07/08 07:20:55 keithp Exp $ - * - * Copyright © 2003 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef _COMPOSITEPROTO_H_ -#define _COMPOSITEPROTO_H_ - -#include <X11/Xmd.h> - -#ifdef NXAGENT_SERVER - -#include "NXcomposite.h" - -#else - -#include <X11/extensions/composite.h> - -#endif - -#define Window CARD32 -#define Region CARD32 - -/* - * requests and replies - */ -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - CARD32 majorVersion B32; - CARD32 minorVersion B32; -} xCompositeQueryVersionReq; - -#define sz_xCompositeQueryVersionReq 12 - -typedef struct { - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 majorVersion B32; - CARD32 minorVersion B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -} xCompositeQueryVersionReply; - -#define sz_xCompositeQueryVersionReply 32 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeRedirectWindowReq; - -#define sz_xCompositeRedirectWindowReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeRedirectSubwindowsReq; - -#define sz_xCompositeRedirectSubwindowsReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeUnredirectWindowReq; - -#define sz_xCompositeUnredirectWindowReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Window window B32; - CARD8 update; - CARD8 pad1; - CARD16 pad2 B16; -} xCompositeUnredirectSubwindowsReq; - -#define sz_xCompositeUnredirectSubwindowsReq 12 - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length B16; - Region region B32; - Window window B32; -} xCompositeCreateRegionFromBorderClipReq; - -#define sz_xCompositeCreateRegionFromBorderClipReq 12 - -/* Version 0.2 additions */ - -typedef struct { - CARD8 reqType; - CARD8 compositeReqType; - CARD16 length; - Window window B32; - Pixmap pixmap B32; -} xCompositeNameWindowPixmapReq; - -#define sz_xCompositeNameWindowPixmapReq 12 - -#undef Window -#undef Region - -#endif /* _COMPOSITEPROTO_H_ */ - -#endif /* #ifndef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXdamage.c b/nx-X11/programs/Xserver/hw/nxagent/NXdamage.c index 8f43680..cf5d48b 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXdamage.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXdamage.c @@ -1,5 +1,2073 @@ -#ifdef NXAGENT_UPGRADE +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ -#include "X/NXdamage.c" +/* + * $Id: damage.c,v 1.19 2005/10/06 21:55:41 anholt Exp $ + * + * Copyright © 2003 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> #endif + +#include <X11/X.h> +#include "scrnintstr.h" +#include "windowstr.h" +#include <X11/fonts/font.h> +#include "dixfontstr.h" +#include <X11/fonts/fontstruct.h> +#include "mi.h" +#include "regionstr.h" +#include "globals.h" +#include "gcstruct.h" +#include "damage.h" +#include "damagestr.h" +#ifdef COMPOSITE +#include "cw.h" +#endif + +#define wrap(priv, real, mem, func) {\ + priv->mem = real->mem; \ + real->mem = func; \ +} + +#define unwrap(priv, real, mem) {\ + real->mem = priv->mem; \ +} + +#define BOX_SAME(a,b) \ + ((a)->x1 == (b)->x1 && \ + (a)->y1 == (b)->y1 && \ + (a)->x2 == (b)->x2 && \ + (a)->y2 == (b)->y2) + +#define DAMAGE_VALIDATE_ENABLE 0 +#define DAMAGE_DEBUG_ENABLE 0 +#if DAMAGE_DEBUG_ENABLE +#define DAMAGE_DEBUG(x) ErrorF x +#else +#define DAMAGE_DEBUG(x) +#endif + +#define getPixmapDamageRef(pPixmap) \ + ((DamagePtr *) &(pPixmap->devPrivates[damagePixPrivateIndex].ptr)) + +#define pixmapDamage(pPixmap) damagePixPriv(pPixmap) + +static DamagePtr * +getDrawableDamageRef (DrawablePtr pDrawable) +{ + PixmapPtr pPixmap; + + if (pDrawable->type == DRAWABLE_WINDOW) + { + ScreenPtr pScreen = pDrawable->pScreen; + + pPixmap = 0; + if (pScreen->GetWindowPixmap +#ifdef ROOTLESS_WORKAROUND + && ((WindowPtr)pDrawable)->viewable +#endif + ) + pPixmap = (*pScreen->GetWindowPixmap) ((WindowPtr)pDrawable); + + if (!pPixmap) + { + damageScrPriv(pScreen); + + return &pScrPriv->pScreenDamage; + } + } + else + pPixmap = (PixmapPtr) pDrawable; + return getPixmapDamageRef (pPixmap); +} + +#define getDrawableDamage(pDrawable) (*getDrawableDamageRef (pDrawable)) +#define getWindowDamage(pWin) getDrawableDamage(&(pWin)->drawable) + +#define drawableDamage(pDrawable) \ + DamagePtr pDamage = getDrawableDamage(pDrawable) + +#define windowDamage(pWin) drawableDamage(&(pWin)->drawable) + +#define winDamageRef(pWindow) \ + DamagePtr *pPrev = (DamagePtr *) \ + &(pWindow->devPrivates[damageWinPrivateIndex].ptr) + +#if DAMAGE_DEBUG_ENABLE +static void +_damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, int subWindowMode, const char *where) +#define damageDamageRegion(d,r,c,m) _damageDamageRegion(d,r,c,m,__FUNCTION__) +#else +static void +damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, + int subWindowMode) +#endif +{ + ScreenPtr pScreen = pDrawable->pScreen; + damageScrPriv(pScreen); + drawableDamage(pDrawable); + DamagePtr pNext; + RegionRec clippedRec; + RegionPtr pDamageRegion; + RegionRec pixClip; + Bool was_empty; + RegionRec tmpRegion; + BoxRec tmpBox; + int draw_x, draw_y; +#ifdef COMPOSITE + int screen_x = 0, screen_y = 0; +#endif + + /* short circuit for empty regions */ + if (!REGION_NOTEMPTY(pScreen, pRegion)) + return; + +#ifdef COMPOSITE + /* + * When drawing to a pixmap which is storing window contents, + * the region presented is in pixmap relative coordinates which + * need to be converted to screen relative coordinates + */ + if (pDrawable->type != DRAWABLE_WINDOW) + { + screen_x = ((PixmapPtr) pDrawable)->screen_x - pDrawable->x; + screen_y = ((PixmapPtr) pDrawable)->screen_y - pDrawable->y; + } + if (screen_x || screen_y) + REGION_TRANSLATE (pScreen, pRegion, screen_x, screen_y); +#endif + + if (pDrawable->type == DRAWABLE_WINDOW && + ((WindowPtr)(pDrawable))->backingStore == NotUseful) + { + if (subWindowMode == ClipByChildren) + { + REGION_INTERSECT(pScreen, pRegion, pRegion, + &((WindowPtr)(pDrawable))->clipList); + } + else if (subWindowMode == IncludeInferiors) + { + RegionPtr pTempRegion = + NotClippedByChildren((WindowPtr)(pDrawable)); + REGION_INTERSECT(pScreen, pRegion, pRegion, pTempRegion); + REGION_DESTROY(pScreen, pTempRegion); + } + /* If subWindowMode is set to an invalid value, don't perform + * any drawable-based clipping. */ + } + + + REGION_NULL (pScreen, &clippedRec); + for (; pDamage; pDamage = pNext) + { + pNext = pDamage->pNext; + /* + * Check for internal damage and don't send events + */ + if (pScrPriv->internalLevel > 0 && !pDamage->isInternal) + { + DAMAGE_DEBUG (("non internal damage, skipping at %d\n", + pScrPriv->internalLevel)); + continue; + } + /* + * Check for unrealized windows + */ + if (pDamage->pDrawable->type == DRAWABLE_WINDOW && + !((WindowPtr) (pDamage->pDrawable))->realized) + { +#if 0 + DAMAGE_DEBUG (("damage while window unrealized\n")); +#endif + continue; + } + + draw_x = pDamage->pDrawable->x; + draw_y = pDamage->pDrawable->y; +#ifdef COMPOSITE + /* + * Need to move everyone to screen coordinates + * XXX what about off-screen pixmaps with non-zero x/y? + */ + if (pDamage->pDrawable->type != DRAWABLE_WINDOW) + { + draw_x += ((PixmapPtr) pDamage->pDrawable)->screen_x; + draw_y += ((PixmapPtr) pDamage->pDrawable)->screen_y; + } +#endif + + /* + * Clip against border or pixmap bounds + */ + + pDamageRegion = pRegion; + if (clip || pDamage->pDrawable != pDrawable) + { + pDamageRegion = &clippedRec; + if (pDamage->pDrawable->type == DRAWABLE_WINDOW) { + REGION_INTERSECT (pScreen, pDamageRegion, pRegion, + &((WindowPtr)(pDamage->pDrawable))->borderClip); + } else { + BoxRec box; + box.x1 = draw_x; + box.y1 = draw_y; + box.x2 = draw_x + pDamage->pDrawable->width; + box.y2 = draw_y + pDamage->pDrawable->height; + REGION_INIT(pScreen, &pixClip, &box, 1); + REGION_INTERSECT (pScreen, pDamageRegion, pRegion, &pixClip); + REGION_UNINIT(pScreen, &pixClip); + } + /* + * Short circuit empty results + */ + if (!REGION_NOTEMPTY(pScreen, pDamageRegion)) + continue; + } + + DAMAGE_DEBUG (("%s %d x %d +%d +%d (target 0x%lx monitor 0x%lx)\n", + where, + pDamageRegion->extents.x2 - pDamageRegion->extents.x1, + pDamageRegion->extents.y2 - pDamageRegion->extents.y1, + pDamageRegion->extents.x1, pDamageRegion->extents.y1, + pDrawable->id, pDamage->pDrawable->id)); + + /* + * Move region to target coordinate space + */ + if (draw_x || draw_y) + REGION_TRANSLATE (pScreen, pDamageRegion, -draw_x, -draw_y); + + switch (pDamage->damageLevel) { + case DamageReportRawRegion: + (*pDamage->damageReport) (pDamage, pDamageRegion, pDamage->closure); + break; + case DamageReportDeltaRegion: + REGION_NULL (pScreen, &tmpRegion); + REGION_SUBTRACT (pScreen, &tmpRegion, pDamageRegion, &pDamage->damage); + if (REGION_NOTEMPTY (pScreen, &tmpRegion)) + { + REGION_UNION(pScreen, &pDamage->damage, + &pDamage->damage, pDamageRegion); + (*pDamage->damageReport) (pDamage, &tmpRegion, pDamage->closure); + } + REGION_UNINIT(pScreen, &tmpRegion); + break; + case DamageReportBoundingBox: + tmpBox = *REGION_EXTENTS (pScreen, &pDamage->damage); + REGION_UNION(pScreen, &pDamage->damage, + &pDamage->damage, pDamageRegion); + if (!BOX_SAME (&tmpBox, REGION_EXTENTS (pScreen, &pDamage->damage))) + (*pDamage->damageReport) (pDamage, &pDamage->damage, pDamage->closure); + break; + case DamageReportNonEmpty: + was_empty = !REGION_NOTEMPTY(pScreen, &pDamage->damage); + REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage, + pDamageRegion); + if (was_empty && REGION_NOTEMPTY(pScreen, &pDamage->damage)) + (*pDamage->damageReport) (pDamage, &pDamage->damage, pDamage->closure); + break; + case DamageReportNone: + REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage, + pDamageRegion); + break; + } + /* + * translate original region back + */ + if (pDamageRegion == pRegion && (draw_x || draw_y)) + REGION_TRANSLATE (pScreen, pDamageRegion, draw_x, draw_y); + } +#ifdef COMPOSITE + if (screen_x || screen_y) + REGION_TRANSLATE (pScreen, pRegion, -screen_x, -screen_y); +#endif + + REGION_UNINIT (pScreen, &clippedRec); +} + +#if DAMAGE_DEBUG_ENABLE +#define damageDamageBox(d,b,m) _damageDamageBox(d,b,m,__FUNCTION__) +static void +_damageDamageBox (DrawablePtr pDrawable, BoxPtr pBox, int subWindowMode, const char *where) +#else +static void +damageDamageBox (DrawablePtr pDrawable, BoxPtr pBox, int subWindowMode) +#endif +{ + RegionRec region; + + REGION_INIT (pDrawable->pScreen, ®ion, pBox, 1); +#if DAMAGE_DEBUG_ENABLE + _damageDamageRegion (pDrawable, ®ion, TRUE, subWindowMode, where); +#else + damageDamageRegion (pDrawable, ®ion, TRUE, subWindowMode); +#endif + REGION_UNINIT (pDrawable->pScreen, ®ion); +} + +static void damageValidateGC(GCPtr, unsigned long, DrawablePtr); +static void damageChangeGC(GCPtr, unsigned long); +static void damageCopyGC(GCPtr, unsigned long, GCPtr); +static void damageDestroyGC(GCPtr); +static void damageChangeClip(GCPtr, int, pointer, int); +static void damageDestroyClip(GCPtr); +static void damageCopyClip(GCPtr, GCPtr); + +GCFuncs damageGCFuncs = { + damageValidateGC, damageChangeGC, damageCopyGC, damageDestroyGC, + damageChangeClip, damageDestroyClip, damageCopyClip +}; + +extern GCOps damageGCOps; + +static Bool +damageCreateGC(GCPtr pGC) +{ + ScreenPtr pScreen = pGC->pScreen; + damageScrPriv(pScreen); + damageGCPriv(pGC); + Bool ret; + + pGC->pCompositeClip = 0; + unwrap (pScrPriv, pScreen, CreateGC); + if((ret = (*pScreen->CreateGC) (pGC))) { + pGCPriv->ops = NULL; + pGCPriv->funcs = pGC->funcs; + pGC->funcs = &damageGCFuncs; + } + wrap (pScrPriv, pScreen, CreateGC, damageCreateGC); + + return ret; +} + +#ifdef NOTUSED +static void +damageWrapGC (GCPtr pGC) +{ + damageGCPriv(pGC); + + pGCPriv->ops = NULL; + pGCPriv->funcs = pGC->funcs; + pGC->funcs = &damageGCFuncs; +} + +static void +damageUnwrapGC (GCPtr pGC) +{ + damageGCPriv(pGC); + + pGC->funcs = pGCPriv->funcs; + if (pGCPriv->ops) + pGC->ops = pGCPriv->ops; +} +#endif + +#define DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable) \ + damageGCPriv(pGC); \ + GCFuncs *oldFuncs = pGC->funcs; \ + unwrap(pGCPriv, pGC, funcs); \ + unwrap(pGCPriv, pGC, ops); \ + +#define DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable) \ + wrap(pGCPriv, pGC, funcs, oldFuncs); \ + wrap(pGCPriv, pGC, ops, &damageGCOps) + +#define DAMAGE_GC_FUNC_PROLOGUE(pGC) \ + damageGCPriv(pGC); \ + unwrap(pGCPriv, pGC, funcs); \ + if (pGCPriv->ops) unwrap(pGCPriv, pGC, ops) + +#define DAMAGE_GC_FUNC_EPILOGUE(pGC) \ + wrap(pGCPriv, pGC, funcs, &damageGCFuncs); \ + if (pGCPriv->ops) wrap(pGCPriv, pGC, ops, &damageGCOps) + +static void +damageValidateGC(GCPtr pGC, + unsigned long changes, + DrawablePtr pDrawable) +{ + DAMAGE_GC_FUNC_PROLOGUE (pGC); + (*pGC->funcs->ValidateGC)(pGC, changes, pDrawable); + pGCPriv->ops = pGC->ops; /* just so it's not NULL */ + DAMAGE_GC_FUNC_EPILOGUE (pGC); +} + +static void +damageDestroyGC(GCPtr pGC) +{ + DAMAGE_GC_FUNC_PROLOGUE (pGC); + (*pGC->funcs->DestroyGC)(pGC); + DAMAGE_GC_FUNC_EPILOGUE (pGC); +} + +static void +damageChangeGC (GCPtr pGC, + unsigned long mask) +{ + DAMAGE_GC_FUNC_PROLOGUE (pGC); + (*pGC->funcs->ChangeGC) (pGC, mask); + DAMAGE_GC_FUNC_EPILOGUE (pGC); +} + +static void +damageCopyGC (GCPtr pGCSrc, + unsigned long mask, + GCPtr pGCDst) +{ + DAMAGE_GC_FUNC_PROLOGUE (pGCDst); + (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst); + DAMAGE_GC_FUNC_EPILOGUE (pGCDst); +} + +static void +damageChangeClip (GCPtr pGC, + int type, + pointer pvalue, + int nrects) +{ + DAMAGE_GC_FUNC_PROLOGUE (pGC); + (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); + DAMAGE_GC_FUNC_EPILOGUE (pGC); +} + +static void +damageCopyClip(GCPtr pgcDst, GCPtr pgcSrc) +{ + DAMAGE_GC_FUNC_PROLOGUE (pgcDst); + (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); + DAMAGE_GC_FUNC_EPILOGUE (pgcDst); +} + +static void +damageDestroyClip(GCPtr pGC) +{ + DAMAGE_GC_FUNC_PROLOGUE (pGC); + (* pGC->funcs->DestroyClip)(pGC); + DAMAGE_GC_FUNC_EPILOGUE (pGC); +} + +#define TRIM_BOX(box, pGC) if (pGC->pCompositeClip) { \ + BoxPtr extents = &pGC->pCompositeClip->extents;\ + if(box.x1 < extents->x1) box.x1 = extents->x1; \ + if(box.x2 > extents->x2) box.x2 = extents->x2; \ + if(box.y1 < extents->y1) box.y1 = extents->y1; \ + if(box.y2 > extents->y2) box.y2 = extents->y2; \ + } + +#define TRANSLATE_BOX(box, pDrawable) { \ + box.x1 += pDrawable->x; \ + box.x2 += pDrawable->x; \ + box.y1 += pDrawable->y; \ + box.y2 += pDrawable->y; \ + } + +#define TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC) { \ + TRANSLATE_BOX(box, pDrawable); \ + TRIM_BOX(box, pGC); \ + } + +#define BOX_NOT_EMPTY(box) \ + (((box.x2 - box.x1) > 0) && ((box.y2 - box.y1) > 0)) + +#define checkGCDamage(d,g) (getDrawableDamage(d) && \ + (!g->pCompositeClip ||\ + REGION_NOTEMPTY(d->pScreen, \ + g->pCompositeClip))) + +#ifdef RENDER + +#define TRIM_PICTURE_BOX(box, pDst) { \ + BoxPtr extents = &pDst->pCompositeClip->extents;\ + if(box.x1 < extents->x1) box.x1 = extents->x1; \ + if(box.x2 > extents->x2) box.x2 = extents->x2; \ + if(box.y1 < extents->y1) box.y1 = extents->y1; \ + if(box.y2 > extents->y2) box.y2 = extents->y2; \ + } + +#define checkPictureDamage(p) (getDrawableDamage(p->pDrawable) && \ + REGION_NOTEMPTY(pScreen, p->pCompositeClip)) + +static void +damageComposite (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height) +{ + ScreenPtr pScreen = pDst->pDrawable->pScreen; + PictureScreenPtr ps = GetPictureScreen(pScreen); + damageScrPriv(pScreen); + + if (checkPictureDamage (pDst)) + { + BoxRec box; + + box.x1 = xDst + pDst->pDrawable->x; + box.y1 = yDst + pDst->pDrawable->y; + box.x2 = box.x1 + width; + box.y2 = box.y1 + height; + TRIM_PICTURE_BOX(box, pDst); + if (BOX_NOT_EMPTY(box)) + damageDamageBox (pDst->pDrawable, &box, pDst->subWindowMode); + } + unwrap (pScrPriv, ps, Composite); + (*ps->Composite) (op, + pSrc, + pMask, + pDst, + xSrc, + ySrc, + xMask, + yMask, + xDst, + yDst, + width, + height); + wrap (pScrPriv, ps, Composite, damageComposite); +} + +static void +damageGlyphs (CARD8 op, + PicturePtr pSrc, + PicturePtr pDst, + PictFormatPtr maskFormat, + INT16 xSrc, + INT16 ySrc, + int nlist, + GlyphListPtr list, + GlyphPtr *glyphs) +{ + ScreenPtr pScreen = pDst->pDrawable->pScreen; + PictureScreenPtr ps = GetPictureScreen(pScreen); + damageScrPriv(pScreen); + + if (checkPictureDamage (pDst)) + { + int nlistTmp = nlist; + GlyphListPtr listTmp = list; + GlyphPtr *glyphsTmp = glyphs; + int x, y; + int n; + GlyphPtr glyph; + BoxRec box; + int x1, y1, x2, y2; + + box.x1 = 32767; + box.y1 = 32767; + box.x2 = -32767; + box.y2 = -32767; + x = pDst->pDrawable->x; + y = pDst->pDrawable->y; + while (nlistTmp--) + { + x += listTmp->xOff; + y += listTmp->yOff; + n = listTmp->len; + while (n--) + { + glyph = *glyphsTmp++; + x1 = x - glyph->info.x; + y1 = y - glyph->info.y; + x2 = x1 + glyph->info.width; + y2 = y1 + glyph->info.height; + if (x1 < box.x1) + box.x1 = x1; + if (y1 < box.y1) + box.y1 = y1; + if (x2 > box.x2) + box.x2 = x2; + if (y2 > box.y2) + box.y2 = y2; + x += glyph->info.xOff; + y += glyph->info.yOff; + } + listTmp++; + } + TRIM_PICTURE_BOX (box, pDst); + if (BOX_NOT_EMPTY(box)) + damageDamageBox (pDst->pDrawable, &box, pDst->subWindowMode); + } + unwrap (pScrPriv, ps, Glyphs); + (*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs); + wrap (pScrPriv, ps, Glyphs, damageGlyphs); +} +#endif + +/**********************************************************/ + + +static void +damageFillSpans(DrawablePtr pDrawable, + GC *pGC, + int npt, + DDXPointPtr ppt, + int *pwidth, + int fSorted) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (npt && checkGCDamage (pDrawable, pGC)) + { + int nptTmp = npt; + DDXPointPtr pptTmp = ppt; + int *pwidthTmp = pwidth; + BoxRec box; + + box.x1 = pptTmp->x; + box.x2 = box.x1 + *pwidthTmp; + box.y2 = box.y1 = pptTmp->y; + + while(--nptTmp) + { + pptTmp++; + pwidthTmp++; + if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; + if(box.x2 < (pptTmp->x + *pwidthTmp)) + box.x2 = pptTmp->x + *pwidthTmp; + if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; + else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; + } + + box.y2++; + + if(!pGC->miTranslate) { + TRANSLATE_BOX(box, pDrawable); + } + TRIM_BOX(box, pGC); + + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + + (*pGC->ops->FillSpans)(pDrawable, pGC, npt, ppt, pwidth, fSorted); + + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damageSetSpans(DrawablePtr pDrawable, + GCPtr pGC, + char *pcharsrc, + DDXPointPtr ppt, + int *pwidth, + int npt, + int fSorted) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (npt && checkGCDamage (pDrawable, pGC)) + { + DDXPointPtr pptTmp = ppt; + int *pwidthTmp = pwidth; + int nptTmp = npt; + BoxRec box; + + box.x1 = pptTmp->x; + box.x2 = box.x1 + *pwidthTmp; + box.y2 = box.y1 = pptTmp->y; + + while(--nptTmp) + { + pptTmp++; + pwidthTmp++; + if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; + if(box.x2 < (pptTmp->x + *pwidthTmp)) + box.x2 = pptTmp->x + *pwidthTmp; + if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; + else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; + } + + box.y2++; + + if(!pGC->miTranslate) { + TRANSLATE_BOX(box, pDrawable); + } + TRIM_BOX(box, pGC); + + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->SetSpans)(pDrawable, pGC, pcharsrc, ppt, pwidth, npt, fSorted); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damagePutImage(DrawablePtr pDrawable, + GCPtr pGC, + int depth, + int x, + int y, + int w, + int h, + int leftPad, + int format, + char *pImage) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + if (checkGCDamage (pDrawable, pGC)) + { + BoxRec box; + + box.x1 = x + pDrawable->x; + box.x2 = box.x1 + w; + box.y1 = y + pDrawable->y; + box.y2 = box.y1 + h; + + TRIM_BOX(box, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->PutImage)(pDrawable, pGC, depth, x, y, w, h, + leftPad, format, pImage); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static RegionPtr +damageCopyArea(DrawablePtr pSrc, + DrawablePtr pDst, + GC *pGC, + int srcx, + int srcy, + int width, + int height, + int dstx, + int dsty) +{ + RegionPtr ret; + DAMAGE_GC_OP_PROLOGUE(pGC, pDst); + + /* The driver will only call SourceValidate() when pSrc != pDst, + * but the software sprite (misprite.c) always need to know when a + * drawable is copied so it can remove the sprite. See #1030. */ + if ((pSrc == pDst) && pSrc->pScreen->SourceValidate && + pSrc->type == DRAWABLE_WINDOW && + ((WindowPtr)pSrc)->viewable) + { + (*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height); + } + + if (checkGCDamage (pDst, pGC)) + { + BoxRec box; + + box.x1 = dstx + pDst->x; + box.x2 = box.x1 + width; + box.y1 = dsty + pDst->y; + box.y2 = box.y1 + height; + + TRIM_BOX(box, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDst, &box, pGC->subWindowMode); + } + + ret = (*pGC->ops->CopyArea)(pSrc, pDst, + pGC, srcx, srcy, width, height, dstx, dsty); + DAMAGE_GC_OP_EPILOGUE(pGC, pDst); + return ret; +} + +static RegionPtr +damageCopyPlane(DrawablePtr pSrc, + DrawablePtr pDst, + GCPtr pGC, + int srcx, + int srcy, + int width, + int height, + int dstx, + int dsty, + unsigned long bitPlane) +{ + RegionPtr ret; + DAMAGE_GC_OP_PROLOGUE(pGC, pDst); + + /* The driver will only call SourceValidate() when pSrc != pDst, + * but the software sprite (misprite.c) always need to know when a + * drawable is copied so it can remove the sprite. See #1030. */ + if ((pSrc == pDst) && pSrc->pScreen->SourceValidate && + pSrc->type == DRAWABLE_WINDOW && + ((WindowPtr)pSrc)->viewable) + { + (*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height); + } + + if (checkGCDamage (pDst, pGC)) + { + BoxRec box; + + box.x1 = dstx + pDst->x; + box.x2 = box.x1 + width; + box.y1 = dsty + pDst->y; + box.y2 = box.y1 + height; + + TRIM_BOX(box, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDst, &box, pGC->subWindowMode); + } + + ret = (*pGC->ops->CopyPlane)(pSrc, pDst, + pGC, srcx, srcy, width, height, dstx, dsty, bitPlane); + DAMAGE_GC_OP_EPILOGUE(pGC, pDst); + return ret; +} + +static void +damagePolyPoint(DrawablePtr pDrawable, + GCPtr pGC, + int mode, + int npt, + xPoint *ppt) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (npt && checkGCDamage (pDrawable, pGC)) + { + BoxRec box; + int nptTmp = npt; + xPoint *pptTmp = ppt; + + box.x2 = box.x1 = pptTmp->x; + box.y2 = box.y1 = pptTmp->y; + + /* this could be slow if the points were spread out */ + + while(--nptTmp) + { + pptTmp++; + if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; + else if(box.x2 < pptTmp->x) box.x2 = pptTmp->x; + if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; + else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; + } + + box.x2++; + box.y2++; + + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->PolyPoint)(pDrawable, pGC, mode, npt, ppt); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damagePolylines(DrawablePtr pDrawable, + GCPtr pGC, + int mode, + int npt, + DDXPointPtr ppt) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (npt && checkGCDamage (pDrawable, pGC)) + { + int nptTmp = npt; + DDXPointPtr pptTmp = ppt; + BoxRec box; + int extra = pGC->lineWidth >> 1; + + box.x2 = box.x1 = pptTmp->x; + box.y2 = box.y1 = pptTmp->y; + + if(nptTmp > 1) + { + if(pGC->joinStyle == JoinMiter) + extra = 6 * pGC->lineWidth; + else if(pGC->capStyle == CapProjecting) + extra = pGC->lineWidth; + } + + if(mode == CoordModePrevious) + { + int x = box.x1; + int y = box.y1; + while(--nptTmp) + { + pptTmp++; + x += pptTmp->x; + y += pptTmp->y; + if(box.x1 > x) box.x1 = x; + else if(box.x2 < x) box.x2 = x; + if(box.y1 > y) box.y1 = y; + else if(box.y2 < y) box.y2 = y; + } + } + else + { + while(--nptTmp) + { + pptTmp++; + if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; + else if(box.x2 < pptTmp->x) box.x2 = pptTmp->x; + if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; + else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; + } + } + + box.x2++; + box.y2++; + + if(extra) + { + box.x1 -= extra; + box.x2 += extra; + box.y1 -= extra; + box.y2 += extra; + } + + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->Polylines)(pDrawable, pGC, mode, npt, ppt); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damagePolySegment(DrawablePtr pDrawable, + GCPtr pGC, + int nSeg, + xSegment *pSeg) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (nSeg && checkGCDamage (pDrawable, pGC)) + { + BoxRec box; + int extra = pGC->lineWidth; + int nsegTmp = nSeg; + xSegment *pSegTmp = pSeg; + + if(pGC->capStyle != CapProjecting) + extra >>= 1; + + if(pSegTmp->x2 > pSegTmp->x1) { + box.x1 = pSegTmp->x1; + box.x2 = pSegTmp->x2; + } else { + box.x2 = pSegTmp->x1; + box.x1 = pSegTmp->x2; + } + + if(pSegTmp->y2 > pSegTmp->y1) { + box.y1 = pSegTmp->y1; + box.y2 = pSegTmp->y2; + } else { + box.y2 = pSegTmp->y1; + box.y1 = pSegTmp->y2; + } + + while(--nsegTmp) + { + pSegTmp++; + if(pSegTmp->x2 > pSegTmp->x1) + { + if(pSegTmp->x1 < box.x1) box.x1 = pSegTmp->x1; + if(pSegTmp->x2 > box.x2) box.x2 = pSegTmp->x2; + } + else + { + if(pSegTmp->x2 < box.x1) box.x1 = pSegTmp->x2; + if(pSegTmp->x1 > box.x2) box.x2 = pSegTmp->x1; + } + if(pSegTmp->y2 > pSegTmp->y1) + { + if(pSegTmp->y1 < box.y1) box.y1 = pSegTmp->y1; + if(pSegTmp->y2 > box.y2) box.y2 = pSegTmp->y2; + } + else + { + if(pSegTmp->y2 < box.y1) box.y1 = pSegTmp->y2; + if(pSegTmp->y1 > box.y2) box.y2 = pSegTmp->y1; + } + } + + box.x2++; + box.y2++; + + if(extra) + { + box.x1 -= extra; + box.x2 += extra; + box.y1 -= extra; + box.y2 += extra; + } + + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->PolySegment)(pDrawable, pGC, nSeg, pSeg); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damagePolyRectangle(DrawablePtr pDrawable, + GCPtr pGC, + int nRects, + xRectangle *pRects) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (nRects && checkGCDamage (pDrawable, pGC)) + { + BoxRec box; + int offset1, offset2, offset3; + int nRectsTmp = nRects; + xRectangle *pRectsTmp = pRects; + + offset2 = pGC->lineWidth; + if(!offset2) offset2 = 1; + offset1 = offset2 >> 1; + offset3 = offset2 - offset1; + + while(nRectsTmp--) + { + box.x1 = pRectsTmp->x - offset1; + box.y1 = pRectsTmp->y - offset1; + box.x2 = box.x1 + pRectsTmp->width + offset2; + box.y2 = box.y1 + offset2; + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + + box.x1 = pRectsTmp->x - offset1; + box.y1 = pRectsTmp->y + offset3; + box.x2 = box.x1 + offset2; + box.y2 = box.y1 + pRectsTmp->height - offset2; + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + + box.x1 = pRectsTmp->x + pRectsTmp->width - offset1; + box.y1 = pRectsTmp->y + offset3; + box.x2 = box.x1 + offset2; + box.y2 = box.y1 + pRectsTmp->height - offset2; + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + + box.x1 = pRectsTmp->x - offset1; + box.y1 = pRectsTmp->y + pRectsTmp->height - offset1; + box.x2 = box.x1 + pRectsTmp->width + offset2; + box.y2 = box.y1 + offset2; + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + + pRectsTmp++; + } + } + (*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damagePolyArc(DrawablePtr pDrawable, + GCPtr pGC, + int nArcs, + xArc *pArcs) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (nArcs && checkGCDamage (pDrawable, pGC)) + { + int extra = pGC->lineWidth >> 1; + BoxRec box; + int nArcsTmp = nArcs; + xArc *pArcsTmp = pArcs; + + box.x1 = pArcsTmp->x; + box.x2 = box.x1 + pArcsTmp->width; + box.y1 = pArcsTmp->y; + box.y2 = box.y1 + pArcsTmp->height; + + while(--nArcsTmp) + { + pArcsTmp++; + if(box.x1 > pArcsTmp->x) + box.x1 = pArcsTmp->x; + if(box.x2 < (pArcsTmp->x + pArcsTmp->width)) + box.x2 = pArcsTmp->x + pArcsTmp->width; + if(box.y1 > pArcsTmp->y) + box.y1 = pArcsTmp->y; + if(box.y2 < (pArcsTmp->y + pArcsTmp->height)) + box.y2 = pArcsTmp->y + pArcsTmp->height; + } + + if(extra) + { + box.x1 -= extra; + box.x2 += extra; + box.y1 -= extra; + box.y2 += extra; + } + + box.x2++; + box.y2++; + + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->PolyArc)(pDrawable, pGC, nArcs, pArcs); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damageFillPolygon(DrawablePtr pDrawable, + GCPtr pGC, + int shape, + int mode, + int npt, + DDXPointPtr ppt) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (npt > 2 && checkGCDamage (pDrawable, pGC)) + { + DDXPointPtr pptTmp = ppt; + int nptTmp = npt; + BoxRec box; + + box.x2 = box.x1 = pptTmp->x; + box.y2 = box.y1 = pptTmp->y; + + if(mode != CoordModeOrigin) + { + int x = box.x1; + int y = box.y1; + while(--nptTmp) + { + pptTmp++; + x += pptTmp->x; + y += pptTmp->y; + if(box.x1 > x) box.x1 = x; + else if(box.x2 < x) box.x2 = x; + if(box.y1 > y) box.y1 = y; + else if(box.y2 < y) box.y2 = y; + } + } + else + { + while(--nptTmp) + { + pptTmp++; + if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; + else if(box.x2 < pptTmp->x) box.x2 = pptTmp->x; + if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; + else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; + } + } + + box.x2++; + box.y2++; + + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + + (*pGC->ops->FillPolygon)(pDrawable, pGC, shape, mode, npt, ppt); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + + +static void +damagePolyFillRect(DrawablePtr pDrawable, + GCPtr pGC, + int nRects, + xRectangle *pRects) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + if (nRects && checkGCDamage (pDrawable, pGC)) + { + BoxRec box; + xRectangle *pRectsTmp = pRects; + int nRectsTmp = nRects; + + box.x1 = pRectsTmp->x; + box.x2 = box.x1 + pRectsTmp->width; + box.y1 = pRectsTmp->y; + box.y2 = box.y1 + pRectsTmp->height; + + while(--nRectsTmp) + { + pRectsTmp++; + if(box.x1 > pRectsTmp->x) box.x1 = pRectsTmp->x; + if(box.x2 < (pRectsTmp->x + pRectsTmp->width)) + box.x2 = pRectsTmp->x + pRectsTmp->width; + if(box.y1 > pRectsTmp->y) box.y1 = pRectsTmp->y; + if(box.y2 < (pRectsTmp->y + pRectsTmp->height)) + box.y2 = pRectsTmp->y + pRectsTmp->height; + } + + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->PolyFillRect)(pDrawable, pGC, nRects, pRects); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + + +static void +damagePolyFillArc(DrawablePtr pDrawable, + GCPtr pGC, + int nArcs, + xArc *pArcs) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (nArcs && checkGCDamage (pDrawable, pGC)) + { + BoxRec box; + int nArcsTmp = nArcs; + xArc *pArcsTmp = pArcs; + + box.x1 = pArcsTmp->x; + box.x2 = box.x1 + pArcsTmp->width; + box.y1 = pArcsTmp->y; + box.y2 = box.y1 + pArcsTmp->height; + + while(--nArcsTmp) + { + pArcsTmp++; + if(box.x1 > pArcsTmp->x) + box.x1 = pArcsTmp->x; + if(box.x2 < (pArcsTmp->x + pArcsTmp->width)) + box.x2 = pArcsTmp->x + pArcsTmp->width; + if(box.y1 > pArcsTmp->y) + box.y1 = pArcsTmp->y; + if(box.y2 < (pArcsTmp->y + pArcsTmp->height)) + box.y2 = pArcsTmp->y + pArcsTmp->height; + } + + TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->PolyFillArc)(pDrawable, pGC, nArcs, pArcs); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +/* + * general Poly/Image text function. Extract glyph information, + * compute bounding box and remove cursor if it is overlapped. + */ + +static void +damageDamageChars (DrawablePtr pDrawable, + FontPtr font, + int x, + int y, + unsigned int n, + CharInfoPtr *charinfo, + Bool imageblt, + int subWindowMode) +{ + ExtentInfoRec extents; + BoxRec box; + + QueryGlyphExtents(font, charinfo, n, &extents); + if (imageblt) + { + if (extents.overallWidth > extents.overallRight) + extents.overallRight = extents.overallWidth; + if (extents.overallWidth < extents.overallLeft) + extents.overallLeft = extents.overallWidth; + if (extents.overallLeft > 0) + extents.overallLeft = 0; + if (extents.fontAscent > extents.overallAscent) + extents.overallAscent = extents.fontAscent; + if (extents.fontDescent > extents.overallDescent) + extents.overallDescent = extents.fontDescent; + } + box.x1 = x + extents.overallLeft; + box.y1 = y - extents.overallAscent; + box.x2 = x + extents.overallRight; + box.y2 = y + extents.overallDescent; + damageDamageBox (pDrawable, &box, subWindowMode); +} + +/* + * values for textType: + */ +#define TT_POLY8 0 +#define TT_IMAGE8 1 +#define TT_POLY16 2 +#define TT_IMAGE16 3 + +static int +damageText (DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + unsigned long count, + char *chars, + FontEncoding fontEncoding, + Bool textType) +{ + CharInfoPtr *charinfo; + CharInfoPtr *info; + unsigned long i; + unsigned int n; + int w; + Bool imageblt; + + imageblt = (textType == TT_IMAGE8) || (textType == TT_IMAGE16); + + charinfo = (CharInfoPtr *) ALLOCATE_LOCAL(count * sizeof(CharInfoPtr)); + if (!charinfo) + return x; + + GetGlyphs(pGC->font, count, (unsigned char *)chars, + fontEncoding, &i, charinfo); + n = (unsigned int)i; + w = 0; + if (!imageblt) + for (info = charinfo; i--; info++) + w += (*info)->metrics.characterWidth; + + if (n != 0) { + damageDamageChars (pDrawable, pGC->font, x + pDrawable->x, y + pDrawable->y, n, + charinfo, imageblt, pGC->subWindowMode); + +#ifndef NXAGENT_SERVER + + if (imageblt) + (*pGC->ops->ImageGlyphBlt)(pDrawable, pGC, x, y, n, charinfo, + FONTGLYPHS(pGC->font)); + else + (*pGC->ops->PolyGlyphBlt)(pDrawable, pGC, x, y, n, charinfo, + FONTGLYPHS(pGC->font)); +#endif + + } + DEALLOCATE_LOCAL(charinfo); + return x + w; +} + +#ifndef NXAGENT_SERVER + +static int +damagePolyText8(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + char *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + x = damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, + Linear8Bit, TT_POLY8); + else + x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); + return x; +} + +static int +damagePolyText16(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + unsigned short *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + x = damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, + FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, + TT_POLY16); + else + x = (*pGC->ops->PolyText16)(pDrawable, pGC, x, y, count, chars); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); + return x; +} + +static void +damageImageText8(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + char *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, + Linear8Bit, TT_IMAGE8); + else + (*pGC->ops->ImageText8)(pDrawable, pGC, x, y, count, chars); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damageImageText16(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + unsigned short *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, + FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, + TT_IMAGE16); + else + (*pGC->ops->ImageText16)(pDrawable, pGC, x, y, count, chars); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +#else /* #ifndef NXAGENT_SERVER */ + +static int +damagePolyText8(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + char *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, + Linear8Bit, TT_POLY8); + + x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars); + + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); + return x; +} + +static int +damagePolyText16(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + unsigned short *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, + FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, + TT_POLY16); + + x = (*pGC->ops->PolyText16)(pDrawable, pGC, x, y, count, chars); + + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); + return x; +} + +static void +damageImageText8(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + char *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, + Linear8Bit, TT_IMAGE8); + + (*pGC->ops->ImageText8)(pDrawable, pGC, x, y, count, chars); + + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damageImageText16(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + int count, + unsigned short *chars) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + + if (checkGCDamage (pDrawable, pGC)) + damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, + FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, + TT_IMAGE16); + + (*pGC->ops->ImageText16)(pDrawable, pGC, x, y, count, chars); + + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +#endif /* #ifndef NXAGENT_SERVER */ + +static void +damageImageGlyphBlt(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + unsigned int nglyph, + CharInfoPtr *ppci, + pointer pglyphBase) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + damageDamageChars (pDrawable, pGC->font, x + pDrawable->x, y + pDrawable->y, + nglyph, ppci, TRUE, pGC->subWindowMode); + (*pGC->ops->ImageGlyphBlt)(pDrawable, pGC, x, y, nglyph, + ppci, pglyphBase); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damagePolyGlyphBlt(DrawablePtr pDrawable, + GCPtr pGC, + int x, + int y, + unsigned int nglyph, + CharInfoPtr *ppci, + pointer pglyphBase) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + damageDamageChars (pDrawable, pGC->font, x + pDrawable->x, y + pDrawable->y, + nglyph, ppci, FALSE, pGC->subWindowMode); + (*pGC->ops->PolyGlyphBlt)(pDrawable, pGC, x, y, nglyph, + ppci, pglyphBase); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damagePushPixels(GCPtr pGC, + PixmapPtr pBitMap, + DrawablePtr pDrawable, + int dx, + int dy, + int xOrg, + int yOrg) +{ + DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); + if(checkGCDamage (pDrawable, pGC)) + { + BoxRec box; + + box.x1 = xOrg; + box.y1 = yOrg; + + if(!pGC->miTranslate) { + box.x1 += pDrawable->x; + box.y1 += pDrawable->y; + } + + box.x2 = box.x1 + dx; + box.y2 = box.y1 + dy; + + TRIM_BOX(box, pGC); + if(BOX_NOT_EMPTY(box)) + damageDamageBox (pDrawable, &box, pGC->subWindowMode); + } + (*pGC->ops->PushPixels)(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg); + DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); +} + +static void +damageRemoveDamage (DamagePtr *pPrev, DamagePtr pDamage) +{ + while (*pPrev) + { + if (*pPrev == pDamage) + { + *pPrev = pDamage->pNext; + return; + } + pPrev = &(*pPrev)->pNext; + } +#if DAMAGE_VALIDATE_ENABLE + ErrorF ("Damage not on list\n"); + abort (); +#endif +} + +static void +damageInsertDamage (DamagePtr *pPrev, DamagePtr pDamage) +{ +#if DAMAGE_VALIDATE_ENABLE + DamagePtr pOld; + + for (pOld = *pPrev; pOld; pOld = pOld->pNext) + if (pOld == pDamage) { + ErrorF ("Damage already on list\n"); + abort (); + } +#endif + pDamage->pNext = *pPrev; + *pPrev = pDamage; +} + +static Bool +damageDestroyPixmap (PixmapPtr pPixmap) +{ + ScreenPtr pScreen = pPixmap->drawable.pScreen; + damageScrPriv(pScreen); + + if (pPixmap->refcnt == 1) + { + DamagePtr *pPrev = getPixmapDamageRef (pPixmap); + DamagePtr pDamage; + + while ((pDamage = *pPrev)) + { + damageRemoveDamage (pPrev, pDamage); + if (!pDamage->isWindow) + DamageDestroy (pDamage); + } + } + unwrap (pScrPriv, pScreen, DestroyPixmap); + (*pScreen->DestroyPixmap) (pPixmap); + wrap (pScrPriv, pScreen, DestroyPixmap, damageDestroyPixmap); + return TRUE; +} + +static void +damagePaintWindow(WindowPtr pWindow, + RegionPtr prgn, + int what) +{ + ScreenPtr pScreen = pWindow->drawable.pScreen; + damageScrPriv(pScreen); + + /* + * Painting background none doesn't actually *do* anything, so + * no damage is recorded + */ + if ((what != PW_BACKGROUND || pWindow->backgroundState != None) && + getWindowDamage (pWindow)) + damageDamageRegion (&pWindow->drawable, prgn, FALSE, -1); + if(what == PW_BACKGROUND) { + unwrap (pScrPriv, pScreen, PaintWindowBackground); + (*pScreen->PaintWindowBackground) (pWindow, prgn, what); + wrap (pScrPriv, pScreen, PaintWindowBackground, damagePaintWindow); + } else { + unwrap (pScrPriv, pScreen, PaintWindowBorder); + (*pScreen->PaintWindowBorder) (pWindow, prgn, what); + wrap (pScrPriv, pScreen, PaintWindowBorder, damagePaintWindow); + } +} + + +static void +damageCopyWindow(WindowPtr pWindow, + DDXPointRec ptOldOrg, + RegionPtr prgnSrc) +{ + ScreenPtr pScreen = pWindow->drawable.pScreen; + damageScrPriv(pScreen); + + if (getWindowDamage (pWindow)) + { + int dx = pWindow->drawable.x - ptOldOrg.x; + int dy = pWindow->drawable.y - ptOldOrg.y; + + /* + * The region comes in source relative, but the damage occurs + * at the destination location. Translate back and forth. + */ + REGION_TRANSLATE (pScreen, prgnSrc, dx, dy); + damageDamageRegion (&pWindow->drawable, prgnSrc, FALSE, -1); + REGION_TRANSLATE (pScreen, prgnSrc, -dx, -dy); + } + unwrap (pScrPriv, pScreen, CopyWindow); + (*pScreen->CopyWindow) (pWindow, ptOldOrg, prgnSrc); + wrap (pScrPriv, pScreen, CopyWindow, damageCopyWindow); +} + +GCOps damageGCOps = { + damageFillSpans, damageSetSpans, + damagePutImage, damageCopyArea, + damageCopyPlane, damagePolyPoint, + damagePolylines, damagePolySegment, + damagePolyRectangle, damagePolyArc, + damageFillPolygon, damagePolyFillRect, + damagePolyFillArc, damagePolyText8, + damagePolyText16, damageImageText8, + damageImageText16, damageImageGlyphBlt, + damagePolyGlyphBlt, damagePushPixels, +#ifdef NEED_LINEHELPER + NULL, +#endif + {NULL} /* devPrivate */ +}; + +static void +damageRestoreAreas (PixmapPtr pPixmap, + RegionPtr prgn, + int xorg, + int yorg, + WindowPtr pWindow) +{ + ScreenPtr pScreen = pWindow->drawable.pScreen; + damageScrPriv(pScreen); + + damageDamageRegion (&pWindow->drawable, prgn, FALSE, -1); + unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas); + (*pScreen->BackingStoreFuncs.RestoreAreas) (pPixmap, prgn, + xorg, yorg, pWindow); + wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas, + damageRestoreAreas); +} + +static void +damageSetWindowPixmap (WindowPtr pWindow, PixmapPtr pPixmap) +{ + DamagePtr pDamage; + ScreenPtr pScreen = pWindow->drawable.pScreen; + damageScrPriv(pScreen); + + if ((pDamage = damageGetWinPriv(pWindow))) + { + PixmapPtr pOldPixmap = (*pScreen->GetWindowPixmap) (pWindow); + DamagePtr *pPrev = getPixmapDamageRef(pOldPixmap); + + while (pDamage) + { + damageRemoveDamage (pPrev, pDamage); + pDamage = pDamage->pNextWin; + } + } + unwrap (pScrPriv, pScreen, SetWindowPixmap); + (*pScreen->SetWindowPixmap) (pWindow, pPixmap); + wrap (pScrPriv, pScreen, SetWindowPixmap, damageSetWindowPixmap); + if ((pDamage = damageGetWinPriv(pWindow))) + { + DamagePtr *pPrev = getPixmapDamageRef(pPixmap); + + while (pDamage) + { + damageInsertDamage (pPrev, pDamage); + pDamage = pDamage->pNextWin; + } + } +} + +static Bool +damageDestroyWindow (WindowPtr pWindow) +{ + DamagePtr pDamage; + ScreenPtr pScreen = pWindow->drawable.pScreen; + Bool ret; + damageScrPriv(pScreen); + + while ((pDamage = damageGetWinPriv(pWindow))) + { + DamageUnregister (&pWindow->drawable, pDamage); + DamageDestroy (pDamage); + } + unwrap (pScrPriv, pScreen, DestroyWindow); + ret = (*pScreen->DestroyWindow) (pWindow); + wrap (pScrPriv, pScreen, DestroyWindow, damageDestroyWindow); + return ret; +} + +static Bool +damageCloseScreen (int i, ScreenPtr pScreen) +{ + damageScrPriv(pScreen); + + unwrap (pScrPriv, pScreen, DestroyPixmap); + unwrap (pScrPriv, pScreen, CreateGC); + unwrap (pScrPriv, pScreen, PaintWindowBackground); + unwrap (pScrPriv, pScreen, PaintWindowBorder); + unwrap (pScrPriv, pScreen, CopyWindow); + unwrap (pScrPriv, pScreen, CloseScreen); + unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas); + xfree (pScrPriv); + return (*pScreen->CloseScreen) (i, pScreen); +} + +int damageScrPrivateIndex; +int damagePixPrivateIndex; +int damageGCPrivateIndex; +int damageWinPrivateIndex; +int damageGeneration; + +Bool +DamageSetup (ScreenPtr pScreen) +{ + DamageScrPrivPtr pScrPriv; +#ifdef RENDER + PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); +#endif + + if (damageGeneration != serverGeneration) + { + damageScrPrivateIndex = AllocateScreenPrivateIndex (); + if (damageScrPrivateIndex == -1) + return FALSE; + damageGCPrivateIndex = AllocateGCPrivateIndex (); + if (damageGCPrivateIndex == -1) + return FALSE; + damagePixPrivateIndex = AllocatePixmapPrivateIndex (); + if (damagePixPrivateIndex == -1) + return FALSE; + damageWinPrivateIndex = AllocateWindowPrivateIndex (); + if (damageWinPrivateIndex == -1) + return FALSE; + damageGeneration = serverGeneration; + } + if (pScreen->devPrivates[damageScrPrivateIndex].ptr) + return TRUE; + + if (!AllocateGCPrivate (pScreen, damageGCPrivateIndex, sizeof (DamageGCPrivRec))) + return FALSE; + if (!AllocatePixmapPrivate (pScreen, damagePixPrivateIndex, 0)) + return FALSE; + if (!AllocateWindowPrivate (pScreen, damageWinPrivateIndex, 0)) + return FALSE; + + pScrPriv = (DamageScrPrivPtr) xalloc (sizeof (DamageScrPrivRec)); + if (!pScrPriv) + return FALSE; + +#ifdef COMPOSITE + /* This is a kludge to ensure wrapping order with the composite wrapper. + * If it's done from compinit.c, then DamageSetup may be called before the + * extension init phase, so that cw will be higher in the wrapping chain and + * rewrite drawables before damage gets to it, causing confusion. + */ + if (!noCompositeExtension) + miInitializeCompositeWrapper (pScreen); +#endif + + pScrPriv->internalLevel = 0; + pScrPriv->pScreenDamage = 0; + + wrap (pScrPriv, pScreen, DestroyPixmap, damageDestroyPixmap); + wrap (pScrPriv, pScreen, CreateGC, damageCreateGC); + wrap (pScrPriv, pScreen, PaintWindowBackground, damagePaintWindow); + wrap (pScrPriv, pScreen, PaintWindowBorder, damagePaintWindow); + wrap (pScrPriv, pScreen, DestroyWindow, damageDestroyWindow); + wrap (pScrPriv, pScreen, SetWindowPixmap, damageSetWindowPixmap); + wrap (pScrPriv, pScreen, CopyWindow, damageCopyWindow); + wrap (pScrPriv, pScreen, CloseScreen, damageCloseScreen); + wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas, + damageRestoreAreas); +#ifdef RENDER + if (ps) { + wrap (pScrPriv, ps, Glyphs, damageGlyphs); + wrap (pScrPriv, ps, Composite, damageComposite); + } +#endif + + pScreen->devPrivates[damageScrPrivateIndex].ptr = (pointer) pScrPriv; + return TRUE; +} + +DamagePtr +DamageCreate (DamageReportFunc damageReport, + DamageDestroyFunc damageDestroy, + DamageReportLevel damageLevel, + Bool isInternal, + ScreenPtr pScreen, + void *closure) +{ + DamagePtr pDamage; + + pDamage = xalloc (sizeof (DamageRec)); + if (!pDamage) + return 0; + pDamage->pNext = 0; + pDamage->pNextWin = 0; + REGION_NULL(pScreen, &pDamage->damage); + + pDamage->damageLevel = damageLevel; + pDamage->isInternal = isInternal; + pDamage->closure = closure; + pDamage->isWindow = FALSE; + pDamage->pDrawable = 0; + + pDamage->damageReport = damageReport; + pDamage->damageDestroy = damageDestroy; + return pDamage; +} + +void +DamageRegister (DrawablePtr pDrawable, + DamagePtr pDamage) +{ + if (pDrawable->type == DRAWABLE_WINDOW) + { + WindowPtr pWindow = (WindowPtr) pDrawable; + winDamageRef(pWindow); + +#if DAMAGE_VALIDATE_ENABLE + DamagePtr pOld; + + for (pOld = *pPrev; pOld; pOld = pOld->pNextWin) + if (pOld == pDamage) { + ErrorF ("Damage already on window list\n"); + abort (); + } +#endif + pDamage->pNextWin = *pPrev; + *pPrev = pDamage; + pDamage->isWindow = TRUE; + } + else + pDamage->isWindow = FALSE; + pDamage->pDrawable = pDrawable; + damageInsertDamage (getDrawableDamageRef (pDrawable), pDamage); +} + +void +DamageDrawInternal (ScreenPtr pScreen, Bool enable) +{ + damageScrPriv (pScreen); + + pScrPriv->internalLevel += enable ? 1 : -1; +} + +void +DamageUnregister (DrawablePtr pDrawable, + DamagePtr pDamage) +{ + if (pDrawable->type == DRAWABLE_WINDOW) + { + WindowPtr pWindow = (WindowPtr) pDrawable; + winDamageRef (pWindow); +#if DAMAGE_VALIDATE_ENABLE + int found = 0; +#endif + + while (*pPrev) + { + if (*pPrev == pDamage) + { + *pPrev = pDamage->pNextWin; +#if DAMAGE_VALIDATE_ENABLE + found = 1; +#endif + break; + } + pPrev = &(*pPrev)->pNextWin; + } +#if DAMAGE_VALIDATE_ENABLE + if (!found) { + ErrorF ("Damage not on window list\n"); + abort (); + } +#endif + } + pDamage->pDrawable = 0; + damageRemoveDamage (getDrawableDamageRef (pDrawable), pDamage); +} + +void +DamageDestroy (DamagePtr pDamage) +{ + if (pDamage->damageDestroy) + (*pDamage->damageDestroy) (pDamage, pDamage->closure); + REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->damage); + xfree (pDamage); +} + +Bool +DamageSubtract (DamagePtr pDamage, + const RegionPtr pRegion) +{ + RegionPtr pClip; + RegionRec pixmapClip; + DrawablePtr pDrawable = pDamage->pDrawable; + + REGION_SUBTRACT (pDrawable->pScreen, &pDamage->damage, &pDamage->damage, pRegion); + if (pDrawable) + { + if (pDrawable->type == DRAWABLE_WINDOW) + pClip = &((WindowPtr) pDrawable)->borderClip; + else + { + BoxRec box; + + box.x1 = pDrawable->x; + box.y1 = pDrawable->y; + box.x2 = pDrawable->x + pDrawable->width; + box.y2 = pDrawable->y + pDrawable->height; + REGION_INIT (pDrawable->pScreen, &pixmapClip, &box, 1); + pClip = &pixmapClip; + } + REGION_TRANSLATE (pDrawable->pScreen, &pDamage->damage, pDrawable->x, pDrawable->y); + REGION_INTERSECT (pDrawable->pScreen, &pDamage->damage, &pDamage->damage, pClip); + REGION_TRANSLATE (pDrawable->pScreen, &pDamage->damage, -pDrawable->x, -pDrawable->y); + if (pDrawable->type != DRAWABLE_WINDOW) + REGION_UNINIT(pDrawable->pScreen, &pixmapClip); + } + return REGION_NOTEMPTY (pDrawable->pScreen, &pDamage->damage); +} + +void +DamageEmpty (DamagePtr pDamage) +{ + REGION_EMPTY (pDamage->pDrawable->pScreen, &pDamage->damage); +} + +RegionPtr +DamageRegion (DamagePtr pDamage) +{ + return &pDamage->damage; +} + +void +DamageDamageRegion (DrawablePtr pDrawable, + RegionPtr pRegion) +{ + damageDamageRegion (pDrawable, pRegion, FALSE, -1); +} diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c index 77e2bf4..3d9ee8c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXdispatch.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -21,6 +15,7 @@ /* */ /**************************************************************************/ +/* $XdotOrg: xc/programs/Xserver/dix/dispatch.c,v 1.13 2005/09/13 01:33:19 daniels Exp $ */ /* $Xorg: dispatch.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */ /************************************************************ @@ -70,28 +65,39 @@ SOFTWARE. ********************************************************/ /* The panoramix components contained the following notice */ -/**************************************************************** -* * -* Copyright (c) Digital Equipment Corporation, 1991, 1997 * -* * -* All Rights Reserved. Unpublished rights reserved under * -* the copyright laws of the United States. * -* * -* The software contained on this media is proprietary to * -* and embodies the confidential technology of Digital * -* Equipment Corporation. Possession, use, duplication or * -* dissemination of the software and media is authorized only * -* pursuant to a valid written license from Digital Equipment * -* Corporation. * -* * -* RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * -* by the U.S. Government is subject to restrictions as set * -* forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * -* or in FAR 52.227-19, as applicable. * -* * -*****************************************************************/ - -/* $XFree86: xc/programs/Xserver/dix/dispatch.c,v 3.29 2003/01/12 02:44:26 dawes Exp $ */ +/***************************************************************** + +Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + +******************************************************************/ + +/* $XFree86: xc/programs/Xserver/dix/dispatch.c,v 3.32 2003/11/10 18:21:45 tsi Exp $ */ + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif #ifdef PANORAMIX_DEBUG #include <stdio.h> @@ -108,7 +114,7 @@ int ProcInitialConnection(); #undef GC #include "windowstr.h" -#include "fontstruct.h" +#include <X11/fonts/fontstruct.h> #include "dixfontstr.h" #include "gcstruct.h" #include "selection.h" @@ -129,15 +135,15 @@ int ProcInitialConnection(); #endif #ifdef XCSECURITY #define _SECURITY_SERVER -#include "security.h" +#include <X11/extensions/security.h> #endif #ifdef XAPPGROUP -#include "Xagsrv.h" +#include <X11/extensions/Xagsrv.h> #endif #ifdef XKB #define XKB_IN_SERVER #include "inputstr.h" -#include "XKBsrv.h" +#include <X11/extensions/XKBsrv.h> #endif #include "Atoms.h" @@ -149,6 +155,7 @@ int ProcInitialConnection(); #include "Font.h" #include "Shadow.h" #include "Handlers.h" +#include "Keyboard.h" const int nxagentMaxFontNames = 10000; @@ -157,7 +164,7 @@ char dispatchExceptionAtReset = DE_RESET; /* * This allows the agent to exit if no * client is connected within a timeout. -*/ + */ int nxagentClients = 0; @@ -216,6 +223,9 @@ extern char *ConnectionInfo; Selection *CurrentSelections; int NumCurrentSelections; +CallbackListPtr SelectionCallback = NULL; + +#ifdef VIEWPORT_FRAME extern WindowPtr nxagentViewportFrameLeft; extern WindowPtr nxagentViewportFrameRight; @@ -227,6 +237,12 @@ extern WindowPtr nxagentViewportFrameBelow; (pWin) == nxagentViewportFrameAbove || \ (pWin) == nxagentViewportFrameBelow) +#else + +#define IsViewportFrame(pWin) (0) + +#endif /* #ifdef VIEWPORT_FRAME */ + extern int nxagentMaxAllowedResets; extern int nxagentFindClientResource(int, RESTYPE, pointer); @@ -241,25 +257,23 @@ CallbackListPtr ServerGrabCallback = NULL; HWEventQueuePtr checkForInput[2]; extern int connBlockScreenStart; -static void KillAllClients( -#if NeedFunctionPrototypes - void -#endif -); +static void KillAllClients(void); -static void DeleteClientFromAnySelections( -#if NeedFunctionPrototypes - ClientPtr /*client*/ -#endif -); +static void DeleteClientFromAnySelections(ClientPtr client); static int nextFreeClientID; /* always MIN free client ID */ static int nClients; /* number of authorized clients */ CallbackListPtr ClientStateCallback; -char dispatchException = 0; -char isItTimeToYield; + +/* dispatchException & isItTimeToYield must be declared volatile since they + * are modified by signal handlers - otherwise optimizer may assume it doesn't + * need to actually check value in memory when used and may miss changes from + * signal handlers. + */ +volatile char dispatchException = 0; +volatile char isItTimeToYield; /* Various of the DIX function interfaces were not designed to allow * the client->errorValue to be set on BadValue and other errors. @@ -272,8 +286,7 @@ XID clientErrorValue; /* XXX this is a kludge */ (a.pScreen == b.pScreen)) void -SetInputCheck(c0, c1) - HWEventQueuePtr c0, c1; +SetInputCheck(HWEventQueuePtr c0, HWEventQueuePtr c1) { checkForInput[0] = c0; checkForInput[1] = c1; @@ -345,8 +358,7 @@ InitSelections() } void -FlushClientCaches(id) - XID id; +FlushClientCaches(XID id) { int i; register ClientPtr client; @@ -379,13 +391,7 @@ FlushClientCaches(id) #define SMART_SCHEDULE_DEFAULT_INTERVAL 20 /* ms */ #define SMART_SCHEDULE_MAX_SLICE 200 /* ms */ -/* - * Disable the SmartScheduler as it doesn't - * seem to work for us. - */ - -Bool SmartScheduleDisable = True; - +Bool SmartScheduleDisable = FALSE; long SmartScheduleSlice = SMART_SCHEDULE_DEFAULT_INTERVAL; long SmartScheduleInterval = SMART_SCHEDULE_DEFAULT_INTERVAL; long SmartScheduleMaxSlice = SMART_SCHEDULE_MAX_SLICE; @@ -493,7 +499,7 @@ Dispatch(void) register int nready; register HWEventQueuePtr* icheck = checkForInput; #ifdef SMART_SCHEDULE - int start_tick; + long start_tick; #endif unsigned long currentDispatch = 0; @@ -507,14 +513,15 @@ Dispatch(void) * completed. We can now handle our clients. */ - if (serverGeneration > nxagentMaxAllowedResets) - { - fprintf(stderr, "Session: Session started at '%s'.\n", GetTimeAsString()); + #ifdef XKB - nxagentSessionState = SESSION_UP; - } + nxagentInitXkbWrapper(); + + nxagentTuneXkbWrapper(); -#ifdef NXAGENT_ONSTART + #endif + + #ifdef NXAGENT_ONSTART /* * Set NX_WM property (used by NX client to identify @@ -524,7 +531,7 @@ Dispatch(void) nxagentWMtimeout = GetTimeInMillis() + 3000; -#endif + #endif clientReady = (int *) ALLOCATE_LOCAL(sizeof(int) * MaxClients); if (!clientReady) @@ -589,6 +596,22 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio clientReady[1] = NXAGENT_WAKEUP; } + if (serverGeneration > nxagentMaxAllowedResets && + nxagentSessionState == SESSION_STARTING && + (nxagentOption(Xdmcp) == 0 || nxagentXdmcpUp == 1)) + { + #ifdef NX_DEBUG_INPUT + fprintf(stderr, "Session: Session started at '%s' timestamp [%lu].\n", + GetTimeAsString(), GetTimeInMillis()); + #else + fprintf(stderr, "Session: Session started at '%s'.\n", + GetTimeAsString()); + #endif + + nxagentSessionState = SESSION_UP; + saveAgentState("RUNNING"); + } + #ifdef BLOCKS fprintf(stderr, "[End dispatch]\n"); #endif @@ -692,6 +715,7 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio else { + if (MAJOROP > 127) { fprintf(stderr, "******Dispatch: Read [Extension] request OPCODE#%d MINOR#%d " @@ -711,12 +735,12 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio client->sequence++; #ifdef DEBUG - if (client->requestLogIndex == MAX_REQUEST_LOG) + if ((client->requestLogIndex >= MAX_REQUEST_LOG) || (client->requestLogIndex <= 0)) client->requestLogIndex = 0; client->requestLog[client->requestLogIndex] = MAJOROP; client->requestLogIndex++; #endif - if (result > (MAX_BIG_REQUEST_SIZE << 2)) + if (result > (maxBigRequestSize << 2)) result = BadLength; else #ifdef NXAGENT_SERVER @@ -763,6 +787,9 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio client->errorValue, result); break; } +#ifdef DAMAGEEXT + FlushIfCriticalOutputPending (); +#endif } FlushAllOutput(); #ifdef SMART_SCHEDULE @@ -774,7 +801,9 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio } dispatchException &= ~DE_PRIORITYCHANGE; } - +#if defined(DDXBEFORERESET) + ddxBeforeReset (); +#endif if ((dispatchException & DE_RESET) && (serverGeneration > nxagentMaxAllowedResets)) { @@ -793,18 +822,20 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio * error on the display and wait until the * NX transport is gone. */ - + fprintf(stderr, "Session: Terminating session at '%s'.\n", GetTimeAsString()); + saveAgentState("TERMINATING"); nxagentWaitDisplay(); fprintf(stderr, "Session: Session terminated at '%s'.\n", GetTimeAsString()); } - if (nxagentOption(Shadow)) + if (nxagentOption(Shadow) == 1) { NXShadowDestroy(); } + saveAgentState("TERMINATED"); KillAllClients(); DEALLOCATE_LOCAL(clientReady); @@ -813,17 +844,14 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio #undef MAJOROP -/*ARGSUSED*/ int -ProcBadRequest(client) - ClientPtr client; +ProcBadRequest(ClientPtr client) { return (BadRequest); } int -ProcCreateWindow(client) - register ClientPtr client; +ProcCreateWindow(ClientPtr client) { register WindowPtr pParent, pWin; REQUEST(xCreateWindowReq); @@ -866,8 +894,7 @@ ProcCreateWindow(client) } int -ProcChangeWindowAttributes(client) - register ClientPtr client; +ProcChangeWindowAttributes(register ClientPtr client) { register WindowPtr pWin; REQUEST(xChangeWindowAttributesReq); @@ -893,8 +920,7 @@ ProcChangeWindowAttributes(client) } int -ProcGetWindowAttributes(client) - register ClientPtr client; +ProcGetWindowAttributes(register ClientPtr client) { register WindowPtr pWin; REQUEST(xResourceReq); @@ -911,8 +937,7 @@ ProcGetWindowAttributes(client) } int -ProcDestroyWindow(client) - register ClientPtr client; +ProcDestroyWindow(register ClientPtr client) { register WindowPtr pWin; REQUEST(xResourceReq); @@ -928,8 +953,7 @@ ProcDestroyWindow(client) } int -ProcDestroySubwindows(client) - register ClientPtr client; +ProcDestroySubwindows(register ClientPtr client) { register WindowPtr pWin; REQUEST(xResourceReq); @@ -944,8 +968,7 @@ ProcDestroySubwindows(client) } int -ProcChangeSaveSet(client) - register ClientPtr client; +ProcChangeSaveSet(register ClientPtr client) { register WindowPtr pWin; REQUEST(xChangeSaveSetReq); @@ -960,7 +983,7 @@ ProcChangeSaveSet(client) return BadMatch; if ((stuff->mode == SetModeInsert) || (stuff->mode == SetModeDelete)) { - result = AlterSaveSetForClient(client, pWin, stuff->mode); + result = AlterSaveSetForClient(client, pWin, stuff->mode, FALSE, TRUE); if (client->noClientException != Success) return(client->noClientException); else @@ -974,8 +997,7 @@ ProcChangeSaveSet(client) } int -ProcReparentWindow(client) - register ClientPtr client; +ProcReparentWindow(register ClientPtr client) { register WindowPtr pWin, pParent; REQUEST(xReparentWindowReq); @@ -1016,8 +1038,7 @@ ProcReparentWindow(client) } int -ProcMapWindow(client) - register ClientPtr client; +ProcMapWindow(register ClientPtr client) { register WindowPtr pWin; REQUEST(xResourceReq); @@ -1033,8 +1054,7 @@ ProcMapWindow(client) } int -ProcMapSubwindows(client) - register ClientPtr client; +ProcMapSubwindows(register ClientPtr client) { register WindowPtr pWin; REQUEST(xResourceReq); @@ -1050,8 +1070,7 @@ ProcMapSubwindows(client) } int -ProcUnmapWindow(client) - register ClientPtr client; +ProcUnmapWindow(register ClientPtr client) { register WindowPtr pWin; REQUEST(xResourceReq); @@ -1068,8 +1087,7 @@ ProcUnmapWindow(client) } int -ProcUnmapSubwindows(client) - register ClientPtr client; +ProcUnmapSubwindows(register ClientPtr client) { register WindowPtr pWin; REQUEST(xResourceReq); @@ -1084,8 +1102,7 @@ ProcUnmapSubwindows(client) } int -ProcConfigureWindow(client) - register ClientPtr client; +ProcConfigureWindow(register ClientPtr client) { register WindowPtr pWin; REQUEST(xConfigureWindowReq); @@ -1110,8 +1127,7 @@ ProcConfigureWindow(client) } int -ProcCirculateWindow(client) - register ClientPtr client; +ProcCirculateWindow(register ClientPtr client) { register WindowPtr pWin; REQUEST(xCirculateWindowReq); @@ -1132,9 +1148,7 @@ ProcCirculateWindow(client) } int -GetGeometry(client, rep) - register ClientPtr client; - xGetGeometryReply *rep; +GetGeometry(register ClientPtr client, xGetGeometryReply *rep) { register DrawablePtr pDraw; REQUEST(xResourceReq); @@ -1175,8 +1189,7 @@ GetGeometry(client, rep) int -ProcGetGeometry(client) - register ClientPtr client; +ProcGetGeometry(register ClientPtr client) { xGetGeometryReply rep; int status; @@ -1190,8 +1203,7 @@ ProcGetGeometry(client) int -ProcQueryTree(client) - register ClientPtr client; +ProcQueryTree(register ClientPtr client) { xQueryTreeReply reply; int numChildren = 0; @@ -1250,8 +1262,7 @@ ProcQueryTree(client) } int -ProcInternAtom(client) - register ClientPtr client; +ProcInternAtom(register ClientPtr client) { Atom atom; char *tchar; @@ -1280,8 +1291,7 @@ ProcInternAtom(client) } int -ProcGetAtomName(client) - register ClientPtr client; +ProcGetAtomName(register ClientPtr client) { char *str; xGetAtomNameReply reply; @@ -1312,8 +1322,7 @@ extern int k5_bad(); #endif int -ProcSetSelectionOwner(client) - register ClientPtr client; +ProcSetSelectionOwner(register ClientPtr client) { WindowPtr pWin; TimeStamp time; @@ -1391,6 +1400,14 @@ ProcSetSelectionOwner(client) CurrentSelections[i].window = stuff->window; CurrentSelections[i].pWin = pWin; CurrentSelections[i].client = (pWin ? client : NullClient); + if (SelectionCallback) + { + SelectionInfoRec info; + + info.selection = &CurrentSelections[i]; + info.kind= SelectionSetOwner; + CallCallbacks(&SelectionCallback, &info); + } #ifdef NXAGENT_CLIPBOARD if ((CurrentSelections[i].pWin != NULL) && @@ -1411,8 +1428,7 @@ ProcSetSelectionOwner(client) } int -ProcGetSelectionOwner(client) - register ClientPtr client; +ProcGetSelectionOwner(register ClientPtr client) { REQUEST(xResourceReq); @@ -1443,8 +1459,7 @@ ProcGetSelectionOwner(client) } int -ProcConvertSelection(client) - register ClientPtr client; +ProcConvertSelection(register ClientPtr client) { Bool paramsOkay; xEvent event; @@ -1529,8 +1544,7 @@ ProcConvertSelection(client) } int -ProcGrabServer(client) - register ClientPtr client; +ProcGrabServer(register ClientPtr client) { REQUEST_SIZE_MATCH(xReq); if (grabState != GrabNone && client != grabClient) @@ -1557,12 +1571,7 @@ ProcGrabServer(client) } static void -#if NeedFunctionPrototypes UngrabServer(ClientPtr client) -#else -UngrabServer(client) - ClientPtr client; -#endif { int i; @@ -1589,8 +1598,7 @@ UngrabServer(client) } int -ProcUngrabServer(client) - register ClientPtr client; +ProcUngrabServer(register ClientPtr client) { REQUEST_SIZE_MATCH(xReq); UngrabServer(client); @@ -1598,8 +1606,7 @@ ProcUngrabServer(client) } int -ProcTranslateCoords(client) - register ClientPtr client; +ProcTranslateCoords(register ClientPtr client) { REQUEST(xTranslateCoordsReq); @@ -1653,6 +1660,12 @@ ProcTranslateCoords(client) && (!wBoundingShape(pWin) || POINT_IN_REGION(pWin->drawable.pScreen, &pWin->borderSize, x, y, &box)) + + && (!wInputShape(pWin) || + POINT_IN_REGION(pWin->drawable.pScreen, + wInputShape(pWin), + x - pWin->drawable.x, + y - pWin->drawable.y, &box)) #endif ) { @@ -1671,8 +1684,7 @@ ProcTranslateCoords(client) } int -ProcOpenFont(client) - register ClientPtr client; +ProcOpenFont(register ClientPtr client) { int err; char fontReq[256]; @@ -1706,8 +1718,7 @@ ProcOpenFont(client) } int -ProcCloseFont(client) - register ClientPtr client; +ProcCloseFont(register ClientPtr client) { FontPtr pFont; REQUEST(xResourceReq); @@ -1763,8 +1774,7 @@ ProcCloseFont(client) } int -ProcQueryFont(client) - register ClientPtr client; +ProcQueryFont(register ClientPtr client) { xQueryFontReply *reply; FontPtr pFont; @@ -1853,8 +1863,7 @@ ProcQueryFont(client) } int -ProcQueryTextExtents(client) - register ClientPtr client; +ProcQueryTextExtents(register ClientPtr client) { REQUEST(xQueryTextExtentsReq); xQueryTextExtentsReply reply; @@ -1904,8 +1913,7 @@ ProcQueryTextExtents(client) } int -ProcListFonts(client) - register ClientPtr client; +ProcListFonts(register ClientPtr client) { char tmp[256]; @@ -1924,8 +1932,7 @@ ProcListFonts(client) } int -ProcListFontsWithInfo(client) - register ClientPtr client; +ProcListFontsWithInfo(register ClientPtr client) { char tmp[256]; REQUEST(xListFontsWithInfoReq); @@ -1943,19 +1950,19 @@ ProcListFontsWithInfo(client) (unsigned char *) &stuff[1], stuff->maxNames); } -/*ARGSUSED*/ +/** + * + * \param value must conform to DeleteType + */ int -dixDestroyPixmap(value, pid) - pointer value; /* must conform to DeleteType */ - XID pid; +dixDestroyPixmap(pointer value, XID pid) { PixmapPtr pPixmap = (PixmapPtr)value; return (*pPixmap->drawable.pScreen->DestroyPixmap)(pPixmap); } int -ProcCreatePixmap(client) - register ClientPtr client; +ProcCreatePixmap(register ClientPtr client) { PixmapPtr pMap; register DrawablePtr pDraw; @@ -2014,8 +2021,7 @@ CreatePmap: } int -ProcFreePixmap(client) - register ClientPtr client; +ProcFreePixmap(register ClientPtr client) { PixmapPtr pMap; @@ -2071,8 +2077,7 @@ ProcFreePixmap(client) } int -ProcCreateGC(client) - register ClientPtr client; +ProcCreateGC(register ClientPtr client) { int error; GC *pGC; @@ -2098,8 +2103,7 @@ ProcCreateGC(client) } int -ProcChangeGC(client) - register ClientPtr client; +ProcChangeGC(register ClientPtr client) { GC *pGC; REQUEST(xChangeGCReq); @@ -2123,8 +2127,7 @@ ProcChangeGC(client) } int -ProcCopyGC(client) - register ClientPtr client; +ProcCopyGC(register ClientPtr client) { register GC *dstGC; register GC *pGC; @@ -2147,8 +2150,7 @@ ProcCopyGC(client) } int -ProcSetDashes(client) - register ClientPtr client; +ProcSetDashes(register ClientPtr client) { register GC *pGC; int result; @@ -2175,8 +2177,7 @@ ProcSetDashes(client) } int -ProcSetClipRectangles(client) - register ClientPtr client; +ProcSetClipRectangles(register ClientPtr client) { int nr; int result; @@ -2205,8 +2206,7 @@ ProcSetClipRectangles(client) } int -ProcFreeGC(client) - register ClientPtr client; +ProcFreeGC(register ClientPtr client) { register GC *pGC; REQUEST(xResourceReq); @@ -2218,8 +2218,7 @@ ProcFreeGC(client) } int -ProcClearToBackground(client) - register ClientPtr client; +ProcClearToBackground(register ClientPtr client) { REQUEST(xClearAreaReq); register WindowPtr pWin; @@ -2246,8 +2245,7 @@ ProcClearToBackground(client) } int -ProcCopyArea(client) - register ClientPtr client; +ProcCopyArea(register ClientPtr client) { register DrawablePtr pDst; register DrawablePtr pSrc; @@ -2288,8 +2286,7 @@ ProcCopyArea(client) } int -ProcCopyPlane(client) - register ClientPtr client; +ProcCopyPlane(register ClientPtr client) { register DrawablePtr psrcDraw, pdstDraw; register GC *pGC; @@ -2336,8 +2333,7 @@ ProcCopyPlane(client) } int -ProcPolyPoint(client) - register ClientPtr client; +ProcPolyPoint(register ClientPtr client) { int npoint; register GC *pGC; @@ -2362,8 +2358,7 @@ ProcPolyPoint(client) } int -ProcPolyLine(client) - register ClientPtr client; +ProcPolyLine(register ClientPtr client) { int npoint; register GC *pGC; @@ -2388,8 +2383,7 @@ ProcPolyLine(client) } int -ProcPolySegment(client) - register ClientPtr client; +ProcPolySegment(register ClientPtr client) { int nsegs; register GC *pGC; @@ -2410,8 +2404,7 @@ ProcPolySegment(client) } int -ProcPolyRectangle (client) - register ClientPtr client; +ProcPolyRectangle (register ClientPtr client) { int nrects; register GC *pGC; @@ -2433,8 +2426,7 @@ ProcPolyRectangle (client) } int -ProcPolyArc(client) - register ClientPtr client; +ProcPolyArc(register ClientPtr client) { int narcs; register GC *pGC; @@ -2455,8 +2447,7 @@ ProcPolyArc(client) } int -ProcFillPoly(client) - register ClientPtr client; +ProcFillPoly(register ClientPtr client) { int things; register GC *pGC; @@ -2489,8 +2480,7 @@ ProcFillPoly(client) } int -ProcPolyFillRectangle(client) - register ClientPtr client; +ProcPolyFillRectangle(register ClientPtr client) { int things; register GC *pGC; @@ -2513,8 +2503,7 @@ ProcPolyFillRectangle(client) } int -ProcPolyFillArc(client) - register ClientPtr client; +ProcPolyFillArc(register ClientPtr client) { int narcs; register GC *pGC; @@ -2589,8 +2578,7 @@ ReformatImage (char *base, int nbytes, int bpp, int order) * boundary, even if the scanlines are padded to our satisfaction. */ int -ProcPutImage(client) - register ClientPtr client; +ProcPutImage(register ClientPtr client) { register GC *pGC; register DrawablePtr pDraw; @@ -2648,13 +2636,9 @@ ProcPutImage(client) int -DoGetImage(client, format, drawable, x, y, width, height, planemask, im_return) - register ClientPtr client; - Drawable drawable; - int format; - int x, y, width, height; - Mask planemask; - xGetImageReply **im_return; +DoGetImage(register ClientPtr client, int format, Drawable drawable, + int x, int y, int width, int height, + Mask planemask, xGetImageReply **im_return) { register DrawablePtr pDraw; int nlines, linesPerBuf; @@ -2663,7 +2647,9 @@ DoGetImage(client, format, drawable, x, y, width, height, planemask, im_return) Mask plane = 0; char *pBuf; xGetImageReply xgi; +#ifdef XCSECURITY RegionPtr pVisibleRegion = NULL; +#endif if ((format != XYPixmap) && (format != ZPixmap)) { @@ -2774,7 +2760,7 @@ DoGetImage(client, format, drawable, x, y, width, height, planemask, im_return) pVisibleRegion = NotClippedByChildren((WindowPtr)pDraw); if (pVisibleRegion) { - REGION_TRANSLATE(pScreen, pVisibleRegion, -pDraw->x, -pDraw->y); + REGION_TRANSLATE(pDraw->pScreen, pVisibleRegion, -pDraw->x, -pDraw->y); } } #endif @@ -2868,7 +2854,7 @@ DoGetImage(client, format, drawable, x, y, width, height, planemask, im_return) } #ifdef XCSECURITY if (pVisibleRegion) - REGION_DESTROY(pScreen, pVisibleRegion); + REGION_DESTROY(pDraw->pScreen, pVisibleRegion); #endif if (!im_return) DEALLOCATE_LOCAL(pBuf); @@ -2876,8 +2862,7 @@ DoGetImage(client, format, drawable, x, y, width, height, planemask, im_return) } int -ProcGetImage(client) - register ClientPtr client; +ProcGetImage(register ClientPtr client) { REQUEST(xGetImageReq); @@ -2890,8 +2875,7 @@ ProcGetImage(client) } int -ProcPolyText(client) - register ClientPtr client; +ProcPolyText(register ClientPtr client) { int err; REQUEST(xPolyTextReq); @@ -2920,8 +2904,7 @@ ProcPolyText(client) } int -ProcImageText8(client) - register ClientPtr client; +ProcImageText8(register ClientPtr client) { int err; register DrawablePtr pDraw; @@ -2951,8 +2934,7 @@ ProcImageText8(client) } int -ProcImageText16(client) - register ClientPtr client; +ProcImageText16(register ClientPtr client) { int err; register DrawablePtr pDraw; @@ -2983,8 +2965,7 @@ ProcImageText16(client) int -ProcCreateColormap(client) - register ClientPtr client; +ProcCreateColormap(register ClientPtr client) { VisualPtr pVisual; ColormapPtr pmap; @@ -3027,8 +3008,7 @@ ProcCreateColormap(client) } int -ProcFreeColormap(client) - register ClientPtr client; +ProcFreeColormap(register ClientPtr client) { ColormapPtr pmap; REQUEST(xResourceReq); @@ -3052,8 +3032,7 @@ ProcFreeColormap(client) int -ProcCopyColormapAndFree(client) - register ClientPtr client; +ProcCopyColormapAndFree(register ClientPtr client) { Colormap mid; ColormapPtr pSrcMap; @@ -3080,8 +3059,7 @@ ProcCopyColormapAndFree(client) } int -ProcInstallColormap(client) - register ClientPtr client; +ProcInstallColormap(register ClientPtr client) { ColormapPtr pcmp; REQUEST(xResourceReq); @@ -3102,8 +3080,7 @@ ProcInstallColormap(client) } int -ProcUninstallColormap(client) - register ClientPtr client; +ProcUninstallColormap(register ClientPtr client) { ColormapPtr pcmp; REQUEST(xResourceReq); @@ -3125,8 +3102,7 @@ ProcUninstallColormap(client) } int -ProcListInstalledColormaps(client) - register ClientPtr client; +ProcListInstalledColormaps(register ClientPtr client) { xListInstalledColormapsReply *preply; int nummaps; @@ -3161,8 +3137,7 @@ ProcListInstalledColormaps(client) } int -ProcAllocColor(client) - register ClientPtr client; +ProcAllocColor (register ClientPtr client) { ColormapPtr pmap; int retval; @@ -3213,8 +3188,7 @@ ProcAllocColor(client) } int -ProcAllocNamedColor (client) - register ClientPtr client; +ProcAllocNamedColor (register ClientPtr client) { ColormapPtr pcmp; REQUEST(xAllocNamedColorReq); @@ -3275,8 +3249,7 @@ ProcAllocNamedColor (client) } int -ProcAllocColorCells (client) - register ClientPtr client; +ProcAllocColorCells (register ClientPtr client) { ColormapPtr pcmp; REQUEST(xAllocColorCellsReq); @@ -3351,8 +3324,7 @@ ProcAllocColorCells (client) } int -ProcAllocColorPlanes(client) - register ClientPtr client; +ProcAllocColorPlanes(register ClientPtr client) { ColormapPtr pcmp; REQUEST(xAllocColorPlanesReq); @@ -3425,8 +3397,7 @@ ProcAllocColorPlanes(client) } int -ProcFreeColors (client) - register ClientPtr client; +ProcFreeColors(register ClientPtr client) { ColormapPtr pcmp; REQUEST(xFreeColorsReq); @@ -3461,8 +3432,7 @@ ProcFreeColors (client) } int -ProcStoreColors (client) - register ClientPtr client; +ProcStoreColors (ClientPtr client) { ColormapPtr pcmp; REQUEST(xStoreColorsReq); @@ -3496,8 +3466,7 @@ ProcStoreColors (client) } int -ProcStoreNamedColor (client) - register ClientPtr client; +ProcStoreNamedColor (register ClientPtr client) { ColormapPtr pcmp; REQUEST(xStoreNamedColorReq); @@ -3531,8 +3500,7 @@ ProcStoreNamedColor (client) } int -ProcQueryColors(client) - register ClientPtr client; +ProcQueryColors(register ClientPtr client) { ColormapPtr pcmp; REQUEST(xQueryColorsReq); @@ -3583,8 +3551,7 @@ ProcQueryColors(client) } int -ProcLookupColor(client) - register ClientPtr client; +ProcLookupColor(register ClientPtr client) { ColormapPtr pcmp; REQUEST(xLookupColorReq); @@ -3622,8 +3589,7 @@ ProcLookupColor(client) } int -ProcCreateCursor( client) - register ClientPtr client; +ProcCreateCursor (register ClientPtr client) { CursorPtr pCursor; @@ -3720,8 +3686,7 @@ ProcCreateCursor( client) } int -ProcCreateGlyphCursor( client) - register ClientPtr client; +ProcCreateGlyphCursor (register ClientPtr client) { CursorPtr pCursor; int res; @@ -3745,8 +3710,7 @@ ProcCreateGlyphCursor( client) int -ProcFreeCursor(client) - register ClientPtr client; +ProcFreeCursor (register ClientPtr client) { CursorPtr pCursor; REQUEST(xResourceReq); @@ -3767,8 +3731,7 @@ ProcFreeCursor(client) } int -ProcQueryBestSize (client) - register ClientPtr client; +ProcQueryBestSize (register ClientPtr client) { xQueryBestSizeReply reply; register DrawablePtr pDraw; @@ -3801,8 +3764,7 @@ ProcQueryBestSize (client) int -ProcSetScreenSaver (client) - register ClientPtr client; +ProcSetScreenSaver (register ClientPtr client) { int blankingOption, exposureOption; REQUEST(xSetScreenSaverReq); @@ -3884,11 +3846,12 @@ ProcSetScreenSaver (client) { ScreenSaverInterval = defaultScreenSaverInterval; } + + SetScreenSaverTimer(); } - #ifdef TEST - else + else { fprintf(stderr, "ProcSetScreenSaver: Keeping auto-disconnect timeout set to [%d] seconds.\n", nxagentOption(Timeout)); @@ -3900,8 +3863,7 @@ ProcSetScreenSaver (client) } int -ProcGetScreenSaver(client) - register ClientPtr client; +ProcGetScreenSaver(register ClientPtr client) { xGetScreenSaverReply rep; @@ -3918,8 +3880,7 @@ ProcGetScreenSaver(client) } int -ProcChangeHosts(client) - register ClientPtr client; +ProcChangeHosts(register ClientPtr client) { REQUEST(xChangeHostsReq); int result; @@ -3943,8 +3904,7 @@ ProcChangeHosts(client) } int -ProcListHosts(client) - register ClientPtr client; +ProcListHosts(register ClientPtr client) { xListHostsReply reply; int len, nHosts, result; @@ -3978,8 +3938,7 @@ ProcListHosts(client) } int -ProcChangeAccessControl(client) - register ClientPtr client; +ProcChangeAccessControl(register ClientPtr client) { int result; REQUEST(xSetAccessControlReq); @@ -3997,8 +3956,7 @@ ProcChangeAccessControl(client) } int -ProcKillClient(client) - register ClientPtr client; +ProcKillClient(register ClientPtr client) { REQUEST(xResourceReq); ClientPtr killclient; @@ -4032,8 +3990,7 @@ ProcKillClient(client) } int -ProcSetFontPath(client) - register ClientPtr client; +ProcSetFontPath(register ClientPtr client) { unsigned char *ptr; unsigned long nbytes, total; @@ -4068,8 +4025,7 @@ ProcSetFontPath(client) } int -ProcGetFontPath(client) - register ClientPtr client; +ProcGetFontPath(register ClientPtr client) { xGetFontPathReply reply; int stringLens, numpaths; @@ -4091,8 +4047,7 @@ ProcGetFontPath(client) } int -ProcChangeCloseDownMode(client) - register ClientPtr client; +ProcChangeCloseDownMode(register ClientPtr client) { REQUEST(xSetCloseDownModeReq); @@ -4111,8 +4066,7 @@ ProcChangeCloseDownMode(client) } } -int ProcForceScreenSaver(client) - register ClientPtr client; +int ProcForceScreenSaver(register ClientPtr client) { REQUEST(xForceScreenSaverReq); @@ -4130,7 +4084,7 @@ int ProcForceScreenSaver(client) * to monitor the user activities and launch its * handlers (like timeout feature), so we can't * always allow the clients to force the screen - * saver handler execution. + * saver handler execution. */ if (nxagentOption(Timeout) == 0) @@ -4151,8 +4105,7 @@ int ProcForceScreenSaver(client) return client->noClientException; } -int ProcNoOperation(client) - register ClientPtr client; +int ProcNoOperation(register ClientPtr client) { REQUEST_AT_LEAST_SIZE(xReq); @@ -4193,8 +4146,7 @@ InitProcVectors(void) *********************/ void -CloseDownClient(client) - register ClientPtr client; +CloseDownClient(register ClientPtr client) { Bool really_close_down = client->clientGone || client->closeDownMode == DestroyAll; @@ -4338,10 +4290,7 @@ CloseDownRetainedResources() } } -void InitClient(client, i, ospriv) - ClientPtr client; - int i; - pointer ospriv; +void InitClient(ClientPtr client, int i, pointer ospriv) { client->index = i; client->sequence = 0; @@ -4362,7 +4311,7 @@ void InitClient(client, i, ospriv) client->lastGC = (GCPtr) NULL; client->lastGCID = INVALID; client->numSaved = 0; - client->saveSet = (pointer *)NULL; + client->saveSet = (SaveSetElt *)NULL; client->noClientException = Success; #ifdef LOG_DEBUG client->requestLogIndex = 0; @@ -4406,8 +4355,7 @@ extern unsigned *clientPrivateSizes; extern unsigned totalClientSize; int -InitClientPrivates(client) - ClientPtr client; +InitClientPrivates(ClientPtr client) { register char *ptr; DevUnion *ppriv; @@ -4455,9 +4403,7 @@ InitClientPrivates(client) * Returns NULL if there are no free clients. *************************/ -ClientPtr -NextAvailableClient(ospriv) - pointer ospriv; +ClientPtr NextAvailableClient(pointer ospriv) { register int i; register ClientPtr client; @@ -4501,8 +4447,7 @@ NextAvailableClient(ospriv) } int -ProcInitialConnection(client) - register ClientPtr client; +ProcInitialConnection(register ClientPtr client) { REQUEST(xReq); register xConnClientPrefix *prefix; @@ -4537,9 +4482,7 @@ IncrementClientCount() #endif int -SendConnSetup(client, reason) - register ClientPtr client; - char *reason; +SendConnSetup(register ClientPtr client, char *reason) { register xWindowRoot *root; register int i; @@ -4639,8 +4582,7 @@ SendConnSetup(client, reason) } int -ProcEstablishConnection(client) - register ClientPtr client; +ProcEstablishConnection(register ClientPtr client) { char *reason, *auth_proto, *auth_string; register xConnClientPrefix *prefix; @@ -4674,12 +4616,8 @@ ProcEstablishConnection(client) } void -SendErrorToClient(client, majorCode, minorCode, resId, errorCode) - ClientPtr client; - unsigned int majorCode; - unsigned int minorCode; - XID resId; - int errorCode; +SendErrorToClient(ClientPtr client, unsigned majorCode, unsigned minorCode, + XID resId, int errorCode) { xError rep; @@ -4694,14 +4632,21 @@ SendErrorToClient(client, majorCode, minorCode, resId, errorCode) } void -DeleteWindowFromAnySelections(pWin) - WindowPtr pWin; +DeleteWindowFromAnySelections(WindowPtr pWin) { register int i; for (i = 0; i< NumCurrentSelections; i++) if (CurrentSelections[i].pWin == pWin) { + if (SelectionCallback) + { + SelectionInfoRec info; + + info.selection = &CurrentSelections[i]; + info.kind = SelectionWindowDestroy; + CallCallbacks(&SelectionCallback, &info); + } CurrentSelections[i].pWin = (WindowPtr)NULL; CurrentSelections[i].window = None; CurrentSelections[i].client = NullClient; @@ -4709,14 +4654,21 @@ DeleteWindowFromAnySelections(pWin) } static void -DeleteClientFromAnySelections(client) - ClientPtr client; +DeleteClientFromAnySelections(ClientPtr client) { register int i; for (i = 0; i< NumCurrentSelections; i++) if (CurrentSelections[i].client == client) { + if (SelectionCallback) + { + SelectionInfoRec info; + + info.selection = &CurrentSelections[i]; + info.kind = SelectionWindowDestroy; + CallCallbacks(&SelectionCallback, &info); + } CurrentSelections[i].pWin = (WindowPtr)NULL; CurrentSelections[i].window = None; CurrentSelections[i].client = NullClient; @@ -4724,10 +4676,7 @@ DeleteClientFromAnySelections(client) } void -MarkClientException(client) - ClientPtr client; +MarkClientException(ClientPtr client) { client->noClientException = -1; } - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c index 1cccfd9..2b64269 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXdixfonts.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -21,7 +15,8 @@ /* */ /**************************************************************************/ -/* $XFree86: xc/programs/Xserver/dix/dixfonts.c,v 3.27 2003/02/15 03:47:05 dawes Exp $ */ +/* $XdotOrg: xc/programs/Xserver/dix/dixfonts.c,v 1.8 2005/07/03 08:53:38 daniels Exp $ */ +/* $XFree86: xc/programs/Xserver/dix/dixfonts.c,v 3.28 2003/11/08 02:02:03 dawes Exp $ */ /************************************************************************ Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. @@ -44,13 +39,43 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ************************************************************************/ - +/* The panoramix components contained the following notice */ +/* +Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + +******************************************************************/ /* $Xorg: dixfonts.c,v 1.4 2000/08/17 19:48:18 cpqbld Exp $ */ #define NEED_REPLIES -#include "X.h" -#include "Xmd.h" -#include "Xproto.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> +#include <X11/Xmd.h> +#include <X11/Xproto.h> #include "scrnintstr.h" #include "resource.h" #include "dixstruct.h" @@ -123,7 +148,8 @@ static const char *_NXGetFontPath(const char *path) _NXGetFontPathError: - strcpy(_NXFontPath, path); + strncpy(_NXFontPath, path, 1023); + _NXFontPath[1023] = '\0'; #ifdef NX_TRANS_TEST fprintf(stderr, "_NXGetFontPath: Using default font path [%s].\n", _NXFontPath); @@ -145,7 +171,7 @@ _NXGetFontPathError: #ifdef XF86BIGFONT #define _XF86BIGFONT_SERVER_ -#include "xf86bigfont.h" +#include <X11/extensions/xf86bigfont.h> #endif #define QUERYCHARINFO(pci, pr) *(pr) = (pci)->metrics @@ -190,8 +216,7 @@ FontToXError(err) * adding RT_FONT prevents conflict with default cursor font */ Bool -SetDefaultFont(defaultfontname) - char *defaultfontname; +SetDefaultFont(char *defaultfontname) { int err; FontPtr pf; @@ -219,8 +244,7 @@ SetDefaultFont(defaultfontname) * freed data. */ void -QueueFontWakeup(fpe) - FontPathElementPtr fpe; +QueueFontWakeup(FontPathElementPtr fpe) { int i; FontPathElementPtr *new; @@ -249,8 +273,7 @@ QueueFontWakeup(fpe) } void -RemoveFontWakeup(fpe) - FontPathElementPtr fpe; +RemoveFontWakeup(FontPathElementPtr fpe) { int i, j; @@ -266,12 +289,8 @@ RemoveFontWakeup(fpe) } } -/* ARGSUSED */ void -FontWakeup(data, count, LastSelectMask) - pointer data; - int count; - pointer LastSelectMask; +FontWakeup(pointer data, int count, pointer LastSelectMask) { int i; FontPathElementPtr fpe; @@ -287,23 +306,13 @@ FontWakeup(data, count, LastSelectMask) /* XXX -- these two funcs may want to be broken into macros */ static void -#if NeedFunctionPrototypes UseFPE(FontPathElementPtr fpe) -#else -UseFPE(fpe) - FontPathElementPtr fpe; -#endif { fpe->refcount++; } static void -#if NeedFunctionPrototypes FreeFPE (FontPathElementPtr fpe) -#else -FreeFPE (fpe) - FontPathElementPtr fpe; -#endif { fpe->refcount--; if (fpe->refcount == 0) { @@ -314,13 +323,7 @@ FreeFPE (fpe) } static Bool -#if NeedFunctionPrototypes doOpenFont(ClientPtr client, OFclosurePtr c) -#else -doOpenFont(client, c) - ClientPtr client; - OFclosurePtr c; -#endif { FontPtr pfont = NullFont; FontPathElementPtr fpe = NULL; @@ -435,6 +438,13 @@ doOpenFont(client, c) err = BadFontName; goto bail; } + /* check values for firstCol, lastCol, firstRow, and lastRow */ + if (pfont->info.firstCol > pfont->info.lastCol || + pfont->info.firstRow > pfont->info.lastRow || + pfont->info.lastCol - pfont->info.firstCol > 255) { + err = AllocError; + goto bail; + } if (!pfont->fpe) pfont->fpe = fpe; pfont->refcnt++; @@ -498,12 +508,7 @@ bail: } int -OpenFont(client, fid, flags, lenfname, pfontname) - ClientPtr client; - XID fid; - Mask flags; - unsigned lenfname; - char *pfontname; +OpenFont(ClientPtr client, XID fid, Mask flags, unsigned lenfname, char *pfontname) { OFclosurePtr c; int i; @@ -587,14 +592,13 @@ OpenFont(client, fid, flags, lenfname, pfontname) return Success; } -/* +/** * Decrement font's ref count, and free storage if ref count equals zero + * + * \param value must conform to DeleteType */ -/*ARGSUSED*/ int -CloseFont(value, fid) - pointer value; /* must conform to DeleteType */ - XID fid; +CloseFont(pointer value, XID fid) { int nscr; ScreenPtr pscr; @@ -636,16 +640,14 @@ CloseFont(value, fid) /***====================================================================***/ - /* - * \ Sets up pReply as the correct QueryFontReply for pFont with the first - * nProtoCCIStructs char infos. \ +/** + * Sets up pReply as the correct QueryFontReply for pFont with the first + * nProtoCCIStructs char infos. + * + * \param pReply caller must allocate this storage */ - void -QueryFont(pFont, pReply, nProtoCCIStructs) - FontPtr pFont; - xQueryFontReply *pReply; /* caller must allocate this storage */ - int nProtoCCIStructs; +QueryFont(FontPtr pFont, xQueryFontReply *pReply, int nProtoCCIStructs) { FontPropPtr pFP; int r, @@ -707,13 +709,7 @@ QueryFont(pFont, pReply, nProtoCCIStructs) } static Bool -#if NeedFunctionPrototypes doListFontsAndAliases(ClientPtr client, LFclosurePtr c) -#else -doListFontsAndAliases(client, c) - ClientPtr client; - LFclosurePtr c; -#endif { FontPathElementPtr fpe; int err = Successful; @@ -792,9 +788,6 @@ doListFontsAndAliases(client, c) (ClientSleepProcPtr)doListFontsAndAliases, (pointer) c); c->slept = TRUE; -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFont (2): client [%lx] sleeping.\n", client); -#endif } return TRUE; } @@ -814,6 +807,9 @@ doListFontsAndAliases(client, c) (pointer) c); c->slept = TRUE; #ifdef NXAGENT_DEBUG + fprintf(stderr, " NXdixfonts: doListFont (2): client [%lx] sleeping.\n", client); +#endif +#ifdef NXAGENT_DEBUG fprintf(stderr, " NXdixfonts: doListFont (3): client [%lx] sleeping.\n", client); #endif } @@ -1001,11 +997,8 @@ bail: } int -ListFonts(client, pattern, length, max_names) - ClientPtr client; - unsigned char *pattern; - unsigned int length; - unsigned int max_names; +ListFonts(ClientPtr client, unsigned char *pattern, unsigned length, + unsigned max_names) { int i; LFclosurePtr c; @@ -1054,9 +1047,7 @@ ListFonts(client, pattern, length, max_names) } int -doListFontsWithInfo(client, c) - ClientPtr client; - LFWIclosurePtr c; +doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c) { FontPathElementPtr fpe; int err = Successful; @@ -1167,7 +1158,11 @@ doListFontsWithInfo(client, c) c->saved = c->current; c->haveSaved = TRUE; c->savedNumFonts = numFonts; - c->savedName = (char *) pFontInfo; + if (c->savedName) + xfree(c->savedName); + c->savedName = (char *)xalloc(namelen + 1); + if (c->savedName) + memmove(c->savedName, name, namelen + 1); aliascount = 20; } memmove(c->current.pattern, name, namelen); @@ -1290,16 +1285,14 @@ bail: FreeFPE(c->fpe_list[i]); xfree(c->reply); xfree(c->fpe_list); + if (c->savedName) xfree(c->savedName); xfree(c); return TRUE; } int -StartListFontsWithInfo(client, length, pattern, max_names) - ClientPtr client; - int length; - unsigned char *pattern; - int max_names; +StartListFontsWithInfo(ClientPtr client, int length, unsigned char *pattern, + int max_names) { int i; LFWIclosurePtr c; @@ -1340,6 +1333,7 @@ StartListFontsWithInfo(client, length, pattern, max_names) c->savedNumFonts = 0; c->haveSaved = FALSE; c->slept = FALSE; + c->savedName = 0; doListFontsWithInfo(client, c); return Success; badAlloc: @@ -1352,9 +1346,7 @@ static XID clearGC[] = { CT_NONE }; #define clearGCmask (GCClipMask) int -doPolyText(client, c) - ClientPtr client; - register PTclosurePtr c; +doPolyText(ClientPtr client, register PTclosurePtr c) { register FontPtr pFont = c->pGC->font, oldpFont; Font fid, oldfid; @@ -1632,16 +1624,8 @@ bail: } int -PolyText(client, pDraw, pGC, pElt, endReq, xorg, yorg, reqType, did) - ClientPtr client; - DrawablePtr pDraw; - GC *pGC; - unsigned char *pElt; - unsigned char *endReq; - int xorg; - int yorg; - int reqType; - XID did; +PolyText(ClientPtr client, DrawablePtr pDraw, GC *pGC, unsigned char *pElt, + unsigned char *endReq, int xorg, int yorg, int reqType, XID did) { PTclosureRec local_closure; @@ -1675,9 +1659,7 @@ PolyText(client, pDraw, pGC, pElt, endReq, xorg, yorg, reqType, did) #undef FontShiftSize int -doImageText(client, c) - ClientPtr client; - register ITclosurePtr c; +doImageText(ClientPtr client, register ITclosurePtr c) { int err = Success, lgerr; /* err is in X error, not font error, space */ FontPathElementPtr fpe; @@ -1810,16 +1792,8 @@ bail: } int -ImageText(client, pDraw, pGC, nChars, data, xorg, yorg, reqType, did) - ClientPtr client; - DrawablePtr pDraw; - GC *pGC; - int nChars; - unsigned char *data; - int xorg; - int yorg; - int reqType; - XID did; +ImageText(ClientPtr client, DrawablePtr pDraw, GC *pGC, int nChars, + unsigned char *data, int xorg, int yorg, int reqType, XID did) { ITclosureRec local_closure; @@ -1850,12 +1824,7 @@ ImageText(client, pDraw, pGC, nChars, data, xorg, yorg, reqType, did) /* does the necessary magic to figure out the fpe type */ static int -#if NeedFunctionPrototypes DetermineFPEType(char *pathname) -#else -DetermineFPEType(pathname) - char *pathname; -#endif { int i; @@ -1868,14 +1837,7 @@ DetermineFPEType(pathname) static void -#if NeedFunctionPrototypes FreeFontPath(FontPathElementPtr *list, int n, Bool force) -#else -FreeFontPath(list, n, force) - FontPathElementPtr *list; - Bool force; - int n; -#endif { int i; @@ -1902,15 +1864,7 @@ FreeFontPath(list, n, force) } static FontPathElementPtr -#if NeedFunctionPrototypes find_existing_fpe(FontPathElementPtr *list, int num, unsigned char *name, int len) -#else -find_existing_fpe(list, num, name, len) - FontPathElementPtr *list; - int num; - unsigned char *name; - int len; -#endif { FontPathElementPtr fpe; int i; @@ -1925,15 +1879,7 @@ find_existing_fpe(list, num, name, len) static int -#if NeedFunctionPrototypes SetFontPathElements(int npaths, unsigned char *paths, int *bad, Bool persist) -#else -SetFontPathElements(npaths, paths, bad, persist) - int npaths; - unsigned char *paths; - int *bad; - Bool persist; -#endif { int i, err = 0; int valid_paths = 0; @@ -2008,11 +1954,13 @@ SetFontPathElements(npaths, paths, bad, persist) err = (*fpe_functions[fpe->type].init_fpe) (fpe); if (err != Successful) { + #ifndef NXAGENT_SERVER if (persist) { ErrorF("Could not init font path element %s, removing from list!\n", fpe->name); } + #endif xfree (fpe->name); xfree (fpe); } @@ -2047,11 +1995,7 @@ bail: /* XXX -- do we need to pass error down to each renderer? */ int -SetFontPath(client, npaths, paths, error) - ClientPtr client; - int npaths; - unsigned char *paths; - int *error; +SetFontPath(ClientPtr client, int npaths, unsigned char *paths, int *error) { int err = Success; @@ -2065,8 +2009,7 @@ SetFontPath(client, npaths, paths, error) } int -SetDefaultFontPath(path) - char *path; +SetDefaultFontPath(char *path) { unsigned char *cp, *pp, @@ -2115,9 +2058,7 @@ SetDefaultFontPath(path) } unsigned char * -GetFontPath(count, length) - int *count; - int *length; +GetFontPath(int *count, int *length) { int i; unsigned char *c; @@ -2147,12 +2088,7 @@ GetFontPath(count, length) } int -LoadGlyphs(client, pfont, nchars, item_size, data) - ClientPtr client; - FontPtr pfont; - unsigned nchars; - int item_size; - unsigned char *data; +LoadGlyphs(ClientPtr client, FontPtr pfont, unsigned nchars, int item_size, unsigned char *data) { if (fpe_functions[pfont->fpe->type].load_glyphs) return (*fpe_functions[pfont->fpe->type].load_glyphs) @@ -2162,8 +2098,7 @@ LoadGlyphs(client, pfont, nchars, item_size, data) } void -DeleteClientFontStuff(client) - ClientPtr client; +DeleteClientFontStuff(ClientPtr client) { int i; FontPathElementPtr fpe; @@ -2207,8 +2142,7 @@ GetDefaultPointSize () FontResolutionPtr -GetClientResolutions (num) - int *num; +GetClientResolutions (int *num) { if (requestingClient && requestingClient->fontResFunc != NULL && !requestingClient->clientGone) @@ -2313,8 +2247,7 @@ FreeFonts() /* convenience functions for FS interface */ FontPtr -find_old_font(id) - XID id; +find_old_font(XID id) { return (FontPtr) SecurityLookupIDByType(NullClient, id, RT_NONE, SecurityUnknownAccess); @@ -2327,23 +2260,19 @@ GetNewFontClientID() } int -StoreFontClientFont(pfont, id) - FontPtr pfont; - Font id; +StoreFontClientFont(FontPtr pfont, Font id) { return AddResource(id, RT_NONE, (pointer) pfont); } void -DeleteFontClientID(id) - Font id; +DeleteFontClientID(Font id) { FreeResource(id, RT_NONE); } int -client_auth_generation(client) - ClientPtr client; +client_auth_generation(ClientPtr client) { return 0; } @@ -2352,9 +2281,7 @@ static int fs_handlers_installed = 0; static unsigned int last_server_gen; int -init_fs_handlers(fpe, block_handler) - FontPathElementPtr fpe; - BlockHandlerProcPtr block_handler; +init_fs_handlers(FontPathElementPtr fpe, BlockHandlerProcPtr block_handler) { /* if server has reset, make sure the b&w handlers are reinstalled */ if (last_server_gen < serverGeneration) { @@ -2377,10 +2304,7 @@ init_fs_handlers(fpe, block_handler) } void -remove_fs_handlers(fpe, block_handler, all) - FontPathElementPtr fpe; - BlockHandlerProcPtr block_handler; - Bool all; +remove_fs_handlers(FontPathElementPtr fpe, BlockHandlerProcPtr block_handler, Bool all) { if (all) { /* remove the handlers if no one else is using them */ @@ -2408,8 +2332,8 @@ remove_fs_handlers(fpe, block_handler, all) #define GLYPH_SIZE(ch, nbytes) \ GLWIDTHBYTESPADDED((ch)->metrics.rightSideBearing - \ (ch)->metrics.leftSideBearing, (nbytes)) -dump_char_ascii(cip) - CharInfoPtr cip; +void +dump_char_ascii(CharInfoPtr cip) { int r, l; @@ -2427,7 +2351,7 @@ dump_char_ascii(cip) byte = 0; for (l = 0; l <= (cip->metrics.rightSideBearing - cip->metrics.leftSideBearing); l++) { - if (maskTab[l & 7] & row[l >> 3]) + if (maskTab[l & 7] & (((int *)row)[l >> 3])) putchar('X'); else putchar('.'); @@ -2879,5 +2803,3 @@ nxOpenFont(client, fid, flags, lenfname, pfontname) return Success; } - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXevents.c b/nx-X11/programs/Xserver/hw/nxagent/NXevents.c index f697cf3..c5593ad 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXevents.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXevents.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXevents.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -21,7 +15,8 @@ /* */ /**************************************************************************/ -/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.46 2002/09/17 01:15:09 dawes Exp $ */ +/* $XdotOrg: xc/programs/Xserver/dix/events.c,v 1.17 2005/08/25 22:11:04 anholt Exp $ */ +/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.51 2004/01/12 17:04:52 tsi Exp $ */ /************************************************************ Copyright 1987, 1998 The Open Group @@ -70,36 +65,80 @@ SOFTWARE. ********************************************************/ /* The panoramix components contained the following notice */ -/**************************************************************** -* * -* Copyright (c) Digital Equipment Corporation, 1991, 1997 * -* * -* All Rights Reserved. Unpublished rights reserved under * -* the copyright laws of the United States. * -* * -* The software contained on this media is proprietary to * -* and embodies the confidential technology of Digital * -* Equipment Corporation. Possession, use, duplication or * -* dissemination of the software and media is authorized only * -* pursuant to a valid written license from Digital Equipment * -* Corporation. * -* * -* RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * -* by the U.S. Government is subject to restrictions as set * -* forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * -* or in FAR 52.227-19, as applicable. * -* * -*****************************************************************/ +/***************************************************************** + +Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + +******************************************************************/ + +/***************************************************************** + +Copyright 2003-2005 Sun Microsystems, Inc. + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + +******************************************************************/ /* $Xorg: events.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ -#include "X.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> #include "Xlib.h" #include "misc.h" #include "resource.h" #define NEED_EVENTS #define NEED_REPLIES -#include "Xproto.h" +#include <X11/Xproto.h> #include "windowstr.h" #include "inputstr.h" #include "scrnintstr.h" @@ -113,20 +152,30 @@ SOFTWARE. #include "globals.h" #ifdef XKB -#include "XKBsrv.h" -#if NeedFunctionPrototypes +#include <X11/extensions/XKBsrv.h> extern Bool XkbFilterEvents(ClientPtr, int, xEvent *); -#else -extern Bool XkbFilterEvents(); -#endif #endif #ifdef XCSECURITY #define _SECURITY_SERVER -#include "security.h" +#include <X11/extensions/security.h> #endif -#include "XIproto.h" +#ifdef XEVIE +extern WindowPtr *WindowTable; +extern int xevieFlag; +extern int xevieClientIndex; +extern DeviceIntPtr xeviemouse; +extern DeviceIntPtr xeviekb; +extern Mask xevieMask; +extern Mask xevieFilters[128]; +extern int xevieEventSent; +extern int xevieKBEventSent; +int xeviegrabState = 0; +xEvent *xeviexE; +#endif + +#include <X11/extensions/XIproto.h> #include "exevents.h" #include "extnsionst.h" @@ -138,7 +187,13 @@ extern Bool XkbFilterEvents(); #include "Events.h" #include "Windows.h" +#include "Args.h" +#ifdef NX_DEBUG_INPUT +extern int nxagentDebugInput; +extern int nxagentDebugInputDevices; +#endif + extern Display *nxagentDisplay; extern WindowPtr nxagentLastEnteredWindow; @@ -211,11 +266,6 @@ static WindowPtr *spriteTrace = (WindowPtr *)NULL; static int spriteTraceSize = 0; static int spriteTraceGood; -typedef struct { - int x, y; - ScreenPtr pScreen; -} HotSpot; - static struct { CursorPtr current; BoxRec hotLimits; /* logical constraints of hot spot */ @@ -236,19 +286,20 @@ static struct { #endif } sprite; /* info about the cursor sprite */ -static void DoEnterLeaveEvents( -#if NeedFunctionPrototypes - WindowPtr /*fromWin*/, - WindowPtr /*toWin*/, - int /*mode*/ +#ifdef XEVIE +WindowPtr xeviewin; +HotSpot xeviehot; #endif + +static void DoEnterLeaveEvents( + WindowPtr fromWin, + WindowPtr toWin, + int mode ); static WindowPtr XYToWindow( -#if NeedFunctionPrototypes - int /*x*/, - int /*y*/ -#endif + int x, + int y ); extern int lastEvent; @@ -444,7 +495,13 @@ XineramaCheckVirtualMotion( if (qe) { sprite.hot.pScreen = qe->pScreen; /* should always be Screen 0 */ +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = qe->event->u.keyButtonPointer.rootX; +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = qe->event->u.keyButtonPointer.rootY; pWin = inputInfo.pointer->grab ? inputInfo.pointer->grab->confineTo : NullWindow; @@ -481,12 +538,24 @@ XineramaCheckVirtualMotion( lims = *REGION_EXTENTS(sprite.screen, &sprite.Reg2); if (sprite.hot.x < lims.x1) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = lims.x1; else if (sprite.hot.x >= lims.x2) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = lims.x2 - 1; if (sprite.hot.y < lims.y1) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = lims.y1; else if (sprite.hot.y >= lims.y2) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = lims.y2 - 1; if (REGION_NUM_RECTS(&sprite.Reg2) > 1) @@ -516,16 +585,33 @@ XineramaCheckMotion(xEvent *xE) panoramiXdataPtr[0].x; XE_KBPTR.rootY += panoramiXdataPtr[sprite.screen->myNum].y - panoramiXdataPtr[0].y; - +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = XE_KBPTR.rootX; +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = XE_KBPTR.rootY; if (sprite.hot.x < sprite.physLimits.x1) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = sprite.physLimits.x1; else if (sprite.hot.x >= sprite.physLimits.x2) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = sprite.physLimits.x2 - 1; if (sprite.hot.y < sprite.physLimits.y1) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = sprite.physLimits.y1; else if (sprite.hot.y >= sprite.physLimits.y2) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = sprite.physLimits.y2 - 1; if (sprite.hotShape) @@ -542,6 +628,9 @@ XineramaCheckMotion(xEvent *xE) XE_KBPTR.rootY = sprite.hot.y; } +#ifdef XEVIE + xeviewin = +#endif sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y); if (sprite.win != prevSpriteWin) @@ -619,7 +708,9 @@ XineramaChangeToCursor(CursorPtr cursor) (sprite.current->bits->yhot != cursor->bits->yhot)) XineramaCheckPhysLimits(cursor, FALSE); (*sprite.screen->DisplayCursor)(sprite.screen, cursor); + FreeCursor(sprite.current, (Cursor)0); sprite.current = cursor; + sprite.current->refcnt++; } } @@ -627,9 +718,7 @@ XineramaChangeToCursor(CursorPtr cursor) #endif /* PANORAMIX */ void -SetMaskForEvent(mask, event) - Mask mask; - int event; +SetMaskForEvent(Mask mask, int event) { if ((event < LASTEvent) || (event >= 128)) FatalError("SetMaskForEvent: bogus event number"); @@ -637,8 +726,7 @@ SetMaskForEvent(mask, event) } void -SetCriticalEvent(event) - int event; +SetCriticalEvent(int event) { if (event >= 128) FatalError("SetCriticalEvent: bogus event number"); @@ -646,12 +734,7 @@ SetCriticalEvent(event) } static void -#if NeedFunctionPrototypes SyntheticMotion(int x, int y) -#else -SyntheticMotion(x, y) - int x, y; -#endif { xEvent xE; @@ -676,13 +759,7 @@ SyntheticMotion(x, y) #ifdef SHAPE static void -#if NeedFunctionPrototypes ConfineToShape(RegionPtr shape, int *px, int *py) -#else -ConfineToShape(shape, px, py) - RegionPtr shape; - int *px, *py; -#endif { BoxRec box; int x = *px, y = *py; @@ -719,19 +796,11 @@ ConfineToShape(shape, px, py) #endif static void -#if NeedFunctionPrototypes CheckPhysLimits( CursorPtr cursor, Bool generateEvents, Bool confineToScreen, ScreenPtr pScreen) -#else -CheckPhysLimits(cursor, generateEvents, confineToScreen, pScreen) - CursorPtr cursor; - Bool generateEvents; - Bool confineToScreen; - ScreenPtr pScreen; -#endif { HotSpot new; @@ -772,15 +841,9 @@ CheckPhysLimits(cursor, generateEvents, confineToScreen, pScreen) } static void -#if NeedFunctionPrototypes CheckVirtualMotion( register QdEventPtr qe, register WindowPtr pWin) -#else -CheckVirtualMotion(qe, pWin) - register QdEventPtr qe; - register WindowPtr pWin; -#endif { #ifdef PANORAMIX if(!noPanoramiXExtension) { @@ -791,7 +854,13 @@ CheckVirtualMotion(qe, pWin) if (qe) { sprite.hot.pScreen = qe->pScreen; +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = qe->event->u.keyButtonPointer.rootX; +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = qe->event->u.keyButtonPointer.rootY; pWin = inputInfo.pointer->grab ? inputInfo.pointer->grab->confineTo : NullWindow; @@ -803,16 +872,31 @@ CheckVirtualMotion(qe, pWin) if (sprite.hot.pScreen != pWin->drawable.pScreen) { sprite.hot.pScreen = pWin->drawable.pScreen; +#ifdef XEVIE + xeviehot.x = xeviehot.y = 0; +#endif sprite.hot.x = sprite.hot.y = 0; } lims = *REGION_EXTENTS(pWin->drawable.pScreen, &pWin->borderSize); if (sprite.hot.x < lims.x1) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = lims.x1; else if (sprite.hot.x >= lims.x2) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = lims.x2 - 1; if (sprite.hot.y < lims.y1) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = lims.y1; else if (sprite.hot.y >= lims.y2) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = lims.y2 - 1; #ifdef SHAPE if (wBoundingShape(pWin)) @@ -864,12 +948,7 @@ PointerConfinedToScreen() } static void -#if NeedFunctionPrototypes ChangeToCursor(CursorPtr cursor) -#else -ChangeToCursor(cursor) - CursorPtr cursor; -#endif { #ifdef PANORAMIX if(!noPanoramiXExtension) { @@ -886,14 +965,15 @@ ChangeToCursor(cursor) (ScreenPtr)NULL); (*sprite.hotPhys.pScreen->DisplayCursor) (sprite.hotPhys.pScreen, cursor); + FreeCursor(sprite.current, (Cursor)0); sprite.current = cursor; + sprite.current->refcnt++; } } /* returns true if b is a descendent of a */ Bool -IsParent(a, b) - register WindowPtr a, b; +IsParent(register WindowPtr a, register WindowPtr b) { for (b = b->parent; b; b = b->parent) if (b == a) return TRUE; @@ -901,11 +981,7 @@ IsParent(a, b) } static void -#if NeedFunctionPrototypes PostNewCursor(void) -#else -PostNewCursor() -#endif { register WindowPtr win; register GrabPtr grab = inputInfo.pointer->grab; @@ -953,8 +1029,7 @@ GetSpriteCursor() } void -GetSpritePosition(px, py) - int *px, *py; +GetSpritePosition(int *px, int *py) { *px = sprite.hotPhys.x; *py = sprite.hotPhys.y; @@ -975,12 +1050,7 @@ XineramaGetCursorScreen() #define TIMESLOP (5 * 60 * 1000) /* 5 minutes */ static void -#if NeedFunctionPrototypes MonthChangedOrBadTime(register xEvent *xE) -#else -MonthChangedOrBadTime(xE) - register xEvent *xE; -#endif { /* If the ddx/OS is careless about not processing timestamped events from * different sources in sorted order, then it's possible for time to go @@ -999,8 +1069,7 @@ MonthChangedOrBadTime(xE) lastDeviceEventTime = currentTime; } void -NoticeEventTime(xE) - register xEvent *xE; +NoticeEventTime(register xEvent *xE) { if (!syncEvents.playingEvents) NoticeTime(xE); @@ -1011,16 +1080,21 @@ NoticeEventTime(xE) **************************************************************************/ void -EnqueueEvent(xE, device, count) - xEvent *xE; - DeviceIntPtr device; - int count; +EnqueueEvent(xEvent *xE, DeviceIntPtr device, int count) { register QdEventPtr tail = *syncEvents.pendtail; register QdEventPtr qe; xEvent *qxE; NoticeTime(xE); + +#ifdef XKB + /* Fix for key repeating bug. */ + if (device->key != NULL && device->key->xkbInfo != NULL && + xE->u.u.type == KeyRelease) + AccessXCancelRepeatKey(device->key->xkbInfo, xE->u.u.detail); +#endif + if (DeviceEventCallback) { DeviceEventInfoRec eventinfo; @@ -1081,11 +1155,7 @@ EnqueueEvent(xE, device, count) } static void -#if NeedFunctionPrototypes PlayReleasedEvents(void) -#else -PlayReleasedEvents() -#endif { register QdEventPtr *prev, qe; register DeviceIntPtr dev; @@ -1132,13 +1202,7 @@ PlayReleasedEvents() } static void -#if NeedFunctionPrototypes FreezeThaw(register DeviceIntPtr dev, Bool frozen) -#else -FreezeThaw(dev, frozen) - register DeviceIntPtr dev; - Bool frozen; -#endif { dev->sync.frozen = frozen; if (frozen) @@ -1232,9 +1296,7 @@ ScreenRestructured (ScreenPtr pScreen) #endif void -CheckGrabForSyncs(thisDev, thisMode, otherMode) - register DeviceIntPtr thisDev; - Bool thisMode, otherMode; +CheckGrabForSyncs(register DeviceIntPtr thisDev, Bool thisMode, Bool otherMode) { register GrabPtr grab = thisDev->grab; register DeviceIntPtr dev; @@ -1268,11 +1330,8 @@ CheckGrabForSyncs(thisDev, thisMode, otherMode) } void -ActivatePointerGrab(mouse, grab, time, autoGrab) - register GrabPtr grab; - register DeviceIntPtr mouse; - TimeStamp time; - Bool autoGrab; +ActivatePointerGrab(register DeviceIntPtr mouse, register GrabPtr grab, + TimeStamp time, Bool autoGrab) { WindowPtr oldWin = (mouse->grab) ? mouse->grab->window : sprite.win; @@ -1344,8 +1403,7 @@ ActivatePointerGrab(mouse, grab, time, autoGrab) } void -DeactivatePointerGrab(mouse) - register DeviceIntPtr mouse; +DeactivatePointerGrab(register DeviceIntPtr mouse) { register GrabPtr grab = mouse->grab; register DeviceIntPtr dev; @@ -1385,11 +1443,7 @@ DeactivatePointerGrab(mouse) } void -ActivateKeyboardGrab(keybd, grab, time, passive) - register DeviceIntPtr keybd; - GrabPtr grab; - TimeStamp time; - Bool passive; +ActivateKeyboardGrab(register DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, Bool passive) { WindowPtr oldWin; @@ -1415,8 +1469,7 @@ ActivateKeyboardGrab(keybd, grab, time, passive) } void -DeactivateKeyboardGrab(keybd) - register DeviceIntPtr keybd; +DeactivateKeyboardGrab(register DeviceIntPtr keybd) { register GrabPtr grab = keybd->grab; register DeviceIntPtr dev; @@ -1440,11 +1493,7 @@ DeactivateKeyboardGrab(keybd) } void -AllowSome(client, time, thisDev, newState) - ClientPtr client; - TimeStamp time; - register DeviceIntPtr thisDev; - int newState; +AllowSome(ClientPtr client, TimeStamp time, DeviceIntPtr thisDev, int newState) { Bool thisGrabbed, otherGrabbed, othersFrozen, thisSynced; TimeStamp grabTime; @@ -1552,8 +1601,7 @@ AllowSome(client, time, thisDev, newState) } int -ProcAllowEvents(client) - register ClientPtr client; +ProcAllowEvents(register ClientPtr client) { TimeStamp time; DeviceIntPtr mouse = inputInfo.pointer; @@ -1607,8 +1655,7 @@ ProcAllowEvents(client) } void -ReleaseActiveGrabs(client) - ClientPtr client; +ReleaseActiveGrabs(ClientPtr client) { register DeviceIntPtr dev; Bool done; @@ -1634,21 +1681,34 @@ ReleaseActiveGrabs(client) **************************************************************************/ int -TryClientEvents (client, pEvents, count, mask, filter, grab) - ClientPtr client; - GrabPtr grab; - xEvent *pEvents; - int count; - Mask mask, filter; +TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask, + Mask filter, GrabPtr grab) { int i; int type; -#ifdef DEBUG +#ifdef NX_DEBUG_INPUT + if (grab && nxagentDebugInput && grab->window) + { + fprintf(stderr, "TryClientEvents: Grab window is [0x%x].\n", + (unsigned int)grab->window->drawable.id); + if (!SameClient(grab, client)) + fprintf(stderr, "TryClientEvents: Events are going to be " + "discarded.\n"); + } +#endif +#if defined(DEBUG) || defined(NX_DEBUG_INPUT) +#ifdef NX_DEBUG_INPUT + if (nxagentDebugInput == 1) + fprintf(stderr, "Event([%d, %d], mask=0x%x), client=%d", + pEvents->u.u.type, pEvents->u.u.detail, (unsigned int)mask, + client->index); +#else if (debug_events) ErrorF( "Event([%d, %d], mask=0x%x), client=%d", pEvents->u.u.type, pEvents->u.u.detail, mask, client->index); #endif +#endif if ((client) && (client != serverClient) && (!client->clientGone) && ((filter == CantBeFiltered) || (mask & filter))) { @@ -1662,10 +1722,17 @@ TryClientEvents (client, pEvents, count, mask, filter, grab) if (WID(inputInfo.pointer->valuator->motionHintWindow) == pEvents->u.keyButtonPointer.event) { -#ifdef DEBUG +#if defined(DEBUG) || defined(NX_DEBUG_INPUT) +#ifdef NX_DEBUG_INPUT + if (nxagentDebugInput == 1) + { + fprintf(stderr,"\nmotionHintWindow == keyButtonPointer.event\n"); + } +#else if (debug_events) ErrorF("\n"); fprintf(stderr,"motionHintWindow == keyButtonPointer.event\n"); #endif +#endif return 1; /* don't send, but pretend we did */ } pEvents->u.u.detail = NotifyHint; @@ -1702,28 +1769,33 @@ TryClientEvents (client, pEvents, count, mask, filter, grab) } WriteEventsToClient(client, count, pEvents); -#ifdef DEBUG +#if defined(DEBUG) || defined(NX_DEBUG_INPUT) +#ifdef NX_DEBUG_INPUT + if (nxagentDebugInput == 1) + fprintf(stderr, " delivered\n"); +#else if (debug_events) ErrorF( " delivered\n"); #endif +#endif return 1; } else { -#ifdef DEBUG +#if defined(DEBUG) || defined(NX_DEBUG_INPUT) +#ifdef NX_DEBUG_INPUT + if (nxagentDebugInput == 1) + fprintf(stderr, "\n"); +#else if (debug_events) ErrorF("\n"); #endif +#endif return 0; } } int -DeliverEventsToWindow(pWin, pEvents, count, filter, grab, mskidx) - register WindowPtr pWin; - GrabPtr grab; - xEvent *pEvents; - int count; - Mask filter; - int mskidx; +DeliverEventsToWindow(register WindowPtr pWin, xEvent *pEvents, int count, + Mask filter, GrabPtr grab, int mskidx) { int deliveries = 0, nondeliveries = 0; int attempt; @@ -1794,6 +1866,12 @@ DeliverEventsToWindow(pWin, pEvents, count, filter, grab, mskidx) tempGrab.pointerMode = GrabModeAsync; tempGrab.confineTo = NullWindow; tempGrab.cursor = NullCursor; + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "DeliverEventsToWindow: Activating passive grab on pointer.\n"); + } + #endif (*inputInfo.pointer->ActivateGrab)(inputInfo.pointer, &tempGrab, currentTime, TRUE); } @@ -1802,8 +1880,11 @@ DeliverEventsToWindow(pWin, pEvents, count, filter, grab, mskidx) #ifdef XINPUT else { - if (((type == DeviceMotionNotify) || (type == DeviceButtonPress)) && - deliveries) + if (((type == DeviceMotionNotify) +#ifdef XKB + || (type == DeviceButtonPress) +#endif + ) && deliveries) CheckDeviceGrabAndHintWindow (pWin, type, (deviceKeyButtonPointer*) pEvents, grab, client, deliveryMask); @@ -1838,12 +1919,8 @@ XineramaTryClientEventsResult( #endif int -MaybeDeliverEventsToClient(pWin, pEvents, count, filter, dontClient) - register WindowPtr pWin; - xEvent *pEvents; - int count; - Mask filter; - ClientPtr dontClient; +MaybeDeliverEventsToClient(register WindowPtr pWin, xEvent *pEvents, + int count, Mask filter, ClientPtr dontClient) { register OtherClients *other; @@ -1879,19 +1956,11 @@ MaybeDeliverEventsToClient(pWin, pEvents, count, filter, dontClient) } static void -#if NeedFunctionPrototypes FixUpEventFromWindow( xEvent *xE, WindowPtr pWin, Window child, Bool calcChild) -#else -FixUpEventFromWindow(xE, pWin, child, calcChild) - xEvent *xE; - WindowPtr pWin; - Window child; - Bool calcChild; -#endif { if (calcChild) { @@ -1941,12 +2010,8 @@ FixUpEventFromWindow(xE, pWin, child, calcChild) } int -DeliverDeviceEvents(pWin, xE, grab, stopAt, dev, count) - register WindowPtr pWin, stopAt; - register xEvent *xE; - GrabPtr grab; - DeviceIntPtr dev; - int count; +DeliverDeviceEvents(register WindowPtr pWin, register xEvent *xE, GrabPtr grab, + register WindowPtr stopAt, DeviceIntPtr dev, int count) { Window child = None; int type = xE->u.u.type; @@ -2009,10 +2074,8 @@ DeliverDeviceEvents(pWin, xE, grab, stopAt, dev, count) /* not useful for events that propagate up the tree or extension events */ int -DeliverEvents(pWin, xE, count, otherParent) - register WindowPtr pWin, otherParent; - register xEvent *xE; - int count; +DeliverEvents(register WindowPtr pWin, register xEvent *xE, int count, + register WindowPtr otherParent) { Mask filter; int deliveries; @@ -2075,14 +2138,10 @@ PointInBorderSize(WindowPtr pWin, int x, int y) } static WindowPtr -#if NeedFunctionPrototypes XYToWindow(int x, int y) -#else -XYToWindow(x, y) - int x, y; -#endif { register WindowPtr pWin; + BoxRec box; spriteTraceGood = 1; /* root window still there */ @@ -2108,20 +2167,25 @@ XYToWindow(x, y) while (pWin) { if ((pWin->mapped) && - (x >= pWin->drawable.x - wBorderWidth (pWin)) && - (x < pWin->drawable.x + (int)pWin->drawable.width + - wBorderWidth(pWin)) && - (y >= pWin->drawable.y - wBorderWidth (pWin)) && - (y < pWin->drawable.y + (int)pWin->drawable.height + - wBorderWidth (pWin)) + (x >= pWin->drawable.x - wBorderWidth (pWin)) && + (x < pWin->drawable.x + (int)pWin->drawable.width + + wBorderWidth(pWin)) && + (y >= pWin->drawable.y - wBorderWidth (pWin)) && + (y < pWin->drawable.y + (int)pWin->drawable.height + + wBorderWidth (pWin)) #ifdef SHAPE - /* When a window is shaped, a further check - * is made to see if the point is inside - * borderSize - */ - && (!wBoundingShape(pWin) || PointInBorderSize(pWin, x, y)) + /* When a window is shaped, a further check + * is made to see if the point is inside + * borderSize + */ + && (!wBoundingShape(pWin) || PointInBorderSize(pWin, x, y)) + && (!wInputShape(pWin) || + POINT_IN_REGION(pWin->drawable.pScreen, + wInputShape(pWin), + x - pWin->drawable.x, + y - pWin->drawable.y, &box)) #endif - ) + ) { if (spriteTraceGood >= spriteTraceSize) { @@ -2141,12 +2205,7 @@ XYToWindow(x, y) } static Bool -#if NeedFunctionPrototypes CheckMotion(xEvent *xE) -#else -CheckMotion(xE) - xEvent *xE; -#endif { WindowPtr prevSpriteWin = sprite.win; @@ -2162,15 +2221,33 @@ CheckMotion(xE) sprite.hot.pScreen = sprite.hotPhys.pScreen; ROOT = WindowTable[sprite.hot.pScreen->myNum]; } +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = XE_KBPTR.rootX; +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = XE_KBPTR.rootY; if (sprite.hot.x < sprite.physLimits.x1) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = sprite.physLimits.x1; else if (sprite.hot.x >= sprite.physLimits.x2) +#ifdef XEVIE + xeviehot.x = +#endif sprite.hot.x = sprite.physLimits.x2 - 1; if (sprite.hot.y < sprite.physLimits.y1) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = sprite.physLimits.y1; else if (sprite.hot.y >= sprite.physLimits.y2) +#ifdef XEVIE + xeviehot.y = +#endif sprite.hot.y = sprite.physLimits.y2 - 1; #ifdef SHAPE if (sprite.hotShape) @@ -2197,6 +2274,9 @@ CheckMotion(xE) XE_KBPTR.rootY = sprite.hot.y; } +#ifdef XEVIE + xeviewin = +#endif sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y); #ifdef notyet if (!(sprite.win->deliverableEvents & @@ -2225,13 +2305,54 @@ WindowsRestructured() (void) CheckMotion((xEvent *)NULL); } +#ifdef PANORAMIX +/* This was added to support reconfiguration under Xdmx. The problem is + * that if the 0th screen (i.e., WindowTable[0]) is moved to an origin + * other than 0,0, the information in the private sprite structure must + * be updated accordingly, or XYToWindow (and other routines) will not + * compute correctly. */ +void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff) +{ + ScreenPtr pScreen = win->drawable.pScreen; + GrabPtr grab; + + if (noPanoramiXExtension) return; + + sprite.hot.x -= xoff; + sprite.hot.y -= yoff; + + sprite.hotPhys.x -= xoff; + sprite.hotPhys.y -= yoff; + + sprite.hotLimits.x1 -= xoff; + sprite.hotLimits.y1 -= yoff; + sprite.hotLimits.x2 -= xoff; + sprite.hotLimits.y2 -= yoff; + + if (REGION_NOTEMPTY(sprite.screen, &sprite.Reg1)) + REGION_TRANSLATE(sprite.screen, &sprite.Reg1, xoff, yoff); + if (REGION_NOTEMPTY(sprite.screen, &sprite.Reg2)) + REGION_TRANSLATE(sprite.screen, &sprite.Reg2, xoff, yoff); + + /* FIXME: if we call ConfineCursorToWindow, must we do anything else? */ + if ((grab = inputInfo.pointer->grab) && grab->confineTo) { + if (grab->confineTo->drawable.pScreen != sprite.hotPhys.pScreen) + sprite.hotPhys.x = sprite.hotPhys.y = 0; + ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); + } else + ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], + TRUE, FALSE); +} +#endif + void -DefineInitialRootWindow(win) - register WindowPtr win; +DefineInitialRootWindow(register WindowPtr win) { register ScreenPtr pScreen = win->drawable.pScreen; + #ifdef VIEWPORT_FRAME extern void nxagentInitViewportFrame(ScreenPtr, WindowPtr); - extern int nxagentShadowInit(ScreenPtr, WindowPtr); + #endif + extern int nxagentShadowInit(ScreenPtr, WindowPtr); sprite.hotPhys.pScreen = pScreen; sprite.hotPhys.x = pScreen->width / 2; @@ -2239,8 +2360,12 @@ DefineInitialRootWindow(win) sprite.hot = sprite.hotPhys; sprite.hotLimits.x2 = pScreen->width; sprite.hotLimits.y2 = pScreen->height; +#ifdef XEVIE + xeviewin = +#endif sprite.win = win; sprite.current = wCursor (win); + sprite.current->refcnt++; spriteTraceGood = 1; ROOT = win; (*pScreen->CursorLimits) ( @@ -2258,20 +2383,25 @@ DefineInitialRootWindow(win) sprite.hotLimits.y2 = PanoramiXPixHeight - panoramiXdataPtr[0].y; sprite.physLimits = sprite.hotLimits; sprite.confineWin = NullWindow; +#ifdef SHAPE + sprite.hotShape = NullRegion; +#endif sprite.screen = pScreen; /* gotta UNINIT these someplace */ - REGION_INIT(pScreen, &sprite.Reg1, NullBox, 1); - REGION_INIT(pScreen, &sprite.Reg2, NullBox, 1); + REGION_NULL(pScreen, &sprite.Reg1); + REGION_NULL(pScreen, &sprite.Reg2); } #endif + #ifdef VIEWPORT_FRAME nxagentInitViewportFrame(pScreen, win); + #endif if (nxagentOption(Shadow)) { if (nxagentShadowInit(pScreen, win) == -1) { - GiveUp(0); + FatalError("Failed to connect to display '%s'", nxagentShadowDisplayName); } } } @@ -2283,18 +2413,14 @@ DefineInitialRootWindow(win) * between the one the pointer is in and the one that the last cursor was * instantiated from. */ -/*ARGSUSED*/ void -WindowHasNewCursor(pWin) - WindowPtr pWin; +WindowHasNewCursor(WindowPtr pWin) { PostNewCursor(); } void -NewCurrentScreen(newScreen, x, y) - ScreenPtr newScreen; - int x,y; +NewCurrentScreen(ScreenPtr newScreen, int x, int y) { sprite.hotPhys.x = x; sprite.hotPhys.y = y; @@ -2355,7 +2481,12 @@ XineramaPointInWindowIsVisible( x = xoff - panoramiXdataPtr[i].x; y = yoff - panoramiXdataPtr[i].y; - if(POINT_IN_REGION(pScreen, &pWin->borderClip, x, y, &box)) + if(POINT_IN_REGION(pScreen, &pWin->borderClip, x, y, &box) + && (!wInputShape(pWin) || + POINT_IN_REGION(pWin->drawable.pScreen, + wInputShape(pWin), + x - pWin->drawable.x, + y - pWin->drawable.y, &box))) return TRUE; } @@ -2437,8 +2568,7 @@ XineramaWarpPointer(ClientPtr client) int -ProcWarpPointer(client) - ClientPtr client; +ProcWarpPointer(ClientPtr client) { WindowPtr dest = NULL; int x, y; @@ -2549,19 +2679,11 @@ BorderSizeNotEmpty(WindowPtr pWin) passive grab set on the window to be activated. */ static Bool -#if NeedFunctionPrototypes CheckPassiveGrabsOnWindow( WindowPtr pWin, register DeviceIntPtr device, register xEvent *xE, int count) -#else -CheckPassiveGrabsOnWindow(pWin, device, xE, count) - WindowPtr pWin; - register DeviceIntPtr device; - register xEvent *xE; - int count; -#endif { register GrabPtr grab = wPassiveGrabs(pWin); GrabRec tempGrab; @@ -2585,10 +2707,10 @@ CheckPassiveGrabsOnWindow(pWin, device, xE, count) xkbi= gdev->key->xkbInfo; #endif tempGrab.modifierDevice = grab->modifierDevice; - if (device == grab->modifierDevice && - (xE->u.u.type == KeyPress -#ifdef XINPUT - || xE->u.u.type == DeviceKeyPress + if ((device == grab->modifierDevice) && + ((xE->u.u.type == KeyPress) +#if defined(XINPUT) && defined(XKB) + || (xE->u.u.type == DeviceKeyPress) #endif )) tempGrab.modifiersDetail.exact = @@ -2620,6 +2742,13 @@ CheckPassiveGrabsOnWindow(pWin, device, xE, count) tempGrab.modifiersDetail.exact&(~0x1f00); } #endif + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "CheckPassiveGrabsOnWindow: Activating passive grab on %s.\n", + device == inputInfo.keyboard ? "keyboard" : "pointer"); + } + #endif (*device->ActivateGrab)(device, grab, currentTime, TRUE); FixUpEventFromWindow(xE, grab->window, None, TRUE); @@ -2649,7 +2778,7 @@ CheckPassiveGrabsOnWindow(pWin, device, xE, count) return FALSE; } -/* +/** "CheckDeviceGrabs" handles both keyboard and pointer events that may cause a passive grab to be activated. If the event is a keyboard event, the ancestors of the focus window are traced down and tried to see if they have @@ -2663,21 +2792,18 @@ tried. PRH */ Bool -CheckDeviceGrabs(device, xE, checkFirst, count) - register DeviceIntPtr device; - register xEvent *xE; - int checkFirst; - int count; +CheckDeviceGrabs(register DeviceIntPtr device, register xEvent *xE, + int checkFirst, int count) { register int i; register WindowPtr pWin = NULL; register FocusClassPtr focus = device->focus; - if ((xE->u.u.type == ButtonPress -#ifdef XINPUT - || xE->u.u.type == DeviceButtonPress + if (((xE->u.u.type == ButtonPress) +#if defined(XINPUT) && defined(XKB) + || (xE->u.u.type == DeviceButtonPress) #endif - ) && device->button->buttonsDown != 1) + ) && (device->button->buttonsDown != 1)) return FALSE; i = checkFirst; @@ -2710,11 +2836,7 @@ CheckDeviceGrabs(device, xE, checkFirst, count) } void -DeliverFocusedEvent(keybd, xE, window, count) - xEvent *xE; - DeviceIntPtr keybd; - WindowPtr window; - int count; +DeliverFocusedEvent(DeviceIntPtr keybd, xEvent *xE, WindowPtr window, int count) { WindowPtr focus = keybd->focus->win; int mskidx = 0; @@ -2742,11 +2864,8 @@ DeliverFocusedEvent(keybd, xE, window, count) } void -DeliverGrabbedEvent(xE, thisDev, deactivateGrab, count) - register xEvent *xE; - register DeviceIntPtr thisDev; - Bool deactivateGrab; - int count; +DeliverGrabbedEvent(register xEvent *xE, register DeviceIntPtr thisDev, + Bool deactivateGrab, int count) { register GrabPtr grab = thisDev->grab; int deliveries = 0; @@ -2828,13 +2947,10 @@ DeliverGrabbedEvent(xE, thisDev, deactivateGrab, count) void #ifdef XKB -CoreProcessKeyboardEvent (xE, keybd, count) +CoreProcessKeyboardEvent (register xEvent *xE, register DeviceIntPtr keybd, int count) #else -ProcessKeyboardEvent (xE, keybd, count) +ProcessKeyboardEvent (register xEvent *xE, register DeviceIntPtr keybd, int count) #endif - register xEvent *xE; - register DeviceIntPtr keybd; - int count; { int key, bit; register BYTE *kptr; @@ -2844,6 +2960,45 @@ ProcessKeyboardEvent (xE, keybd, count) GrabPtr grab = keybd->grab; Bool deactivateGrab = FALSE; register KeyClassPtr keyc = keybd->key; +#ifdef XEVIE + static Window rootWin = 0; + + if(!xeviegrabState && xevieFlag && clients[xevieClientIndex] && + (xevieMask & xevieFilters[xE->u.u.type])) { + key = xE->u.u.detail; + kptr = &keyc->down[key >> 3]; + bit = 1 << (key & 7); + if((xE->u.u.type == KeyPress && (*kptr & bit)) || + (xE->u.u.type == KeyRelease && !(*kptr & bit))) + {} else { +#ifdef XKB + if(!noXkbExtension) + xevieKBEventSent = 1; +#endif + if(!xevieKBEventSent) + { + xeviekb = keybd; + if(!rootWin) { + rootWin = GetCurrentRootWindow()->drawable.id; + } + xE->u.keyButtonPointer.event = xeviewin->drawable.id; + xE->u.keyButtonPointer.root = rootWin; + xE->u.keyButtonPointer.child = (xeviewin->firstChild) ? xeviewin->firstChild-> +drawable.id:0; + xE->u.keyButtonPointer.rootX = xeviehot.x; + xE->u.keyButtonPointer.rootY = xeviehot.y; + xE->u.keyButtonPointer.state = keyc->state; + WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE); +#ifdef XKB + if(noXkbExtension) +#endif + return; + } else { + xevieKBEventSent = 0; + } + } + } +#endif if (!syncEvents.playingEvents) { @@ -2856,6 +3011,15 @@ ProcessKeyboardEvent (xE, keybd, count) CallCallbacks(&DeviceEventCallback, (pointer)&eventinfo); } } +#ifdef XEVIE + /* fix for bug5094030: don't change the state bit if the event is from XEvIE client */ + if(!(!xeviegrabState && xevieFlag && clients[xevieClientIndex] && + (xevieMask & xevieFilters[xE->u.u.type] +#ifdef XKB + && !noXkbExtension +#endif + ))) +#endif XE_KBPTR.state = (keyc->state | inputInfo.pointer->button->state); XE_KBPTR.rootX = sprite.hot.x; XE_KBPTR.rootY = sprite.hot.y; @@ -2863,6 +3027,17 @@ ProcessKeyboardEvent (xE, keybd, count) kptr = &keyc->down[key >> 3]; bit = 1 << (key & 7); modifiers = keyc->modifierMap[key]; +#if defined(XKB) && defined(XEVIE) + if(!noXkbExtension && !xeviegrabState && + xevieFlag && clients[xevieClientIndex] && + (xevieMask & xevieFilters[xE->u.u.type])) { + switch(xE->u.u.type) { + case KeyPress: *kptr &= ~bit; break; + case KeyRelease: *kptr |= bit; break; + } + } +#endif + #ifdef DEBUG if ((xkbDebugFlags&0x4)&& ((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))) { @@ -2932,7 +3107,17 @@ ProcessKeyboardEvent (xE, keybd, count) else DeliverFocusedEvent(keybd, xE, sprite.win, count); if (deactivateGrab) + #ifdef NX_DEBUG_INPUT + { + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcessKeyboardEvent: Deactivating grab on keyboard.\n"); + } + #endif (*keybd->DeactivateGrab)(keybd); + #ifdef NX_DEBUG_INPUT + } + #endif } #ifdef XKB @@ -2941,9 +3126,7 @@ ProcessKeyboardEvent (xE, keybd, count) CoreProcessKeyEvent to be called, as in for example Mouse Keys. */ void -FixKeyState (xE, keybd) - register xEvent *xE; - register DeviceIntPtr keybd; +FixKeyState (register xEvent *xE, register DeviceIntPtr keybd) { int key, bit; register BYTE *kptr; @@ -2975,13 +3158,10 @@ FixKeyState (xE, keybd) void #ifdef XKB -CoreProcessPointerEvent (xE, mouse, count) +CoreProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count) #else -ProcessPointerEvent (xE, mouse, count) +ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count) #endif - register xEvent *xE; - register DeviceIntPtr mouse; - int count; { register GrabPtr grab = mouse->grab; Bool deactivateGrab = FALSE; @@ -2991,6 +3171,24 @@ ProcessPointerEvent (xE, mouse, count) xkbi = inputInfo.keyboard->key->xkbInfo; #endif +#ifdef XEVIE + if(xevieFlag && clients[xevieClientIndex] && !xeviegrabState && + (xevieMask & xevieFilters[xE->u.u.type])) { + if(xevieEventSent) + xevieEventSent = 0; + else { + xeviemouse = mouse; + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInput == 1) + { + fprintf(stderr, "ProcessPointerEvent: Going to send XEVIE event.\n"); + } + #endif + WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE); + return; + } + } +#endif if (!syncEvents.playingEvents) NoticeTime(xE) @@ -3040,14 +3238,38 @@ ProcessPointerEvent (xE, mouse, count) #if !defined(XFree86Server) || !defined(XINPUT) xE->u.u.detail = butc->map[key]; #endif + #ifdef NX_DEBUG_INPUT if (xE->u.u.detail == 0) + { + if (nxagentDebugInput == 1) + { + fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0" + " for ButtonPress.\n"); + } return; + } + #else + if (xE->u.u.detail == 0) + return; + #endif if (xE->u.u.detail <= 5) butc->state |= (Button1Mask >> 1) << xE->u.u.detail; filters[MotionNotify] = Motion_Filter(butc); if (!grab) + #ifdef NX_DEBUG_INPUT + if (CheckDeviceGrabs(mouse, xE, 0, count)) + { + if (nxagentDebugInput == 1) + { + fprintf(stderr, "ProcessPointerEvent: CheckDeviceGrabs" + " returned True for ButtonPress.\n"); + } + return; + } + #else if (CheckDeviceGrabs(mouse, xE, 0, count)) return; + #endif break; case ButtonRelease: mouse->valuator->motionHintWindow = NullWindow; @@ -3059,8 +3281,20 @@ ProcessPointerEvent (xE, mouse, count) #if !defined(XFree86Server) || !defined(XINPUT) xE->u.u.detail = butc->map[key]; #endif + #ifdef NX_DEBUG_INPUT + if (xE->u.u.detail == 0) + { + if (nxagentDebugInput == 1) + { + fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0" + " for ButtonRelease.\n"); + } + return; + } + #else if (xE->u.u.detail == 0) return; + #endif if (xE->u.u.detail <= 5) butc->state &= ~((Button1Mask >> 1) << xE->u.u.detail); filters[MotionNotify] = Motion_Filter(butc); @@ -3071,6 +3305,36 @@ ProcessPointerEvent (xE, mouse, count) FatalError("bogus pointer event from ddx"); } } + #ifdef NX_DEBUG_INPUT + else if (!CheckMotion(xE)) + { + if (nxagentDebugInput == 1) + { + fprintf(stderr, "ProcessPointerEvent: CheckMotion returned False" + " for MotionNotify.\n"); + } + return; + } + if (grab) + { + if (nxagentDebugInput == 1) + { + fprintf(stderr, "ProcessPointerEvent: Going to deliver grabbed " + "events (count = %d).\n", count); + } + DeliverGrabbedEvent(xE, mouse, deactivateGrab, count); + } + else + { + if (nxagentDebugInput == 1) + { + fprintf(stderr, "ProcessPointerEvent: Going to deliver device " + "events (count = %d).\n", count); + } + DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow, + mouse, count); + } + #else else if (!CheckMotion(xE)) return; if (grab) @@ -3078,8 +3342,19 @@ ProcessPointerEvent (xE, mouse, count) else DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow, mouse, count); + #endif if (deactivateGrab) + #ifdef NX_DEBUG_INPUT + { + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcessPointerEvent: Deactivating grab on pointer.\n"); + } + #endif (*mouse->DeactivateGrab)(mouse); + #ifdef NX_DEBUG_INPUT + } + #endif } #define AtMostOneClient \ @@ -3122,10 +3397,12 @@ RecalculateDeliverableEvents(pWin) } } +/** + * + * \param value must conform to DeleteType + */ int -OtherClientGone(value, id) - pointer value; /* must conform to DeleteType */ - XID id; +OtherClientGone(pointer value, XID id) { register OtherClientsPtr other, prev; register WindowPtr pWin = (WindowPtr)value; @@ -3154,10 +3431,7 @@ OtherClientGone(value, id) } int -EventSelectForWindow(pWin, client, mask) - register WindowPtr pWin; - register ClientPtr client; - Mask mask; +EventSelectForWindow(register WindowPtr pWin, register ClientPtr client, Mask mask) { Mask check; OtherClients * others; @@ -3236,13 +3510,9 @@ maskSet: return Success; } -/*ARGSUSED*/ int -EventSuppressForWindow(pWin, client, mask, checkOptional) - register WindowPtr pWin; - register ClientPtr client; - Mask mask; - Bool *checkOptional; +EventSuppressForWindow(register WindowPtr pWin, register ClientPtr client, + Mask mask, Bool *checkOptional) { register int i, free; @@ -3297,14 +3567,9 @@ EventSuppressForWindow(pWin, client, mask, checkOptional) } static WindowPtr -#if NeedFunctionPrototypes CommonAncestor( register WindowPtr a, register WindowPtr b) -#else -CommonAncestor(a, b) - register WindowPtr a, b; -#endif { for (b = b->parent; b; b = b->parent) if (IsParent(b, a)) return b; @@ -3312,19 +3577,12 @@ CommonAncestor(a, b) } static void -#if NeedFunctionPrototypes EnterLeaveEvent( int type, int mode, int detail, register WindowPtr pWin, Window child) -#else -EnterLeaveEvent(type, mode, detail, pWin, child) - int type, mode, detail; - register WindowPtr pWin; - Window child; -#endif { xEvent event; register DeviceIntPtr keybd = inputInfo.keyboard; @@ -3405,13 +3663,7 @@ EnterLeaveEvent(type, mode, detail, pWin, child) } static void -#if NeedFunctionPrototypes EnterNotifies(WindowPtr ancestor, WindowPtr child, int mode, int detail) -#else -EnterNotifies(ancestor, child, mode, detail) - WindowPtr ancestor, child; - int mode, detail; -#endif { WindowPtr parent = child->parent; @@ -3422,13 +3674,7 @@ EnterNotifies(ancestor, child, mode, detail) } static void -#if NeedFunctionPrototypes LeaveNotifies(WindowPtr child, WindowPtr ancestor, int mode, int detail) -#else -LeaveNotifies(child, ancestor, mode, detail) - WindowPtr child, ancestor; - int detail, mode; -#endif { register WindowPtr pWin; @@ -3442,13 +3688,7 @@ LeaveNotifies(child, ancestor, mode, detail) } static void -#if NeedFunctionPrototypes DoEnterLeaveEvents(WindowPtr fromWin, WindowPtr toWin, int mode) -#else -DoEnterLeaveEvents(fromWin, toWin, mode) - WindowPtr fromWin, toWin; - int mode; -#endif { if (fromWin == toWin) return; @@ -3476,14 +3716,7 @@ DoEnterLeaveEvents(fromWin, toWin, mode) } static void -#if NeedFunctionPrototypes FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, register WindowPtr pWin) -#else -FocusEvent(dev, type, mode, detail, pWin) - DeviceIntPtr dev; - int type, mode, detail; - register WindowPtr pWin; -#endif { xEvent event; @@ -3524,19 +3757,11 @@ FocusEvent(dev, type, mode, detail, pWin) * no-op if child not descended from ancestor */ static Bool -#if NeedFunctionPrototypes FocusInEvents( DeviceIntPtr dev, WindowPtr ancestor, WindowPtr child, WindowPtr skipChild, int mode, int detail, Bool doAncestor) -#else -FocusInEvents(dev, ancestor, child, skipChild, mode, detail, doAncestor) - DeviceIntPtr dev; - WindowPtr ancestor, child, skipChild; - int mode, detail; - Bool doAncestor; -#endif { if (child == NullWindow) return ancestor == NullWindow; @@ -3558,20 +3783,11 @@ FocusInEvents(dev, ancestor, child, skipChild, mode, detail, doAncestor) /* dies horribly if ancestor is not an ancestor of child */ static void -#if NeedFunctionPrototypes FocusOutEvents( DeviceIntPtr dev, WindowPtr child, WindowPtr ancestor, int mode, int detail, Bool doAncestor) -#else -FocusOutEvents(dev, child, ancestor, mode, detail, doAncestor) - DeviceIntPtr dev; - WindowPtr child, ancestor; - int mode; - int detail; - Bool doAncestor; -#endif { register WindowPtr pWin; @@ -3582,10 +3798,7 @@ FocusOutEvents(dev, child, ancestor, mode, detail, doAncestor) } void -DoFocusEvents(dev, fromWin, toWin, mode) - DeviceIntPtr dev; - WindowPtr fromWin, toWin; - int mode; +DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) { int out, in; /* for holding details for to/from PointerRoot/None */ @@ -3711,7 +3924,6 @@ DoFocusEvents(dev, fromWin, toWin, mode) } int -#if NeedFunctionPrototypes SetInputFocus( ClientPtr client, DeviceIntPtr dev, @@ -3719,15 +3931,6 @@ SetInputFocus( CARD8 revertTo, Time ctime, Bool followOK) -#else -SetInputFocus(client, dev, focusID, revertTo, ctime, followOK) - ClientPtr client; - DeviceIntPtr dev; - Window focusID; - CARD8 revertTo; - Time ctime; - Bool followOK; -#endif { register FocusClassPtr focus; register WindowPtr focusWin; @@ -3814,8 +4017,7 @@ ProcSetInputFocus(client) } int -ProcGetInputFocus(client) - ClientPtr client; +ProcGetInputFocus(ClientPtr client) { xGetInputFocusReply rep; /* REQUEST(xReq); */ @@ -3836,8 +4038,7 @@ ProcGetInputFocus(client) } int -ProcGrabPointer(client) - ClientPtr client; +ProcGrabPointer(ClientPtr client) { xGrabPointerReply rep; DeviceIntPtr device = inputInfo.pointer; @@ -3874,6 +4075,12 @@ ProcGrabPointer(client) pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess); if (!pWin) return BadWindow; + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcGrabPointer: pWin [%p] client [%d].\n", pWin, client -> index); + } + #endif if (stuff->confineTo == None) confineTo = NullWindow; else @@ -3933,6 +4140,12 @@ ProcGrabPointer(client) tempGrab.keyboardMode = stuff->keyboardMode; tempGrab.pointerMode = stuff->pointerMode; tempGrab.device = device; + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcGrabPointer: Activating active grab on pointer.\n"); + } + #endif (*device->ActivateGrab)(device, &tempGrab, time, FALSE); if (oldCursor) FreeCursor (oldCursor, (Cursor)0); @@ -3943,8 +4156,7 @@ ProcGrabPointer(client) } int -ProcChangeActivePointerGrab(client) - ClientPtr client; +ProcChangeActivePointerGrab(ClientPtr client) { DeviceIntPtr device = inputInfo.pointer; register GrabPtr grab = device->grab; @@ -3990,14 +4202,19 @@ ProcChangeActivePointerGrab(client) } int -ProcUngrabPointer(client) - ClientPtr client; +ProcUngrabPointer(ClientPtr client) { DeviceIntPtr device = inputInfo.pointer; GrabPtr grab; TimeStamp time; REQUEST(xResourceReq); + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcUngrabPointer: client [%d].\n", client -> index); + } + #endif REQUEST_SIZE_MATCH(xResourceReq); UpdateCurrentTime(); grab = device->grab; @@ -4005,22 +4222,32 @@ ProcUngrabPointer(client) if ((CompareTimeStamps(time, currentTime) != LATER) && (CompareTimeStamps(time, device->grabTime) != EARLIER) && (grab) && SameClient(grab, client)) + #ifdef NX_DEBUG_INPUT + { + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcUngrabPointer: Deactivating grab on pointer.\n"); + } + #endif (*device->DeactivateGrab)(device); + #ifdef NX_DEBUG_INPUT + } + else + { + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcUngrabPointer: current time [%lu] request time [%lu] grab time [%lu].\n", + currentTime.milliseconds, time.milliseconds, device->grabTime.milliseconds); + } + } + #endif return Success; } int -GrabDevice(client, dev, this_mode, other_mode, grabWindow, ownerEvents, ctime, - mask, status) - register ClientPtr client; - register DeviceIntPtr dev; - unsigned this_mode; - unsigned other_mode; - Window grabWindow; - unsigned ownerEvents; - Time ctime; - Mask mask; - CARD8 *status; +GrabDevice(register ClientPtr client, register DeviceIntPtr dev, + unsigned this_mode, unsigned other_mode, Window grabWindow, + unsigned ownerEvents, Time ctime, Mask mask, CARD8 *status) { register WindowPtr pWin; register GrabPtr grab; @@ -4068,6 +4295,12 @@ GrabDevice(client, dev, this_mode, other_mode, grabWindow, ownerEvents, ctime, tempGrab.pointerMode = other_mode; tempGrab.eventMask = mask; tempGrab.device = dev; + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "GrabDevice: Activating active grab on keyboard.\n"); + } + #endif (*dev->ActivateGrab)(dev, &tempGrab, time, FALSE); *status = GrabSuccess; } @@ -4075,13 +4308,18 @@ GrabDevice(client, dev, this_mode, other_mode, grabWindow, ownerEvents, ctime, } int -ProcGrabKeyboard(client) - ClientPtr client; +ProcGrabKeyboard(ClientPtr client) { xGrabKeyboardReply rep; REQUEST(xGrabKeyboardReq); int result; + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcGrabKeyboard: client [%d].\n", client -> index); + } + #endif REQUEST_SIZE_MATCH(xGrabKeyboardReq); #ifdef XCSECURITY if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE)) @@ -4105,14 +4343,19 @@ ProcGrabKeyboard(client) } int -ProcUngrabKeyboard(client) - ClientPtr client; +ProcUngrabKeyboard(ClientPtr client) { DeviceIntPtr device = inputInfo.keyboard; GrabPtr grab; TimeStamp time; REQUEST(xResourceReq); + #ifdef NX_DEBUG_INPUT + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcUngrabKeyboard: client [%d].\n", client -> index); + } + #endif REQUEST_SIZE_MATCH(xResourceReq); UpdateCurrentTime(); grab = device->grab; @@ -4120,13 +4363,30 @@ ProcUngrabKeyboard(client) if ((CompareTimeStamps(time, currentTime) != LATER) && (CompareTimeStamps(time, device->grabTime) != EARLIER) && (grab) && SameClient(grab, client)) + #ifdef NX_DEBUG_INPUT + { + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcUngrabKeyboard: Deactivating grab on keyboard.\n"); + } + #endif (*device->DeactivateGrab)(device); + #ifdef NX_DEBUG_INPUT + } + else + { + if (nxagentDebugInputDevices == 1) + { + fprintf(stderr, "ProcUngrabKeyboard: current time [%lu] request time [%lu] grab time [%lu].\n", + currentTime.milliseconds, time.milliseconds, device->grabTime.milliseconds); + } + } + #endif return Success; } int -ProcQueryPointer(client) - ClientPtr client; +ProcQueryPointer(ClientPtr client) { xQueryPointerReply rep; WindowPtr pWin, t; @@ -4203,6 +4463,9 @@ InitEvents() spriteTraceGood = 0; lastEventMask = OwnerGrabButtonMask; filters[MotionNotify] = PointerMotionMask; +#ifdef XEVIE + xeviewin = +#endif sprite.win = NullWindow; sprite.current = NullCursor; sprite.hotLimits.x1 = 0; @@ -4241,8 +4504,7 @@ CloseDownEvents(void) } int -ProcSendEvent(client) - ClientPtr client; +ProcSendEvent(ClientPtr client) { WindowPtr pWin; WindowPtr effectiveFocus = NullWindow; /* only set if dest==InputFocus */ @@ -4341,8 +4603,7 @@ ProcSendEvent(client) } int -ProcUngrabKey(client) - ClientPtr client; +ProcUngrabKey(ClientPtr client) { REQUEST(xUngrabKeyReq); WindowPtr pWin; @@ -4383,8 +4644,7 @@ ProcUngrabKey(client) } int -ProcGrabKey(client) - ClientPtr client; +ProcGrabKey(ClientPtr client) { WindowPtr pWin; REQUEST(xGrabKeyReq); @@ -4438,8 +4698,7 @@ ProcGrabKey(client) int -ProcGrabButton(client) - ClientPtr client; +ProcGrabButton(ClientPtr client) { WindowPtr pWin, confineTo; REQUEST(xGrabButtonReq); @@ -4513,8 +4772,7 @@ ProcGrabButton(client) } int -ProcUngrabButton(client) - ClientPtr client; +ProcUngrabButton(ClientPtr client) { REQUEST(xUngrabButtonReq); WindowPtr pWin; @@ -4546,9 +4804,7 @@ ProcUngrabButton(client) } void -DeleteWindowFromAnyEvents(pWin, freeResources) - WindowPtr pWin; - Bool freeResources; +DeleteWindowFromAnyEvents(WindowPtr pWin, Bool freeResources) { WindowPtr parent; DeviceIntPtr mouse = inputInfo.pointer; @@ -4635,12 +4891,11 @@ DeleteWindowFromAnyEvents(pWin, freeResources) #endif } -/* Call this whenever some window at or below pWin has changed geometry */ - -/*ARGSUSED*/ +/** + * Call this whenever some window at or below pWin has changed geometry + */ void -CheckCursorConfinement(pWin) - WindowPtr pWin; +CheckCursorConfinement(WindowPtr pWin) { GrabPtr grab = inputInfo.pointer->grab; WindowPtr confineTo; @@ -4659,9 +4914,7 @@ CheckCursorConfinement(pWin) } Mask -EventMaskForClient(pWin, client) - WindowPtr pWin; - ClientPtr client; +EventMaskForClient(WindowPtr pWin, ClientPtr client) { register OtherClientsPtr other; @@ -4676,8 +4929,7 @@ EventMaskForClient(pWin, client) } int -ProcRecolorCursor(client) - ClientPtr client; +ProcRecolorCursor(ClientPtr client) { CursorPtr pCursor; int nscr; @@ -4718,10 +4970,7 @@ ProcRecolorCursor(client) } void -WriteEventsToClient(pClient, count, events) - ClientPtr pClient; - int count; - xEvent *events; +WriteEventsToClient(ClientPtr pClient, int count, xEvent *events) { #ifdef PANORAMIX xEvent eventCopy; @@ -4793,5 +5042,3 @@ WriteEventsToClient(pClient, count, events) (void)WriteToClient(pClient, count * sizeof(xEvent), (char *) events); } } - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXextension.c b/nx-X11/programs/Xserver/hw/nxagent/NXextension.c index 1d86bf8..ead9b9d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXextension.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXextension.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXextension.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -21,7 +15,7 @@ /* */ /**************************************************************************/ -/* $XFree86: xc/programs/Xserver/dix/extension.c,v 3.12 2002/02/19 11:09:22 alanh Exp $ */ +/* $XFree86: xc/programs/Xserver/dix/extension.c,v 3.11 2001/12/14 19:59:31 dawes Exp $ */ /*********************************************************** Copyright 1987, 1998 The Open Group @@ -70,10 +64,14 @@ SOFTWARE. ******************************************************************/ /* $Xorg: extension.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ -#include "X.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> #define NEED_EVENTS #define NEED_REPLIES -#include "Xproto.h" +#include <X11/Xproto.h> #include "misc.h" #include "dixstruct.h" #include "extnsionst.h" @@ -82,7 +80,7 @@ SOFTWARE. #include "../../dix/dispatch.h" #ifdef XCSECURITY #define _SECURITY_SERVER -#include "security.h" +#include <X11/extensions/security.h> #endif #ifdef LBX #include "lbxserve.h" @@ -181,9 +179,7 @@ AddExtension(char *name, int NumEvents, int NumErrors, return(ext); } -Bool AddExtensionAlias(alias, ext) - char *alias; - ExtensionEntry *ext; +Bool AddExtensionAlias(char *alias, ExtensionEntry *ext) { char *name; char **aliases; @@ -244,9 +240,7 @@ CheckExtension(const char *extname) } void -DeclareExtensionSecurity(extname, secure) - char *extname; - Bool secure; +DeclareExtensionSecurity(char *extname, Bool secure) { #ifdef XCSECURITY int i = FindExtension(extname, strlen(extname)); @@ -272,15 +266,13 @@ DeclareExtensionSecurity(extname, secure) } unsigned short -StandardMinorOpcode(client) - ClientPtr client; +StandardMinorOpcode(ClientPtr client) { return ((xReq *)client->requestBuffer)->data; } unsigned short -MinorOpcodeOfRequest(client) - ClientPtr client; +MinorOpcodeOfRequest(ClientPtr client) { unsigned char major; @@ -332,8 +324,7 @@ CloseDownExtensions() int -ProcQueryExtension(client) - ClientPtr client; +ProcQueryExtension(ClientPtr client) { xQueryExtensionReply reply; int i; @@ -379,8 +370,7 @@ ProcQueryExtension(client) } int -ProcListExtensions(client) - ClientPtr client; +ProcListExtensions(ClientPtr client) { xListExtensionsReply reply; char *bufptr, *buffer; @@ -453,9 +443,7 @@ ProcListExtensions(client) ExtensionLookupProc -LookupProc(name, pGC) - char *name; - GCPtr pGC; +LookupProc(char *name, GCPtr pGC) { register int i; register ScreenProcEntry *spentry; @@ -470,19 +458,13 @@ LookupProc(name, pGC) } Bool -RegisterProc(name, pGC, proc) - char *name; - GC *pGC; - ExtensionLookupProc proc; +RegisterProc(char *name, GC *pGC, ExtensionLookupProc proc) { return RegisterScreenProc(name, pGC->pScreen, proc); } Bool -RegisterScreenProc(name, pScreen, proc) - char *name; - ScreenPtr pScreen; - ExtensionLookupProc proc; +RegisterScreenProc(char *name, ScreenPtr pScreen, ExtensionLookupProc proc) { register ScreenProcEntry *spentry; register ProcEntryPtr procEntry = (ProcEntryPtr)NULL; @@ -524,5 +506,3 @@ RegisterScreenProc(name, pScreen, proc) } return TRUE; } - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXglxext.c b/nx-X11/programs/Xserver/hw/nxagent/NXglxext.c index fe2f4aa..51c5479 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXglxext.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXglxext.c @@ -1,10 +1,21 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXglxext.c" - -#else - -/* $XFree86: xc/programs/Xserver/GL/glx/glxext.c,v 1.8 2001/08/23 18:25:40 alanh Exp $ +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ + +/* $XFree86: xc/programs/Xserver/GL/glx/glxext.c,v 1.9 2003/09/28 20:15:43 alanh Exp $ ** The contents of this file are subject to the GLX Public License Version 1.0 ** (the "License"). You may not use this file except in compliance with the ** License. You may obtain a copy of the License at Silicon Graphics, Inc., @@ -25,6 +36,10 @@ */ #define NEED_REPLIES +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + #include "glxserver.h" #include <windowstr.h> #include <propertyst.h> @@ -42,9 +57,11 @@ #undef TEST #undef DEBUG -extern __GLXextensionInfo __glDDXExtensionInfo; +void GlxWrapInitVisuals(miInitVisualsProcPtr *); +void GlxSetVisualConfigs(int nconfigs, + __GLXvisualConfig *configs, void **privates); -__GLXextensionInfo *__glXExt = &__glDDXExtensionInfo; +static __GLXextensionInfo *__glXExt /* = &__glDDXExtensionInfo */; /* ** Forward declarations. @@ -126,7 +143,7 @@ static int ClientGone(int clientIndex, XID id) for (i=0; i < cl->numCurrentContexts; i++) { cx = cl->currentContexts[i]; if (cx) { - __glXDeassociateContext(cx, cx->glxPriv); + __glXDeassociateContext(cx); cx->isCurrent = GL_FALSE; if (!cx->idExists) { __glXFreeContext(cx); @@ -186,6 +203,18 @@ GLboolean __glXFreeContext(__GLXcontext *cx) return GL_TRUE; } +extern RESTYPE __glXSwapBarrierRes; + +static int SwapBarrierGone(int screen, XID drawable) +{ + if (__glXSwapBarrierFuncs && + __glXSwapBarrierFuncs[screen].bindSwapBarrierFunc != NULL) { + __glXSwapBarrierFuncs[screen].bindSwapBarrierFunc(screen, drawable, 0); + } + FreeResourceByType(drawable, __glXSwapBarrierRes, FALSE); + return True; +} + /************************************************************************/ /* @@ -231,15 +260,9 @@ void GlxExtensionInit(void) ExtensionEntry *extEntry; int i; -#ifdef X11R5 - __glXContextRes = CreateNewResourceType(ContextGone); - __glXClientRes = CreateNewResourceType(ClientGone); - __glXPixmapRes = CreateNewResourceType(PixmapGone); -#else __glXContextRes = CreateNewResourceType((DeleteType)ContextGone); __glXClientRes = CreateNewResourceType((DeleteType)ClientGone); __glXPixmapRes = CreateNewResourceType((DeleteType)PixmapGone); -#endif /* ** Add extension to server extensions. @@ -268,6 +291,8 @@ void GlxExtensionInit(void) __glXUnsupportedPrivateRequest = extEntry->errorBase + GLXUnsupportedPrivateRequest; + __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone); + /* ** Initialize table of client state. There is never a client 0. */ @@ -323,6 +348,8 @@ GlxWrapInitVisuals(miInitVisualsProcPtr *initVisProc) { saveInitVisualsProc = *initVisProc; *initVisProc = GlxInitVisuals; + /* HACK: this shouldn't be done here but it's the earliest time */ + __glXExt = __glXglDDXExtensionInfo(); /* from GLcore */ } /************************************************************************/ @@ -355,7 +382,7 @@ __GLXcontext *__glXForceCurrent(__GLXclientState *cl, GLXContextTag tag, } if (!cx->isDirect) { - if (cx->glxPriv == NULL) { + if (cx->drawPriv == NULL) { /* ** The drawable has vanished. It must be a window, because only ** windows can be destroyed from under us; GLX pixmaps are @@ -546,5 +573,3 @@ void __glXNoSuchRenderOpcode(GLbyte *pc) { return; } - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXglyph.c b/nx-X11/programs/Xserver/hw/nxagent/NXglyph.c index 22483b3..cd65fdc 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXglyph.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXglyph.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXglyph.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -22,9 +16,9 @@ /**************************************************************************/ /* - * $XFree86: xc/programs/Xserver/render/glyph.c,v 1.6 2001/10/28 03:34:19 tsi Exp $ + * $XFree86: xc/programs/Xserver/render/glyph.c,v 1.5 2001/01/30 07:01:22 keithp Exp $ * - * Copyright � 2000 SuSE, Inc. + * Copyright © 2000 SuSE, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -46,6 +40,10 @@ * Author: Keith Packard, SuSE, Inc. */ +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + #include "misc.h" #include "scrnintstr.h" #include "os.h" @@ -71,6 +69,17 @@ #undef DEBUG #undef TEST +#else + +#include "picturestr.h" +#include "glyphstr.h" + +#endif + +#if HAVE_STDINT_H +#include <stdint.h> +#elif !defined(UINT32_MAX) +#define UINT32_MAX 0xffffffffU #endif /* @@ -123,6 +132,50 @@ FindGlyphHashSet (CARD32 filled) return 0; } +static int _GlyphSetPrivateAllocateIndex = 0; + +int +AllocateGlyphSetPrivateIndex (void) +{ + return _GlyphSetPrivateAllocateIndex++; +} + +void +ResetGlyphSetPrivateIndex (void) +{ + _GlyphSetPrivateAllocateIndex = 0; +} + +Bool +_GlyphSetSetNewPrivate (GlyphSetPtr glyphSet, int n, pointer ptr) +{ + pointer *new; + + if (n > glyphSet->maxPrivate) { + if (glyphSet->devPrivates && + glyphSet->devPrivates != (pointer)(&glyphSet[1])) { + new = (pointer *) xrealloc (glyphSet->devPrivates, + (n + 1) * sizeof (pointer)); + if (!new) + return FALSE; + } else { + new = (pointer *) xalloc ((n + 1) * sizeof (pointer)); + if (!new) + return FALSE; + if (glyphSet->devPrivates) + memcpy (new, + glyphSet->devPrivates, + (glyphSet->maxPrivate + 1) * sizeof (pointer)); + } + glyphSet->devPrivates = new; + /* Zero out new, uninitialize privates */ + while (++glyphSet->maxPrivate < n) + glyphSet->devPrivates[glyphSet->maxPrivate] = (pointer)0; + } + glyphSet->devPrivates[n] = ptr; + return TRUE; +} + Bool GlyphInit (ScreenPtr pScreen) { @@ -359,8 +412,12 @@ AllocateGlyph (xGlyphInfo *gi, int fdepth) { int size; GlyphPtr glyph; - - size = gi->height * PixmapBytePad (gi->width, glyphDepths[fdepth]); + size_t padded_width; + + padded_width = PixmapBytePad (gi->width, glyphDepths[fdepth]); + if (gi->height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi->height) + return 0; + size = gi->height * padded_width; glyph = (GlyphPtr) xalloc (size + sizeof (GlyphRec)); if (!glyph) return 0; @@ -456,15 +513,24 @@ GlyphSetPtr AllocateGlyphSet (int fdepth, PictFormatPtr format) { GlyphSetPtr glyphSet; + int size; if (!globalGlyphs[fdepth].hashSet) { if (!AllocateGlyphHash (&globalGlyphs[fdepth], &glyphHashSets[0])) return FALSE; } - glyphSet = xalloc (sizeof (GlyphSetRec)); + + size = (sizeof (GlyphSetRec) + + (sizeof (pointer) * _GlyphSetPrivateAllocateIndex)); + glyphSet = xalloc (size); if (!glyphSet) return FALSE; + bzero((char *)glyphSet, size); + glyphSet->maxPrivate = _GlyphSetPrivateAllocateIndex - 1; + if (_GlyphSetPrivateAllocateIndex) + glyphSet->devPrivates = (pointer)(&glyphSet[1]); + if (!AllocateGlyphHash (&glyphSet->hash, &glyphHashSets[0])) { xfree (glyphSet); @@ -503,9 +569,13 @@ FreeGlyphSet (pointer value, else ResizeGlyphHash (&globalGlyphs[glyphSet->fdepth], 0, TRUE); xfree (table); + + if (glyphSet->devPrivates && + glyphSet->devPrivates != (pointer)(&glyphSet[1])) + xfree(glyphSet->devPrivates); + xfree (glyphSet); } return Success; } -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c b/nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c index 9212bf4..7a1d813 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXglyphcurs.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -70,8 +64,12 @@ SOFTWARE. /* $Xorg: glyphcurs.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + #include "misc.h" -#include "fontstruct.h" +#include <X11/fonts/fontstruct.h> #include "dixfontstr.h" #include "scrnintstr.h" #include "gcstruct.h" @@ -100,11 +98,7 @@ cursor metrics. */ int -ServerBitsFromGlyph(pfont, ch, cm, ppbits) - FontPtr pfont; - unsigned int ch; - register CursorMetricPtr cm; - unsigned char **ppbits; +ServerBitsFromGlyph(FontPtr pfont, unsigned ch, register CursorMetricPtr cm, unsigned char **ppbits) { register ScreenPtr pScreen; register GCPtr pGC; @@ -194,10 +188,7 @@ ServerBitsFromGlyph(pfont, ch, cm, ppbits) Bool -CursorMetricsFromGlyph( pfont, ch, cm) - register FontPtr pfont; - unsigned ch; - register CursorMetricPtr cm; +CursorMetricsFromGlyph(register FontPtr pfont, unsigned ch, register CursorMetricPtr cm) { CharInfoPtr pci; unsigned long nglyphs; @@ -248,5 +239,3 @@ CursorMetricsFromGlyph( pfont, ch, cm) } return TRUE; } - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h b/nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h index 0f122be..fa6b5fb 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h +++ b/nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXglyphstr.h" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -22,9 +16,9 @@ /**************************************************************************/ /* - * $XFree86: xc/programs/Xserver/render/glyphstr.h,v 1.4 2001/01/21 21:19:39 tsi Exp $ + * $XFree86: xc/programs/Xserver/render/glyphstr.h,v 1.3 2000/11/20 07:13:13 keithp Exp $ * - * Copyright � 2000 SuSE, Inc. + * Copyright © 2000 SuSE, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -56,7 +50,7 @@ #ifndef _GLYPHSTR_H_ #define _GLYPHSTR_H_ -#include "renderproto.h" +#include <X11/extensions/renderproto.h> #include "../../render/picture.h" #include "screenint.h" @@ -99,9 +93,21 @@ typedef struct _GlyphSet { PictFormatPtr format; int fdepth; GlyphHashRec hash; + int maxPrivate; + pointer *devPrivates; CARD32 remoteID; } GlyphSetRec, *GlyphSetPtr; +#define GlyphSetGetPrivate(pGlyphSet,n) \ + ((n) > (pGlyphSet)->maxPrivate ? \ + (pointer) 0 : \ + (pGlyphSet)->devPrivates[n]) + +#define GlyphSetSetPrivate(pGlyphSet,n,ptr) \ + ((n) > (pGlyphSet)->maxPrivate ? \ + _GlyphSetSetNewPrivate(pGlyphSet, n, ptr) : \ + ((((pGlyphSet)->devPrivates[n] = (ptr)) != 0) || TRUE)) + typedef struct _GlyphList { INT16 xOff; INT16 yOff; @@ -114,6 +120,15 @@ extern GlyphHashRec globalGlyphs[GlyphFormatNum]; GlyphHashSetPtr FindGlyphHashSet (CARD32 filled); +int +AllocateGlyphSetPrivateIndex (void); + +void +ResetGlyphSetPrivateIndex (void); + +Bool +_GlyphSetSetNewPrivate (GlyphSetPtr glyphSet, int n, pointer ptr); + Bool GlyphInit (ScreenPtr pScreen); @@ -157,5 +172,3 @@ FreeGlyphSet (pointer value, #endif /* _GLYPHSTR_H_ */ - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c b/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c index bd06817..3fc73cf 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c @@ -1,10 +1,22 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXmiexpose.c" - -#else - -/* $XFree86: xc/programs/Xserver/mi/miexpose.c,v 3.9 2001/12/14 20:00:22 dawes Exp $ */ +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ + +/* $XdotOrg: xc/programs/Xserver/mi/miexpose.c,v 1.6 2005/07/03 08:53:51 daniels Exp $ */ +/* $XFree86: xc/programs/Xserver/mi/miexpose.c,v 3.9tsi Exp $ */ /*********************************************************** Copyright 1987, 1998 The Open Group @@ -51,13 +63,44 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ +/***************************************************************** + +Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + +******************************************************************/ /* $Xorg: miexpose.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */ -#include "X.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> #define NEED_EVENTS -#include "Xproto.h" -#include "Xprotostr.h" +#include <X11/Xproto.h> +#include <X11/Xprotostr.h> #include "misc.h" #include "regionstr.h" @@ -69,7 +112,7 @@ SOFTWARE. #include "dixstruct.h" #include "mi.h" -#include "Xmd.h" +#include <X11/Xmd.h> #include "globals.h" @@ -190,7 +233,7 @@ miHandleExposures(pSrcDrawable, pDstDrawable, if ((RECT_IN_REGION(pscr, &pSrcWin->clipList, &TsrcBox)) == rgnIN) return NULL; prgnSrcClip = &rgnSrcRec; - REGION_INIT(pscr, prgnSrcClip, NullBox, 0); + REGION_NULL(pscr, prgnSrcClip); REGION_COPY(pscr, prgnSrcClip, &pSrcWin->clipList); } REGION_TRANSLATE(pscr, prgnSrcClip, @@ -227,7 +270,7 @@ miHandleExposures(pSrcDrawable, pDstDrawable, else { prgnDstClip = &rgnDstRec; - REGION_INIT(pscr, prgnDstClip, NullBox, 0); + REGION_NULL(pscr, prgnDstClip); REGION_COPY(pscr, prgnDstClip, &((WindowPtr)pDstDrawable)->clipList); } @@ -934,5 +977,3 @@ miClearDrawable(pDraw, pGC) DoChangeGC(pGC, GCForeground, &fg, 0); ValidateGC(pDraw, pGC); } - -#endif /* NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c b/nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c index 09901ba..5f32334 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXmiglyph.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -22,9 +16,9 @@ /**************************************************************************/ /* - * $XFree86: xc/programs/Xserver/render/miglyph.c,v 1.6 2000/12/05 03:13:31 keithp Exp $ + * $XFree86: xc/programs/Xserver/render/miglyph.c,v 1.4 2000/11/20 07:13:13 keithp Exp $ * - * Copyright � 2000 SuSE, Inc. + * Copyright © 2000 SuSE, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -46,6 +40,10 @@ * Author: Keith Packard, SuSE, Inc. */ +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + #include "scrnintstr.h" #include "gcstruct.h" #include "pixmapstr.h" @@ -318,5 +316,3 @@ miGlyphs (CARD8 op, } } - -#endif /* NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c b/nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c index 7d0a995..f418654 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c @@ -1,13 +1,24 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXmitrap.c" - -#else +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ /* - * $XFree86: xc/programs/Xserver/render/mitrap.c,v 1.9 2002/11/05 23:39:16 keithp Exp $ + * $XFree86: xc/programs/Xserver/render/mitrap.c,v 1.8 2002/09/03 19:28:28 keithp Exp $ * - * Copyright � 2002 Keith Packard, member of The XFree86 Project, Inc. + * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -28,6 +39,10 @@ * PERFORMANCE OF THIS SOFTWARE. */ +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + #include "scrnintstr.h" #include "gcstruct.h" #include "pixmapstr.h" @@ -37,6 +52,12 @@ #include "picturestr.h" #include "mipict.h" +#ifdef NXAGENT_SERVER + +#include "Render.h" + +#endif + PicturePtr miCreateAlphaPicture (ScreenPtr pScreen, PicturePtr pDst, @@ -142,17 +163,46 @@ miTrapezoids (CARD8 op, { ScreenPtr pScreen = pDst->pDrawable->pScreen; PictureScreenPtr ps = GetPictureScreen(pScreen); - PicturePtr pPicture = 0; - BoxRec bounds; - INT16 xDst, yDst; - INT16 xRel, yRel; - - xDst = traps[0].left.p1.x >> 16; - yDst = traps[0].left.p1.y >> 16; - - if (maskFormat) + + /* + * Check for solid alpha add + */ + if (op == PictOpAdd && miIsSolidAlpha (pSrc)) + { + for (; ntrap; ntrap--, traps++) + (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0); + } + else if (maskFormat) { - miTrapezoidBounds (ntrap, traps, &bounds); + PicturePtr pPicture; + BoxRec bounds; + INT16 xDst, yDst; + INT16 xRel, yRel; + + xDst = traps[0].left.p1.x >> 16; + yDst = traps[0].left.p1.y >> 16; + + #ifdef NXAGENT_SERVER + + if (nxagentTrapezoidExtents != NullBox) + { + memcpy(&bounds, nxagentTrapezoidExtents, sizeof(BoxRec)); + } + else + { + nxagentTrapezoidExtents = (BoxPtr) xalloc(sizeof(BoxRec)); + + miTrapezoidBounds (ntrap, traps, &bounds); + + memcpy(nxagentTrapezoidExtents, &bounds, sizeof(BoxRec)); + } + + #else + + miTrapezoidBounds (ntrap, traps, &bounds); + + #endif + if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2) return; pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat, @@ -160,37 +210,9 @@ miTrapezoids (CARD8 op, bounds.y2 - bounds.y1); if (!pPicture) return; - } - for (; ntrap; ntrap--, traps++) - { - if (!xTrapezoidValid(traps)) - continue; - if (!maskFormat) - { - miTrapezoidBounds (1, traps, &bounds); - if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2) - continue; - pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat, - bounds.x2 - bounds.x1, - bounds.y2 - bounds.y1); - if (!pPicture) - continue; - } - (*ps->RasterizeTrapezoid) (pPicture, traps, - -bounds.x1, -bounds.y1); - if (!maskFormat) - { - xRel = bounds.x1 + xSrc - xDst; - yRel = bounds.y1 + ySrc - yDst; - CompositePicture (op, pSrc, pPicture, pDst, - xRel, yRel, 0, 0, bounds.x1, bounds.y1, - bounds.x2 - bounds.x1, - bounds.y2 - bounds.y1); - FreePicture (pPicture, 0); - } - } - if (maskFormat) - { + for (; ntrap; ntrap--, traps++) + (*ps->RasterizeTrapezoid) (pPicture, traps, + -bounds.x1, -bounds.y1); xRel = bounds.x1 + xSrc - xDst; yRel = bounds.y1 + ySrc - yDst; CompositePicture (op, pSrc, pPicture, pDst, @@ -199,6 +221,13 @@ miTrapezoids (CARD8 op, bounds.y2 - bounds.y1); FreePicture (pPicture, 0); } + else + { + if (pDst->polyEdge == PolyEdgeSharp) + maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1); + else + maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8); + for (; ntrap; ntrap--, traps++) + miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps); + } } - -#endif /* NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c b/nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c index ea2e7df..1902949 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c @@ -1,10 +1,21 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXmiwindow.c" - -#else - -/* $XFree86: xc/programs/Xserver/mi/miwindow.c,v 1.7 2001/12/14 20:00:28 dawes Exp $ */ +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ + +/* $XFree86: xc/programs/Xserver/mi/miwindow.c,v 1.9tsi Exp $ */ /*********************************************************** Copyright 1987, 1998 The Open Group @@ -52,8 +63,12 @@ SOFTWARE. ******************************************************************/ /* $Xorg: miwindow.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */ -#include "X.h" -#include "miscstruct.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> +#include "regionstr.h" #include "region.h" #include "mi.h" #include "windowstr.h" @@ -202,7 +217,7 @@ miCheckSubSaveUnder( { if (!subInited) { - REGION_INIT(pScreen, &SubRegion, NullBox, 0); + REGION_NULL(pScreen, &SubRegion); subInited = TRUE; } REGION_COPY(pScreen, &SubRegion, pRegion); @@ -285,7 +300,7 @@ miChangeSaveUnder(pWin, first) numSaveUndersViewable += deltaSaveUndersViewable; deltaSaveUndersViewable = 0; pScreen = pWin->drawable.pScreen; - REGION_INIT(pScreen, &rgn, NullBox, 1); + REGION_NULL(pScreen, &rgn); res = miCheckSubSaveUnder (pWin->parent, pWin->saveUnder ? first : pWin->nextSib, &rgn); @@ -889,8 +904,14 @@ miSlideAndSizeWindow(pWin, x, y, w, h, pSib) /* and move those bits */ - if (oldpt.x != x || oldpt.y != y) + if (oldpt.x != x || oldpt.y != y +#ifdef COMPOSITE + || pWin->redirectDraw +#endif + ) + { (*pWin->drawable.pScreen->CopyWindow)(pWin, oldpt, gravitate[g]); + } /* remove any overwritten bits from the remaining useful bits */ @@ -1103,7 +1124,6 @@ miChangeBorderWidth(pWin, width) register WindowPtr pWin; unsigned int width; { - WindowPtr pParent; int oldwidth; Bool anyMarked = FALSE; register ScreenPtr pScreen; @@ -1119,7 +1139,6 @@ miChangeBorderWidth(pWin, width) return; HadBorder = HasBorder(pWin); pScreen = pWin->drawable.pScreen; - pParent = pWin->parent; if (WasViewable && width < oldwidth) anyMarked = (*pScreen->MarkOverlappedWindows)(pWin, pWin, &pLayerWin); @@ -1201,5 +1220,3 @@ miSegregateChildren(WindowPtr pWin, RegionPtr pReg, int depth) miSegregateChildren(pChild, pReg, depth); } } - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXpicture.c b/nx-X11/programs/Xserver/hw/nxagent/NXpicture.c index d32cdb6..4b342eb 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXpicture.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXpicture.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXpicture.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -22,9 +16,9 @@ /**************************************************************************/ /* - * $XFree86: xc/programs/Xserver/render/picture.c,v 1.30 2003/01/26 16:40:43 eich Exp $ + * $XFree86: xc/programs/Xserver/render/picture.c,v 1.29 2002/11/23 02:38:15 keithp Exp $ * - * Copyright � 2000 SuSE, Inc. + * Copyright © 2000 SuSE, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -46,6 +40,10 @@ * Author: Keith Packard, SuSE, Inc. */ +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + #include "misc.h" #include "scrnintstr.h" #include "os.h" @@ -64,6 +62,14 @@ #include "Screen.h" #include "Pixmaps.h" #include "Drawable.h" +#include "Render.h" + +#define PANIC +#define WARNING +#undef TEST +#undef DEBUG + +void *nxagentVisualFromID(ScreenPtr pScreen, VisualID visual); void *nxagentMatchingFormats(PictFormatPtr pForm); @@ -75,6 +81,64 @@ RESTYPE PictFormatType; RESTYPE GlyphSetType; int PictureCmapPolicy = PictureCmapPolicyDefault; +typedef struct _formatInit { + CARD32 format; + CARD8 depth; +} FormatInitRec, *FormatInitPtr; + +void nxagentPictureCreateDefaultFormats(ScreenPtr pScreen, FormatInitRec *formats, int *nformats); + +/* Picture Private machinery */ + +static int picturePrivateCount; + +void +ResetPicturePrivateIndex (void) +{ + picturePrivateCount = 0; +} + +int +AllocatePicturePrivateIndex (void) +{ + return picturePrivateCount++; +} + +Bool +AllocatePicturePrivate (ScreenPtr pScreen, int index2, unsigned int amount) +{ + PictureScreenPtr ps = GetPictureScreen(pScreen); + unsigned int oldamount; + + /* Round up sizes for proper alignment */ + amount = ((amount + (sizeof(long) - 1)) / sizeof(long)) * sizeof(long); + + if (index2 >= ps->PicturePrivateLen) + { + unsigned int *nsizes; + + nsizes = (unsigned int *)xrealloc(ps->PicturePrivateSizes, + (index2 + 1) * sizeof(unsigned int)); + if (!nsizes) + return FALSE; + while (ps->PicturePrivateLen <= index2) + { + nsizes[ps->PicturePrivateLen++] = 0; + ps->totalPictureSize += sizeof(DevUnion); + } + ps->PicturePrivateSizes = nsizes; + } + oldamount = ps->PicturePrivateSizes[index2]; + if (amount > oldamount) + { + ps->PicturePrivateSizes[index2] = amount; + ps->totalPictureSize += (amount - oldamount); + } + + return TRUE; +} + + Bool PictureDestroyWindow (WindowPtr pWindow) { @@ -111,6 +175,8 @@ PictureCloseScreen (int index, ScreenPtr pScreen) if (ps->formats[n].type == PictTypeIndexed) (*ps->CloseIndexed) (pScreen, &ps->formats[n]); SetPictureScreen(pScreen, 0); + if (ps->PicturePrivateSizes) + xfree (ps->PicturePrivateSizes); xfree (ps->formats); xfree (ps); return ret; @@ -161,11 +227,6 @@ visualDepth (ScreenPtr pScreen, VisualPtr pVisual) return 0; } -typedef struct _formatInit { - CARD32 format; - CARD8 depth; -} FormatInitRec, *FormatInitPtr; - static int addFormat (FormatInitRec formats[256], int nformat, @@ -179,6 +240,11 @@ addFormat (FormatInitRec formats[256], return nformat; formats[nformat].format = format; formats[nformat].depth = depth; + + #ifdef DEBUG + fprintf(stderr, "addFormat: Added format [%lu] depth [%d].\n", format, depth); + #endif + return ++nformat; } @@ -187,14 +253,13 @@ addFormat (FormatInitRec formats[256], PictFormatPtr PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) { -#ifdef NXAGENT_SERVER - int nformats, f, n; -#else int nformats, f; -#endif PictFormatPtr pFormats; FormatInitRec formats[1024]; CARD32 format; + +#ifndef NXAGENT_SERVER + CARD8 depth; VisualPtr pVisual; int v; @@ -204,7 +269,16 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) int d; DepthPtr pDepth; +#endif + nformats = 0; + +#ifdef NXAGENT_SERVER + + nxagentPictureCreateDefaultFormats(pScreen, formats, &nformats); + +#else + /* formats required by protocol */ formats[nformats].format = PICT_a1; formats[nformats].depth = 1; @@ -230,6 +304,7 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) if (!depth) continue; bpp = BitsPerPixel (depth); + switch (pVisual->class) { case DirectColor: case TrueColor: @@ -272,6 +347,7 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) break; } } + /* * Walk supported depths and add useful Direct formats */ @@ -280,16 +356,18 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) pDepth = &pScreen->allowedDepths[d]; bpp = BitsPerPixel (pDepth->depth); format = 0; + switch (bpp) { case 16: /* depth 12 formats */ - if (pDepth->depth >= 12) - { - nformats = addFormat (formats, nformats, - PICT_x4r4g4b4, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_x4b4g4r4, pDepth->depth); - } + if (pDepth->depth >= 12) + { + nformats = addFormat (formats, nformats, + PICT_x4r4g4b4, pDepth->depth); + nformats = addFormat (formats, nformats, + PICT_x4b4g4r4, pDepth->depth); + } + /* depth 15 formats */ if (pDepth->depth >= 15) { @@ -301,18 +379,18 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) /* depth 16 formats */ if (pDepth->depth >= 16) { - nformats = addFormat (formats, nformats, - PICT_a1r5g5b5, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_a1b5g5r5, pDepth->depth); + nformats = addFormat (formats, nformats, + PICT_a1r5g5b5, pDepth->depth); + nformats = addFormat (formats, nformats, + PICT_a1b5g5r5, pDepth->depth); nformats = addFormat (formats, nformats, PICT_r5g6b5, pDepth->depth); nformats = addFormat (formats, nformats, PICT_b5g6r5, pDepth->depth); nformats = addFormat (formats, nformats, PICT_a4r4g4b4, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_a4b4g4r4, pDepth->depth); + nformats = addFormat (formats, nformats, + PICT_a4b4g4r4, pDepth->depth); } break; case 24: @@ -335,27 +413,19 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) break; } } - + +#endif pFormats = (PictFormatPtr) xalloc (nformats * sizeof (PictFormatRec)); if (!pFormats) return 0; memset (pFormats, '\0', nformats * sizeof (PictFormatRec)); -#ifdef NXAGENT_SERVER - for (f = 0, n = 0; n < nformats; n++) - { - pFormats[f].id = FakeClientID (0); - pFormats[f].depth = formats[n].depth; - format = formats[n].format; - pFormats[f].format = format; -#else for (f = 0; f < nformats; f++) { pFormats[f].id = FakeClientID (0); pFormats[f].depth = formats[f].depth; format = formats[f].format; pFormats[f].format = format; -#endif switch (PICT_FORMAT_TYPE(format)) { case PICT_TYPE_ARGB: pFormats[f].type = PictTypeDirect; @@ -409,28 +479,52 @@ PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) case PICT_TYPE_COLOR: case PICT_TYPE_GRAY: pFormats[f].type = PictTypeIndexed; - pFormats[f].index.pVisual = &pScreen->visuals[PICT_FORMAT_VIS(format)]; + pFormats[f].index.vid = pScreen->visuals[PICT_FORMAT_VIS(format)].vid; break; } #ifdef NXAGENT_SERVER if (nxagentMatchingFormats(&pFormats[f]) != NULL) { - f++; + #ifdef DEBUG + fprintf(stderr, "PictureCreateDefaultFormats: Format with type [%d] depth [%d] rgb [%d,%d,%d] " + "mask rgb [%d,%d,%d] alpha [%d] alpha mask [%d] matches.\n", + pFormats[f].type, pFormats[f].depth, pFormats[f].direct.red, pFormats[f].direct.green, + pFormats[f].direct.blue, pFormats[f].direct.redMask, pFormats[f].direct.greenMask, + pFormats[f].direct.blueMask, pFormats[f].direct.alpha, pFormats[f].direct.alphaMask); + #endif } else { - memset(&pFormats[f], '\0', sizeof(PictFormatRec)); + #ifdef DEBUG + fprintf(stderr, "PictureCreateDefaultFormats: Format with type [%d] depth [%d] rgb [%d,%d,%d] " + "mask rgb [%d,%d,%d] alpha [%d] alpha mask [%d] doesn't match.\n", + pFormats[f].type, pFormats[f].depth, pFormats[f].direct.red, pFormats[f].direct.green, + pFormats[f].direct.blue, pFormats[f].direct.redMask, pFormats[f].direct.greenMask, + pFormats[f].direct.blueMask, pFormats[f].direct.alpha, pFormats[f].direct.alphaMask); + #endif } - } - *nformatp = f; -#else +#endif } *nformatp = nformats; -#endif return pFormats; } +static VisualPtr +PictureFindVisual (ScreenPtr pScreen, VisualID visual) +{ + int i; + VisualPtr pVisual; + for (i = 0, pVisual = pScreen->visuals; + i < pScreen->numVisuals; + i++, pVisual++) + { + if (pVisual->vid == visual) + return pVisual; + } + return 0; +} + Bool PictureInitIndexedFormats (ScreenPtr pScreen) { @@ -446,13 +540,16 @@ PictureInitIndexedFormats (ScreenPtr pScreen) { if (format->type == PictTypeIndexed && !format->index.pColormap) { - if (format->index.pVisual->vid == pScreen->rootVisual) + if (format->index.vid == pScreen->rootVisual) format->index.pColormap = (ColormapPtr) LookupIDByType(pScreen->defColormap, RT_COLORMAP); else { + VisualPtr pVisual; + + pVisual = PictureFindVisual (pScreen, format->index.vid); if (CreateColormap (FakeClientID (0), pScreen, - format->index.pVisual, + pVisual, &format->index.pColormap, AllocNone, 0) != Success) { @@ -524,9 +621,9 @@ PictureMatchVisual (ScreenPtr pScreen, int depth, VisualPtr pVisual) type = PictTypeIndexed; break; case TrueColor: + case DirectColor: type = PictTypeDirect; break; - case DirectColor: default: return 0; } @@ -536,7 +633,7 @@ PictureMatchVisual (ScreenPtr pScreen, int depth, VisualPtr pVisual) { if (type == PictTypeIndexed) { - if (format->index.pVisual == pVisual) + if (format->index.vid == pVisual->vid) return format; } else @@ -641,7 +738,8 @@ PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats) } if (formats[n].type == PictTypeIndexed) { - if ((formats[n].index.pVisual->class | DynamicClass) == PseudoColor) + VisualPtr pVisual = PictureFindVisual (pScreen, formats[n].index.vid); + if ((pVisual->class | DynamicClass) == PseudoColor) type = PICT_TYPE_COLOR; else type = PICT_TYPE_GRAY; @@ -725,6 +823,7 @@ SetPictureToDefaults (PicturePtr pPicture) pPicture->freeCompClip = FALSE; pPicture->clientClipType = CT_NONE; pPicture->componentAlpha = FALSE; + pPicture->repeatType = RepeatNone; pPicture->alphaMap = 0; pPicture->alphaOrigin.x = 0; @@ -743,6 +842,7 @@ SetPictureToDefaults (PicturePtr pPicture) pPicture->serialNumber = GC_CHANGE_SERIAL_BIT; pPicture->stateChanges = (1 << (CPLastBit+1)) - 1; + pPicture->pSourcePict = 0; } PicturePtr @@ -773,6 +873,9 @@ AllocatePicture (ScreenPtr pScreen) else ppriv->ptr = (pointer)NULL; } + + nxagentPicturePriv(pPicture) -> picture = 0; + return pPicture; } @@ -840,6 +943,348 @@ CreatePicture (Picture pid, return pPicture; } +static CARD32 xRenderColorToCard32(xRenderColor c) +{ + return + (c.alpha >> 8 << 24) | + (c.red >> 8 << 16) | + (c.green & 0xff00) | + (c.blue >> 8); +} + +static unsigned int premultiply(unsigned int x) +{ + unsigned int a = x >> 24; + unsigned int t = (x & 0xff00ff) * a; + t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; + t &= 0xff00ff; + + x = ((x >> 8) & 0xff) * a; + x = (x + ((x >> 8) & 0xff) + 0x80); + x &= 0xff00; + x |= t | (a << 24); + return x; +} + +static unsigned int INTERPOLATE_PIXEL_256(unsigned int x, unsigned int a, + unsigned int y, unsigned int b) +{ + CARD32 t = (x & 0xff00ff) * a + (y & 0xff00ff) * b; + t >>= 8; + t &= 0xff00ff; + + x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b; + x &= 0xff00ff00; + x |= t; + return x; +} + +static void initGradientColorTable(SourcePictPtr pGradient, int *error) +{ + int begin_pos, end_pos; + xFixed incr, dpos; + int pos, current_stop; + PictGradientStopPtr stops = pGradient->linear.stops; + int nstops = pGradient->linear.nstops; + + /* The position where the gradient begins and ends */ + begin_pos = (stops[0].x * PICT_GRADIENT_STOPTABLE_SIZE) >> 16; + end_pos = (stops[nstops - 1].x * PICT_GRADIENT_STOPTABLE_SIZE) >> 16; + + pos = 0; /* The position in the color table. */ + + /* Up to first point */ + while (pos <= begin_pos) { + pGradient->linear.colorTable[pos] = xRenderColorToCard32(stops[0].color); + ++pos; + } + + incr = (1<<16)/ PICT_GRADIENT_STOPTABLE_SIZE; /* the double increment. */ + dpos = incr * pos; /* The position in terms of 0-1. */ + + current_stop = 0; /* We always interpolate between current and current + 1. */ + + /* Gradient area */ + while (pos < end_pos) { + unsigned int current_color = xRenderColorToCard32(stops[current_stop].color); + unsigned int next_color = xRenderColorToCard32(stops[current_stop + 1].color); + + int dist = (int)(256*(dpos - stops[current_stop].x) + / (stops[current_stop+1].x - stops[current_stop].x)); + int idist = 256 - dist; + + pGradient->linear.colorTable[pos] = premultiply(INTERPOLATE_PIXEL_256(current_color, idist, next_color, dist)); + + ++pos; + dpos += incr; + + if (dpos > stops[current_stop + 1].x) + ++current_stop; + } + + /* After last point */ + while (pos < PICT_GRADIENT_STOPTABLE_SIZE) { + pGradient->linear.colorTable[pos] = xRenderColorToCard32(stops[nstops - 1].color); + ++pos; + } +} + +static void initGradient(SourcePictPtr pGradient, int stopCount, + xFixed *stopPoints, xRenderColor *stopColors, int *error) +{ + int i; + xFixed dpos; + + if (stopCount <= 0) { + *error = BadValue; + return; + } + + dpos = -1; + for (i = 0; i < stopCount; ++i) { + if (stopPoints[i] <= dpos || stopPoints[i] > (1<<16)) { + *error = BadValue; + return; + } + dpos = stopPoints[i]; + } + + pGradient->linear.stops = xalloc(stopCount*sizeof(PictGradientStop)); + if (!pGradient->linear.stops) { + *error = BadAlloc; + return; + } + + pGradient->linear.nstops = stopCount; + + for (i = 0; i < stopCount; ++i) { + pGradient->linear.stops[i].x = stopPoints[i]; + pGradient->linear.stops[i].color = stopColors[i]; + } + initGradientColorTable(pGradient, error); +} + +static PicturePtr createSourcePicture(void) +{ + PicturePtr pPicture; + + extern int nxagentPicturePrivateIndex; + + unsigned int totalPictureSize; + + DevUnion *ppriv; + + char *privPictureRecAddr; + + int i; + + /* + * Compute size of entire PictureRect, plus privates. + */ + + totalPictureSize = sizeof(PictureRec) + + picturePrivateCount * sizeof(DevUnion) + + sizeof(nxagentPrivPictureRec); + + pPicture = (PicturePtr) xalloc(totalPictureSize); + + if (pPicture != NULL) + { + ppriv = (DevUnion *) (pPicture + 1); + + for (i = 0; i < picturePrivateCount; ++i) + { + /* + * Other privates are inaccessible. + */ + + ppriv[i].ptr = NULL; + } + + privPictureRecAddr = (char *) &ppriv[picturePrivateCount]; + + ppriv[nxagentPicturePrivateIndex].ptr = (pointer) privPictureRecAddr; + + pPicture -> devPrivates = ppriv; + + nxagentPicturePriv(pPicture) -> picture = 0; + } + + pPicture->pDrawable = 0; + pPicture->pFormat = 0; + pPicture->pNext = 0; + + SetPictureToDefaults(pPicture); + return pPicture; +} + +PicturePtr +CreateSolidPicture (Picture pid, xRenderColor *color, int *error) +{ + PicturePtr pPicture; + pPicture = createSourcePicture(); + if (!pPicture) { + *error = BadAlloc; + return 0; + } + + pPicture->id = pid; + pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictSolidFill)); + if (!pPicture->pSourcePict) { + *error = BadAlloc; + xfree(pPicture); + return 0; + } + pPicture->pSourcePict->type = SourcePictTypeSolidFill; + pPicture->pSourcePict->solidFill.color = xRenderColorToCard32(*color); + pPicture->pSourcePict->solidFill.fullColor.alpha=color->alpha; + pPicture->pSourcePict->solidFill.fullColor.red=color->red; + pPicture->pSourcePict->solidFill.fullColor.green=color->green; + pPicture->pSourcePict->solidFill.fullColor.blue=color->blue; + return pPicture; +} + +PicturePtr +CreateLinearGradientPicture (Picture pid, xPointFixed *p1, xPointFixed *p2, + int nStops, xFixed *stops, xRenderColor *colors, int *error) +{ + PicturePtr pPicture; + + if (nStops < 2) { + *error = BadValue; + return 0; + } + + pPicture = createSourcePicture(); + if (!pPicture) { + *error = BadAlloc; + return 0; + } + if (p1->x == p2->x && p1->y == p2->y) { + *error = BadValue; + return 0; + } + + pPicture->id = pid; + pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictLinearGradient)); + if (!pPicture->pSourcePict) { + *error = BadAlloc; + xfree(pPicture); + return 0; + } + + pPicture->pSourcePict->linear.type = SourcePictTypeLinear; + pPicture->pSourcePict->linear.p1 = *p1; + pPicture->pSourcePict->linear.p2 = *p2; + + initGradient(pPicture->pSourcePict, nStops, stops, colors, error); + if (*error) { + xfree(pPicture); + return 0; + } + return pPicture; +} + +#define FixedToDouble(x) ((x)/65536.) + +PicturePtr +CreateRadialGradientPicture (Picture pid, xPointFixed *inner, xPointFixed *outer, + xFixed innerRadius, xFixed outerRadius, + int nStops, xFixed *stops, xRenderColor *colors, int *error) +{ + PicturePtr pPicture; + PictRadialGradient *radial; + + if (nStops < 2) { + *error = BadValue; + return 0; + } + + pPicture = createSourcePicture(); + if (!pPicture) { + *error = BadAlloc; + return 0; + } + { + double dx = (double)(inner->x - outer->x); + double dy = (double)(inner->y - outer->y); + if (sqrt(dx*dx + dy*dy) + (double)(innerRadius) > (double)(outerRadius)) { + *error = BadValue; + return 0; + } + } + + pPicture->id = pid; + pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictRadialGradient)); + if (!pPicture->pSourcePict) { + *error = BadAlloc; + xfree(pPicture); + return 0; + } + radial = &pPicture->pSourcePict->radial; + + radial->type = SourcePictTypeRadial; + { + double x = (double)innerRadius / (double)outerRadius; + radial->dx = (outer->x - inner->x); + radial->dy = (outer->y - inner->y); + radial->fx = (inner->x) - x*radial->dx; + radial->fy = (inner->y) - x*radial->dy; + radial->m = 1./(1+x); + radial->b = -x*radial->m; + radial->dx /= 65536.; + radial->dy /= 65536.; + radial->fx /= 65536.; + radial->fy /= 65536.; + x = outerRadius/65536.; + radial->a = x*x - radial->dx*radial->dx - radial->dy*radial->dy; + } + + initGradient(pPicture->pSourcePict, nStops, stops, colors, error); + if (*error) { + xfree(pPicture); + return 0; + } + return pPicture; +} + +PicturePtr +CreateConicalGradientPicture (Picture pid, xPointFixed *center, xFixed angle, + int nStops, xFixed *stops, xRenderColor *colors, int *error) +{ + PicturePtr pPicture; + + if (nStops < 2) { + *error = BadValue; + return 0; + } + + pPicture = createSourcePicture(); + if (!pPicture) { + *error = BadAlloc; + return 0; + } + + pPicture->id = pid; + pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictConicalGradient)); + if (!pPicture->pSourcePict) { + *error = BadAlloc; + xfree(pPicture); + return 0; + } + + pPicture->pSourcePict->conical.type = SourcePictTypeConical; + pPicture->pSourcePict->conical.center = *center; + pPicture->pSourcePict->conical.angle = angle; + + initGradient(pPicture->pSourcePict, nStops, stops, colors, error); + if (*error) { + xfree(pPicture); + return 0; + } + return pPicture; +} + #define NEXT_VAL(_type) (vlist ? (_type) *vlist++ : (_type) ulist++->val) #define NEXT_PTR(_type) ((_type) ulist++->ptr) @@ -851,8 +1296,8 @@ ChangePicture (PicturePtr pPicture, DevUnion *ulist, ClientPtr client) { - ScreenPtr pScreen = pPicture->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); + ScreenPtr pScreen = pPicture->pDrawable ? pPicture->pDrawable->pScreen : 0; + PictureScreenPtr ps = pScreen ? GetPictureScreen(pScreen) : 0; BITS32 index2; int error = 0; BITS32 maskQ; @@ -870,8 +1315,11 @@ ChangePicture (PicturePtr pPicture, { unsigned int newr; newr = NEXT_VAL(unsigned int); - if (newr <= xTrue) - pPicture->repeat = newr; + if (newr <= RepeatReflect) + { + pPicture->repeat = (newr != RepeatNone); + pPicture->repeatType = newr; + } else { client->errorValue = newr; @@ -938,6 +1386,8 @@ ChangePicture (PicturePtr pPicture, Pixmap pid; PixmapPtr pPixmap; int clipType; + if (!pScreen) + return BadDrawable; if (vlist) { @@ -985,6 +1435,12 @@ ChangePicture (PicturePtr pPicture, pPixmap->refcnt++; } } + + #ifdef DEBUG + fprintf(stderr, "ChangePicture: Going to call ChangePictureClip with clipType [%d] pPixmap [%p].\n", + clipType, (void *) pPixmap); + #endif + error = (*ps->ChangePictureClip)(pPicture, clipType, (pointer)pPixmap, 0); break; @@ -1064,7 +1520,8 @@ ChangePicture (PicturePtr pPicture, break; } } - (*ps->ChangePicture) (pPicture, maskQ); + if (ps) + (*ps->ChangePicture) (pPicture, maskQ); return error; } @@ -1097,6 +1554,51 @@ SetPictureClipRects (PicturePtr pPicture, } int +SetPictureClipRegion (PicturePtr pPicture, + int xOrigin, + int yOrigin, + RegionPtr pRegion) +{ + ScreenPtr pScreen = pPicture->pDrawable->pScreen; + PictureScreenPtr ps = GetPictureScreen(pScreen); + RegionPtr clientClip; + int result; + int type; + + if (pRegion) + { + type = CT_REGION; + clientClip = REGION_CREATE (pScreen, + REGION_EXTENTS(pScreen, pRegion), + REGION_NUM_RECTS(pRegion)); + if (!clientClip) + return BadAlloc; + if (!REGION_COPY (pSCreen, clientClip, pRegion)) + { + REGION_DESTROY (pScreen, clientClip); + return BadAlloc; + } + } + else + { + type = CT_NONE; + clientClip = 0; + } + + result =(*ps->ChangePictureClip) (pPicture, type, + (pointer) clientClip, 0); + if (result == Success) + { + pPicture->clipOrigin.x = xOrigin; + pPicture->clipOrigin.y = yOrigin; + pPicture->stateChanges |= CPClipXOrigin|CPClipYOrigin|CPClipMask; + pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; + } + return result; +} + + +int SetPictureTransform (PicturePtr pPicture, PictTransform *transform) { @@ -1127,13 +1629,99 @@ SetPictureTransform (PicturePtr pPicture, pPicture->transform = 0; } } + pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; + return Success; } +void +CopyPicture (PicturePtr pSrc, + Mask mask, + PicturePtr pDst) +{ + PictureScreenPtr ps = GetPictureScreen(pSrc->pDrawable->pScreen); + Mask origMask = mask; + + pDst->serialNumber |= GC_CHANGE_SERIAL_BIT; + pDst->stateChanges |= mask; + + while (mask) { + Mask bit = lowbit(mask); + + switch (bit) + { + case CPRepeat: + pDst->repeat = pSrc->repeat; + pDst->repeatType = pSrc->repeatType; + break; + case CPAlphaMap: + if (pSrc->alphaMap && pSrc->alphaMap->pDrawable->type == DRAWABLE_PIXMAP) + pSrc->alphaMap->refcnt++; + if (pDst->alphaMap) + FreePicture ((pointer) pDst->alphaMap, (XID) 0); + pDst->alphaMap = pSrc->alphaMap; + break; + case CPAlphaXOrigin: + pDst->alphaOrigin.x = pSrc->alphaOrigin.x; + break; + case CPAlphaYOrigin: + pDst->alphaOrigin.y = pSrc->alphaOrigin.y; + break; + case CPClipXOrigin: + pDst->clipOrigin.x = pSrc->clipOrigin.x; + break; + case CPClipYOrigin: + pDst->clipOrigin.y = pSrc->clipOrigin.y; + break; + case CPClipMask: + switch (pSrc->clientClipType) { + case CT_NONE: + (*ps->ChangePictureClip)(pDst, CT_NONE, NULL, 0); + break; + case CT_REGION: + if (!pSrc->clientClip) { + (*ps->ChangePictureClip)(pDst, CT_NONE, NULL, 0); + } else { + RegionPtr clientClip; + RegionPtr srcClientClip = (RegionPtr)pSrc->clientClip; + + clientClip = REGION_CREATE(pSrc->pDrawable->pScreen, + REGION_EXTENTS(pSrc->pDrawable->pScreen, srcClientClip), + REGION_NUM_RECTS(srcClientClip)); + (*ps->ChangePictureClip)(pDst, CT_REGION, clientClip, 0); + } + break; + default: + /* XXX: CT_PIXMAP unimplemented */ + break; + } + break; + case CPGraphicsExposure: + pDst->graphicsExposures = pSrc->graphicsExposures; + break; + case CPPolyEdge: + pDst->polyEdge = pSrc->polyEdge; + break; + case CPPolyMode: + pDst->polyMode = pSrc->polyMode; + break; + case CPDither: + pDst->dither = pSrc->dither; + break; + case CPComponentAlpha: + pDst->componentAlpha = pSrc->componentAlpha; + break; + } + mask &= ~bit; + } + + (*ps->ChangePicture)(pDst, origMask); +} + static void ValidateOnePicture (PicturePtr pPicture) { - if (pPicture->serialNumber != pPicture->pDrawable->serialNumber) + if (pPicture->pDrawable && pPicture->serialNumber != pPicture->pDrawable->serialNumber) { PictureScreenPtr ps = GetPictureScreen(pPicture->pDrawable->pScreen); @@ -1159,35 +1747,47 @@ FreePicture (pointer value, if (--pPicture->refcnt == 0) { - ScreenPtr pScreen = pPicture->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - - if (pPicture->alphaMap) - FreePicture ((pointer) pPicture->alphaMap, (XID) 0); - (*ps->DestroyPicture) (pPicture); - (*ps->DestroyPictureClip) (pPicture); +#ifdef NXAGENT_SERVER + nxagentDestroyPicture(pPicture); +#endif + if (pPicture->transform) xfree (pPicture->transform); - if (pPicture->pDrawable->type == DRAWABLE_WINDOW) - { - WindowPtr pWindow = (WindowPtr) pPicture->pDrawable; - PicturePtr *pPrev; - - for (pPrev = (PicturePtr *) &((pWindow)->devPrivates[PictureWindowPrivateIndex].ptr); - *pPrev; - pPrev = &(*pPrev)->pNext) - { - if (*pPrev == pPicture) - { - *pPrev = pPicture->pNext; - break; - } - } - } - else if (pPicture->pDrawable->type == DRAWABLE_PIXMAP) - { - (*pScreen->DestroyPixmap) ((PixmapPtr)pPicture->pDrawable); - } + if (!pPicture->pDrawable) { + if (pPicture->pSourcePict) { + if (pPicture->pSourcePict->type != SourcePictTypeSolidFill) + xfree(pPicture->pSourcePict->linear.stops); + xfree(pPicture->pSourcePict); + } + } else { + ScreenPtr pScreen = pPicture->pDrawable->pScreen; + PictureScreenPtr ps = GetPictureScreen(pScreen); + + if (pPicture->alphaMap) + FreePicture ((pointer) pPicture->alphaMap, (XID) 0); + (*ps->DestroyPicture) (pPicture); + (*ps->DestroyPictureClip) (pPicture); + if (pPicture->pDrawable->type == DRAWABLE_WINDOW) + { + WindowPtr pWindow = (WindowPtr) pPicture->pDrawable; + PicturePtr *pPrev; + + for (pPrev = (PicturePtr *) &((pWindow)->devPrivates[PictureWindowPrivateIndex].ptr); + *pPrev; + pPrev = &(*pPrev)->pNext) + { + if (*pPrev == pPicture) + { + *pPrev = pPicture->pNext; + break; + } + } + } + else if (pPicture->pDrawable->type == DRAWABLE_PIXMAP) + { + (*pScreen->DestroyPixmap) ((PixmapPtr)pPicture->pDrawable); + } + } xfree (pPicture); } return Success; @@ -1340,12 +1940,52 @@ CompositeTriFan (CARD8 op, (*ps->TriFan) (op, pSrc, pDst, maskFormat, xSrc, ySrc, npoints, points); } -typedef xFixed_32_32 xFixed_48_16; +void +AddTraps (PicturePtr pPicture, + INT16 xOff, + INT16 yOff, + int ntrap, + xTrap *traps) +{ + PictureScreenPtr ps = GetPictureScreen(pPicture->pDrawable->pScreen); + + ValidatePicture (pPicture); + (*ps->AddTraps) (pPicture, xOff, yOff, ntrap, traps); +} #define MAX_FIXED_48_16 ((xFixed_48_16) 0x7fffffff) #define MIN_FIXED_48_16 (-((xFixed_48_16) 1 << 31)) Bool +PictureTransformPoint3d (PictTransformPtr transform, + PictVectorPtr vector) +{ + PictVector result; + int i, j; + xFixed_32_32 partial; + xFixed_48_16 v; + + for (j = 0; j < 3; j++) + { + v = 0; + for (i = 0; i < 3; i++) + { + partial = ((xFixed_48_16) transform->matrix[j][i] * + (xFixed_48_16) vector->vector[i]); + v += partial >> 16; + } + if (v > MAX_FIXED_48_16 || v < MIN_FIXED_48_16) + return FALSE; + result.vector[j] = (xFixed) v; + } + if (!result.vector[2]) + return FALSE; + *vector = result; + return TRUE; +} + + +Bool PictureTransformPoint (PictTransformPtr transform, PictVectorPtr vector) { @@ -1395,12 +2035,13 @@ Bool nxagentReconnectAllPictFormat(void *p) { PictFormatPtr formats_old, formats; int nformats, nformats_old; + VisualPtr pVisual; Bool success = True; Bool matched; int i, n; CARD32 type, a, r, g, b; - #ifdef DEBUG + #if defined(NXAGENT_RECONNECT_DEBUG) || defined(NXAGENT_RECONNECT_PICTFORMAT_DEBUG) fprintf(stderr, "nxagentReconnectAllPictFormat\n"); #endif @@ -1414,13 +2055,15 @@ Bool nxagentReconnectAllPictFormat(void *p) formats = PictureCreateDefaultFormats (nxagentDefaultScreen, &nformats); if (!formats) - return FALSE; + return False; for (n = 0; n < nformats; n++) { if (formats[n].type == PictTypeIndexed) { - if ((formats[n].index.pVisual->class | DynamicClass) == PseudoColor) + pVisual = nxagentVisualFromID(nxagentDefaultScreen, formats[n].index.vid); + + if ((pVisual->class | DynamicClass) == PseudoColor) type = PICT_TYPE_COLOR; else type = PICT_TYPE_GRAY; @@ -1471,9 +2114,13 @@ Bool nxagentReconnectAllPictFormat(void *p) } } } + if (!matched) + { return False; + } } + xfree(formats); /* TODO: Perhaps do i have to do PictureFinishInit ?. */ @@ -1503,10 +2150,125 @@ void nxagentReconnectPictFormat(void *p0, XID x1, void *p2) pFormat = (PictFormatPtr)p0; pBool = (Bool*)p2; - #ifdef DEBUG + #if defined(NXAGENT_RECONNECT_DEBUG) || defined(NXAGENT_RECONNECT_PICTFORMAT_DEBUG) fprintf(stderr, "nxagentReconnectPictFormat.\n"); #endif } +/* + * The set of picture formats may change considerably + * between different X servers. This poses a problem + * while migrating NX sessions, because a requisite to + * successfully reconnect the session is that all pic- + * ture formats have to be available on the new X server. + * To reduce such problems, we use a limited set of + * pictures available on the most X servers. + */ + +void nxagentPictureCreateDefaultFormats(ScreenPtr pScreen, FormatInitRec *formats, int *nformats) +{ + DepthPtr pDepth; + VisualPtr pVisual; + + CARD32 format; + CARD8 depth; + + int r, g, b; + int bpp; + int d; + int v; + + + formats[*nformats].format = PICT_a1; + formats[*nformats].depth = 1; + *nformats += 1; + formats[*nformats].format = PICT_a4; + formats[*nformats].depth = 4; + *nformats += 1; + formats[*nformats].format = PICT_a8; + formats[*nformats].depth = 8; + *nformats += 1; + formats[*nformats].format = PICT_a8r8g8b8; + formats[*nformats].depth = 32; + *nformats += 1; + + /* + * This format should be required by the + * protocol, but it's not used by Xgl. + * + * formats[*nformats].format = PICT_x8r8g8b8; + * formats[*nformats].depth = 32; + * *nformats += 1; + */ + + /* now look through the depths and visuals adding other formats */ + for (v = 0; v < pScreen->numVisuals; v++) + { + pVisual = &pScreen->visuals[v]; + depth = visualDepth (pScreen, pVisual); + if (!depth) + continue; + + bpp = BitsPerPixel (depth); + + switch (pVisual->class) + { + case DirectColor: + case TrueColor: + r = Ones (pVisual->redMask); + g = Ones (pVisual->greenMask); + b = Ones (pVisual->blueMask); + + if (pVisual->offsetBlue == 0 && + pVisual->offsetGreen == b && + pVisual->offsetRed == b + g) + { + format = PICT_FORMAT(bpp, PICT_TYPE_ARGB, 0, r, g, b); + *nformats = addFormat (formats, *nformats, format, depth); + } + break; + case StaticColor: + case PseudoColor: + case StaticGray: + case GrayScale: + break; + } + } + + for (d = 0; d < pScreen -> numDepths; d++) + { + pDepth = &pScreen -> allowedDepths[d]; + bpp = BitsPerPixel(pDepth -> depth); + + switch (bpp) { + case 16: + if (pDepth->depth == 15) + { + *nformats = addFormat (formats, *nformats, + PICT_x1r5g5b5, pDepth->depth); + } + + if (pDepth->depth == 16) + { + *nformats = addFormat (formats, *nformats, + PICT_r5g6b5, pDepth->depth); + } + break; + case 24: + if (pDepth->depth == 24) + { + *nformats = addFormat (formats, *nformats, + PICT_r8g8b8, pDepth->depth); + } + break; + case 32: + if (pDepth->depth == 24) + { + *nformats = addFormat (formats, *nformats, + PICT_x8r8g8b8, pDepth->depth); + } + break; + } + } +} -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h b/nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h index 91eab01..b267925 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h +++ b/nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXpicturestr.h" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -22,9 +16,9 @@ /**************************************************************************/ /* - * $XFree86: xc/programs/Xserver/render/picturestr.h,v 1.22 2002/11/23 02:38:15 keithp Exp $ + * $Id: picturestr.h,v 1.15 2005/12/09 18:35:21 ajax Exp $ * - * Copyright � 2000 SuSE, Inc. + * Copyright © 2000 SuSE, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -40,7 +34,7 @@ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Keith Packard, SuSE, Inc. @@ -68,7 +62,7 @@ typedef struct _DirectFormat { } DirectFormatRec; typedef struct _IndexFormat { - VisualPtr pVisual; + VisualID vid; ColormapPtr pColormap; int nvalues; xIndexValue *pValues; @@ -92,6 +86,71 @@ typedef struct _PictTransform { xFixed matrix[3][3]; } PictTransform, *PictTransformPtr; +#define PICT_GRADIENT_STOPTABLE_SIZE 1024 +#define SourcePictTypeSolidFill 0 +#define SourcePictTypeLinear 1 +#define SourcePictTypeRadial 2 +#define SourcePictTypeConical 3 + +typedef struct _PictSolidFill { + unsigned int type; + CARD32 color; + xRenderColor fullColor; +} PictSolidFill, *PictSolidFillPtr; + +typedef struct _PictGradientStop { + xFixed x; + xRenderColor color; +} PictGradientStop, *PictGradientStopPtr; + +typedef struct _PictGradient { + unsigned int type; + int nstops; + PictGradientStopPtr stops; + CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; +} PictGradient, *PictGradientPtr; + +typedef struct _PictLinearGradient { + unsigned int type; + int nstops; + PictGradientStopPtr stops; + CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; + xPointFixed p1; + xPointFixed p2; +} PictLinearGradient, *PictLinearGradientPtr; + +typedef struct _PictRadialGradient { + unsigned int type; + int nstops; + PictGradientStopPtr stops; + CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; + double fx; + double fy; + double dx; + double dy; + double a; + double m; + double b; +} PictRadialGradient, *PictRadialGradientPtr; + +typedef struct _PictConicalGradient { + unsigned int type; + int nstops; + PictGradientStopPtr stops; + CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; + xPointFixed center; + xFixed angle; +} PictConicalGradient, *PictConicalGradientPtr; + +typedef union _SourcePict { + unsigned int type; + PictSolidFill solidFill; + PictGradient gradient; + PictLinearGradient linear; + PictRadialGradient radial; + PictConicalGradient conical; +} SourcePict, *SourcePictPtr; + typedef struct _Picture { DrawablePtr pDrawable; PictFormatPtr pFormat; @@ -99,7 +158,7 @@ typedef struct _Picture { int refcnt; CARD32 id; PicturePtr pNext; /* chain on same drawable */ - + unsigned int repeat : 1; unsigned int graphicsExposures : 1; unsigned int subWindowMode : 1; @@ -108,7 +167,8 @@ typedef struct _Picture { unsigned int freeCompClip : 1; unsigned int clientClipType : 2; unsigned int componentAlpha : 1; - unsigned int unused : 23; + unsigned int repeatType : 2; + unsigned int unused : 21; PicturePtr alphaMap; DDXPointRec alphaOrigin; @@ -122,21 +182,23 @@ typedef struct _Picture { unsigned long serialNumber; RegionPtr pCompositeClip; - + DevUnion *devPrivates; - + PictTransform *transform; int filter; xFixed *filter_params; int filter_nparams; + SourcePictPtr pSourcePict; } PictureRec; +typedef Bool (*PictFilterValidateParamsProcPtr) (PicturePtr pPicture, int id, + xFixed *params, int nparams); typedef struct { - char *name; - xFixed *params; - int nparams; - int id; + char *name; + int id; + PictFilterValidateParamsProcPtr ValidateParams; } PictFilterRec, *PictFilterPtr; #define PictFilterNearest 0 @@ -146,6 +208,8 @@ typedef struct { #define PictFilterGood 3 #define PictFilterBest 4 +#define PictFilterConvolution 5 + typedef struct { char *alias; int alias_id; @@ -159,7 +223,7 @@ typedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture, pointer value, int n); typedef void (*DestroyPictureClipProcPtr)(PicturePtr pPicture); - + typedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture, PictTransform *transform); @@ -255,6 +319,18 @@ typedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen, int ndef, xColorItem *pdef); +typedef void (*AddTrapsProcPtr) (PicturePtr pPicture, + INT16 xOff, + INT16 yOff, + int ntrap, + xTrap *traps); + +typedef void (*AddTrianglesProcPtr) (PicturePtr pPicture, + INT16 xOff, + INT16 yOff, + int ntri, + xTriangle *tris); + typedef struct _PictureScreen { int totalPictureSize; unsigned int *PicturePrivateSizes; @@ -263,12 +339,12 @@ typedef struct _PictureScreen { PictFormatPtr formats; PictFormatPtr fallback; int nformats; - + CreatePictureProcPtr CreatePicture; DestroyPictureProcPtr DestroyPicture; ChangePictureClipProcPtr ChangePictureClip; DestroyPictureClipProcPtr DestroyPictureClip; - + ChangePictureProcPtr ChangePicture; ValidatePictureProcPtr ValidatePicture; @@ -286,7 +362,7 @@ typedef struct _PictureScreen { UpdateIndexedProcPtr UpdateIndexed; int subpixel; - + PictFilterPtr filters; int nfilters; PictFilterAliasPtr filterAliases; @@ -295,13 +371,18 @@ typedef struct _PictureScreen { ChangePictureTransformProcPtr ChangePictureTransform; ChangePictureFilterProcPtr ChangePictureFilter; DestroyPictureFilterProcPtr DestroyPictureFilter; - + TrapezoidsProcPtr Trapezoids; TrianglesProcPtr Triangles; TriStripProcPtr TriStrip; TriFanProcPtr TriFan; RasterizeTrapezoidProcPtr RasterizeTrapezoid; + + AddTrianglesProcPtr AddTriangles; + + AddTrapsProcPtr AddTraps; + } PictureScreenRec, *PictureScreenPtr; extern int PictureScreenPrivateIndex; @@ -332,6 +413,15 @@ extern RESTYPE GlyphSetType; } \ } \ +void +ResetPicturePrivateIndex (void); + +int +AllocatePicturePrivateIndex (void); + +Bool +AllocatePicturePrivate (ScreenPtr pScreen, int index2, unsigned int amount); + Bool PictureDestroyWindow (WindowPtr pWindow); @@ -358,7 +448,7 @@ PictureMatchVisual (ScreenPtr pScreen, int depth, VisualPtr pVisual); PictFormatPtr PictureMatchFormat (ScreenPtr pScreen, int depth, CARD32 format); - + Bool PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats); @@ -369,14 +459,16 @@ char * PictureGetFilterName (int id); int -PictureAddFilter (ScreenPtr pScreen, char *filter, xFixed *params, int nparams); +PictureAddFilter (ScreenPtr pScreen, + char *filter, + PictFilterValidateParamsProcPtr ValidateParams); Bool PictureSetFilterAlias (ScreenPtr pScreen, char *filter, char *alias); Bool PictureSetDefaultFilters (ScreenPtr pScreen); - + void PictureResetFilters (ScreenPtr pScreen); @@ -391,7 +483,7 @@ PictureFinishInit (void); void SetPictureToDefaults (PicturePtr pPicture); - + PicturePtr AllocatePicture (ScreenPtr pScreen); @@ -425,9 +517,20 @@ SetPictureClipRects (PicturePtr pPicture, xRectangle *rects); int +SetPictureClipRegion (PicturePtr pPicture, + int xOrigin, + int yOrigin, + RegionPtr pRegion); + +int SetPictureTransform (PicturePtr pPicture, PictTransform *transform); - + +void +CopyPicture (PicturePtr pSrc, + Mask mask, + PicturePtr pDst); + void ValidatePicture(PicturePtr pPicture); @@ -515,6 +618,10 @@ Bool PictureTransformPoint (PictTransformPtr transform, PictVectorPtr vector); +Bool +PictureTransformPoint3d (PictTransformPtr transform, + PictVectorPtr vector); + void RenderExtensionInit (void); Bool @@ -523,11 +630,50 @@ AnimCurInit (ScreenPtr pScreen); int AnimCursorCreate (CursorPtr *cursors, CARD32 *deltas, int ncursor, CursorPtr *ppCursor); +void +AddTraps (PicturePtr pPicture, + INT16 xOff, + INT16 yOff, + int ntraps, + xTrap *traps); + +PicturePtr +CreateSolidPicture (Picture pid, + xRenderColor *color, + int *error); + +PicturePtr +CreateLinearGradientPicture (Picture pid, + xPointFixed *p1, + xPointFixed *p2, + int nStops, + xFixed *stops, + xRenderColor *colors, + int *error); + +PicturePtr +CreateRadialGradientPicture (Picture pid, + xPointFixed *inner, + xPointFixed *outer, + xFixed innerRadius, + xFixed outerRadius, + int nStops, + xFixed *stops, + xRenderColor *colors, + int *error); + +PicturePtr +CreateConicalGradientPicture (Picture pid, + xPointFixed *center, + xFixed angle, + int nStops, + xFixed *stops, + xRenderColor *colors, + int *error); + #ifdef PANORAMIX void PanoramiXRenderInit (void); void PanoramiXRenderReset (void); #endif #endif /* _PICTURESTR_H_ */ - -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c index 20a6bd6..cd1ec6d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXproperty.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -70,10 +64,14 @@ SOFTWARE. ******************************************************************/ /* $Xorg: property.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ -#include "X.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> #define NEED_REPLIES #define NEED_EVENTS -#include "Xproto.h" +#include <X11/Xproto.h> #include "windowstr.h" #include "propertyst.h" #include "dixstruct.h" @@ -81,7 +79,7 @@ SOFTWARE. #include "swaprep.h" #ifdef XCSECURITY #define _SECURITY_SERVER -#include "security.h" +#include <X11/extensions/security.h> #endif #ifdef LBX #include "lbxserve.h" @@ -91,16 +89,27 @@ SOFTWARE. #include "Options.h" #include "Rootless.h" #include "Client.h" +#include "Windows.h" #if defined(LBX) || defined(LBX_COMPAT) -int fWriteToClient(client, len, buf) - ClientPtr client; - int len; - char *buf; +#if 0 /* no header in X11 environment, not used in X11 environment */ +int fWriteToClient(ClientPtr client, int len, char *buf) { return WriteToClient(client, len, buf); } #endif +#endif + +extern Atom clientCutProperty; + +#ifdef NXAGENT_SERVER +typedef struct +{ + CARD32 state; + Window icon; +} +nxagentWMStateRec; +#endif /***************************************************************** * Property Stuff @@ -115,8 +124,7 @@ int fWriteToClient(client, len, buf) #ifdef notdef static void -PrintPropertys(pWin) - WindowPtr pWin; +PrintPropertys(WindowPtr pWin) { PropertyPtr pProp; register int j; @@ -135,8 +143,7 @@ PrintPropertys(pWin) #endif int -ProcRotateProperties(client) - ClientPtr client; +ProcRotateProperties(ClientPtr client) { int i, j, delta; REQUEST(xRotatePropertiesReq); @@ -228,8 +235,7 @@ found: } int -ProcChangeProperty(client) - ClientPtr client; +ProcChangeProperty(ClientPtr client) { WindowPtr pWin; char format, mode; @@ -330,18 +336,18 @@ ProcChangeProperty(client) nxagentGuessShadowHint(client, stuff->property); + #ifdef NX_DEBUG_INPUT + nxagentGuessDumpInputInfo(client, stuff->property, (char *) &stuff[1]); + #endif + return client->noClientException; } } int -ChangeWindowProperty(pWin, property, type, format, mode, len, value, sendevent) - WindowPtr pWin; - Atom property, type; - int format, mode; - unsigned long len; - pointer value; - Bool sendevent; +ChangeWindowProperty(WindowPtr pWin, Atom property, Atom type, int format, + int mode, unsigned long len, pointer value, + Bool sendevent) { #ifdef LBX return LbxChangeWindowProperty(NULL, pWin, property, type, @@ -353,10 +359,23 @@ ChangeWindowProperty(pWin, property, type, format, mode, len, value, sendevent) int sizeInBytes; int totalSize; pointer data; + int copySize; sizeInBytes = format>>3; totalSize = len * sizeInBytes; + copySize = nxagentOption(CopyBufferSize); + + if (copySize != COPY_UNLIMITED && property == clientCutProperty) + { + if (totalSize > copySize) + { + totalSize = copySize; + totalSize = totalSize - (totalSize % sizeInBytes); + len = totalSize / sizeInBytes; + } + } + /* first see if property already exists */ pProp = wUserProps (pWin); @@ -458,9 +477,7 @@ ChangeWindowProperty(pWin, property, type, format, mode, len, value, sendevent) } int -DeleteProperty(pWin, propName) - WindowPtr pWin; - Atom propName; +DeleteProperty(WindowPtr pWin, Atom propName) { PropertyPtr pProp, prevProp; xEvent event; @@ -503,8 +520,7 @@ DeleteProperty(pWin, propName) } void -DeleteAllWindowProperties(pWin) - WindowPtr pWin; +DeleteAllWindowProperties(WindowPtr pWin) { PropertyPtr pProp, pNextProp; xEvent event; @@ -530,11 +546,11 @@ DeleteAllWindowProperties(pWin) } static int -NullPropertyReply(client, propertyType, format, reply) - ClientPtr client; - ATOM propertyType; - int format; - xGetPropertyReply *reply; +NullPropertyReply( + ClientPtr client, + ATOM propertyType, + int format, + xGetPropertyReply *reply) { reply->nItems = 0; reply->length = 0; @@ -556,9 +572,13 @@ NullPropertyReply(client, propertyType, format, reply) *****************/ int -ProcGetProperty(client) - ClientPtr client; +ProcGetProperty(ClientPtr client) { + #ifdef NXAGENT_SERVER + nxagentWMStateRec wmState; + nxagentWMStateRec *wmsP = &wmState; + #endif + PropertyPtr pProp, prevProp; unsigned long n, len, ind; WindowPtr pWin; @@ -566,6 +586,7 @@ ProcGetProperty(client) REQUEST(xGetPropertyReq); REQUEST_SIZE_MATCH(xGetPropertyReq); + if (stuff->delete) UpdateCurrentTime(); pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, @@ -601,6 +622,59 @@ ProcGetProperty(client) reply.type = X_Reply; reply.sequenceNumber = client->sequence; + + #ifdef NXAGENT_SERVER + + /* + * Creating a reply for WM_STATE property if it doesn't exist. + * This is intended to allow drag & drop work in JAva 1.6 when + * the agent is connected to NXWin in multiwindow mode. + */ + + if (nxagentOption(Rootless) && + nxagentWindowTopLevel(pWin) && + (!pProp) && + strcmp(NameForAtom(stuff->property), "WM_STATE") == 0) + { + wmState.state = 1; + wmState.icon = None; + + if (ChangeWindowProperty(pWin, stuff->property, stuff->property, 32, 0, 2, &wmState, 1) == Success) + { + nxagentExportProperty(pWin, stuff->property, stuff->property, 32, 0, 2, &wmState); + } + + n = 8; + ind = stuff->longOffset << 2; + + if (n < ind) + { + client->errorValue = stuff->longOffset; + return BadValue; + } + + len = min(n - ind, 4 * stuff->longLength); + + reply.bytesAfter = n - (ind + len); + reply.length = (len + 3) >> 2; + + reply.format = 32; + reply.nItems = len / 4; + reply.propertyType = stuff->property; + + WriteReplyToClient(client, sizeof(xGenericReply), &reply); + + if (len) + { + client->pSwapReplyFunc = (ReplySwapPtr)CopySwap32Write; + + WriteSwappedDataToClient(client, len, (char *)wmsP + ind); + } + + return(client->noClientException); + } + #endif + if (!pProp) return NullPropertyReply(client, None, 0, &reply); @@ -832,8 +906,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, #endif int -ProcListProperties(client) - ClientPtr client; +ProcListProperties(ClientPtr client) { Atom *pAtoms = NULL, *temppAtoms; xListPropertiesReply xlpr; @@ -880,8 +953,7 @@ ProcListProperties(client) } int -ProcDeleteProperty(client) - register ClientPtr client; +ProcDeleteProperty(register ClientPtr client) { WindowPtr pWin; REQUEST(xDeletePropertyReq); @@ -918,4 +990,3 @@ ProcDeleteProperty(client) return(result); } -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXrender.c b/nx-X11/programs/Xserver/hw/nxagent/NXrender.c index 43607ac..89e7901 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXrender.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXrender.c @@ -1,13 +1,8 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXrender.c" - -#else - +/* $XdotOrg: xc/programs/Xserver/render/render.c,v 1.12 2005/08/28 19:47:39 ajax Exp $ */ /* - * $XFree86: xc/programs/Xserver/render/render.c,v 1.26 2003/02/14 18:15:21 dawes Exp $ + * $XFree86: xc/programs/Xserver/render/render.c,v 1.27tsi Exp $ * - * Copyright � 2000 SuSE, Inc. + * Copyright © 2000 SuSE, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -48,8 +43,12 @@ #define NEED_REPLIES #define NEED_EVENTS -#include "X.h" -#include "Xproto.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> +#include <X11/Xproto.h> #include "misc.h" #include "os.h" #include "dixstruct.h" @@ -60,14 +59,18 @@ #include "colormapst.h" #include "extnsionst.h" #include "servermd.h" -#include "render.h" -#include "renderproto.h" -#include "Xfuncproto.h" +#include <X11/extensions/render.h> +#include <X11/extensions/renderproto.h> +#include <X11/Xfuncproto.h> #include "cursorstr.h" #ifdef EXTMODULE #include "xf86_ansic.h" #endif +#if !defined(UINT32_MAX) +#define UINT32_MAX 0xffffffffU +#endif + #include "NXpicturestr.h" #include "NXglyphstr.h" @@ -77,6 +80,7 @@ #include "Pixmaps.h" #include "Options.h" #include "Screen.h" +#include "Cursor.h" /* * Set here the required log level. @@ -87,6 +91,10 @@ #undef TEST #undef DEBUG +#ifdef TEST +#include "Literals.h" +#endif + /* * From NXmiglyph.c. */ @@ -95,6 +103,12 @@ void miGlyphExtents(int nlist, GlyphListPtr list, GlyphPtr *glyphs, BoxPtr extents); /* + * From NXmitrap.c. + */ + +void miTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box); + +/* * Functions from Render.c. */ @@ -102,7 +116,6 @@ int nxagentCursorSaveRenderInfo(ScreenPtr, CursorPtr); void nxagentCursorPostSaveRenderInfo(CursorPtr, ScreenPtr, PicturePtr, int, int); int nxagentRenderRealizeCursor(ScreenPtr, CursorPtr); int nxagentCreatePicture(PicturePtr, Mask); -void nxagentDestroyPicture(PicturePtr pPicture); void nxagentChangePicture(PicturePtr, Mask); int nxagentChangePictureClip(PicturePtr, int, int, xRectangle *, int, int); void nxagentComposite(CARD8, PicturePtr, PicturePtr, PicturePtr, INT16, INT16, @@ -118,6 +131,28 @@ void nxagentSetPictureFilter(PicturePtr pPicture, char *filter, int name_size, void nxagentTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid *traps); +void nxagentRenderCreateSolidFill(PicturePtr pPicture, xRenderColor *color); + +void nxagentRenderCreateLinearGradient(PicturePtr pPicture, xPointFixed *p1, + xPointFixed *p2, int nStops, + xFixed *stops, + xRenderColor *colors); + +void nxagentRenderCreateRadialGradient(PicturePtr pPicture, xPointFixed *inner, + xPointFixed *outer, + xFixed innerRadius, + xFixed outerRadius, + int nStops, + xFixed *stops, + xRenderColor *colors); + +void nxagentRenderCreateConicalGradient(PicturePtr pPicture, + xPointFixed *center, + xFixed angle, int nStops, + xFixed *stops, + xRenderColor *colors); + + /* * The void pointer is actually a XGlyphElt8. */ @@ -155,6 +190,11 @@ static int ProcRenderSetPictureTransform (ClientPtr pClient); static int ProcRenderQueryFilters (ClientPtr pClient); static int ProcRenderSetPictureFilter (ClientPtr pClient); static int ProcRenderCreateAnimCursor (ClientPtr pClient); +static int ProcRenderAddTraps (ClientPtr pClient); +static int ProcRenderCreateSolidFill (ClientPtr pClient); +static int ProcRenderCreateLinearGradient (ClientPtr pClient); +static int ProcRenderCreateRadialGradient (ClientPtr pClient); +static int ProcRenderCreateConicalGradient (ClientPtr pClient); static int ProcRenderDispatch (ClientPtr pClient); @@ -188,6 +228,11 @@ static int SProcRenderSetPictureTransform (ClientPtr pClient); static int SProcRenderQueryFilters (ClientPtr pClient); static int SProcRenderSetPictureFilter (ClientPtr pClient); static int SProcRenderCreateAnimCursor (ClientPtr pClient); +static int SProcRenderAddTraps (ClientPtr pClient); +static int SProcRenderCreateSolidFill (ClientPtr pClient); +static int SProcRenderCreateLinearGradient (ClientPtr pClient); +static int SProcRenderCreateRadialGradient (ClientPtr pClient); +static int SProcRenderCreateConicalGradient (ClientPtr pClient); static int SProcRenderDispatch (ClientPtr pClient); @@ -224,6 +269,11 @@ int (*ProcRenderVector[RenderNumberRequests])(ClientPtr) = { ProcRenderQueryFilters, ProcRenderSetPictureFilter, ProcRenderCreateAnimCursor, + ProcRenderAddTraps, + ProcRenderCreateSolidFill, + ProcRenderCreateLinearGradient, + ProcRenderCreateRadialGradient, + ProcRenderCreateConicalGradient }; int (*SProcRenderVector[RenderNumberRequests])(ClientPtr) = { @@ -259,12 +309,19 @@ int (*SProcRenderVector[RenderNumberRequests])(ClientPtr) = { SProcRenderQueryFilters, SProcRenderSetPictureFilter, SProcRenderCreateAnimCursor, + SProcRenderAddTraps, + SProcRenderCreateSolidFill, + SProcRenderCreateLinearGradient, + SProcRenderCreateRadialGradient, + SProcRenderCreateConicalGradient }; static void RenderResetProc (ExtensionEntry *extEntry); +#if 0 static CARD8 RenderReqCode; +#endif int RenderErrBase; int RenderClientPrivateIndex; @@ -309,13 +366,17 @@ RenderExtensionInit (void) RenderResetProc, StandardMinorOpcode); if (!extEntry) return; +#if 0 RenderReqCode = (CARD8) extEntry->base; +#endif RenderErrBase = extEntry->errorBase; } static void RenderResetProc (ExtensionEntry *extEntry) { + ResetPicturePrivateIndex(); + ResetGlyphSetPrivateIndex(); } static int @@ -719,6 +780,7 @@ ProcRenderChangePicture (ClientPtr client) REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq); VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, RenderErrBase + BadPicture); + len = client->req_len - (sizeof(xRenderChangePictureReq) >> 2); if (Ones(stuff->mask) != len) return BadLength; @@ -742,6 +804,9 @@ ProcRenderSetPictureClipRectangles (ClientPtr client) REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq); VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, RenderErrBase + BadPicture); + if (!pPicture->pDrawable) + return BadDrawable; + /* * The original code used sizeof(xRenderChangePictureReq). * This was harmless, as both structures have the same size. @@ -779,8 +844,6 @@ ProcRenderFreePicture (ClientPtr client) VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityDestroyAccess, RenderErrBase + BadPicture); - nxagentDestroyPicture(pPicture); - FreeResource (stuff->picture, RT_NONE); return(client->noClientException); } @@ -874,14 +937,23 @@ ProcRenderComposite (ClientPtr client) client->errorValue = stuff->op; return BadValue; } + VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + if (!pDst->pDrawable) + return BadDrawable; VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, RenderErrBase + BadPicture); VERIFY_ALPHA (pMask, stuff->mask, client, SecurityReadAccess, RenderErrBase + BadPicture); - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen || - (pMask && pSrc->pDrawable->pScreen != pMask->pDrawable->pScreen)) +/* +FIXME: Imported change from newest version of Xorg. Changed pSrc to pDst. + + if ((pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) || + (pMask && pMask->pDrawable && pSrc->pDrawable->pScreen != pMask->pDrawable->pScreen)) + return BadMatch; +*/ + if ((pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) || + (pMask && pMask->pDrawable && pDst->pDrawable->pScreen != pMask->pDrawable->pScreen)) return BadMatch; ValidatePicture (pSrc); @@ -1010,7 +1082,9 @@ ProcRenderTrapezoids (ClientPtr client) RenderErrBase + BadPicture); VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, RenderErrBase + BadPicture); - if (pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) + if (!pDst->pDrawable) + return BadDrawable; + if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) return BadMatch; if (stuff->maskFormat) { @@ -1032,16 +1106,30 @@ ProcRenderTrapezoids (ClientPtr client) ntraps /= sizeof (xTrapezoid); if (ntraps) { - if (nxagentCompositePredicate(pSrc, pDst)) - { + if (pFormat != NULL) + { + nxagentTrapezoidExtents = (BoxPtr) xalloc(sizeof(BoxRec)); + + miTrapezoidBounds (ntraps, (xTrapezoid *) &stuff[1], nxagentTrapezoidExtents); + } + + if (nxagentCompositePredicate(pSrc, pDst) == 1) + { CompositeTrapezoids (stuff->op, pSrc, pDst, pFormat, stuff->xSrc, stuff->ySrc, ntraps, (xTrapezoid *) &stuff[1]); - } + } - nxagentTrapezoids (stuff->op, pSrc, pDst, pFormat, + nxagentTrapezoids (stuff->op, pSrc, pDst, pFormat, stuff->xSrc, stuff->ySrc, - ntraps, (xTrapezoid *) &stuff[1]); + ntraps, (xTrapezoid *) &stuff[1]); + + if (nxagentTrapezoidExtents != NullBox) + { + xfree(nxagentTrapezoidExtents); + + nxagentTrapezoidExtents = NullBox; + } } return client->noClientException; @@ -1065,7 +1153,9 @@ ProcRenderTriangles (ClientPtr client) RenderErrBase + BadPicture); VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, RenderErrBase + BadPicture); - if (pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) + if (!pDst->pDrawable) + return BadDrawable; + if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) return BadMatch; if (stuff->maskFormat) { @@ -1110,7 +1200,9 @@ ProcRenderTriStrip (ClientPtr client) RenderErrBase + BadPicture); VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, RenderErrBase + BadPicture); - if (pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) + if (!pDst->pDrawable) + return BadDrawable; + if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) return BadMatch; if (stuff->maskFormat) { @@ -1155,7 +1247,9 @@ ProcRenderTriFan (ClientPtr client) RenderErrBase + BadPicture); VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, RenderErrBase + BadPicture); - if (pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) + if (!pDst->pDrawable) + return BadDrawable; + if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) return BadMatch; if (stuff->maskFormat) { @@ -1340,11 +1434,14 @@ ProcRenderAddGlyphs (ClientPtr client) } nglyphs = stuff->nglyphs; + if (nglyphs > UINT32_MAX / sizeof(GlyphNewRec)) + return BadAlloc; + if (nglyphs <= NLOCALGLYPH) glyphsBase = glyphsLocal; else { - glyphsBase = (GlyphNewPtr) ALLOCATE_LOCAL (nglyphs * sizeof (GlyphNewRec)); + glyphsBase = (GlyphNewPtr) Xalloc (nglyphs * sizeof (GlyphNewRec)); if (!glyphsBase) return BadAlloc; } @@ -1399,11 +1496,13 @@ ProcRenderAddGlyphs (ClientPtr client) goto bail; } glyphs = glyphsBase; - while (nglyphs--) + while (nglyphs--) { AddGlyph (glyphSet, glyphs->glyph, glyphs->id); + glyphs++; + } if (glyphsBase != glyphsLocal) - DEALLOCATE_LOCAL (glyphsBase); + Xfree (glyphsBase); return client->noClientException; bail: while (glyphs != glyphsBase) @@ -1412,7 +1511,7 @@ bail: xfree (glyphs->glyph); } if (glyphsBase != glyphsLocal) - DEALLOCATE_LOCAL (glyphsBase); + Xfree (glyphsBase); return err; } @@ -1507,7 +1606,9 @@ ProcRenderCompositeGlyphs (ClientPtr client) RenderErrBase + BadPicture); VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, RenderErrBase + BadPicture); - if (pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) + if (!pDst->pDrawable) + return BadDrawable; + if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) return BadMatch; if (stuff->maskFormat) { @@ -1596,7 +1697,7 @@ ProcRenderCompositeGlyphs (ClientPtr client) if (buffer + sizeof (GlyphSet) < end) { - gs = *(GlyphSet *) buffer; + memcpy(&gs, buffer, sizeof(GlyphSet)); glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, gs, GlyphSetType, @@ -1619,6 +1720,17 @@ ProcRenderCompositeGlyphs (ClientPtr client) lists->yOff = elt->deltay; lists->format = glyphSet->format; lists->len = 0; + + if (glyphSet -> remoteID == 0) + { + #ifdef TEST + fprintf(stderr, "ProcRenderCompositeGlyphs: Going to reconnect glyphset at [%p].\n", + (void *) glyphSet); + #endif + + nxagentReconnectGlyphSet(glyphSet, (XID) 0, (void*) NULL); + } + elements -> glyphset = glyphSet -> remoteID; elements -> chars = (char *) buffer; elements -> nchars = elt->len; @@ -1665,12 +1777,9 @@ ProcRenderCompositeGlyphs (ClientPtr client) * after the X requests. */ - if (pFormat != NULL) - { - nxagentGlyphsExtents = (BoxPtr) xalloc(sizeof(BoxRec)); + nxagentGlyphsExtents = (BoxPtr) xalloc(sizeof(BoxRec)); - miGlyphExtents(nlist, listsBase, glyphsBase, nxagentGlyphsExtents); - } + miGlyphExtents(nlist, listsBase, glyphsBase, nxagentGlyphsExtents); nxagentGlyphs(stuff -> op, pSrc, @@ -1702,12 +1811,8 @@ ProcRenderCompositeGlyphs (ClientPtr client) glyphsBase); } - if (nxagentGlyphsExtents != NullBox) - { - xfree(nxagentGlyphsExtents); - - nxagentGlyphsExtents = NullBox; - } + xfree(nxagentGlyphsExtents); + nxagentGlyphsExtents = NullBox; if (glyphsBase != glyphsLocal) DEALLOCATE_LOCAL (glyphsBase); @@ -1734,6 +1839,8 @@ ProcRenderFillRectangles (ClientPtr client) } VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, RenderErrBase + BadPicture); + if (!pDst->pDrawable) + return BadDrawable; things = (client->req_len << 2) - sizeof(xRenderFillRectanglesReq); if (things & 4) @@ -1807,9 +1914,13 @@ ProcRenderCreateCursor (ClientPtr client) VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, RenderErrBase + BadPicture); + if (!pSrc->pDrawable) + return BadDrawable; pScreen = pSrc->pDrawable->pScreen; width = pSrc->pDrawable->width; height = pSrc->pDrawable->height; + if (height && width > UINT32_MAX/(height*sizeof(CARD32))) + return BadAlloc; if ( stuff->x > width || stuff->y > height ) return (BadMatch); @@ -2202,7 +2313,9 @@ ProcRenderCreateAnimCursor (ClientPtr client) xfree (cursors); if (ret != Success) return ret; - + + nxagentAnimCursorBits = pCursor -> bits; + for (i = 0; i < MAXSCREENS; i++) { pCursor -> devPriv[i] = NULL; @@ -2214,6 +2327,164 @@ ProcRenderCreateAnimCursor (ClientPtr client) } static int +ProcRenderAddTraps (ClientPtr client) +{ + int ntraps; + PicturePtr pPicture; + REQUEST(xRenderAddTrapsReq); + + REQUEST_AT_LEAST_SIZE(xRenderAddTrapsReq); + VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + if (!pPicture->pDrawable) + return BadDrawable; + ntraps = (client->req_len << 2) - sizeof (xRenderAddTrapsReq); + if (ntraps % sizeof (xTrap)) + return BadLength; + ntraps /= sizeof (xTrap); + if (ntraps) + AddTraps (pPicture, + stuff->xOff, stuff->yOff, + ntraps, (xTrap *) &stuff[1]); + return client->noClientException; +} + +static int ProcRenderCreateSolidFill(ClientPtr client) +{ + PicturePtr pPicture; + int error = 0; + REQUEST(xRenderCreateSolidFillReq); + + REQUEST_AT_LEAST_SIZE(xRenderCreateSolidFillReq); + + LEGAL_NEW_RESOURCE(stuff->pid, client); + + pPicture = CreateSolidPicture(stuff->pid, &stuff->color, &error); + if (!pPicture) + return error; + /* AGENT SERVER */ + + nxagentRenderCreateSolidFill(pPicture, &stuff -> color); + + /* AGENT SERVER */ + if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) + return BadAlloc; + return Success; +} + +static int ProcRenderCreateLinearGradient (ClientPtr client) +{ + PicturePtr pPicture; + int len; + int error = 0; + xFixed *stops; + xRenderColor *colors; + REQUEST(xRenderCreateLinearGradientReq); + + REQUEST_AT_LEAST_SIZE(xRenderCreateLinearGradientReq); + + LEGAL_NEW_RESOURCE(stuff->pid, client); + + len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq); + if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + + stops = (xFixed *)(stuff + 1); + colors = (xRenderColor *)(stops + stuff->nStops); + + pPicture = CreateLinearGradientPicture (stuff->pid, &stuff->p1, &stuff->p2, + stuff->nStops, stops, colors, &error); + if (!pPicture) + return error; + /* AGENT SERVER */ + + nxagentRenderCreateLinearGradient(pPicture, &stuff->p1, &stuff->p2, + stuff->nStops, stops, colors); + + /* AGENT SERVER */ + if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) + return BadAlloc; + return Success; +} + +static int ProcRenderCreateRadialGradient (ClientPtr client) +{ + PicturePtr pPicture; + int len; + int error = 0; + xFixed *stops; + xRenderColor *colors; + REQUEST(xRenderCreateRadialGradientReq); + + REQUEST_AT_LEAST_SIZE(xRenderCreateRadialGradientReq); + + LEGAL_NEW_RESOURCE(stuff->pid, client); + + len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq); + if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + + stops = (xFixed *)(stuff + 1); + colors = (xRenderColor *)(stops + stuff->nStops); + + pPicture = CreateRadialGradientPicture (stuff->pid, &stuff->inner, &stuff->outer, + stuff->inner_radius, stuff->outer_radius, + stuff->nStops, stops, colors, &error); + if (!pPicture) + return error; + /* AGENT SERVER */ + + nxagentRenderCreateRadialGradient(pPicture, &stuff->inner, &stuff->outer, + stuff->inner_radius, + stuff->outer_radius, + stuff->nStops, stops, colors); + + /* AGENT SERVER */ + if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) + return BadAlloc; + return Success; +} + +static int ProcRenderCreateConicalGradient (ClientPtr client) +{ + PicturePtr pPicture; + int len; + int error = 0; + xFixed *stops; + xRenderColor *colors; + REQUEST(xRenderCreateConicalGradientReq); + + REQUEST_AT_LEAST_SIZE(xRenderCreateConicalGradientReq); + + LEGAL_NEW_RESOURCE(stuff->pid, client); + + len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq); + if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + + stops = (xFixed *)(stuff + 1); + colors = (xRenderColor *)(stops + stuff->nStops); + + pPicture = CreateConicalGradientPicture (stuff->pid, &stuff->center, stuff->angle, + stuff->nStops, stops, colors, &error); + if (!pPicture) + return error; + /* AGENT SERVER */ + + nxagentRenderCreateConicalGradient(pPicture, &stuff->center, + stuff->angle, stuff->nStops, stops, + colors); + + /* AGENT SERVER */ + if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) + return BadAlloc; + return Success; +} + + +static int ProcRenderDispatch (ClientPtr client) { int result; @@ -2232,6 +2503,11 @@ ProcRenderDispatch (ClientPtr client) if (stuff->data < RenderNumberRequests) { + #ifdef TEST + fprintf(stderr, "ProcRenderDispatch: Request [%s] OPCODE#%d.\n", + nxagentRenderRequestLiteral[stuff->data], stuff->data); + #endif + /* * Set the nxagentGCTrap flag while * dispatching a render operation to @@ -2705,6 +2981,136 @@ SProcRenderCreateAnimCursor (ClientPtr client) } static int +SProcRenderAddTraps (ClientPtr client) +{ + register int n; + REQUEST (xRenderAddTrapsReq); + REQUEST_AT_LEAST_SIZE (xRenderAddTrapsReq); + + swaps(&stuff->length, n); + swapl(&stuff->picture, n); + swaps(&stuff->xOff, n); + swaps(&stuff->yOff, n); + SwapRestL(stuff); + return (*ProcRenderVector[stuff->renderReqType]) (client); +} + +static int +SProcRenderCreateSolidFill(ClientPtr client) +{ + register int n; + REQUEST (xRenderCreateSolidFillReq); + REQUEST_AT_LEAST_SIZE (xRenderCreateSolidFillReq); + + swaps(&stuff->length, n); + swapl(&stuff->pid, n); + swaps(&stuff->color.alpha, n); + swaps(&stuff->color.red, n); + swaps(&stuff->color.green, n); + swaps(&stuff->color.blue, n); + return (*ProcRenderVector[stuff->renderReqType]) (client); +} + +static void swapStops(void *stuff, int num) +{ + int i, n; + CARD32 *stops; + CARD16 *colors; + stops = (CARD32 *)(stuff); + for (i = 0; i < num; ++i) { + swapl(stops, n); + ++stops; + } + colors = (CARD16 *)(stops); + for (i = 0; i < 4*num; ++i) { + swaps(stops, n); + ++stops; + } +} + +static int +SProcRenderCreateLinearGradient (ClientPtr client) +{ + register int n; + int len; + REQUEST (xRenderCreateLinearGradientReq); + REQUEST_AT_LEAST_SIZE (xRenderCreateLinearGradientReq); + + swaps(&stuff->length, n); + swapl(&stuff->pid, n); + swapl(&stuff->p1.x, n); + swapl(&stuff->p1.y, n); + swapl(&stuff->p2.x, n); + swapl(&stuff->p2.y, n); + swapl(&stuff->nStops, n); + + len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq); + if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + + swapStops(stuff+1, stuff->nStops); + + return (*ProcRenderVector[stuff->renderReqType]) (client); +} + +static int +SProcRenderCreateRadialGradient (ClientPtr client) +{ + register int n; + int len; + REQUEST (xRenderCreateRadialGradientReq); + REQUEST_AT_LEAST_SIZE (xRenderCreateRadialGradientReq); + + swaps(&stuff->length, n); + swapl(&stuff->pid, n); + swapl(&stuff->inner.x, n); + swapl(&stuff->inner.y, n); + swapl(&stuff->outer.x, n); + swapl(&stuff->outer.y, n); + swapl(&stuff->inner_radius, n); + swapl(&stuff->outer_radius, n); + swapl(&stuff->nStops, n); + + len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq); + if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + + swapStops(stuff+1, stuff->nStops); + + return (*ProcRenderVector[stuff->renderReqType]) (client); +} + +static int +SProcRenderCreateConicalGradient (ClientPtr client) +{ + register int n; + int len; + REQUEST (xRenderCreateConicalGradientReq); + REQUEST_AT_LEAST_SIZE (xRenderCreateConicalGradientReq); + + swaps(&stuff->length, n); + swapl(&stuff->pid, n); + swapl(&stuff->center.x, n); + swapl(&stuff->center.y, n); + swapl(&stuff->angle, n); + swapl(&stuff->nStops, n); + + len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq); + if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) + return BadLength; + + swapStops(stuff+1, stuff->nStops); + + return (*ProcRenderVector[stuff->renderReqType]) (client); +} + +static int SProcRenderDispatch (ClientPtr client) { int result; @@ -2850,6 +3256,48 @@ PanoramiXRenderSetPictureClipRectangles (ClientPtr client) } static int +PanoramiXRenderSetPictureTransform (ClientPtr client) +{ + REQUEST(xRenderSetPictureTransformReq); + int result = Success, j; + PanoramiXRes *pict; + + REQUEST_AT_LEAST_SIZE(xRenderSetPictureTransformReq); + + VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + FOR_NSCREENS_BACKWARD(j) { + stuff->picture = pict->info[j].id; + result = (*PanoramiXSaveRenderVector[X_RenderSetPictureTransform]) (client); + if(result != Success) break; + } + + return (result); +} + +static int +PanoramiXRenderSetPictureFilter (ClientPtr client) +{ + REQUEST(xRenderSetPictureFilterReq); + int result = Success, j; + PanoramiXRes *pict; + + REQUEST_AT_LEAST_SIZE(xRenderSetPictureFilterReq); + + VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + FOR_NSCREENS_BACKWARD(j) { + stuff->picture = pict->info[j].id; + result = (*PanoramiXSaveRenderVector[X_RenderSetPictureFilter]) (client); + if(result != Success) break; + } + + return (result); +} + +static int PanoramiXRenderFreePicture (ClientPtr client) { PanoramiXRes *pict; @@ -3013,6 +3461,364 @@ PanoramiXRenderFillRectangles (ClientPtr client) return result; } +static int +PanoramiXRenderTrapezoids(ClientPtr client) +{ + PanoramiXRes *src, *dst; + int result = Success, j; + REQUEST(xRenderTrapezoidsReq); + char *extra; + int extra_len; + + REQUEST_AT_LEAST_SIZE (xRenderTrapezoidsReq); + + VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, + RenderErrBase + BadPicture); + VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + extra_len = (client->req_len << 2) - sizeof (xRenderTrapezoidsReq); + + if (extra_len && + (extra = (char *) ALLOCATE_LOCAL (extra_len))) { + memcpy (extra, stuff + 1, extra_len); + + FOR_NSCREENS_FORWARD(j) { + if (j) memcpy (stuff + 1, extra, extra_len); + if (dst->u.pict.root) { + int x_off = panoramiXdataPtr[j].x; + int y_off = panoramiXdataPtr[j].y; + + if(x_off || y_off) { + xTrapezoid *trap = (xTrapezoid *) (stuff + 1); + int i = extra_len / sizeof (xTrapezoid); + + while (i--) { + trap->top -= y_off; + trap->bottom -= y_off; + trap->left.p1.x -= x_off; + trap->left.p1.y -= y_off; + trap->left.p2.x -= x_off; + trap->left.p2.y -= y_off; + trap->right.p1.x -= x_off; + trap->right.p1.y -= y_off; + trap->right.p2.x -= x_off; + trap->right.p2.y -= y_off; + trap++; + } + } + } + + stuff->src = src->info[j].id; + stuff->dst = dst->info[j].id; + result = + (*PanoramiXSaveRenderVector[X_RenderTrapezoids]) (client); + + if(result != Success) break; + } + + DEALLOCATE_LOCAL(extra); + } + + return result; +} + +static int +PanoramiXRenderTriangles(ClientPtr client) +{ + PanoramiXRes *src, *dst; + int result = Success, j; + REQUEST(xRenderTrianglesReq); + char *extra; + int extra_len; + + REQUEST_AT_LEAST_SIZE (xRenderTrianglesReq); + + VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, + RenderErrBase + BadPicture); + VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + extra_len = (client->req_len << 2) - sizeof (xRenderTrianglesReq); + + if (extra_len && + (extra = (char *) ALLOCATE_LOCAL (extra_len))) { + memcpy (extra, stuff + 1, extra_len); + + FOR_NSCREENS_FORWARD(j) { + if (j) memcpy (stuff + 1, extra, extra_len); + if (dst->u.pict.root) { + int x_off = panoramiXdataPtr[j].x; + int y_off = panoramiXdataPtr[j].y; + + if(x_off || y_off) { + xTriangle *tri = (xTriangle *) (stuff + 1); + int i = extra_len / sizeof (xTriangle); + + while (i--) { + tri->p1.x -= x_off; + tri->p1.y -= y_off; + tri->p2.x -= x_off; + tri->p2.y -= y_off; + tri->p3.x -= x_off; + tri->p3.y -= y_off; + tri++; + } + } + } + + stuff->src = src->info[j].id; + stuff->dst = dst->info[j].id; + result = + (*PanoramiXSaveRenderVector[X_RenderTriangles]) (client); + + if(result != Success) break; + } + + DEALLOCATE_LOCAL(extra); + } + + return result; +} + +static int +PanoramiXRenderTriStrip(ClientPtr client) +{ + PanoramiXRes *src, *dst; + int result = Success, j; + REQUEST(xRenderTriStripReq); + char *extra; + int extra_len; + + REQUEST_AT_LEAST_SIZE (xRenderTriStripReq); + + VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, + RenderErrBase + BadPicture); + VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + extra_len = (client->req_len << 2) - sizeof (xRenderTriStripReq); + + if (extra_len && + (extra = (char *) ALLOCATE_LOCAL (extra_len))) { + memcpy (extra, stuff + 1, extra_len); + + FOR_NSCREENS_FORWARD(j) { + if (j) memcpy (stuff + 1, extra, extra_len); + if (dst->u.pict.root) { + int x_off = panoramiXdataPtr[j].x; + int y_off = panoramiXdataPtr[j].y; + + if(x_off || y_off) { + xPointFixed *fixed = (xPointFixed *) (stuff + 1); + int i = extra_len / sizeof (xPointFixed); + + while (i--) { + fixed->x -= x_off; + fixed->y -= y_off; + fixed++; + } + } + } + + stuff->src = src->info[j].id; + stuff->dst = dst->info[j].id; + result = + (*PanoramiXSaveRenderVector[X_RenderTriStrip]) (client); + + if(result != Success) break; + } + + DEALLOCATE_LOCAL(extra); + } + + return result; +} + +static int +PanoramiXRenderTriFan(ClientPtr client) +{ + PanoramiXRes *src, *dst; + int result = Success, j; + REQUEST(xRenderTriFanReq); + char *extra; + int extra_len; + + REQUEST_AT_LEAST_SIZE (xRenderTriFanReq); + + VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, + RenderErrBase + BadPicture); + VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + extra_len = (client->req_len << 2) - sizeof (xRenderTriFanReq); + + if (extra_len && + (extra = (char *) ALLOCATE_LOCAL (extra_len))) { + memcpy (extra, stuff + 1, extra_len); + + FOR_NSCREENS_FORWARD(j) { + if (j) memcpy (stuff + 1, extra, extra_len); + if (dst->u.pict.root) { + int x_off = panoramiXdataPtr[j].x; + int y_off = panoramiXdataPtr[j].y; + + if(x_off || y_off) { + xPointFixed *fixed = (xPointFixed *) (stuff + 1); + int i = extra_len / sizeof (xPointFixed); + + while (i--) { + fixed->x -= x_off; + fixed->y -= y_off; + fixed++; + } + } + } + + stuff->src = src->info[j].id; + stuff->dst = dst->info[j].id; + result = + (*PanoramiXSaveRenderVector[X_RenderTriFan]) (client); + + if(result != Success) break; + } + + DEALLOCATE_LOCAL(extra); + } + + return result; +} + +#if 0 /* Not implemented yet */ + +static int +PanoramiXRenderColorTrapezoids(ClientPtr client) +{ + PanoramiXRes *src, *dst; + int result = Success, j; + REQUEST(xRenderColorTrapezoidsReq); + char *extra; + int extra_len; + + REQUEST_AT_LEAST_SIZE (xRenderColorTrapezoidsReq); + + VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + extra_len = (client->req_len << 2) - sizeof (xRenderColorTrapezoidsReq); + + if (extra_len && + (extra = (char *) ALLOCATE_LOCAL (extra_len))) { + memcpy (extra, stuff + 1, extra_len); + + FOR_NSCREENS_FORWARD(j) { + if (j) memcpy (stuff + 1, extra, extra_len); + if (dst->u.pict.root) { + int x_off = panoramiXdataPtr[j].x; + int y_off = panoramiXdataPtr[j].y; + + if(x_off || y_off) { + ....; + } + } + + stuff->dst = dst->info[j].id; + result = + (*PanoramiXSaveRenderVector[X_RenderColorTrapezoids]) (client); + + if(result != Success) break; + } + + DEALLOCATE_LOCAL(extra); + } + + return result; +} + +static int +PanoramiXRenderColorTriangles(ClientPtr client) +{ + PanoramiXRes *src, *dst; + int result = Success, j; + REQUEST(xRenderColorTrianglesReq); + char *extra; + int extra_len; + + REQUEST_AT_LEAST_SIZE (xRenderColorTrianglesReq); + + VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + + extra_len = (client->req_len << 2) - sizeof (xRenderColorTrianglesReq); + + if (extra_len && + (extra = (char *) ALLOCATE_LOCAL (extra_len))) { + memcpy (extra, stuff + 1, extra_len); + + FOR_NSCREENS_FORWARD(j) { + if (j) memcpy (stuff + 1, extra, extra_len); + if (dst->u.pict.root) { + int x_off = panoramiXdataPtr[j].x; + int y_off = panoramiXdataPtr[j].y; + + if(x_off || y_off) { + ....; + } + } + + stuff->dst = dst->info[j].id; + result = + (*PanoramiXSaveRenderVector[X_RenderColorTriangles]) (client); + + if(result != Success) break; + } + + DEALLOCATE_LOCAL(extra); + } + + return result; +} + +#endif + +static int +PanoramiXRenderAddTraps (ClientPtr client) +{ + PanoramiXRes *picture; + int result = Success, j; + REQUEST(xRenderAddTrapsReq); + char *extra; + int extra_len; + INT16 x_off, y_off; + + REQUEST_AT_LEAST_SIZE (xRenderAddTrapsReq); + VERIFY_XIN_PICTURE (picture, stuff->picture, client, SecurityWriteAccess, + RenderErrBase + BadPicture); + extra_len = (client->req_len << 2) - sizeof (xRenderAddTrapsReq); + if (extra_len && + (extra = (char *) ALLOCATE_LOCAL (extra_len))) + { + memcpy (extra, stuff + 1, extra_len); + x_off = stuff->xOff; + y_off = stuff->yOff; + FOR_NSCREENS_FORWARD(j) { + if (j) memcpy (stuff + 1, extra, extra_len); + stuff->picture = picture->info[j].id; + + if (picture->u.pict.root) + { + stuff->xOff = x_off + panoramiXdataPtr[j].x; + stuff->yOff = y_off + panoramiXdataPtr[j].y; + } + result = (*PanoramiXSaveRenderVector[X_RenderAddTraps]) (client); + if(result != Success) break; + } + DEALLOCATE_LOCAL(extra); + } + + return result; +} + void PanoramiXRenderInit (void) { @@ -3026,6 +3832,8 @@ PanoramiXRenderInit (void) */ ProcRenderVector[X_RenderCreatePicture] = PanoramiXRenderCreatePicture; ProcRenderVector[X_RenderChangePicture] = PanoramiXRenderChangePicture; + ProcRenderVector[X_RenderSetPictureTransform] = PanoramiXRenderSetPictureTransform; + ProcRenderVector[X_RenderSetPictureFilter] = PanoramiXRenderSetPictureFilter; ProcRenderVector[X_RenderSetPictureClipRectangles] = PanoramiXRenderSetPictureClipRectangles; ProcRenderVector[X_RenderFreePicture] = PanoramiXRenderFreePicture; ProcRenderVector[X_RenderComposite] = PanoramiXRenderComposite; @@ -3033,6 +3841,12 @@ PanoramiXRenderInit (void) ProcRenderVector[X_RenderCompositeGlyphs16] = PanoramiXRenderCompositeGlyphs; ProcRenderVector[X_RenderCompositeGlyphs32] = PanoramiXRenderCompositeGlyphs; ProcRenderVector[X_RenderFillRectangles] = PanoramiXRenderFillRectangles; + + ProcRenderVector[X_RenderTrapezoids] = PanoramiXRenderTrapezoids; + ProcRenderVector[X_RenderTriangles] = PanoramiXRenderTriangles; + ProcRenderVector[X_RenderTriStrip] = PanoramiXRenderTriStrip; + ProcRenderVector[X_RenderTriFan] = PanoramiXRenderTriFan; + ProcRenderVector[X_RenderAddTraps] = PanoramiXRenderAddTraps; } void @@ -3045,4 +3859,3 @@ PanoramiXRenderReset (void) #endif /* PANORAMIX */ -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXresource.c b/nx-X11/programs/Xserver/hw/nxagent/NXresource.c index 0c81c81..d1c8325 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXresource.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXresource.c @@ -1,8 +1,19 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXresource.c" - -#else +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ /************************************************************ @@ -50,10 +61,37 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ********************************************************/ +/* The panoramix components contained the following notice */ +/***************************************************************** -/* $Xorg: resource.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */ +Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. +******************************************************************/ + +/* $Xorg: resource.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */ +/* $XdotOrg: xc/programs/Xserver/dix/resource.c,v 1.8 2005/07/03 08:53:38 daniels Exp $ */ /* $TOG: resource.c /main/41 1998/02/09 14:20:31 kaleb $ */ /* Routines to manage various kinds of resources: @@ -78,10 +116,14 @@ SOFTWARE. * 1, and an otherwise arbitrary ID in the low 22 bits, we can create a * resource "owned" by the client. */ -/* $XFree86: xc/programs/Xserver/dix/resource.c,v 3.12 2002/03/06 21:13:38 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/dix/resource.c,v 3.13 2003/09/24 02:43:13 dawes Exp $ */ #define NEED_EVENTS -#include "X.h" +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> #include "misc.h" #include "os.h" #include "resource.h" @@ -115,9 +157,7 @@ SOFTWARE. #endif static void RebuildTable( -#if NeedFunctionPrototypes int /*client*/ -#endif ); #define SERVER_MINID 32 @@ -161,9 +201,12 @@ void RegisterResourceName (RESTYPE type, char *name) #endif +#ifdef NXAGENT_SERVER +static int nxagentResChangedFlag = 0; +#endif + RESTYPE -CreateNewResourceType(deleteFunc) - DeleteType deleteFunc; +CreateNewResourceType(DeleteType deleteFunc) { RESTYPE next = lastResourceType + 1; DeleteType *funcs; @@ -213,8 +256,7 @@ ClientResourceRec clientTable[MAXCLIENTS]; *****************/ Bool -InitClientResources(client) - ClientPtr client; +InitClientResources(ClientPtr client) { register int i, j; @@ -273,13 +315,7 @@ InitClientResources(client) static int -#if NeedFunctionPrototypes Hash(int client, register XID id) -#else -Hash(client, id) - int client; - register XID id; -#endif { id &= RESOURCE_ID_MASK; switch (clientTable[client].hashsize) @@ -301,17 +337,11 @@ Hash(client, id) } static XID -#if NeedFunctionPrototypes AvailableID( register int client, register XID id, register XID maxid, register XID goodid) -#else -AvailableID(client, id, maxid, goodid) - register int client; - register XID id, maxid, goodid; -#endif { register ResourcePtr res; @@ -329,10 +359,7 @@ AvailableID(client, id, maxid, goodid) } void -GetXIDRange(client, server, minp, maxp) - int client; - Bool server; - XID *minp, *maxp; +GetXIDRange(int client, Bool server, XID *minp, XID *maxp) { register XID id, maxid; register ResourcePtr *resp; @@ -366,7 +393,8 @@ GetXIDRange(client, server, minp, maxp) *maxp = maxid; } -/* GetXIDList is called by the XC-MISC extension's MiscGetXIDList function. +/** + * GetXIDList is called by the XC-MISC extension's MiscGetXIDList function. * This function tries to find count unused XIDs for the given client. It * puts the IDs in the array pids and returns the number found, which should * almost always be the number requested. @@ -382,10 +410,7 @@ GetXIDRange(client, server, minp, maxp) */ unsigned int -GetXIDList(pClient, count, pids) - ClientPtr pClient; - unsigned int count; - XID *pids; +GetXIDList(ClientPtr pClient, unsigned count, XID *pids) { unsigned int found = 0; XID id = pClient->clientAsMask; @@ -412,8 +437,7 @@ GetXIDList(pClient, count, pids) */ XID -FakeClientID(client) - register int client; +FakeClientID(register int client) { XID id, maxid; @@ -528,21 +552,18 @@ int nxagentSwitchResourceType(int client, RESTYPE type, pointer value) #endif Bool -AddResource(id, type, value) - XID id; - RESTYPE type; - pointer value; +AddResource(XID id, RESTYPE type, pointer value) { int client; register ClientResourceRec *rrec; register ResourcePtr res, *head; - + client = CLIENT_ID(id); rrec = &clientTable[client]; if (!rrec->buckets) { - ErrorF("AddResource(%x, %x, %x), client=%d \n", - id, type, (unsigned long)value, client); + ErrorF("AddResource(%lx, %lx, %lx), client=%d \n", + (unsigned long)id, type, (unsigned long)value, client); FatalError("client not in use\n"); } @@ -573,14 +594,16 @@ AddResource(id, type, value) res->value = value; *head = res; rrec->elements++; + #ifdef NXAGENT_SERVER + nxagentResChangedFlag = 1; + #endif if (!(id & SERVER_BIT) && (id >= rrec->expectID)) rrec->expectID = id + 1; return TRUE; } static void -RebuildTable(client) - int client; +RebuildTable(int client) { register int j; register ResourcePtr res, next; @@ -629,9 +652,7 @@ RebuildTable(client) } void -FreeResource(id, skipDeleteFuncType) - XID id; - RESTYPE skipDeleteFuncType; +FreeResource(XID id, RESTYPE skipDeleteFuncType) { int cid; register ResourcePtr res; @@ -640,6 +661,14 @@ FreeResource(id, skipDeleteFuncType) int elements; Bool gotOne = FALSE; +#ifdef NXAGENT_SERVER + + #ifdef TEST + fprintf(stderr, "FreeResource: Freeing resource id [%lu].\n", (unsigned long) id); + #endif + +#endif + if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && clientTable[cid].buckets) { head = &clientTable[cid].resources[Hash(cid, id)]; @@ -653,6 +682,9 @@ FreeResource(id, skipDeleteFuncType) RESTYPE rtype = res->type; *prev = res->next; elements = --*eltptr; + #ifdef NXAGENT_SERVER + nxagentResChangedFlag = 1; + #endif if (rtype & RC_CACHED) FlushClientCaches(res->id); if (rtype != skipDeleteFuncType) @@ -672,15 +704,13 @@ FreeResource(id, skipDeleteFuncType) } } if (!gotOne) - FatalError("Freeing resource id=%X which isn't there", id); + ErrorF("Freeing resource id=%lX which isn't there.\n", + (unsigned long)id); } void -FreeResourceByType(id, type, skipFree) - XID id; - RESTYPE type; - Bool skipFree; +FreeResourceByType(XID id, RESTYPE type, Bool skipFree) { int cid; register ResourcePtr res; @@ -695,6 +725,9 @@ FreeResourceByType(id, type, skipFree) if (res->id == id && res->type == type) { *prev = res->next; + #ifdef NXAGENT_SERVER + nxagentResChangedFlag = 1; + #endif if (type & RC_CACHED) FlushClientCaches(res->id); if (!skipFree) @@ -720,10 +753,7 @@ FreeResourceByType(id, type, skipFree) */ Bool -ChangeResourceValue (id, rtype, value) - XID id; - RESTYPE rtype; - pointer value; +ChangeResourceValue (XID id, RESTYPE rtype, pointer value) { int cid; register ResourcePtr res; @@ -762,10 +792,28 @@ FindClientResourcesByType( int i, elements; register int *eltptr; + #ifdef NXAGENT_SERVER + register ResourcePtr **resptr; + #endif + if (!client) client = serverClient; +/* + * If func triggers a resource table + * rebuild then restart the loop. + */ + +#ifdef NXAGENT_SERVER +RestartLoop: +#endif + resources = clientTable[client->index].resources; + + #ifdef NXAGENT_SERVER + resptr = &clientTable[client->index].resources; + #endif + eltptr = &clientTable[client->index].elements; for (i = 0; i < clientTable[client->index].buckets; i++) { @@ -774,8 +822,44 @@ FindClientResourcesByType( next = this->next; if (!type || this->type == type) { elements = *eltptr; + + /* + * FIXME: + * It is not safe to let a function change the resource + * table we are reading! + */ + + #ifdef NXAGENT_SERVER + nxagentResChangedFlag = 0; + #endif (*func)(this->value, this->id, cdata); + + /* + * Avoid that a call to RebuildTable() could invalidate the + * pointer. This is safe enough, because in RebuildTable() + * the new pointer is allocated just before the old one is + * freed, so it can't point to the same address. + */ + + #ifdef NXAGENT_SERVER + if (*resptr != resources) + goto RestartLoop; + #endif + + /* + * It's not enough to check if the number of elements has + * changed, beacause it could happen that the number of + * resources that have been added matches the number of + * the freed ones. + * 'nxagentResChangedFlag' is set if a resource has been + * added or freed. + */ + + #ifdef NXAGENT_SERVER + if (*eltptr != elements || nxagentResChangedFlag) + #else if (*eltptr != elements) + #endif next = resources[i]; /* start over */ } } @@ -793,10 +877,28 @@ FindAllClientResources( int i, elements; register int *eltptr; + #ifdef NXAGENT_SERVER + register ResourcePtr **resptr; + #endif + if (!client) client = serverClient; +/* + * If func triggers a resource table + * rebuild then restart the loop. + */ + +#ifdef NXAGENT_SERVER +RestartLoop: +#endif + resources = clientTable[client->index].resources; + + #ifdef NXAGENT_SERVER + resptr = &clientTable[client->index].resources; + #endif + eltptr = &clientTable[client->index].elements; for (i = 0; i < clientTable[client->index].buckets; i++) { @@ -804,8 +906,44 @@ FindAllClientResources( { next = this->next; elements = *eltptr; + + /* + * FIXME: + * It is not safe to let a function change the resource + * table we are reading! + */ + + #ifdef NXAGENT_SERVER + nxagentResChangedFlag = 0; + #endif (*func)(this->value, this->id, this->type, cdata); + + /* + * Avoid that a call to RebuildTable() could invalidate the + * pointer. This is safe enough, because in RebuildTable() + * the new pointer is allocated just before the old one is + * freed, so it can't point to the same address. + */ + + #ifdef NXAGENT_SERVER + if (*resptr != resources) + goto RestartLoop; + #endif + + /* + * It's not enough to check if the number of elements has + * changed, beacause it could happen that the number of + * resources that have been added matches the number of + * the freed ones. + * 'nxagentResChangedFlag' is set if a resource has been + * added or freed. + */ + + #ifdef NXAGENT_SERVER + if (*eltptr != elements || nxagentResChangedFlag) + #else if (*eltptr != elements) + #endif next = resources[i]; /* start over */ } } @@ -823,15 +961,44 @@ LookupClientResourceComplex( ResourcePtr this; int i; + #ifdef NXAGENT_SERVER + ResourcePtr **resptr; + Bool res; + #endif + if (!client) client = serverClient; +/* + * If func triggers a resource table + * rebuild then restart the loop. + */ + +#ifdef NXAGENT_SERVER +RestartLoop: +#endif + resources = clientTable[client->index].resources; + + #ifdef NXAGENT_SERVER + resptr = &clientTable[client->index].resources; + #endif + for (i = 0; i < clientTable[client->index].buckets; i++) { for (this = resources[i]; this; this = this->next) { if (!type || this->type == type) { + #ifdef NXAGENT_SERVER + res = (*func)(this->value, this->id, cdata); + + if (*resptr != resources) + goto RestartLoop; + + if (res) + return this->value; + #else if((*func)(this->value, this->id, cdata)) return this->value; + #endif } } } @@ -872,8 +1039,7 @@ FreeClientNeverRetainResources(ClientPtr client) } void -FreeClientResources(client) - ClientPtr client; +FreeClientResources(ClientPtr client) { register ResourcePtr *resources; register ResourcePtr this; @@ -931,9 +1097,7 @@ FreeAllResources() } Bool -LegalNewID(id, client) - XID id; - register ClientPtr client; +LegalNewID(XID id, register ClientPtr client) { #ifdef PANORAMIX @@ -963,11 +1127,7 @@ LegalNewID(id, client) */ pointer -SecurityLookupIDByType(client, id, rtype, mode) - ClientPtr client; - XID id; - RESTYPE rtype; - Mask mode; +SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype, Mask mode) { int cid; register ResourcePtr res; @@ -996,11 +1156,7 @@ SecurityLookupIDByType(client, id, rtype, mode) pointer -SecurityLookupIDByClass(client, id, classes, mode) - ClientPtr client; - XID id; - RESTYPE classes; - Mask mode; +SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, Mask mode) { int cid; register ResourcePtr res = NULL; @@ -1032,18 +1188,14 @@ SecurityLookupIDByClass(client, id, classes, mode) */ pointer -LookupIDByType(id, rtype) - XID id; - RESTYPE rtype; +LookupIDByType(XID id, RESTYPE rtype) { return SecurityLookupIDByType(NullClient, id, rtype, SecurityUnknownAccess); } pointer -LookupIDByClass(id, classes) - XID id; - RESTYPE classes; +LookupIDByClass(XID id, RESTYPE classes) { return SecurityLookupIDByClass(NullClient, id, classes, SecurityUnknownAccess); @@ -1055,9 +1207,7 @@ LookupIDByClass(id, classes) * LookupIDByType returns the object with the given id and type, else NULL. */ pointer -LookupIDByType(id, rtype) - XID id; - RESTYPE rtype; +LookupIDByType(XID id, RESTYPE rtype) { int cid; register ResourcePtr res; @@ -1079,9 +1229,7 @@ LookupIDByType(id, rtype) * given classes, else NULL. */ pointer -LookupIDByClass(id, classes) - XID id; - RESTYPE classes; +LookupIDByClass(XID id, RESTYPE classes) { int cid; register ResourcePtr res; @@ -1100,4 +1248,3 @@ LookupIDByClass(id, classes) #endif /* XCSECURITY */ -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXshm.c b/nx-X11/programs/Xserver/hw/nxagent/NXshm.c index e70415a..eaaa920 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXshm.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXshm.c @@ -1,10 +1,21 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXshm.c" - -#else - -/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.36 2002/04/03 19:51:11 herrb Exp $ */ +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ + +/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.41 2003/12/17 23:28:56 alanh Exp $ */ /************************************************************ Copyright 1989, 1998 The Open Group @@ -35,6 +46,12 @@ in this Software without prior written authorization from The Open Group. /* $Xorg: shm.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $ */ +#define SHM + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + #include <sys/types.h> #ifndef Lynx #include <sys/ipc.h> @@ -47,8 +64,8 @@ in this Software without prior written authorization from The Open Group. #include <sys/stat.h> #define NEED_REPLIES #define NEED_EVENTS -#include "X.h" -#include "Xproto.h" +#include <X11/X.h> +#include <X11/Xproto.h> #include "misc.h" #include "os.h" #include "dixstruct.h" @@ -60,8 +77,8 @@ in this Software without prior written authorization from The Open Group. #include "extnsionst.h" #include "servermd.h" #define _XSHM_SERVER_ -#include "shmstr.h" -#include "Xfuncproto.h" +#include <X11/extensions/shmstr.h> +#include <X11/Xfuncproto.h> #ifdef EXTMODULE #include "xf86_ansic.h" #endif @@ -71,6 +88,8 @@ in this Software without prior written authorization from The Open Group. #include "panoramiXsrv.h" #endif +#include "modinit.h" + #include "Trap.h" #include "Agent.h" #include "Drawable.h" @@ -85,6 +104,10 @@ in this Software without prior written authorization from The Open Group. #undef TEST #undef DEBUG +#ifdef TEST +#include "Literals.h" +#endif + extern void fbGetImage(DrawablePtr pDrw, int x, int y, int w, int h, unsigned int format, unsigned long planeMask, char *d); @@ -105,21 +128,15 @@ static void miShmPutImage(XSHM_PUT_IMAGE_ARGS); static void fbShmPutImage(XSHM_PUT_IMAGE_ARGS); static PixmapPtr fbShmCreatePixmap(XSHM_CREATE_PIXMAP_ARGS); static int ShmDetachSegment( -#if NeedFunctionPrototypes pointer /* value */, XID /* shmseg */ -#endif ); static void ShmResetProc( -#if NeedFunctionPrototypes ExtensionEntry * /* extEntry */ -#endif ); static void SShmCompletionEvent( -#if NeedFunctionPrototypes xShmCompletionEvent * /* from */, xShmCompletionEvent * /* to */ -#endif ); static Bool ShmDestroyPixmap (PixmapPtr pPixmap); @@ -208,23 +225,32 @@ static Bool CheckForShmSyscall() badSysCall = FALSE; shmid = shmget(IPC_PRIVATE, 4096, IPC_CREAT); - /* Clean up */ + if (shmid != -1) { + /* Successful allocation - clean up */ shmctl(shmid, IPC_RMID, (struct shmid_ds *)NULL); } + else + { + /* Allocation failed */ + badSysCall = TRUE; + } signal(SIGSYS, oldHandler); return(!badSysCall); } + +#define MUST_CHECK_FOR_SHM_SYSCALL + #endif - + void -ShmExtensionInit() +ShmExtensionInit(INITARGS) { ExtensionEntry *extEntry; int i; -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__CYGWIN__) +#ifdef MUST_CHECK_FOR_SHM_SYSCALL if (!CheckForShmSyscall()) { ErrorF("MIT-SHM extension disabled due to lack of kernel support\n"); @@ -307,17 +333,17 @@ ExtensionEntry *extEntry; } void -ShmRegisterFuncs(pScreen, funcs) - ScreenPtr pScreen; - ShmFuncsPtr funcs; +ShmRegisterFuncs( + ScreenPtr pScreen, + ShmFuncsPtr funcs) { shmFuncs[pScreen->myNum] = funcs; } void -ShmSetPixmapFormat(pScreen, format) - ScreenPtr pScreen; - int format; +ShmSetPixmapFormat( + ScreenPtr pScreen, + int format) { shmPixFormat[pScreen->myNum] = format; } @@ -661,8 +687,7 @@ ProcPanoramiXShmPutImage(register ClientPtr client) client, stuff->gc, XRT_GC, SecurityReadAccess))) return BadGC; - isRoot = (draw->type == XRT_WINDOW) && - (stuff->drawable == WindowTable[0]->drawable.id); + isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; orig_x = stuff->dstX; orig_y = stuff->dstY; @@ -722,8 +747,7 @@ ProcPanoramiXShmGetImage(ClientPtr client) format = stuff->format; planemask = stuff->planeMask; - isRoot = (draw->type == XRT_WINDOW) && - (stuff->drawable == WindowTable[0]->drawable.id); + isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; if(isRoot) { if( /* check for being onscreen */ @@ -798,8 +822,8 @@ ProcPanoramiXShmGetImage(ClientPtr client) } static int -ProcPanoramiXShmCreatePixmap(client) - register ClientPtr client; +ProcPanoramiXShmCreatePixmap( + register ClientPtr client) { ScreenPtr pScreen = NULL; PixmapPtr pMap = NULL; @@ -808,6 +832,8 @@ ProcPanoramiXShmCreatePixmap(client) int i, j, result; ShmDescPtr shmdesc; REQUEST(xShmCreatePixmapReq); + unsigned int width, height, depth; + unsigned long size; PanoramiXRes *newPix; REQUEST_SIZE_MATCH(xShmCreatePixmapReq); @@ -817,11 +843,18 @@ ProcPanoramiXShmCreatePixmap(client) LEGAL_NEW_RESOURCE(stuff->pid, client); VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client); VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client); - if (!stuff->width || !stuff->height) + + width = stuff->width; + height = stuff->height; + depth = stuff->depth; + if (!width || !height || !depth) { client->errorValue = 0; return BadValue; } + if (width > 32767 || height > 32767) + return BadAlloc; + if (stuff->depth != 1) { pDepth = pDraw->pScreen->allowedDepths; @@ -831,10 +864,18 @@ ProcPanoramiXShmCreatePixmap(client) client->errorValue = stuff->depth; return BadValue; } + CreatePmap: - VERIFY_SHMSIZE(shmdesc, stuff->offset, - PixmapBytePad(stuff->width, stuff->depth) * stuff->height, - client); + size = PixmapBytePad(width, depth) * height; + if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) { + if (size < width * height) + return BadAlloc; + /* thankfully, offset is unsigned */ + if (stuff->offset + size < size) + return BadAlloc; + } + + VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client); if(!(newPix = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)))) return BadAlloc; @@ -926,8 +967,17 @@ ProcShmPutImage(client) return BadValue; } - VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight, - client); + /* + * There's a potential integer overflow in this check: + * VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight, + * client); + * the version below ought to avoid it + */ + if (stuff->totalHeight != 0 && + length > (shmdesc->size - stuff->offset)/stuff->totalHeight) { + client->errorValue = stuff->totalWidth; + return BadValue; + } if (stuff->srcX > stuff->totalWidth) { client->errorValue = stuff->srcX; @@ -1150,6 +1200,8 @@ ProcShmCreatePixmap(client) register int i; ShmDescPtr shmdesc; REQUEST(xShmCreatePixmapReq); + unsigned int width, height, depth; + unsigned long size; REQUEST_SIZE_MATCH(xShmCreatePixmapReq); client->errorValue = stuff->pid; @@ -1158,11 +1210,18 @@ ProcShmCreatePixmap(client) LEGAL_NEW_RESOURCE(stuff->pid, client); VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client); VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client); - if (!stuff->width || !stuff->height) + + width = stuff->width; + height = stuff->height; + depth = stuff->depth; + if (!width || !height || !depth) { client->errorValue = 0; return BadValue; } + if (width > 32767 || height > 32767) + return BadAlloc; + if (stuff->depth != 1) { pDepth = pDraw->pScreen->allowedDepths; @@ -1172,10 +1231,18 @@ ProcShmCreatePixmap(client) client->errorValue = stuff->depth; return BadValue; } + CreatePmap: - VERIFY_SHMSIZE(shmdesc, stuff->offset, - PixmapBytePad(stuff->width, stuff->depth) * stuff->height, - client); + size = PixmapBytePad(width, depth) * height; + if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) { + if (size < width * height) + return BadAlloc; + /* thankfully, offset is unsigned */ + if (stuff->offset + size < size) + return BadAlloc; + } + + VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client); pMap = (*shmFuncs[pDraw->pScreen->myNum]->CreatePixmap)( pDraw->pScreen, stuff->width, stuff->height, stuff->depth, @@ -1205,6 +1272,12 @@ ProcShmDispatch (client) #ifdef TEST fprintf(stderr, "ProcShmDispatch: Going to execute operation [%d] for client [%d].\n", stuff -> data, client -> index); + + if (stuff->data <= X_ShmCreatePixmap) + { + fprintf(stderr, "ProcShmDispatch: Request [%s] OPCODE#%d.\n", + nxagentShmRequestLiteral[stuff->data], stuff->data); + } #endif switch (stuff->data) @@ -1364,6 +1437,7 @@ SProcShmCreatePixmap(client) REQUEST(xShmCreatePixmapReq); swaps(&stuff->length, n); REQUEST_SIZE_MATCH(xShmCreatePixmapReq); + swapl(&stuff->pid, n); swapl(&stuff->drawable, n); swaps(&stuff->width, n); swaps(&stuff->height, n); @@ -1422,4 +1496,3 @@ SProcShmDispatch (client) } } -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c index 95ecde9..76e86fd 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c @@ -1,9 +1,3 @@ -#ifdef NXAGENT_UPGRADE - -#include "X/NXwindow.c" - -#else - /**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ @@ -21,6 +15,8 @@ /* */ /**************************************************************************/ +/* $XdotOrg: xc/programs/Xserver/dix/window.c,v 1.12 2005/07/03 08:53:38 daniels Exp $ */ +/* $Xorg: window.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */ /* Copyright 1987, 1998 The Open Group @@ -70,26 +66,40 @@ SOFTWARE. */ -/**************************************************************** -* * -* Copyright (c) Digital Equipment Corporation, 1991, 1997 * -* * -* All Rights Reserved. Unpublished rights reserved under * -* the copyright laws of the United States. * -* * -* The software contained on this media is proprietary to * -* and embodies the confidential technology of Digital * -* Equipment Corporation. Possession, use, duplication or * -* dissemination of the software and media is authorized only * -* pursuant to a valid written license from Digital Equipment * -* Corporation. * -* * -* RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure * -* by the U.S. Government is subject to restrictions as set * -* forth in Subparagraph (c)(1)(ii) of DFARS 252.227-7013, * -* or in FAR 52.227-19, as applicable. * -* * -*****************************************************************/ +/* The panoramix components contained the following notice */ +/***************************************************************** + +Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + +******************************************************************/ + +/* $XFree86: xc/programs/Xserver/dix/window.c,v 3.36 2003/11/14 23:52:50 torrey Exp $ */ + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif #include "misc.h" #include "scrnintstr.h" @@ -113,11 +123,11 @@ SOFTWARE. #include "globals.h" #ifdef XAPPGROUP -#include "Xagsrv.h" +#include <X11/extensions/Xagsrv.h> #endif #ifdef XCSECURITY #define _SECURITY_SERVER -#include "security.h" +#include <X11/extensions/security.h> #endif #include "Screen.h" @@ -130,13 +140,6 @@ SOFTWARE. #include "Drawable.h" #include "Colormap.h" -#if defined(NEED_SCREEN_REGIONS) -#define REGION_PTR(pScreen,pWin) \ - register ScreenPtr pScreen = pWin->drawable.pScreen; -#else -#define REGION_PTR(pScreen,pWin) /* nothing */ -#endif - extern Bool nxagentWMIsRunning; extern Bool nxagentScreenTrap; @@ -150,6 +153,9 @@ extern Bool nxagentScreenTrap; * ******/ +static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11}; +static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88}; + int screenIsSaved = SCREEN_SAVER_OFF; ScreenSaverStuffRec savedScreenInfo[MAXSCREENS]; @@ -161,12 +167,7 @@ extern void WindowHasNewCursor(); extern void RecalculateDeliverableEvents(); #endif -static Bool TileScreenSaver( -#if NeedFunctionPrototypes - int /*i*/, - int /*kind*/ -#endif -); +static Bool TileScreenSaver(int i, int kind); #define INPUTONLY_LEGAL_MASK (CWWinGravity | CWEventMask | \ @@ -215,9 +216,7 @@ WindowPtr nxagentRootTileWindow; ******/ int -PrintChildren(p1, indent) - WindowPtr p1; - int indent; +PrintChildren(WindowPtr p1, int indent) { WindowPtr p2; int i; @@ -250,10 +249,7 @@ PrintWindowTree() #endif int -TraverseTree(pWin, func, data) - register WindowPtr pWin; - VisitWindowProcPtr func; - pointer data; +TraverseTree(register WindowPtr pWin, VisitWindowProcPtr func, pointer data) { register int result; register WindowPtr pChild; @@ -288,10 +284,7 @@ TraverseTree(pWin, func, data) *****/ int -WalkTree(pScreen, func, data) - ScreenPtr pScreen; - VisitWindowProcPtr func; - pointer data; +WalkTree(ScreenPtr pScreen, VisitWindowProcPtr func, pointer data) { return(TraverseTree(WindowTable[pScreen->myNum], func, data)); } @@ -305,12 +298,7 @@ Bool enableBackingStore = FALSE; Bool disableSaveUnders = FALSE; static void -#if NeedFunctionPrototypes SetWindowToDefaults(register WindowPtr pWin) -#else -SetWindowToDefaults(pWin) - register WindowPtr pWin; -#endif { pWin->prevSib = NullWindow; pWin->firstChild = NullWindow; @@ -342,8 +330,13 @@ SetWindowToDefaults(pWin) pWin->srcBuffer = DBE_FRONT_BUFFER; pWin->dstBuffer = DBE_FRONT_BUFFER; #endif +#ifdef COMPOSITE + pWin->redirectDraw = 0; +#endif } +#ifdef NXAGENT_SERVER + void nxagentClearSplash(WindowPtr pW) { int w, h; @@ -365,20 +358,59 @@ void nxagentClearSplash(WindowPtr pW) (*pScreen->ChangeWindowAttributes)(pW, CWBackPixmap|CWBackPixel); } +#endif /* NXAGENT_SERVER */ + static void -#if NeedFunctionPrototypes MakeRootTile(WindowPtr pWin) -#else -MakeRootTile(pWin) - WindowPtr pWin; -#endif { - nxagentRootTileWindow = pWin; + ScreenPtr pScreen = pWin->drawable.pScreen; + GCPtr pGC; + unsigned char back[128]; + int len = BitmapBytePad(sizeof(long)); + register unsigned char *from, *to; + register int i, j; + + pWin->background.pixmap = (*pScreen->CreatePixmap)(pScreen, 4, 4, + pScreen->rootDepth); + + pWin->backgroundState = BackgroundPixmap; + pGC = GetScratchGC(pScreen->rootDepth, pScreen); + if (!pWin->background.pixmap || !pGC) + FatalError("could not create root tile"); + + { + CARD32 attributes[2]; + + attributes[0] = pScreen->whitePixel; + attributes[1] = pScreen->blackPixel; + + (void)ChangeGC(pGC, GCForeground | GCBackground, attributes); + } + + ValidateGC((DrawablePtr)pWin->background.pixmap, pGC); + + from = (screenInfo.bitmapBitOrder == LSBFirst) ? _back_lsb : _back_msb; + to = back; + + for (i = 4; i > 0; i--, from++) + for (j = len; j > 0; j--) + *to++ = *from; + + if (blackRoot) + bzero(back, sizeof(back)); + + (*pGC->ops->PutImage)((DrawablePtr)pWin->background.pixmap, pGC, 1, + 0, 0, len, 4, 0, XYBitmap, (char *)back); + + FreeScratchGC(pGC); + +#ifdef NXAGENT_SERVER + nxagentRootTileWindow = pWin; +#endif /* NXAGENT_SERVER */ } WindowPtr -AllocateWindow(pScreen) - ScreenPtr pScreen; +AllocateWindow(ScreenPtr pScreen) { WindowPtr pWin; register char *ptr; @@ -414,8 +446,7 @@ AllocateWindow(pScreen) *****/ Bool -CreateRootWindow(pScreen) - ScreenPtr pScreen; +CreateRootWindow(ScreenPtr pScreen) { WindowPtr pWin; BoxRec box; @@ -461,6 +492,7 @@ CreateRootWindow(pScreen) #ifdef SHAPE pWin->optional->boundingShape = NULL; pWin->optional->clipShape = NULL; + pWin->optional->inputShape = NULL; #endif #ifdef XINPUT pWin->optional->inputMasks = NULL; @@ -529,9 +561,10 @@ CreateRootWindow(pScreen) return TRUE; } +#ifdef NXAGENT_SERVER + void -InitRootWindow(pWin) - WindowPtr pWin; +InitRootWindow(WindowPtr pWin) { ScreenPtr pScreen; @@ -627,19 +660,45 @@ InitRootWindow(pWin) #endif } +#else /* NXAGENT_SERVER */ + +void +InitRootWindow(WindowPtr pWin) +{ + ScreenPtr pScreen = pWin->drawable.pScreen; + + if (!(*pScreen->CreateWindow)(pWin)) + return; /* XXX */ + (*pScreen->PositionWindow)(pWin, 0, 0); + + pWin->cursorIsNone = FALSE; + pWin->optional->cursor = rootCursor; + rootCursor->refcnt++; + MakeRootTile(pWin); + pWin->backingStore = defaultBackingStore; + pWin->forcedBS = (defaultBackingStore != NotUseful); + /* We SHOULD check for an error value here XXX */ + (*pScreen->ChangeWindowAttributes)(pWin, + CWBackPixmap|CWBorderPixel|CWCursor|CWBackingStore); + + MapWindow(pWin, serverClient); +} + +#endif /* NXAGENT_SERVER */ + /* Set the region to the intersection of the rectangle and the * window's winSize. The window is typically the parent of the * window from which the region came. */ void -ClippedRegionFromBox(pWin, Rgn, x, y, w, h) - register WindowPtr pWin; - RegionPtr Rgn; - register int x, y; - int w, h; +ClippedRegionFromBox(register WindowPtr pWin, RegionPtr Rgn, + register int x, register int y, + register int w, register int h) { - REGION_PTR(pScreen, pWin) +#ifndef NXAGENT_SERVER + ScreenPtr pScreen = pWin->drawable.pScreen; +#endif /* NXAGENT_SERVER */ BoxRec box; box = *(REGION_EXTENTS(pScreen, &pWin->winSize)); @@ -663,8 +722,7 @@ ClippedRegionFromBox(pWin, Rgn, x, y, w, h) } WindowPtr -RealChildHead(pWin) - register WindowPtr pWin; +RealChildHead(register WindowPtr pWin) { if (!pWin->parent && (screenIsSaved == SCREEN_SAVER_ON) && @@ -680,19 +738,9 @@ RealChildHead(pWin) *****/ WindowPtr -CreateWindow(wid, pParent, x, y, w, h, bw, class, vmask, vlist, - depth, client, visual, error) - Window wid; - register WindowPtr pParent; - int x,y; - unsigned int w, h, bw; - unsigned int class; - register Mask vmask; - XID *vlist; - int depth; - ClientPtr client; - VisualID visual; - int *error; +CreateWindow(Window wid, register WindowPtr pParent, int x, int y, unsigned w, + unsigned h, unsigned bw, unsigned class, register Mask vmask, XID *vlist, + int depth, ClientPtr client, VisualID visual, int *error) { register WindowPtr pWin; WindowPtr pHead; @@ -851,10 +899,10 @@ CreateWindow(wid, pParent, x, y, w, h, bw, class, vmask, vlist, pWin->drawable.y = pParent->drawable.y + y + (int)bw; /* set up clip list correctly for unobscured WindowPtr */ - REGION_INIT(pScreen, &pWin->clipList, NullBox, 1); - REGION_INIT(pScreen, &pWin->borderClip, NullBox, 1); - REGION_INIT(pScreen, &pWin->winSize, NullBox, 1); - REGION_INIT(pScreen, &pWin->borderSize, NullBox, 1); + REGION_NULL(pScreen, &pWin->clipList); + REGION_NULL(pScreen, &pWin->borderClip); + REGION_NULL(pScreen, &pWin->winSize); + REGION_NULL(pScreen, &pWin->borderSize); pHead = RealChildHead(pParent); if (pHead) @@ -927,12 +975,7 @@ CreateWindow(wid, pParent, x, y, w, h, bw, class, vmask, vlist, } static void -#if NeedFunctionPrototypes FreeWindowResources(register WindowPtr pWin) -#else -FreeWindowResources(pWin) - register WindowPtr pWin; -#endif { register ScreenPtr pScreen = pWin->drawable.pScreen; @@ -948,6 +991,8 @@ FreeWindowResources(pWin) REGION_DESTROY(pScreen, wBoundingShape (pWin)); if (wClipShape (pWin)) REGION_DESTROY(pScreen, wClipShape (pWin)); + if (wInputShape (pWin)) + REGION_DESTROY(pScreen, wInputShape (pWin)); #endif if (pWin->borderIsPixel == FALSE) (*pScreen->DestroyPixmap)(pWin->border.pixmap); @@ -961,12 +1006,7 @@ FreeWindowResources(pWin) } static void -#if NeedFunctionPrototypes CrushTree(WindowPtr pWin) -#else -CrushTree(pWin) - WindowPtr pWin; -#endif { register WindowPtr pChild, pSib, pParent; UnrealizeWindowProcPtr UnrealizeWindow; @@ -1022,11 +1062,8 @@ CrushTree(pWin) * If wid is None, don't send any events *****/ -/*ARGSUSED*/ int -DeleteWindow(value, wid) - pointer value; - XID wid; +DeleteWindow(pointer value, XID wid) { register WindowPtr pParent; register WindowPtr pWin = (WindowPtr)value; @@ -1056,7 +1093,6 @@ DeleteWindow(value, wid) if (pWin->prevSib) pWin->prevSib->nextSib = pWin->nextSib; } - xfree(pWin); if (pWin -> optional && pWin -> optional -> colormap && @@ -1065,14 +1101,12 @@ DeleteWindow(value, wid) nxagentSetInstalledColormapWindows(pWin -> drawable.pScreen); } + xfree(pWin); return Success; } -/*ARGSUSED*/ void -DestroySubwindows(pWin, client) - register WindowPtr pWin; - ClientPtr client; +DestroySubwindows(register WindowPtr pWin, ClientPtr client) { /* XXX * The protocol is quite clear that each window should be @@ -1099,11 +1133,7 @@ DestroySubwindows(pWin, client) *****/ int -ChangeWindowAttributes(pWin, vmask, vlist, client) - register WindowPtr pWin; - Mask vmask; - XID *vlist; - ClientPtr client; +ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) { register Mask index2; register XID *pVlist; @@ -1650,7 +1680,7 @@ PatchUp: { RegionRec exposed; - REGION_INIT(pScreen, &exposed, NullBox, 0); + REGION_NULL(pScreen, &exposed); REGION_SUBTRACT(pScreen, &exposed, &pWin->borderClip, &pWin->winSize); (*pWin->drawable.pScreen->PaintWindowBorder)(pWin, &exposed, PW_BORDER); REGION_UNINIT(pScreen, &exposed); @@ -1665,10 +1695,7 @@ PatchUp: *****/ void -GetWindowAttributes(pWin, client, wa) - register WindowPtr pWin; - ClientPtr client; - xGetWindowAttributesReply *wa; +GetWindowAttributes(register WindowPtr pWin, ClientPtr client, xGetWindowAttributesReply *wa) { wa->type = X_Reply; wa->bitGravity = pWin->bitGravity; @@ -1704,8 +1731,7 @@ GetWindowAttributes(pWin, client, wa) WindowPtr -MoveWindowInStack(pWin, pNextSib) - register WindowPtr pWin, pNextSib; +MoveWindowInStack(register WindowPtr pWin, register WindowPtr pNextSib) { register WindowPtr pParent = pWin->parent; WindowPtr pFirstChange = pWin; /* highest window where list changes */ @@ -1774,12 +1800,22 @@ MoveWindowInStack(pWin, pNextSib) (*pWin->drawable.pScreen->RestackWindow)(pWin, pOldNextSib); } +#ifdef ROOTLESS + /* + * In rootless mode we can't optimize away window restacks. + * There may be non-X windows around, so even if the window + * is in the correct position from X's point of view, + * the underlying window system may want to reorder it. + */ + else if (pWin->drawable.pScreen->RestackWindow) + (*pWin->drawable.pScreen->RestackWindow)(pWin, pWin->nextSib); +#endif + return( pFirstChange ); } RegionPtr -CreateUnclippedWinSize (pWin) - register WindowPtr pWin; +CreateUnclippedWinSize (register WindowPtr pWin) { RegionPtr pRgn; BoxRec box; @@ -1791,8 +1827,9 @@ CreateUnclippedWinSize (pWin) pRgn = REGION_CREATE(pWin->drawable.pScreen, &box, 1); #ifdef SHAPE if (wBoundingShape (pWin) || wClipShape (pWin)) { - REGION_PTR(pScreen, pWin) - +#ifndef NXAGENT_SERVER + ScreenPtr pScreen = pWin->drawable.pScreen; +#endif /* NXAGENT_SERVER */ REGION_TRANSLATE(pScreen, pRgn, - pWin->drawable.x, - pWin->drawable.y); if (wBoundingShape (pWin)) @@ -1806,17 +1843,30 @@ CreateUnclippedWinSize (pWin) } void -SetWinSize (pWin) - register WindowPtr pWin; +SetWinSize (register WindowPtr pWin) { +#ifdef COMPOSITE + if (pWin->redirectDraw) + { + BoxRec box; + + box.x1 = pWin->drawable.x; + box.y1 = pWin->drawable.y; + box.x2 = pWin->drawable.x + pWin->drawable.width; + box.y2 = pWin->drawable.y + pWin->drawable.height; + REGION_RESET (pScreen, &pWin->winSize, &box); + } + else +#endif ClippedRegionFromBox(pWin->parent, &pWin->winSize, pWin->drawable.x, pWin->drawable.y, (int)pWin->drawable.width, (int)pWin->drawable.height); #ifdef SHAPE if (wBoundingShape (pWin) || wClipShape (pWin)) { - REGION_PTR(pScreen, pWin) - +#ifndef NXAGENT_SERVER + ScreenPtr pScreen = pWin->drawable.pScreen; +#endif /* NXAGENT_SERVER */ REGION_TRANSLATE(pScreen, &pWin->winSize, - pWin->drawable.x, - pWin->drawable.y); if (wBoundingShape (pWin)) @@ -1832,21 +1882,34 @@ SetWinSize (pWin) } void -SetBorderSize (pWin) - register WindowPtr pWin; +SetBorderSize (register WindowPtr pWin) { int bw; if (HasBorder (pWin)) { bw = wBorderWidth (pWin); +#ifdef COMPOSITE + if (pWin->redirectDraw) + { + BoxRec box; + + box.x1 = pWin->drawable.x - bw; + box.y1 = pWin->drawable.y - bw; + box.x2 = pWin->drawable.x + pWin->drawable.width + bw; + box.y2 = pWin->drawable.y + pWin->drawable.height + bw; + REGION_RESET (pScreen, &pWin->borderSize, &box); + } + else +#endif ClippedRegionFromBox(pWin->parent, &pWin->borderSize, pWin->drawable.x - bw, pWin->drawable.y - bw, (int)(pWin->drawable.width + (bw<<1)), (int)(pWin->drawable.height + (bw<<1))); #ifdef SHAPE if (wBoundingShape (pWin)) { - REGION_PTR(pScreen, pWin) - +#ifndef NXAGENT_SERVER + ScreenPtr pScreen = pWin->drawable.pScreen; +#endif /* NXAGENT_SERVER */ REGION_TRANSLATE(pScreen, &pWin->borderSize, - pWin->drawable.x, - pWin->drawable.y); REGION_INTERSECT(pScreen, &pWin->borderSize, &pWin->borderSize, @@ -1863,13 +1926,17 @@ SetBorderSize (pWin) } } +/** + * + * \param x,y new window position + * \param oldx,oldy old window position + * \param destx,desty position relative to gravity + */ + void -GravityTranslate (x, y, oldx, oldy, dw, dh, gravity, destx, desty) - register int x, y; /* new window position */ - int oldx, oldy; /* old window position */ - int dw, dh; - unsigned gravity; - register int *destx, *desty; /* position relative to gravity */ +GravityTranslate (register int x, register int y, int oldx, int oldy, + int dw, int dh, unsigned gravity, + register int *destx, register int *desty) { switch (gravity) { case NorthGravity: @@ -1917,9 +1984,7 @@ GravityTranslate (x, y, oldx, oldy, dw, dh, gravity, destx, desty) /* XXX need to retile border on each window with ParentRelative origin */ void -ResizeChildrenWinSize(pWin, dx, dy, dw, dh) - register WindowPtr pWin; - int dx, dy, dw, dh; +ResizeChildrenWinSize(register WindowPtr pWin, int dx, int dy, int dw, int dh) { register ScreenPtr pScreen; register WindowPtr pSib, pChild; @@ -2027,14 +2092,9 @@ ResizeChildrenWinSize(pWin, dx, dy, dw, dh) */ static int -#if NeedFunctionPrototypes IsSiblingAboveMe( register WindowPtr pMe, register WindowPtr pSib) -#else -IsSiblingAboveMe(pMe, pSib) - register WindowPtr pMe, pSib; -#endif { register WindowPtr pWin; @@ -2051,15 +2111,9 @@ IsSiblingAboveMe(pMe, pSib) } static BoxPtr -#if NeedFunctionPrototypes WindowExtents( register WindowPtr pWin, register BoxPtr pBox) -#else -WindowExtents(pWin, pBox) - register WindowPtr pWin; - register BoxPtr pBox; -#endif { pBox->x1 = pWin->drawable.x - wBorderWidth (pWin); pBox->y1 = pWin->drawable.y - wBorderWidth (pWin); @@ -2074,19 +2128,14 @@ WindowExtents(pWin, pBox) #define IS_SHAPED(pWin) (wBoundingShape (pWin) != (RegionPtr) NULL) static RegionPtr -#if NeedFunctionPrototypes MakeBoundingRegion ( register WindowPtr pWin, BoxPtr pBox) -#else -MakeBoundingRegion (pWin, pBox) - register WindowPtr pWin; - BoxPtr pBox; -#endif { RegionPtr pRgn; - REGION_PTR(pScreen, pWin) - +#ifndef NXAGENT_SERVER + ScreenPtr pScreen = pWin->drawable.pScreen; +#endif /* NXAGENT_SERVER */ pRgn = REGION_CREATE(pScreen, pBox, 1); if (wBoundingShape (pWin)) { REGION_TRANSLATE(pScreen, pRgn, -pWin->origin.x, @@ -2099,17 +2148,11 @@ MakeBoundingRegion (pWin, pBox) } static Bool -#if NeedFunctionPrototypes ShapeOverlap ( WindowPtr pWin, BoxPtr pWinBox, WindowPtr pSib, BoxPtr pSibBox) -#else -ShapeOverlap (pWin, pWinBox, pSib, pSibBox) - WindowPtr pWin, pSib; - BoxPtr pWinBox, pSibBox; -#endif { RegionPtr pWinRgn, pSibRgn; register ScreenPtr pScreen; @@ -2129,16 +2172,10 @@ ShapeOverlap (pWin, pWinBox, pSib, pSibBox) #endif static Bool -#if NeedFunctionPrototypes AnyWindowOverlapsMe( WindowPtr pWin, WindowPtr pHead, register BoxPtr box) -#else -AnyWindowOverlapsMe(pWin, pHead, box) - WindowPtr pWin, pHead; - register BoxPtr box; -#endif { register WindowPtr pSib; BoxRec sboxrec; @@ -2161,15 +2198,9 @@ AnyWindowOverlapsMe(pWin, pHead, box) } static Bool -#if NeedFunctionPrototypes IOverlapAnyWindow( WindowPtr pWin, register BoxPtr box) -#else -IOverlapAnyWindow(pWin, box) - WindowPtr pWin; - register BoxPtr box; -#endif { register WindowPtr pSib; BoxRec sboxrec; @@ -2220,7 +2251,6 @@ IOverlapAnyWindow(pWin, box) */ static WindowPtr -#if NeedFunctionPrototypes WhereDoIGoInTheStack( register WindowPtr pWin, register WindowPtr pSib, @@ -2229,13 +2259,6 @@ WhereDoIGoInTheStack( unsigned short w, unsigned short h, int smode) -#else -WhereDoIGoInTheStack(pWin, pSib, x, y, w, h, smode) - register WindowPtr pWin, pSib; - short x, y; - unsigned short w, h; - int smode; -#endif { BoxRec box; register ScreenPtr pScreen; @@ -2334,21 +2357,14 @@ WhereDoIGoInTheStack(pWin, pSib, x, y, w, h, smode) } static void -#if NeedFunctionPrototypes ReflectStackChange( register WindowPtr pWin, register WindowPtr pSib, VTKind kind) -#else -ReflectStackChange(pWin, pSib, kind) - register WindowPtr pWin, pSib; - VTKind kind; -#endif { /* Note that pSib might be NULL */ Bool WasViewable = (Bool)pWin->viewable; - WindowPtr pParent; Bool anyMarked; WindowPtr pFirstChange; #ifdef DO_SAVE_UNDERS @@ -2358,8 +2374,8 @@ ReflectStackChange(pWin, pSib, kind) ScreenPtr pScreen = pWin->drawable.pScreen; /* if this is a root window, can't be restacked */ - if (!(pParent = pWin->parent)) - return ; + if (!pWin->parent) + return; pFirstChange = MoveWindowInStack(pWin, pSib); @@ -2395,11 +2411,7 @@ ReflectStackChange(pWin, pSib, kind) *****/ int -ConfigureWindow(pWin, mask, vlist, client) - register WindowPtr pWin; - register Mask mask; - XID *vlist; - ClientPtr client; +ConfigureWindow(register WindowPtr pWin, register Mask mask, XID *vlist, ClientPtr client) { #define RESTACK_WIN 0 #define MOVE_WIN 1 @@ -2629,7 +2641,10 @@ ConfigureWindow(pWin, mask, vlist, client) goto ActuallyDoSomething; if (mask & CWStackMode) { +#ifndef ROOTLESS + /* See above for why we always reorder in rootless mode. */ if (pWin->nextSib != pSib) +#endif goto ActuallyDoSomething; } return(Success); @@ -2706,10 +2721,7 @@ ActuallyDoSomething: ******/ int -CirculateWindow(pParent, direction, client) - WindowPtr pParent; - int direction; - ClientPtr client; +CirculateWindow(WindowPtr pParent, int direction, ClientPtr client) { register WindowPtr pWin, pHead, pFirst; xEvent event; @@ -2778,15 +2790,9 @@ CirculateWindow(pParent, direction, client) } static int -#if NeedFunctionPrototypes CompareWIDs( WindowPtr pWin, pointer value) /* must conform to VisitWindowProcPtr */ -#else -CompareWIDs(pWin, value) - WindowPtr pWin; - pointer value; /* must conform to VisitWindowProcPtr */ -#endif { Window *wid = (Window *)value; @@ -2801,10 +2807,8 @@ CompareWIDs(pWin, value) *****/ int -ReparentWindow(pWin, pParent, x, y, client) - register WindowPtr pWin, pParent; - int x,y; - ClientPtr client; +ReparentWindow(register WindowPtr pWin, register WindowPtr pParent, + int x, int y, ClientPtr client) { WindowPtr pPrev, pPriorParent; Bool WasMapped = (Bool)(pWin->mapped); @@ -2903,12 +2907,7 @@ ReparentWindow(pWin, pParent, x, y, client) } static void -#if NeedFunctionPrototypes RealizeTree(WindowPtr pWin) -#else -RealizeTree(pWin) - WindowPtr pWin; -#endif { register WindowPtr pChild; RealizeWindowProcPtr Realize; @@ -2949,9 +2948,7 @@ RealizeTree(pWin) *****/ int -MapWindow(pWin, client) - register WindowPtr pWin; - ClientPtr client; +MapWindow(register WindowPtr pWin, ClientPtr client) { register ScreenPtr pScreen; @@ -3067,7 +3064,7 @@ MapWindow(pWin, client) (*pScreen->ClipNotify) (pWin, 0, 0); if (pScreen->PostValidateTree) (*pScreen->PostValidateTree)(NullWindow, pWin, VTMap); - REGION_INIT(pScreen, &temp, NullBox, 0); + REGION_NULL(pScreen, &temp); REGION_COPY(pScreen, &temp, &pWin->clipList); (*pScreen->WindowExposures) (pWin, &temp, NullRegion); REGION_UNINIT(pScreen, &temp); @@ -3086,9 +3083,7 @@ MapWindow(pWin, client) *****/ void -MapSubwindows(pParent, client) - register WindowPtr pParent; - ClientPtr client; +MapSubwindows(register WindowPtr pParent, ClientPtr client) { register WindowPtr pWin; WindowPtr pFirstMapped = NullWindow; @@ -3204,15 +3199,9 @@ MapSubwindows(pParent, client) } static void -#if NeedFunctionPrototypes UnrealizeTree( WindowPtr pWin, Bool fromConfigure) -#else -UnrealizeTree(pWin, fromConfigure) - WindowPtr pWin; - Bool fromConfigure; -#endif { register WindowPtr pChild; UnrealizeWindowProcPtr Unrealize; @@ -3273,9 +3262,7 @@ UnrealizeTree(pWin, fromConfigure) *****/ int -UnmapWindow(pWin, fromConfigure) - register WindowPtr pWin; - Bool fromConfigure; +UnmapWindow(register WindowPtr pWin, Bool fromConfigure) { register WindowPtr pParent; xEvent event; @@ -3342,8 +3329,7 @@ UnmapWindow(pWin, fromConfigure) *****/ void -UnmapSubwindows(pWin) - register WindowPtr pWin; +UnmapSubwindows(register WindowPtr pWin) { register WindowPtr pChild, pHead; xEvent event; @@ -3434,18 +3420,24 @@ UnmapSubwindows(pWin) void -HandleSaveSet(client) - register ClientPtr client; +HandleSaveSet(register ClientPtr client) { register WindowPtr pParent, pWin; register int j; for (j=0; j<client->numSaved; j++) { - pWin = (WindowPtr)client->saveSet[j]; - pParent = pWin->parent; - while (pParent && (wClient (pParent) == client)) - pParent = pParent->parent; + pWin = SaveSetWindow(client->saveSet[j]); +#ifdef XFIXES + if (SaveSetToRoot(client->saveSet[j])) + pParent = WindowTable[pWin->drawable.pScreen->myNum]; + else +#endif + { + pParent = pWin->parent; + while (pParent && (wClient (pParent) == client)) + pParent = pParent->parent; + } if (pParent) { if (pParent != pWin->parent) @@ -3457,19 +3449,24 @@ HandleSaveSet(client) if(!pWin->realized && pWin->mapped) pWin->mapped = FALSE; } - MapWindow(pWin, client); +#ifdef XFIXES + if (SaveSetRemap (client->saveSet[j])) +#endif + MapWindow(pWin, client); } } xfree(client->saveSet); client->numSaved = 0; - client->saveSet = (pointer *)NULL; + client->saveSet = (SaveSetElt *)NULL; } +/** + * + * \param x,y in root + * \param box "return" value + */ Bool -VisibleBoundingBoxFromPoint(pWin, x, y, box) - register WindowPtr pWin; - int x, y; /* in root */ - BoxPtr box; /* "return" value */ +VisibleBoundingBoxFromPoint(register WindowPtr pWin, int x, int y, BoxPtr box) { if (!pWin->realized) return (FALSE); @@ -3478,25 +3475,31 @@ VisibleBoundingBoxFromPoint(pWin, x, y, box) return(FALSE); } +/** + * + * \param x,y in root + */ Bool -PointInWindowIsVisible(pWin, x, y) - register WindowPtr pWin; - int x, y; /* in root */ +PointInWindowIsVisible(register WindowPtr pWin, int x, int y) { BoxRec box; if (!pWin->realized) return (FALSE); if (POINT_IN_REGION(pWin->drawable.pScreen, &pWin->borderClip, - x, y, &box)) + x, y, &box) + && (!wInputShape(pWin) || + POINT_IN_REGION(pWin->drawable.pScreen, + wInputShape(pWin), + x - pWin->drawable.x, + y - pWin->drawable.y, &box))) return(TRUE); return(FALSE); } RegionPtr -NotClippedByChildren(pWin) - register WindowPtr pWin; +NotClippedByChildren(register WindowPtr pWin) { register ScreenPtr pScreen; RegionPtr pReg; @@ -3513,12 +3516,12 @@ NotClippedByChildren(pWin) } void -SendVisibilityNotify(pWin) - WindowPtr pWin; +SendVisibilityNotify(WindowPtr pWin) { xEvent event; +#ifndef NO_XINERAMA_PORT unsigned int visibility = pWin->visibility; - +#endif #ifdef PANORAMIX /* This is not quite correct yet, but it's close */ if(!noPanoramiXExtension) { @@ -3585,16 +3588,12 @@ SendVisibilityNotify(pWin) #ifndef NOLOGOHACK static void DrawLogo( -#if NeedFunctionPrototypes - WindowPtr /*pWin*/ -#endif + WindowPtr pWin ); #endif void -SaveScreens(on, mode) - int on; - int mode; +SaveScreens(int on, int mode) { int i; int what; @@ -3712,16 +3711,12 @@ SaveScreens(on, mode) } } screenIsSaved = what; + if (mode == ScreenSaverReset) + SetScreenSaverTimer(); } static Bool -#if NeedFunctionPrototypes TileScreenSaver(int i, int kind) -#else -TileScreenSaver(i, kind) - int i; - int kind; -#endif { int j; int result; @@ -3839,8 +3834,7 @@ TileScreenSaver(i, kind) */ WindowPtr -FindWindowWithOptional (w) - register WindowPtr w; +FindWindowWithOptional (register WindowPtr w) { do w = w->parent; @@ -3857,8 +3851,7 @@ FindWindowWithOptional (w) */ void -CheckWindowOptionalNeed (w) - register WindowPtr w; +CheckWindowOptionalNeed (register WindowPtr w) { register WindowOptPtr optional; register WindowOptPtr parentOptional; @@ -3885,6 +3878,8 @@ CheckWindowOptionalNeed (w) return; if (optional->clipShape != NULL) return; + if (optional->inputShape != NULL) + return; #endif #ifdef XINPUT if (optional->inputMasks != NULL) @@ -3910,8 +3905,7 @@ CheckWindowOptionalNeed (w) */ Bool -MakeWindowOptional (pWin) - register WindowPtr pWin; +MakeWindowOptional (register WindowPtr pWin) { register WindowOptPtr optional; register WindowOptPtr parentOptional; @@ -3931,6 +3925,7 @@ MakeWindowOptional (pWin) #ifdef SHAPE optional->boundingShape = NULL; optional->clipShape = NULL; + optional->inputShape = NULL; #endif #ifdef XINPUT optional->inputMasks = NULL; @@ -3952,8 +3947,7 @@ MakeWindowOptional (pWin) } void -DisposeWindowOptional (pWin) - register WindowPtr pWin; +DisposeWindowOptional (register WindowPtr pWin) { if (!pWin->optional) return; @@ -3994,12 +3988,7 @@ DisposeWindowOptional (pWin) #ifndef NOLOGOHACK static void -#if NeedFunctionPrototypes DrawLogo(WindowPtr pWin) -#else -DrawLogo(pWin) - WindowPtr pWin; -#endif { DrawablePtr pDraw; ScreenPtr pScreen; @@ -4176,4 +4165,3 @@ DrawLogo(pWin) #endif -#endif /* #ifdef NXAGENT_UPGRADE */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c b/nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c index f3bfcf5..b8543f7 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c @@ -1,13 +1,21 @@ -#ifdef NXAGENT_UPGRADE - -#if !defined(__sun) && !defined(__CYGWIN__) - -#include "X/NXxvdisp.c" - -#endif - -#else - +/**************************************************************************/ +/* */ +/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ +/* */ +/* NXAGENT, NX protocol compression and NX extensions to this software */ +/* are copyright of NoMachine. Redistribution and use of the present */ +/* software is allowed according to terms specified in the file LICENSE */ +/* which comes in the source distribution. */ +/* */ +/* Check http://www.nomachine.com/licensing.html for applicability. */ +/* */ +/* NX and NoMachine are trademarks of Medialogic S.p.A. */ +/* */ +/* All rights reserved. */ +/* */ +/**************************************************************************/ + +/* $XdotOrg: xc/programs/Xserver/Xext/xvdisp.c,v 1.6 2005/07/03 08:53:36 daniels Exp $ */ /*********************************************************** Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts, and the Massachusetts Institute of Technology, Cambridge, Massachusetts. @@ -31,7 +39,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ -/* $XFree86: xc/programs/Xserver/Xext/xvdisp.c,v 1.25 2001/11/18 23:55:48 mvojkovi Exp $ */ +/* $XFree86: xc/programs/Xserver/Xext/xvdisp.c,v 1.27 2003/07/16 01:38:31 dawes Exp $ */ /* ** File: @@ -57,8 +65,14 @@ SOFTWARE. ** */ -#include "X.h" -#include "Xproto.h" +#if !defined(__sun) && !defined(__CYGWIN__) + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <X11/X.h> +#include <X11/Xproto.h> #include "misc.h" #include "scrnintstr.h" #include "windowstr.h" @@ -68,12 +82,12 @@ SOFTWARE. #include "resource.h" #include "opaque.h" -#include "Xv.h" -#include "Xvproto.h" +#include <X11/extensions/Xv.h> +#include <X11/extensions/Xvproto.h> #include "xvdix.h" #ifdef MITSHM #define _XSHM_SERVER_ -#include "shmstr.h" +#include <X11/extensions/shmstr.h> #endif #include "Trap.h" @@ -85,6 +99,8 @@ SOFTWARE. #include "xf86_ansic.h" #endif +#include "xvdisp.h" + #ifdef PANORAMIX #include "panoramiX.h" #include "panoramiXsrv.h" @@ -261,17 +277,19 @@ ProcXvDispatch(ClientPtr client) case xv_PutVideo: #ifdef PANORAMIX if(!noPanoramiXExtension) - result = (XineramaXvPutVideo(client)); break; + result = (XineramaXvPutVideo(client)); else #endif - result = (ProcXvPutVideo(client)); break; + result = (ProcXvPutVideo(client)); + break; case xv_PutStill: #ifdef PANORAMIX if(!noPanoramiXExtension) - result = (XineramaXvPutStill(client)); break + result = (XineramaXvPutStill(client)); else #endif - result = (ProcXvPutStill(client)); break; + result = (ProcXvPutStill(client)); + break; case xv_GetVideo: result = (ProcXvGetVideo(client)); break; case xv_GetStill: result = (ProcXvGetStill(client)); break; case xv_GrabPort: result = (ProcXvGrabPort(client)); break; @@ -281,35 +299,39 @@ ProcXvDispatch(ClientPtr client) case xv_StopVideo: #ifdef PANORAMIX if(!noPanoramiXExtension) - result = (XineramaXvStopVideo(client)); break; + result = (XineramaXvStopVideo(client)); else #endif - result = (ProcXvStopVideo(client)); break; + result = (ProcXvStopVideo(client)); + break; case xv_SetPortAttribute: #ifdef PANORAMIX if(!noPanoramiXExtension) - result = (XineramaXvSetPortAttribute(client)); break; + result = (XineramaXvSetPortAttribute(client)); else #endif - result = (ProcXvSetPortAttribute(client)); break; + result = (ProcXvSetPortAttribute(client)); + break; case xv_GetPortAttribute: result = (ProcXvGetPortAttribute(client)); break; case xv_QueryBestSize: result = (ProcXvQueryBestSize(client)); break; case xv_QueryPortAttributes: result = (ProcXvQueryPortAttributes(client)); break; case xv_PutImage: #ifdef PANORAMIX if(!noPanoramiXExtension) - result = (XineramaXvPutImage(client)); break; + result = (XineramaXvPutImage(client)); else #endif - result = (ProcXvPutImage(client)); break; + result = (ProcXvPutImage(client)); + break; #ifdef MITSHM case xv_ShmPutImage: #ifdef PANORAMIX if(!noPanoramiXExtension) - result = (XineramaXvShmPutImage(client)); break; + result = (XineramaXvShmPutImage(client)); else #endif - result = (ProcXvShmPutImage(client)); break; + result = (ProcXvShmPutImage(client)); + break; #endif case xv_QueryImageAttributes: result = (ProcXvQueryImageAttributes(client)); break; case xv_ListImageFormats: result = (ProcXvListImageFormats(client)); break; @@ -1268,7 +1290,7 @@ ProcXvShmPutImage(ClientPtr client) #endif #ifdef XvMCExtension -XvImagePtr XvMCFindXvImage(XvPortPtr pPort, CARD32 id); +#include "xvmcext.h" #endif static int @@ -2000,8 +2022,7 @@ XineramaXvShmPutImage(ClientPtr client) client, stuff->port, XvXRTPort, SecurityReadAccess))) return _XvBadPort; - isRoot = (draw->type == XRT_WINDOW) && - (stuff->drawable == WindowTable[0]->drawable.id); + isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; x = stuff->drw_x; y = stuff->drw_y; @@ -2048,8 +2069,7 @@ XineramaXvPutImage(ClientPtr client) client, stuff->port, XvXRTPort, SecurityReadAccess))) return _XvBadPort; - isRoot = (draw->type == XRT_WINDOW) && - (stuff->drawable == WindowTable[0]->drawable.id); + isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; x = stuff->drw_x; y = stuff->drw_y; @@ -2094,8 +2114,7 @@ XineramaXvPutVideo(ClientPtr client) client, stuff->port, XvXRTPort, SecurityReadAccess))) return _XvBadPort; - isRoot = (draw->type == XRT_WINDOW) && - (stuff->drawable == WindowTable[0]->drawable.id); + isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; x = stuff->drw_x; y = stuff->drw_y; @@ -2140,8 +2159,7 @@ XineramaXvPutStill(ClientPtr client) client, stuff->port, XvXRTPort, SecurityReadAccess))) return _XvBadPort; - isRoot = (draw->type == XRT_WINDOW) && - (stuff->drawable == WindowTable[0]->drawable.id); + isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; x = stuff->drw_x; y = stuff->drw_y; @@ -2274,4 +2292,4 @@ void XineramifyXv(void) #endif -#endif /* #ifdef NXAGENT_UPGRADE */ +#endif /* !defined(__sun) && !defined(__CYGWIN__) */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/Render.c b/nx-X11/programs/Xserver/hw/nxagent/Render.c index c7f8263..ca9959e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Render.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c @@ -101,10 +101,6 @@ int nxagentRenderVersionMinor; int nxagentPicturePrivateIndex = 0; -#ifndef NXAGENT_UPGRADE -static int picturePrivateCount = 0; -#endif - static int nxagentNumFormats = 0; static XRenderPictFormat nxagentArrayFormats[MAX_FORMATS]; @@ -2066,62 +2062,6 @@ void nxagentTriFan(CARD8 op, PicturePtr pSrc, PicturePtr pDst, #endif } -#ifndef NXAGENT_UPGRADE - -/* -FIXME: In the 3.0.0 port these functions have been moved - to Picture.c. We can remove them when the port is - is complete. -*/ -int AllocatePicturePrivateIndex() -{ - return picturePrivateCount++; -} - -Bool AllocatePicturePrivate(register ScreenPtr pScreen, int index2, unsigned amount) -{ - unsigned oldamount; - - PictureScreenPtr ps = GetPictureScreen(pScreen); - - /* - * Round up the size for proper alignment. - */ - - amount = ((amount + (sizeof(long) - 1)) / sizeof(long)) * sizeof(long); - - if (index2 >= ps -> PicturePrivateLen) - { - unsigned *nsizes = (unsigned *) xrealloc(ps -> PicturePrivateSizes, - (index2 + 1) * sizeof(unsigned)); - if (nsizes == 0) - { - return 0; - } - - while (ps -> PicturePrivateLen <= index2) - { - nsizes[ps -> PicturePrivateLen++] = 0; - - ps -> totalPictureSize += sizeof(DevUnion); - } - - ps -> PicturePrivateSizes = nsizes; - } - - oldamount = ps -> PicturePrivateSizes[index2]; - - if (amount > oldamount) - { - ps -> PicturePrivateSizes[index2] = amount; - - ps -> totalPictureSize += (amount - oldamount); - } - - return 1; -} -#endif - void nxagentQueryFormats() { XRenderInfo *xri; diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c deleted file mode 100644 index cf5d48b..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c +++ /dev/null @@ -1,2073 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* - * $Id: damage.c,v 1.19 2005/10/06 21:55:41 anholt Exp $ - * - * Copyright © 2003 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include "scrnintstr.h" -#include "windowstr.h" -#include <X11/fonts/font.h> -#include "dixfontstr.h" -#include <X11/fonts/fontstruct.h> -#include "mi.h" -#include "regionstr.h" -#include "globals.h" -#include "gcstruct.h" -#include "damage.h" -#include "damagestr.h" -#ifdef COMPOSITE -#include "cw.h" -#endif - -#define wrap(priv, real, mem, func) {\ - priv->mem = real->mem; \ - real->mem = func; \ -} - -#define unwrap(priv, real, mem) {\ - real->mem = priv->mem; \ -} - -#define BOX_SAME(a,b) \ - ((a)->x1 == (b)->x1 && \ - (a)->y1 == (b)->y1 && \ - (a)->x2 == (b)->x2 && \ - (a)->y2 == (b)->y2) - -#define DAMAGE_VALIDATE_ENABLE 0 -#define DAMAGE_DEBUG_ENABLE 0 -#if DAMAGE_DEBUG_ENABLE -#define DAMAGE_DEBUG(x) ErrorF x -#else -#define DAMAGE_DEBUG(x) -#endif - -#define getPixmapDamageRef(pPixmap) \ - ((DamagePtr *) &(pPixmap->devPrivates[damagePixPrivateIndex].ptr)) - -#define pixmapDamage(pPixmap) damagePixPriv(pPixmap) - -static DamagePtr * -getDrawableDamageRef (DrawablePtr pDrawable) -{ - PixmapPtr pPixmap; - - if (pDrawable->type == DRAWABLE_WINDOW) - { - ScreenPtr pScreen = pDrawable->pScreen; - - pPixmap = 0; - if (pScreen->GetWindowPixmap -#ifdef ROOTLESS_WORKAROUND - && ((WindowPtr)pDrawable)->viewable -#endif - ) - pPixmap = (*pScreen->GetWindowPixmap) ((WindowPtr)pDrawable); - - if (!pPixmap) - { - damageScrPriv(pScreen); - - return &pScrPriv->pScreenDamage; - } - } - else - pPixmap = (PixmapPtr) pDrawable; - return getPixmapDamageRef (pPixmap); -} - -#define getDrawableDamage(pDrawable) (*getDrawableDamageRef (pDrawable)) -#define getWindowDamage(pWin) getDrawableDamage(&(pWin)->drawable) - -#define drawableDamage(pDrawable) \ - DamagePtr pDamage = getDrawableDamage(pDrawable) - -#define windowDamage(pWin) drawableDamage(&(pWin)->drawable) - -#define winDamageRef(pWindow) \ - DamagePtr *pPrev = (DamagePtr *) \ - &(pWindow->devPrivates[damageWinPrivateIndex].ptr) - -#if DAMAGE_DEBUG_ENABLE -static void -_damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, int subWindowMode, const char *where) -#define damageDamageRegion(d,r,c,m) _damageDamageRegion(d,r,c,m,__FUNCTION__) -#else -static void -damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, - int subWindowMode) -#endif -{ - ScreenPtr pScreen = pDrawable->pScreen; - damageScrPriv(pScreen); - drawableDamage(pDrawable); - DamagePtr pNext; - RegionRec clippedRec; - RegionPtr pDamageRegion; - RegionRec pixClip; - Bool was_empty; - RegionRec tmpRegion; - BoxRec tmpBox; - int draw_x, draw_y; -#ifdef COMPOSITE - int screen_x = 0, screen_y = 0; -#endif - - /* short circuit for empty regions */ - if (!REGION_NOTEMPTY(pScreen, pRegion)) - return; - -#ifdef COMPOSITE - /* - * When drawing to a pixmap which is storing window contents, - * the region presented is in pixmap relative coordinates which - * need to be converted to screen relative coordinates - */ - if (pDrawable->type != DRAWABLE_WINDOW) - { - screen_x = ((PixmapPtr) pDrawable)->screen_x - pDrawable->x; - screen_y = ((PixmapPtr) pDrawable)->screen_y - pDrawable->y; - } - if (screen_x || screen_y) - REGION_TRANSLATE (pScreen, pRegion, screen_x, screen_y); -#endif - - if (pDrawable->type == DRAWABLE_WINDOW && - ((WindowPtr)(pDrawable))->backingStore == NotUseful) - { - if (subWindowMode == ClipByChildren) - { - REGION_INTERSECT(pScreen, pRegion, pRegion, - &((WindowPtr)(pDrawable))->clipList); - } - else if (subWindowMode == IncludeInferiors) - { - RegionPtr pTempRegion = - NotClippedByChildren((WindowPtr)(pDrawable)); - REGION_INTERSECT(pScreen, pRegion, pRegion, pTempRegion); - REGION_DESTROY(pScreen, pTempRegion); - } - /* If subWindowMode is set to an invalid value, don't perform - * any drawable-based clipping. */ - } - - - REGION_NULL (pScreen, &clippedRec); - for (; pDamage; pDamage = pNext) - { - pNext = pDamage->pNext; - /* - * Check for internal damage and don't send events - */ - if (pScrPriv->internalLevel > 0 && !pDamage->isInternal) - { - DAMAGE_DEBUG (("non internal damage, skipping at %d\n", - pScrPriv->internalLevel)); - continue; - } - /* - * Check for unrealized windows - */ - if (pDamage->pDrawable->type == DRAWABLE_WINDOW && - !((WindowPtr) (pDamage->pDrawable))->realized) - { -#if 0 - DAMAGE_DEBUG (("damage while window unrealized\n")); -#endif - continue; - } - - draw_x = pDamage->pDrawable->x; - draw_y = pDamage->pDrawable->y; -#ifdef COMPOSITE - /* - * Need to move everyone to screen coordinates - * XXX what about off-screen pixmaps with non-zero x/y? - */ - if (pDamage->pDrawable->type != DRAWABLE_WINDOW) - { - draw_x += ((PixmapPtr) pDamage->pDrawable)->screen_x; - draw_y += ((PixmapPtr) pDamage->pDrawable)->screen_y; - } -#endif - - /* - * Clip against border or pixmap bounds - */ - - pDamageRegion = pRegion; - if (clip || pDamage->pDrawable != pDrawable) - { - pDamageRegion = &clippedRec; - if (pDamage->pDrawable->type == DRAWABLE_WINDOW) { - REGION_INTERSECT (pScreen, pDamageRegion, pRegion, - &((WindowPtr)(pDamage->pDrawable))->borderClip); - } else { - BoxRec box; - box.x1 = draw_x; - box.y1 = draw_y; - box.x2 = draw_x + pDamage->pDrawable->width; - box.y2 = draw_y + pDamage->pDrawable->height; - REGION_INIT(pScreen, &pixClip, &box, 1); - REGION_INTERSECT (pScreen, pDamageRegion, pRegion, &pixClip); - REGION_UNINIT(pScreen, &pixClip); - } - /* - * Short circuit empty results - */ - if (!REGION_NOTEMPTY(pScreen, pDamageRegion)) - continue; - } - - DAMAGE_DEBUG (("%s %d x %d +%d +%d (target 0x%lx monitor 0x%lx)\n", - where, - pDamageRegion->extents.x2 - pDamageRegion->extents.x1, - pDamageRegion->extents.y2 - pDamageRegion->extents.y1, - pDamageRegion->extents.x1, pDamageRegion->extents.y1, - pDrawable->id, pDamage->pDrawable->id)); - - /* - * Move region to target coordinate space - */ - if (draw_x || draw_y) - REGION_TRANSLATE (pScreen, pDamageRegion, -draw_x, -draw_y); - - switch (pDamage->damageLevel) { - case DamageReportRawRegion: - (*pDamage->damageReport) (pDamage, pDamageRegion, pDamage->closure); - break; - case DamageReportDeltaRegion: - REGION_NULL (pScreen, &tmpRegion); - REGION_SUBTRACT (pScreen, &tmpRegion, pDamageRegion, &pDamage->damage); - if (REGION_NOTEMPTY (pScreen, &tmpRegion)) - { - REGION_UNION(pScreen, &pDamage->damage, - &pDamage->damage, pDamageRegion); - (*pDamage->damageReport) (pDamage, &tmpRegion, pDamage->closure); - } - REGION_UNINIT(pScreen, &tmpRegion); - break; - case DamageReportBoundingBox: - tmpBox = *REGION_EXTENTS (pScreen, &pDamage->damage); - REGION_UNION(pScreen, &pDamage->damage, - &pDamage->damage, pDamageRegion); - if (!BOX_SAME (&tmpBox, REGION_EXTENTS (pScreen, &pDamage->damage))) - (*pDamage->damageReport) (pDamage, &pDamage->damage, pDamage->closure); - break; - case DamageReportNonEmpty: - was_empty = !REGION_NOTEMPTY(pScreen, &pDamage->damage); - REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage, - pDamageRegion); - if (was_empty && REGION_NOTEMPTY(pScreen, &pDamage->damage)) - (*pDamage->damageReport) (pDamage, &pDamage->damage, pDamage->closure); - break; - case DamageReportNone: - REGION_UNION(pScreen, &pDamage->damage, &pDamage->damage, - pDamageRegion); - break; - } - /* - * translate original region back - */ - if (pDamageRegion == pRegion && (draw_x || draw_y)) - REGION_TRANSLATE (pScreen, pDamageRegion, draw_x, draw_y); - } -#ifdef COMPOSITE - if (screen_x || screen_y) - REGION_TRANSLATE (pScreen, pRegion, -screen_x, -screen_y); -#endif - - REGION_UNINIT (pScreen, &clippedRec); -} - -#if DAMAGE_DEBUG_ENABLE -#define damageDamageBox(d,b,m) _damageDamageBox(d,b,m,__FUNCTION__) -static void -_damageDamageBox (DrawablePtr pDrawable, BoxPtr pBox, int subWindowMode, const char *where) -#else -static void -damageDamageBox (DrawablePtr pDrawable, BoxPtr pBox, int subWindowMode) -#endif -{ - RegionRec region; - - REGION_INIT (pDrawable->pScreen, ®ion, pBox, 1); -#if DAMAGE_DEBUG_ENABLE - _damageDamageRegion (pDrawable, ®ion, TRUE, subWindowMode, where); -#else - damageDamageRegion (pDrawable, ®ion, TRUE, subWindowMode); -#endif - REGION_UNINIT (pDrawable->pScreen, ®ion); -} - -static void damageValidateGC(GCPtr, unsigned long, DrawablePtr); -static void damageChangeGC(GCPtr, unsigned long); -static void damageCopyGC(GCPtr, unsigned long, GCPtr); -static void damageDestroyGC(GCPtr); -static void damageChangeClip(GCPtr, int, pointer, int); -static void damageDestroyClip(GCPtr); -static void damageCopyClip(GCPtr, GCPtr); - -GCFuncs damageGCFuncs = { - damageValidateGC, damageChangeGC, damageCopyGC, damageDestroyGC, - damageChangeClip, damageDestroyClip, damageCopyClip -}; - -extern GCOps damageGCOps; - -static Bool -damageCreateGC(GCPtr pGC) -{ - ScreenPtr pScreen = pGC->pScreen; - damageScrPriv(pScreen); - damageGCPriv(pGC); - Bool ret; - - pGC->pCompositeClip = 0; - unwrap (pScrPriv, pScreen, CreateGC); - if((ret = (*pScreen->CreateGC) (pGC))) { - pGCPriv->ops = NULL; - pGCPriv->funcs = pGC->funcs; - pGC->funcs = &damageGCFuncs; - } - wrap (pScrPriv, pScreen, CreateGC, damageCreateGC); - - return ret; -} - -#ifdef NOTUSED -static void -damageWrapGC (GCPtr pGC) -{ - damageGCPriv(pGC); - - pGCPriv->ops = NULL; - pGCPriv->funcs = pGC->funcs; - pGC->funcs = &damageGCFuncs; -} - -static void -damageUnwrapGC (GCPtr pGC) -{ - damageGCPriv(pGC); - - pGC->funcs = pGCPriv->funcs; - if (pGCPriv->ops) - pGC->ops = pGCPriv->ops; -} -#endif - -#define DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable) \ - damageGCPriv(pGC); \ - GCFuncs *oldFuncs = pGC->funcs; \ - unwrap(pGCPriv, pGC, funcs); \ - unwrap(pGCPriv, pGC, ops); \ - -#define DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable) \ - wrap(pGCPriv, pGC, funcs, oldFuncs); \ - wrap(pGCPriv, pGC, ops, &damageGCOps) - -#define DAMAGE_GC_FUNC_PROLOGUE(pGC) \ - damageGCPriv(pGC); \ - unwrap(pGCPriv, pGC, funcs); \ - if (pGCPriv->ops) unwrap(pGCPriv, pGC, ops) - -#define DAMAGE_GC_FUNC_EPILOGUE(pGC) \ - wrap(pGCPriv, pGC, funcs, &damageGCFuncs); \ - if (pGCPriv->ops) wrap(pGCPriv, pGC, ops, &damageGCOps) - -static void -damageValidateGC(GCPtr pGC, - unsigned long changes, - DrawablePtr pDrawable) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->ValidateGC)(pGC, changes, pDrawable); - pGCPriv->ops = pGC->ops; /* just so it's not NULL */ - DAMAGE_GC_FUNC_EPILOGUE (pGC); -} - -static void -damageDestroyGC(GCPtr pGC) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->DestroyGC)(pGC); - DAMAGE_GC_FUNC_EPILOGUE (pGC); -} - -static void -damageChangeGC (GCPtr pGC, - unsigned long mask) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->ChangeGC) (pGC, mask); - DAMAGE_GC_FUNC_EPILOGUE (pGC); -} - -static void -damageCopyGC (GCPtr pGCSrc, - unsigned long mask, - GCPtr pGCDst) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGCDst); - (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst); - DAMAGE_GC_FUNC_EPILOGUE (pGCDst); -} - -static void -damageChangeClip (GCPtr pGC, - int type, - pointer pvalue, - int nrects) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); - DAMAGE_GC_FUNC_EPILOGUE (pGC); -} - -static void -damageCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - DAMAGE_GC_FUNC_PROLOGUE (pgcDst); - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); - DAMAGE_GC_FUNC_EPILOGUE (pgcDst); -} - -static void -damageDestroyClip(GCPtr pGC) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGC); - (* pGC->funcs->DestroyClip)(pGC); - DAMAGE_GC_FUNC_EPILOGUE (pGC); -} - -#define TRIM_BOX(box, pGC) if (pGC->pCompositeClip) { \ - BoxPtr extents = &pGC->pCompositeClip->extents;\ - if(box.x1 < extents->x1) box.x1 = extents->x1; \ - if(box.x2 > extents->x2) box.x2 = extents->x2; \ - if(box.y1 < extents->y1) box.y1 = extents->y1; \ - if(box.y2 > extents->y2) box.y2 = extents->y2; \ - } - -#define TRANSLATE_BOX(box, pDrawable) { \ - box.x1 += pDrawable->x; \ - box.x2 += pDrawable->x; \ - box.y1 += pDrawable->y; \ - box.y2 += pDrawable->y; \ - } - -#define TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC) { \ - TRANSLATE_BOX(box, pDrawable); \ - TRIM_BOX(box, pGC); \ - } - -#define BOX_NOT_EMPTY(box) \ - (((box.x2 - box.x1) > 0) && ((box.y2 - box.y1) > 0)) - -#define checkGCDamage(d,g) (getDrawableDamage(d) && \ - (!g->pCompositeClip ||\ - REGION_NOTEMPTY(d->pScreen, \ - g->pCompositeClip))) - -#ifdef RENDER - -#define TRIM_PICTURE_BOX(box, pDst) { \ - BoxPtr extents = &pDst->pCompositeClip->extents;\ - if(box.x1 < extents->x1) box.x1 = extents->x1; \ - if(box.x2 > extents->x2) box.x2 = extents->x2; \ - if(box.y1 < extents->y1) box.y1 = extents->y1; \ - if(box.y2 > extents->y2) box.y2 = extents->y2; \ - } - -#define checkPictureDamage(p) (getDrawableDamage(p->pDrawable) && \ - REGION_NOTEMPTY(pScreen, p->pCompositeClip)) - -static void -damageComposite (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height) -{ - ScreenPtr pScreen = pDst->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - damageScrPriv(pScreen); - - if (checkPictureDamage (pDst)) - { - BoxRec box; - - box.x1 = xDst + pDst->pDrawable->x; - box.y1 = yDst + pDst->pDrawable->y; - box.x2 = box.x1 + width; - box.y2 = box.y1 + height; - TRIM_PICTURE_BOX(box, pDst); - if (BOX_NOT_EMPTY(box)) - damageDamageBox (pDst->pDrawable, &box, pDst->subWindowMode); - } - unwrap (pScrPriv, ps, Composite); - (*ps->Composite) (op, - pSrc, - pMask, - pDst, - xSrc, - ySrc, - xMask, - yMask, - xDst, - yDst, - width, - height); - wrap (pScrPriv, ps, Composite, damageComposite); -} - -static void -damageGlyphs (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int nlist, - GlyphListPtr list, - GlyphPtr *glyphs) -{ - ScreenPtr pScreen = pDst->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - damageScrPriv(pScreen); - - if (checkPictureDamage (pDst)) - { - int nlistTmp = nlist; - GlyphListPtr listTmp = list; - GlyphPtr *glyphsTmp = glyphs; - int x, y; - int n; - GlyphPtr glyph; - BoxRec box; - int x1, y1, x2, y2; - - box.x1 = 32767; - box.y1 = 32767; - box.x2 = -32767; - box.y2 = -32767; - x = pDst->pDrawable->x; - y = pDst->pDrawable->y; - while (nlistTmp--) - { - x += listTmp->xOff; - y += listTmp->yOff; - n = listTmp->len; - while (n--) - { - glyph = *glyphsTmp++; - x1 = x - glyph->info.x; - y1 = y - glyph->info.y; - x2 = x1 + glyph->info.width; - y2 = y1 + glyph->info.height; - if (x1 < box.x1) - box.x1 = x1; - if (y1 < box.y1) - box.y1 = y1; - if (x2 > box.x2) - box.x2 = x2; - if (y2 > box.y2) - box.y2 = y2; - x += glyph->info.xOff; - y += glyph->info.yOff; - } - listTmp++; - } - TRIM_PICTURE_BOX (box, pDst); - if (BOX_NOT_EMPTY(box)) - damageDamageBox (pDst->pDrawable, &box, pDst->subWindowMode); - } - unwrap (pScrPriv, ps, Glyphs); - (*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs); - wrap (pScrPriv, ps, Glyphs, damageGlyphs); -} -#endif - -/**********************************************************/ - - -static void -damageFillSpans(DrawablePtr pDrawable, - GC *pGC, - int npt, - DDXPointPtr ppt, - int *pwidth, - int fSorted) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (npt && checkGCDamage (pDrawable, pGC)) - { - int nptTmp = npt; - DDXPointPtr pptTmp = ppt; - int *pwidthTmp = pwidth; - BoxRec box; - - box.x1 = pptTmp->x; - box.x2 = box.x1 + *pwidthTmp; - box.y2 = box.y1 = pptTmp->y; - - while(--nptTmp) - { - pptTmp++; - pwidthTmp++; - if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; - if(box.x2 < (pptTmp->x + *pwidthTmp)) - box.x2 = pptTmp->x + *pwidthTmp; - if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; - else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; - } - - box.y2++; - - if(!pGC->miTranslate) { - TRANSLATE_BOX(box, pDrawable); - } - TRIM_BOX(box, pGC); - - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - - (*pGC->ops->FillSpans)(pDrawable, pGC, npt, ppt, pwidth, fSorted); - - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damageSetSpans(DrawablePtr pDrawable, - GCPtr pGC, - char *pcharsrc, - DDXPointPtr ppt, - int *pwidth, - int npt, - int fSorted) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (npt && checkGCDamage (pDrawable, pGC)) - { - DDXPointPtr pptTmp = ppt; - int *pwidthTmp = pwidth; - int nptTmp = npt; - BoxRec box; - - box.x1 = pptTmp->x; - box.x2 = box.x1 + *pwidthTmp; - box.y2 = box.y1 = pptTmp->y; - - while(--nptTmp) - { - pptTmp++; - pwidthTmp++; - if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; - if(box.x2 < (pptTmp->x + *pwidthTmp)) - box.x2 = pptTmp->x + *pwidthTmp; - if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; - else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; - } - - box.y2++; - - if(!pGC->miTranslate) { - TRANSLATE_BOX(box, pDrawable); - } - TRIM_BOX(box, pGC); - - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->SetSpans)(pDrawable, pGC, pcharsrc, ppt, pwidth, npt, fSorted); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damagePutImage(DrawablePtr pDrawable, - GCPtr pGC, - int depth, - int x, - int y, - int w, - int h, - int leftPad, - int format, - char *pImage) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - if (checkGCDamage (pDrawable, pGC)) - { - BoxRec box; - - box.x1 = x + pDrawable->x; - box.x2 = box.x1 + w; - box.y1 = y + pDrawable->y; - box.y2 = box.y1 + h; - - TRIM_BOX(box, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->PutImage)(pDrawable, pGC, depth, x, y, w, h, - leftPad, format, pImage); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static RegionPtr -damageCopyArea(DrawablePtr pSrc, - DrawablePtr pDst, - GC *pGC, - int srcx, - int srcy, - int width, - int height, - int dstx, - int dsty) -{ - RegionPtr ret; - DAMAGE_GC_OP_PROLOGUE(pGC, pDst); - - /* The driver will only call SourceValidate() when pSrc != pDst, - * but the software sprite (misprite.c) always need to know when a - * drawable is copied so it can remove the sprite. See #1030. */ - if ((pSrc == pDst) && pSrc->pScreen->SourceValidate && - pSrc->type == DRAWABLE_WINDOW && - ((WindowPtr)pSrc)->viewable) - { - (*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height); - } - - if (checkGCDamage (pDst, pGC)) - { - BoxRec box; - - box.x1 = dstx + pDst->x; - box.x2 = box.x1 + width; - box.y1 = dsty + pDst->y; - box.y2 = box.y1 + height; - - TRIM_BOX(box, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDst, &box, pGC->subWindowMode); - } - - ret = (*pGC->ops->CopyArea)(pSrc, pDst, - pGC, srcx, srcy, width, height, dstx, dsty); - DAMAGE_GC_OP_EPILOGUE(pGC, pDst); - return ret; -} - -static RegionPtr -damageCopyPlane(DrawablePtr pSrc, - DrawablePtr pDst, - GCPtr pGC, - int srcx, - int srcy, - int width, - int height, - int dstx, - int dsty, - unsigned long bitPlane) -{ - RegionPtr ret; - DAMAGE_GC_OP_PROLOGUE(pGC, pDst); - - /* The driver will only call SourceValidate() when pSrc != pDst, - * but the software sprite (misprite.c) always need to know when a - * drawable is copied so it can remove the sprite. See #1030. */ - if ((pSrc == pDst) && pSrc->pScreen->SourceValidate && - pSrc->type == DRAWABLE_WINDOW && - ((WindowPtr)pSrc)->viewable) - { - (*pSrc->pScreen->SourceValidate) (pSrc, srcx, srcy, width, height); - } - - if (checkGCDamage (pDst, pGC)) - { - BoxRec box; - - box.x1 = dstx + pDst->x; - box.x2 = box.x1 + width; - box.y1 = dsty + pDst->y; - box.y2 = box.y1 + height; - - TRIM_BOX(box, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDst, &box, pGC->subWindowMode); - } - - ret = (*pGC->ops->CopyPlane)(pSrc, pDst, - pGC, srcx, srcy, width, height, dstx, dsty, bitPlane); - DAMAGE_GC_OP_EPILOGUE(pGC, pDst); - return ret; -} - -static void -damagePolyPoint(DrawablePtr pDrawable, - GCPtr pGC, - int mode, - int npt, - xPoint *ppt) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (npt && checkGCDamage (pDrawable, pGC)) - { - BoxRec box; - int nptTmp = npt; - xPoint *pptTmp = ppt; - - box.x2 = box.x1 = pptTmp->x; - box.y2 = box.y1 = pptTmp->y; - - /* this could be slow if the points were spread out */ - - while(--nptTmp) - { - pptTmp++; - if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; - else if(box.x2 < pptTmp->x) box.x2 = pptTmp->x; - if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; - else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; - } - - box.x2++; - box.y2++; - - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->PolyPoint)(pDrawable, pGC, mode, npt, ppt); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damagePolylines(DrawablePtr pDrawable, - GCPtr pGC, - int mode, - int npt, - DDXPointPtr ppt) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (npt && checkGCDamage (pDrawable, pGC)) - { - int nptTmp = npt; - DDXPointPtr pptTmp = ppt; - BoxRec box; - int extra = pGC->lineWidth >> 1; - - box.x2 = box.x1 = pptTmp->x; - box.y2 = box.y1 = pptTmp->y; - - if(nptTmp > 1) - { - if(pGC->joinStyle == JoinMiter) - extra = 6 * pGC->lineWidth; - else if(pGC->capStyle == CapProjecting) - extra = pGC->lineWidth; - } - - if(mode == CoordModePrevious) - { - int x = box.x1; - int y = box.y1; - while(--nptTmp) - { - pptTmp++; - x += pptTmp->x; - y += pptTmp->y; - if(box.x1 > x) box.x1 = x; - else if(box.x2 < x) box.x2 = x; - if(box.y1 > y) box.y1 = y; - else if(box.y2 < y) box.y2 = y; - } - } - else - { - while(--nptTmp) - { - pptTmp++; - if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; - else if(box.x2 < pptTmp->x) box.x2 = pptTmp->x; - if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; - else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; - } - } - - box.x2++; - box.y2++; - - if(extra) - { - box.x1 -= extra; - box.x2 += extra; - box.y1 -= extra; - box.y2 += extra; - } - - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->Polylines)(pDrawable, pGC, mode, npt, ppt); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damagePolySegment(DrawablePtr pDrawable, - GCPtr pGC, - int nSeg, - xSegment *pSeg) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (nSeg && checkGCDamage (pDrawable, pGC)) - { - BoxRec box; - int extra = pGC->lineWidth; - int nsegTmp = nSeg; - xSegment *pSegTmp = pSeg; - - if(pGC->capStyle != CapProjecting) - extra >>= 1; - - if(pSegTmp->x2 > pSegTmp->x1) { - box.x1 = pSegTmp->x1; - box.x2 = pSegTmp->x2; - } else { - box.x2 = pSegTmp->x1; - box.x1 = pSegTmp->x2; - } - - if(pSegTmp->y2 > pSegTmp->y1) { - box.y1 = pSegTmp->y1; - box.y2 = pSegTmp->y2; - } else { - box.y2 = pSegTmp->y1; - box.y1 = pSegTmp->y2; - } - - while(--nsegTmp) - { - pSegTmp++; - if(pSegTmp->x2 > pSegTmp->x1) - { - if(pSegTmp->x1 < box.x1) box.x1 = pSegTmp->x1; - if(pSegTmp->x2 > box.x2) box.x2 = pSegTmp->x2; - } - else - { - if(pSegTmp->x2 < box.x1) box.x1 = pSegTmp->x2; - if(pSegTmp->x1 > box.x2) box.x2 = pSegTmp->x1; - } - if(pSegTmp->y2 > pSegTmp->y1) - { - if(pSegTmp->y1 < box.y1) box.y1 = pSegTmp->y1; - if(pSegTmp->y2 > box.y2) box.y2 = pSegTmp->y2; - } - else - { - if(pSegTmp->y2 < box.y1) box.y1 = pSegTmp->y2; - if(pSegTmp->y1 > box.y2) box.y2 = pSegTmp->y1; - } - } - - box.x2++; - box.y2++; - - if(extra) - { - box.x1 -= extra; - box.x2 += extra; - box.y1 -= extra; - box.y2 += extra; - } - - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->PolySegment)(pDrawable, pGC, nSeg, pSeg); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damagePolyRectangle(DrawablePtr pDrawable, - GCPtr pGC, - int nRects, - xRectangle *pRects) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (nRects && checkGCDamage (pDrawable, pGC)) - { - BoxRec box; - int offset1, offset2, offset3; - int nRectsTmp = nRects; - xRectangle *pRectsTmp = pRects; - - offset2 = pGC->lineWidth; - if(!offset2) offset2 = 1; - offset1 = offset2 >> 1; - offset3 = offset2 - offset1; - - while(nRectsTmp--) - { - box.x1 = pRectsTmp->x - offset1; - box.y1 = pRectsTmp->y - offset1; - box.x2 = box.x1 + pRectsTmp->width + offset2; - box.y2 = box.y1 + offset2; - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - - box.x1 = pRectsTmp->x - offset1; - box.y1 = pRectsTmp->y + offset3; - box.x2 = box.x1 + offset2; - box.y2 = box.y1 + pRectsTmp->height - offset2; - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - - box.x1 = pRectsTmp->x + pRectsTmp->width - offset1; - box.y1 = pRectsTmp->y + offset3; - box.x2 = box.x1 + offset2; - box.y2 = box.y1 + pRectsTmp->height - offset2; - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - - box.x1 = pRectsTmp->x - offset1; - box.y1 = pRectsTmp->y + pRectsTmp->height - offset1; - box.x2 = box.x1 + pRectsTmp->width + offset2; - box.y2 = box.y1 + offset2; - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - - pRectsTmp++; - } - } - (*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damagePolyArc(DrawablePtr pDrawable, - GCPtr pGC, - int nArcs, - xArc *pArcs) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (nArcs && checkGCDamage (pDrawable, pGC)) - { - int extra = pGC->lineWidth >> 1; - BoxRec box; - int nArcsTmp = nArcs; - xArc *pArcsTmp = pArcs; - - box.x1 = pArcsTmp->x; - box.x2 = box.x1 + pArcsTmp->width; - box.y1 = pArcsTmp->y; - box.y2 = box.y1 + pArcsTmp->height; - - while(--nArcsTmp) - { - pArcsTmp++; - if(box.x1 > pArcsTmp->x) - box.x1 = pArcsTmp->x; - if(box.x2 < (pArcsTmp->x + pArcsTmp->width)) - box.x2 = pArcsTmp->x + pArcsTmp->width; - if(box.y1 > pArcsTmp->y) - box.y1 = pArcsTmp->y; - if(box.y2 < (pArcsTmp->y + pArcsTmp->height)) - box.y2 = pArcsTmp->y + pArcsTmp->height; - } - - if(extra) - { - box.x1 -= extra; - box.x2 += extra; - box.y1 -= extra; - box.y2 += extra; - } - - box.x2++; - box.y2++; - - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->PolyArc)(pDrawable, pGC, nArcs, pArcs); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damageFillPolygon(DrawablePtr pDrawable, - GCPtr pGC, - int shape, - int mode, - int npt, - DDXPointPtr ppt) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (npt > 2 && checkGCDamage (pDrawable, pGC)) - { - DDXPointPtr pptTmp = ppt; - int nptTmp = npt; - BoxRec box; - - box.x2 = box.x1 = pptTmp->x; - box.y2 = box.y1 = pptTmp->y; - - if(mode != CoordModeOrigin) - { - int x = box.x1; - int y = box.y1; - while(--nptTmp) - { - pptTmp++; - x += pptTmp->x; - y += pptTmp->y; - if(box.x1 > x) box.x1 = x; - else if(box.x2 < x) box.x2 = x; - if(box.y1 > y) box.y1 = y; - else if(box.y2 < y) box.y2 = y; - } - } - else - { - while(--nptTmp) - { - pptTmp++; - if(box.x1 > pptTmp->x) box.x1 = pptTmp->x; - else if(box.x2 < pptTmp->x) box.x2 = pptTmp->x; - if(box.y1 > pptTmp->y) box.y1 = pptTmp->y; - else if(box.y2 < pptTmp->y) box.y2 = pptTmp->y; - } - } - - box.x2++; - box.y2++; - - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - - (*pGC->ops->FillPolygon)(pDrawable, pGC, shape, mode, npt, ppt); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - - -static void -damagePolyFillRect(DrawablePtr pDrawable, - GCPtr pGC, - int nRects, - xRectangle *pRects) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - if (nRects && checkGCDamage (pDrawable, pGC)) - { - BoxRec box; - xRectangle *pRectsTmp = pRects; - int nRectsTmp = nRects; - - box.x1 = pRectsTmp->x; - box.x2 = box.x1 + pRectsTmp->width; - box.y1 = pRectsTmp->y; - box.y2 = box.y1 + pRectsTmp->height; - - while(--nRectsTmp) - { - pRectsTmp++; - if(box.x1 > pRectsTmp->x) box.x1 = pRectsTmp->x; - if(box.x2 < (pRectsTmp->x + pRectsTmp->width)) - box.x2 = pRectsTmp->x + pRectsTmp->width; - if(box.y1 > pRectsTmp->y) box.y1 = pRectsTmp->y; - if(box.y2 < (pRectsTmp->y + pRectsTmp->height)) - box.y2 = pRectsTmp->y + pRectsTmp->height; - } - - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->PolyFillRect)(pDrawable, pGC, nRects, pRects); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - - -static void -damagePolyFillArc(DrawablePtr pDrawable, - GCPtr pGC, - int nArcs, - xArc *pArcs) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (nArcs && checkGCDamage (pDrawable, pGC)) - { - BoxRec box; - int nArcsTmp = nArcs; - xArc *pArcsTmp = pArcs; - - box.x1 = pArcsTmp->x; - box.x2 = box.x1 + pArcsTmp->width; - box.y1 = pArcsTmp->y; - box.y2 = box.y1 + pArcsTmp->height; - - while(--nArcsTmp) - { - pArcsTmp++; - if(box.x1 > pArcsTmp->x) - box.x1 = pArcsTmp->x; - if(box.x2 < (pArcsTmp->x + pArcsTmp->width)) - box.x2 = pArcsTmp->x + pArcsTmp->width; - if(box.y1 > pArcsTmp->y) - box.y1 = pArcsTmp->y; - if(box.y2 < (pArcsTmp->y + pArcsTmp->height)) - box.y2 = pArcsTmp->y + pArcsTmp->height; - } - - TRIM_AND_TRANSLATE_BOX(box, pDrawable, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->PolyFillArc)(pDrawable, pGC, nArcs, pArcs); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -/* - * general Poly/Image text function. Extract glyph information, - * compute bounding box and remove cursor if it is overlapped. - */ - -static void -damageDamageChars (DrawablePtr pDrawable, - FontPtr font, - int x, - int y, - unsigned int n, - CharInfoPtr *charinfo, - Bool imageblt, - int subWindowMode) -{ - ExtentInfoRec extents; - BoxRec box; - - QueryGlyphExtents(font, charinfo, n, &extents); - if (imageblt) - { - if (extents.overallWidth > extents.overallRight) - extents.overallRight = extents.overallWidth; - if (extents.overallWidth < extents.overallLeft) - extents.overallLeft = extents.overallWidth; - if (extents.overallLeft > 0) - extents.overallLeft = 0; - if (extents.fontAscent > extents.overallAscent) - extents.overallAscent = extents.fontAscent; - if (extents.fontDescent > extents.overallDescent) - extents.overallDescent = extents.fontDescent; - } - box.x1 = x + extents.overallLeft; - box.y1 = y - extents.overallAscent; - box.x2 = x + extents.overallRight; - box.y2 = y + extents.overallDescent; - damageDamageBox (pDrawable, &box, subWindowMode); -} - -/* - * values for textType: - */ -#define TT_POLY8 0 -#define TT_IMAGE8 1 -#define TT_POLY16 2 -#define TT_IMAGE16 3 - -static int -damageText (DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - unsigned long count, - char *chars, - FontEncoding fontEncoding, - Bool textType) -{ - CharInfoPtr *charinfo; - CharInfoPtr *info; - unsigned long i; - unsigned int n; - int w; - Bool imageblt; - - imageblt = (textType == TT_IMAGE8) || (textType == TT_IMAGE16); - - charinfo = (CharInfoPtr *) ALLOCATE_LOCAL(count * sizeof(CharInfoPtr)); - if (!charinfo) - return x; - - GetGlyphs(pGC->font, count, (unsigned char *)chars, - fontEncoding, &i, charinfo); - n = (unsigned int)i; - w = 0; - if (!imageblt) - for (info = charinfo; i--; info++) - w += (*info)->metrics.characterWidth; - - if (n != 0) { - damageDamageChars (pDrawable, pGC->font, x + pDrawable->x, y + pDrawable->y, n, - charinfo, imageblt, pGC->subWindowMode); - -#ifndef NXAGENT_SERVER - - if (imageblt) - (*pGC->ops->ImageGlyphBlt)(pDrawable, pGC, x, y, n, charinfo, - FONTGLYPHS(pGC->font)); - else - (*pGC->ops->PolyGlyphBlt)(pDrawable, pGC, x, y, n, charinfo, - FONTGLYPHS(pGC->font)); -#endif - - } - DEALLOCATE_LOCAL(charinfo); - return x + w; -} - -#ifndef NXAGENT_SERVER - -static int -damagePolyText8(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - char *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - x = damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, - Linear8Bit, TT_POLY8); - else - x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); - return x; -} - -static int -damagePolyText16(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - unsigned short *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - x = damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, - FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, - TT_POLY16); - else - x = (*pGC->ops->PolyText16)(pDrawable, pGC, x, y, count, chars); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); - return x; -} - -static void -damageImageText8(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - char *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, - Linear8Bit, TT_IMAGE8); - else - (*pGC->ops->ImageText8)(pDrawable, pGC, x, y, count, chars); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damageImageText16(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - unsigned short *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, - FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, - TT_IMAGE16); - else - (*pGC->ops->ImageText16)(pDrawable, pGC, x, y, count, chars); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -#else /* #ifndef NXAGENT_SERVER */ - -static int -damagePolyText8(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - char *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, - Linear8Bit, TT_POLY8); - - x = (*pGC->ops->PolyText8)(pDrawable, pGC, x, y, count, chars); - - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); - return x; -} - -static int -damagePolyText16(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - unsigned short *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, - FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, - TT_POLY16); - - x = (*pGC->ops->PolyText16)(pDrawable, pGC, x, y, count, chars); - - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); - return x; -} - -static void -damageImageText8(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - char *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, chars, - Linear8Bit, TT_IMAGE8); - - (*pGC->ops->ImageText8)(pDrawable, pGC, x, y, count, chars); - - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damageImageText16(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - int count, - unsigned short *chars) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - - if (checkGCDamage (pDrawable, pGC)) - damageText (pDrawable, pGC, x, y, (unsigned long) count, (char *) chars, - FONTLASTROW(pGC->font) == 0 ? Linear16Bit : TwoD16Bit, - TT_IMAGE16); - - (*pGC->ops->ImageText16)(pDrawable, pGC, x, y, count, chars); - - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -#endif /* #ifndef NXAGENT_SERVER */ - -static void -damageImageGlyphBlt(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - unsigned int nglyph, - CharInfoPtr *ppci, - pointer pglyphBase) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - damageDamageChars (pDrawable, pGC->font, x + pDrawable->x, y + pDrawable->y, - nglyph, ppci, TRUE, pGC->subWindowMode); - (*pGC->ops->ImageGlyphBlt)(pDrawable, pGC, x, y, nglyph, - ppci, pglyphBase); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damagePolyGlyphBlt(DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - unsigned int nglyph, - CharInfoPtr *ppci, - pointer pglyphBase) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - damageDamageChars (pDrawable, pGC->font, x + pDrawable->x, y + pDrawable->y, - nglyph, ppci, FALSE, pGC->subWindowMode); - (*pGC->ops->PolyGlyphBlt)(pDrawable, pGC, x, y, nglyph, - ppci, pglyphBase); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damagePushPixels(GCPtr pGC, - PixmapPtr pBitMap, - DrawablePtr pDrawable, - int dx, - int dy, - int xOrg, - int yOrg) -{ - DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); - if(checkGCDamage (pDrawable, pGC)) - { - BoxRec box; - - box.x1 = xOrg; - box.y1 = yOrg; - - if(!pGC->miTranslate) { - box.x1 += pDrawable->x; - box.y1 += pDrawable->y; - } - - box.x2 = box.x1 + dx; - box.y2 = box.y1 + dy; - - TRIM_BOX(box, pGC); - if(BOX_NOT_EMPTY(box)) - damageDamageBox (pDrawable, &box, pGC->subWindowMode); - } - (*pGC->ops->PushPixels)(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg); - DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); -} - -static void -damageRemoveDamage (DamagePtr *pPrev, DamagePtr pDamage) -{ - while (*pPrev) - { - if (*pPrev == pDamage) - { - *pPrev = pDamage->pNext; - return; - } - pPrev = &(*pPrev)->pNext; - } -#if DAMAGE_VALIDATE_ENABLE - ErrorF ("Damage not on list\n"); - abort (); -#endif -} - -static void -damageInsertDamage (DamagePtr *pPrev, DamagePtr pDamage) -{ -#if DAMAGE_VALIDATE_ENABLE - DamagePtr pOld; - - for (pOld = *pPrev; pOld; pOld = pOld->pNext) - if (pOld == pDamage) { - ErrorF ("Damage already on list\n"); - abort (); - } -#endif - pDamage->pNext = *pPrev; - *pPrev = pDamage; -} - -static Bool -damageDestroyPixmap (PixmapPtr pPixmap) -{ - ScreenPtr pScreen = pPixmap->drawable.pScreen; - damageScrPriv(pScreen); - - if (pPixmap->refcnt == 1) - { - DamagePtr *pPrev = getPixmapDamageRef (pPixmap); - DamagePtr pDamage; - - while ((pDamage = *pPrev)) - { - damageRemoveDamage (pPrev, pDamage); - if (!pDamage->isWindow) - DamageDestroy (pDamage); - } - } - unwrap (pScrPriv, pScreen, DestroyPixmap); - (*pScreen->DestroyPixmap) (pPixmap); - wrap (pScrPriv, pScreen, DestroyPixmap, damageDestroyPixmap); - return TRUE; -} - -static void -damagePaintWindow(WindowPtr pWindow, - RegionPtr prgn, - int what) -{ - ScreenPtr pScreen = pWindow->drawable.pScreen; - damageScrPriv(pScreen); - - /* - * Painting background none doesn't actually *do* anything, so - * no damage is recorded - */ - if ((what != PW_BACKGROUND || pWindow->backgroundState != None) && - getWindowDamage (pWindow)) - damageDamageRegion (&pWindow->drawable, prgn, FALSE, -1); - if(what == PW_BACKGROUND) { - unwrap (pScrPriv, pScreen, PaintWindowBackground); - (*pScreen->PaintWindowBackground) (pWindow, prgn, what); - wrap (pScrPriv, pScreen, PaintWindowBackground, damagePaintWindow); - } else { - unwrap (pScrPriv, pScreen, PaintWindowBorder); - (*pScreen->PaintWindowBorder) (pWindow, prgn, what); - wrap (pScrPriv, pScreen, PaintWindowBorder, damagePaintWindow); - } -} - - -static void -damageCopyWindow(WindowPtr pWindow, - DDXPointRec ptOldOrg, - RegionPtr prgnSrc) -{ - ScreenPtr pScreen = pWindow->drawable.pScreen; - damageScrPriv(pScreen); - - if (getWindowDamage (pWindow)) - { - int dx = pWindow->drawable.x - ptOldOrg.x; - int dy = pWindow->drawable.y - ptOldOrg.y; - - /* - * The region comes in source relative, but the damage occurs - * at the destination location. Translate back and forth. - */ - REGION_TRANSLATE (pScreen, prgnSrc, dx, dy); - damageDamageRegion (&pWindow->drawable, prgnSrc, FALSE, -1); - REGION_TRANSLATE (pScreen, prgnSrc, -dx, -dy); - } - unwrap (pScrPriv, pScreen, CopyWindow); - (*pScreen->CopyWindow) (pWindow, ptOldOrg, prgnSrc); - wrap (pScrPriv, pScreen, CopyWindow, damageCopyWindow); -} - -GCOps damageGCOps = { - damageFillSpans, damageSetSpans, - damagePutImage, damageCopyArea, - damageCopyPlane, damagePolyPoint, - damagePolylines, damagePolySegment, - damagePolyRectangle, damagePolyArc, - damageFillPolygon, damagePolyFillRect, - damagePolyFillArc, damagePolyText8, - damagePolyText16, damageImageText8, - damageImageText16, damageImageGlyphBlt, - damagePolyGlyphBlt, damagePushPixels, -#ifdef NEED_LINEHELPER - NULL, -#endif - {NULL} /* devPrivate */ -}; - -static void -damageRestoreAreas (PixmapPtr pPixmap, - RegionPtr prgn, - int xorg, - int yorg, - WindowPtr pWindow) -{ - ScreenPtr pScreen = pWindow->drawable.pScreen; - damageScrPriv(pScreen); - - damageDamageRegion (&pWindow->drawable, prgn, FALSE, -1); - unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas); - (*pScreen->BackingStoreFuncs.RestoreAreas) (pPixmap, prgn, - xorg, yorg, pWindow); - wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas, - damageRestoreAreas); -} - -static void -damageSetWindowPixmap (WindowPtr pWindow, PixmapPtr pPixmap) -{ - DamagePtr pDamage; - ScreenPtr pScreen = pWindow->drawable.pScreen; - damageScrPriv(pScreen); - - if ((pDamage = damageGetWinPriv(pWindow))) - { - PixmapPtr pOldPixmap = (*pScreen->GetWindowPixmap) (pWindow); - DamagePtr *pPrev = getPixmapDamageRef(pOldPixmap); - - while (pDamage) - { - damageRemoveDamage (pPrev, pDamage); - pDamage = pDamage->pNextWin; - } - } - unwrap (pScrPriv, pScreen, SetWindowPixmap); - (*pScreen->SetWindowPixmap) (pWindow, pPixmap); - wrap (pScrPriv, pScreen, SetWindowPixmap, damageSetWindowPixmap); - if ((pDamage = damageGetWinPriv(pWindow))) - { - DamagePtr *pPrev = getPixmapDamageRef(pPixmap); - - while (pDamage) - { - damageInsertDamage (pPrev, pDamage); - pDamage = pDamage->pNextWin; - } - } -} - -static Bool -damageDestroyWindow (WindowPtr pWindow) -{ - DamagePtr pDamage; - ScreenPtr pScreen = pWindow->drawable.pScreen; - Bool ret; - damageScrPriv(pScreen); - - while ((pDamage = damageGetWinPriv(pWindow))) - { - DamageUnregister (&pWindow->drawable, pDamage); - DamageDestroy (pDamage); - } - unwrap (pScrPriv, pScreen, DestroyWindow); - ret = (*pScreen->DestroyWindow) (pWindow); - wrap (pScrPriv, pScreen, DestroyWindow, damageDestroyWindow); - return ret; -} - -static Bool -damageCloseScreen (int i, ScreenPtr pScreen) -{ - damageScrPriv(pScreen); - - unwrap (pScrPriv, pScreen, DestroyPixmap); - unwrap (pScrPriv, pScreen, CreateGC); - unwrap (pScrPriv, pScreen, PaintWindowBackground); - unwrap (pScrPriv, pScreen, PaintWindowBorder); - unwrap (pScrPriv, pScreen, CopyWindow); - unwrap (pScrPriv, pScreen, CloseScreen); - unwrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas); - xfree (pScrPriv); - return (*pScreen->CloseScreen) (i, pScreen); -} - -int damageScrPrivateIndex; -int damagePixPrivateIndex; -int damageGCPrivateIndex; -int damageWinPrivateIndex; -int damageGeneration; - -Bool -DamageSetup (ScreenPtr pScreen) -{ - DamageScrPrivPtr pScrPriv; -#ifdef RENDER - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); -#endif - - if (damageGeneration != serverGeneration) - { - damageScrPrivateIndex = AllocateScreenPrivateIndex (); - if (damageScrPrivateIndex == -1) - return FALSE; - damageGCPrivateIndex = AllocateGCPrivateIndex (); - if (damageGCPrivateIndex == -1) - return FALSE; - damagePixPrivateIndex = AllocatePixmapPrivateIndex (); - if (damagePixPrivateIndex == -1) - return FALSE; - damageWinPrivateIndex = AllocateWindowPrivateIndex (); - if (damageWinPrivateIndex == -1) - return FALSE; - damageGeneration = serverGeneration; - } - if (pScreen->devPrivates[damageScrPrivateIndex].ptr) - return TRUE; - - if (!AllocateGCPrivate (pScreen, damageGCPrivateIndex, sizeof (DamageGCPrivRec))) - return FALSE; - if (!AllocatePixmapPrivate (pScreen, damagePixPrivateIndex, 0)) - return FALSE; - if (!AllocateWindowPrivate (pScreen, damageWinPrivateIndex, 0)) - return FALSE; - - pScrPriv = (DamageScrPrivPtr) xalloc (sizeof (DamageScrPrivRec)); - if (!pScrPriv) - return FALSE; - -#ifdef COMPOSITE - /* This is a kludge to ensure wrapping order with the composite wrapper. - * If it's done from compinit.c, then DamageSetup may be called before the - * extension init phase, so that cw will be higher in the wrapping chain and - * rewrite drawables before damage gets to it, causing confusion. - */ - if (!noCompositeExtension) - miInitializeCompositeWrapper (pScreen); -#endif - - pScrPriv->internalLevel = 0; - pScrPriv->pScreenDamage = 0; - - wrap (pScrPriv, pScreen, DestroyPixmap, damageDestroyPixmap); - wrap (pScrPriv, pScreen, CreateGC, damageCreateGC); - wrap (pScrPriv, pScreen, PaintWindowBackground, damagePaintWindow); - wrap (pScrPriv, pScreen, PaintWindowBorder, damagePaintWindow); - wrap (pScrPriv, pScreen, DestroyWindow, damageDestroyWindow); - wrap (pScrPriv, pScreen, SetWindowPixmap, damageSetWindowPixmap); - wrap (pScrPriv, pScreen, CopyWindow, damageCopyWindow); - wrap (pScrPriv, pScreen, CloseScreen, damageCloseScreen); - wrap (pScrPriv, pScreen, BackingStoreFuncs.RestoreAreas, - damageRestoreAreas); -#ifdef RENDER - if (ps) { - wrap (pScrPriv, ps, Glyphs, damageGlyphs); - wrap (pScrPriv, ps, Composite, damageComposite); - } -#endif - - pScreen->devPrivates[damageScrPrivateIndex].ptr = (pointer) pScrPriv; - return TRUE; -} - -DamagePtr -DamageCreate (DamageReportFunc damageReport, - DamageDestroyFunc damageDestroy, - DamageReportLevel damageLevel, - Bool isInternal, - ScreenPtr pScreen, - void *closure) -{ - DamagePtr pDamage; - - pDamage = xalloc (sizeof (DamageRec)); - if (!pDamage) - return 0; - pDamage->pNext = 0; - pDamage->pNextWin = 0; - REGION_NULL(pScreen, &pDamage->damage); - - pDamage->damageLevel = damageLevel; - pDamage->isInternal = isInternal; - pDamage->closure = closure; - pDamage->isWindow = FALSE; - pDamage->pDrawable = 0; - - pDamage->damageReport = damageReport; - pDamage->damageDestroy = damageDestroy; - return pDamage; -} - -void -DamageRegister (DrawablePtr pDrawable, - DamagePtr pDamage) -{ - if (pDrawable->type == DRAWABLE_WINDOW) - { - WindowPtr pWindow = (WindowPtr) pDrawable; - winDamageRef(pWindow); - -#if DAMAGE_VALIDATE_ENABLE - DamagePtr pOld; - - for (pOld = *pPrev; pOld; pOld = pOld->pNextWin) - if (pOld == pDamage) { - ErrorF ("Damage already on window list\n"); - abort (); - } -#endif - pDamage->pNextWin = *pPrev; - *pPrev = pDamage; - pDamage->isWindow = TRUE; - } - else - pDamage->isWindow = FALSE; - pDamage->pDrawable = pDrawable; - damageInsertDamage (getDrawableDamageRef (pDrawable), pDamage); -} - -void -DamageDrawInternal (ScreenPtr pScreen, Bool enable) -{ - damageScrPriv (pScreen); - - pScrPriv->internalLevel += enable ? 1 : -1; -} - -void -DamageUnregister (DrawablePtr pDrawable, - DamagePtr pDamage) -{ - if (pDrawable->type == DRAWABLE_WINDOW) - { - WindowPtr pWindow = (WindowPtr) pDrawable; - winDamageRef (pWindow); -#if DAMAGE_VALIDATE_ENABLE - int found = 0; -#endif - - while (*pPrev) - { - if (*pPrev == pDamage) - { - *pPrev = pDamage->pNextWin; -#if DAMAGE_VALIDATE_ENABLE - found = 1; -#endif - break; - } - pPrev = &(*pPrev)->pNextWin; - } -#if DAMAGE_VALIDATE_ENABLE - if (!found) { - ErrorF ("Damage not on window list\n"); - abort (); - } -#endif - } - pDamage->pDrawable = 0; - damageRemoveDamage (getDrawableDamageRef (pDrawable), pDamage); -} - -void -DamageDestroy (DamagePtr pDamage) -{ - if (pDamage->damageDestroy) - (*pDamage->damageDestroy) (pDamage, pDamage->closure); - REGION_UNINIT (pDamage->pDrawable->pScreen, &pDamage->damage); - xfree (pDamage); -} - -Bool -DamageSubtract (DamagePtr pDamage, - const RegionPtr pRegion) -{ - RegionPtr pClip; - RegionRec pixmapClip; - DrawablePtr pDrawable = pDamage->pDrawable; - - REGION_SUBTRACT (pDrawable->pScreen, &pDamage->damage, &pDamage->damage, pRegion); - if (pDrawable) - { - if (pDrawable->type == DRAWABLE_WINDOW) - pClip = &((WindowPtr) pDrawable)->borderClip; - else - { - BoxRec box; - - box.x1 = pDrawable->x; - box.y1 = pDrawable->y; - box.x2 = pDrawable->x + pDrawable->width; - box.y2 = pDrawable->y + pDrawable->height; - REGION_INIT (pDrawable->pScreen, &pixmapClip, &box, 1); - pClip = &pixmapClip; - } - REGION_TRANSLATE (pDrawable->pScreen, &pDamage->damage, pDrawable->x, pDrawable->y); - REGION_INTERSECT (pDrawable->pScreen, &pDamage->damage, &pDamage->damage, pClip); - REGION_TRANSLATE (pDrawable->pScreen, &pDamage->damage, -pDrawable->x, -pDrawable->y); - if (pDrawable->type != DRAWABLE_WINDOW) - REGION_UNINIT(pDrawable->pScreen, &pixmapClip); - } - return REGION_NOTEMPTY (pDrawable->pScreen, &pDamage->damage); -} - -void -DamageEmpty (DamagePtr pDamage) -{ - REGION_EMPTY (pDamage->pDrawable->pScreen, &pDamage->damage); -} - -RegionPtr -DamageRegion (DamagePtr pDamage) -{ - return &pDamage->damage; -} - -void -DamageDamageRegion (DrawablePtr pDrawable, - RegionPtr pRegion) -{ - damageDamageRegion (pDrawable, pRegion, FALSE, -1); -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c deleted file mode 100644 index 3d9ee8c..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c +++ /dev/null @@ -1,4682 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XdotOrg: xc/programs/Xserver/dix/dispatch.c,v 1.13 2005/09/13 01:33:19 daniels Exp $ */ -/* $Xorg: dispatch.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */ -/************************************************************ - -Copyright 1987, 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987, 1989 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -********************************************************/ - -/* The panoramix components contained the following notice */ -/***************************************************************** - -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. - -******************************************************************/ - -/* $XFree86: xc/programs/Xserver/dix/dispatch.c,v 3.32 2003/11/10 18:21:45 tsi Exp $ */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#ifdef PANORAMIX_DEBUG -#include <stdio.h> -int ProcInitialConnection(); -#endif - -#ifdef __sun -#define False 0 -#define True 1 -#endif - -#define GC XlibGC -#include <X11/Xlib.h> -#undef GC - -#include "windowstr.h" -#include <X11/fonts/fontstruct.h> -#include "dixfontstr.h" -#include "gcstruct.h" -#include "selection.h" -#include "colormapst.h" -#include "cursorstr.h" -#include "scrnintstr.h" -#include "opaque.h" -#include "input.h" -#include "servermd.h" -#include "extnsionst.h" -#include "dixfont.h" -#include "../../dix/dispatch.h" -#include "swaprep.h" -#include "swapreq.h" -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" -#endif -#ifdef XCSECURITY -#define _SECURITY_SERVER -#include <X11/extensions/security.h> -#endif -#ifdef XAPPGROUP -#include <X11/extensions/Xagsrv.h> -#endif -#ifdef XKB -#define XKB_IN_SERVER -#include "inputstr.h" -#include <X11/extensions/XKBsrv.h> -#endif - -#include "Atoms.h" -#include "Splash.h" -#include "Client.h" -#include "Clipboard.h" -#include "Reconnect.h" -#include "Millis.h" -#include "Font.h" -#include "Shadow.h" -#include "Handlers.h" -#include "Keyboard.h" - -const int nxagentMaxFontNames = 10000; - -char dispatchExceptionAtReset = DE_RESET; - -/* - * This allows the agent to exit if no - * client is connected within a timeout. - */ - -int nxagentClients = 0; - -void nxagentWaitDisplay(void); - -void nxagentListRemoteFonts(const char *, int); - -unsigned int nxagentWMtimeout = 0; -Bool nxagentWMPassed = 0; - -/* - * Timeouts based on screen saver time. - */ - -int nxagentAutoDisconnectTimeout = 0; - -#ifdef LBX -#include "../../lbx/lbxserve.h" -#endif - -#include "Xatom.h" - -/* - * Set here the required log level. - */ - -#define PANIC -#define WARNING -#undef TEST -#undef WATCH - -/* - * Log begin and end of the important handlers. - */ - -#undef BLOCKS - -#ifdef WATCH -#include "unistd.h" -#endif - -#ifdef TEST -#include "Literals.h" -#endif - -#define mskcnt ((MAXCLIENTS + 31) / 32) -#define BITMASK(i) (1U << ((i) & 31)) -#define MASKIDX(i) ((i) >> 5) -#define MASKWORD(buf, i) buf[MASKIDX(i)] -#define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i) -#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i) -#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i)) - -extern xConnSetupPrefix connSetupPrefix; -extern char *ConnectionInfo; - -Selection *CurrentSelections; -int NumCurrentSelections; -CallbackListPtr SelectionCallback = NULL; - -#ifdef VIEWPORT_FRAME - -extern WindowPtr nxagentViewportFrameLeft; -extern WindowPtr nxagentViewportFrameRight; -extern WindowPtr nxagentViewportFrameAbove; -extern WindowPtr nxagentViewportFrameBelow; - -#define IsViewportFrame(pWin) ((pWin) == nxagentViewportFrameLeft || \ - (pWin) == nxagentViewportFrameRight || \ - (pWin) == nxagentViewportFrameAbove || \ - (pWin) == nxagentViewportFrameBelow) - -#else - -#define IsViewportFrame(pWin) (0) - -#endif /* #ifdef VIEWPORT_FRAME */ - -extern int nxagentMaxAllowedResets; - -extern int nxagentFindClientResource(int, RESTYPE, pointer); - -static ClientPtr grabClient; -#define GrabNone 0 -#define GrabActive 1 -#define GrabKickout 2 -static int grabState = GrabNone; -static long grabWaiters[mskcnt]; -CallbackListPtr ServerGrabCallback = NULL; -HWEventQueuePtr checkForInput[2]; -extern int connBlockScreenStart; - -static void KillAllClients(void); - -static void DeleteClientFromAnySelections(ClientPtr client); - -static int nextFreeClientID; /* always MIN free client ID */ - -static int nClients; /* number of authorized clients */ - -CallbackListPtr ClientStateCallback; - -/* dispatchException & isItTimeToYield must be declared volatile since they - * are modified by signal handlers - otherwise optimizer may assume it doesn't - * need to actually check value in memory when used and may miss changes from - * signal handlers. - */ -volatile char dispatchException = 0; -volatile char isItTimeToYield; - -/* Various of the DIX function interfaces were not designed to allow - * the client->errorValue to be set on BadValue and other errors. - * Rather than changing interfaces and breaking untold code we introduce - * a new global that dispatch can use. - */ -XID clientErrorValue; /* XXX this is a kludge */ - -#define SAME_SCREENS(a, b) (\ - (a.pScreen == b.pScreen)) - -void -SetInputCheck(HWEventQueuePtr c0, HWEventQueuePtr c1) -{ - checkForInput[0] = c0; - checkForInput[1] = c1; -} - -void -UpdateCurrentTime() -{ - TimeStamp systime; - - /* To avoid time running backwards, we must call GetTimeInMillis before - * calling ProcessInputEvents. - */ - systime.months = currentTime.months; - systime.milliseconds = GetTimeInMillis(); - if (systime.milliseconds < currentTime.milliseconds) - systime.months++; - if (*checkForInput[0] != *checkForInput[1]) - ProcessInputEvents(); - if (CompareTimeStamps(systime, currentTime) == LATER) - currentTime = systime; -} - -/* Like UpdateCurrentTime, but can't call ProcessInputEvents */ -void -UpdateCurrentTimeIf() -{ - TimeStamp systime; - - systime.months = currentTime.months; - systime.milliseconds = GetTimeInMillis(); - if (systime.milliseconds < currentTime.milliseconds) - systime.months++; - if (*checkForInput[0] == *checkForInput[1]) - currentTime = systime; -} - -void -InitSelections() -{ - if (CurrentSelections) - xfree(CurrentSelections); - CurrentSelections = (Selection *)NULL; - NumCurrentSelections = 0; - -#ifdef NXAGENT_CLIPBOARD - { - Selection *newsels; - newsels = (Selection *)xalloc(2 * sizeof(Selection)); - if (!newsels) - return; - NumCurrentSelections += 2; - CurrentSelections = newsels; - - CurrentSelections[0].selection = XA_PRIMARY; - CurrentSelections[0].lastTimeChanged = ClientTimeToServerTime(0); - CurrentSelections[0].window = WindowTable[0]->drawable.id; - CurrentSelections[0].pWin = NULL; - CurrentSelections[0].client = NullClient; - - CurrentSelections[1].selection = MakeAtom("CLIPBOARD", 9, 1); - CurrentSelections[1].lastTimeChanged = ClientTimeToServerTime(0); - CurrentSelections[1].window = WindowTable[0]->drawable.id; - CurrentSelections[1].pWin = NULL; - CurrentSelections[1].client = NullClient; - } -#endif - -} - -void -FlushClientCaches(XID id) -{ - int i; - register ClientPtr client; - - client = clients[CLIENT_ID(id)]; - if (client == NullClient) - return ; - for (i=0; i<currentMaxClients; i++) - { - client = clients[i]; - if (client != NullClient) - { - if (client->lastDrawableID == id) - { - client->lastDrawableID = WindowTable[0]->drawable.id; - client->lastDrawable = (DrawablePtr)WindowTable[0]; - } - else if (client->lastGCID == id) - { - client->lastGCID = INVALID; - client->lastGC = (GCPtr)NULL; - } - } - } -} -#ifdef SMART_SCHEDULE - -#undef SMART_DEBUG - -#define SMART_SCHEDULE_DEFAULT_INTERVAL 20 /* ms */ -#define SMART_SCHEDULE_MAX_SLICE 200 /* ms */ - -Bool SmartScheduleDisable = FALSE; -long SmartScheduleSlice = SMART_SCHEDULE_DEFAULT_INTERVAL; -long SmartScheduleInterval = SMART_SCHEDULE_DEFAULT_INTERVAL; -long SmartScheduleMaxSlice = SMART_SCHEDULE_MAX_SLICE; -long SmartScheduleTime; -ClientPtr SmartLastClient; -int SmartLastIndex[SMART_MAX_PRIORITY-SMART_MIN_PRIORITY+1]; -int SmartScheduleClient(int *clientReady, int nready); - -#ifdef SMART_DEBUG -long SmartLastPrint; -#endif - -void Dispatch(void); -void InitProcVectors(void); - -int -SmartScheduleClient (int *clientReady, int nready) -{ - ClientPtr pClient; - int i; - int client; - int bestPrio, best = 0; - int bestRobin, robin; - long now = SmartScheduleTime; - long idle; - - bestPrio = -0x7fffffff; - bestRobin = 0; - idle = 2 * SmartScheduleSlice; - for (i = 0; i < nready; i++) - { - client = clientReady[i]; - pClient = clients[client]; - /* Praise clients which are idle */ - if ((now - pClient->smart_check_tick) >= idle) - { - if (pClient->smart_priority < 0) - pClient->smart_priority++; - } - pClient->smart_check_tick = now; - - /* check priority to select best client */ - robin = (pClient->index - SmartLastIndex[pClient->smart_priority-SMART_MIN_PRIORITY]) & 0xff; - if (pClient->smart_priority > bestPrio || - (pClient->smart_priority == bestPrio && robin > bestRobin)) - { - bestPrio = pClient->smart_priority; - bestRobin = robin; - best = client; - } -#ifdef SMART_DEBUG - if ((now - SmartLastPrint) >= 5000) - fprintf (stderr, " %2d: %3d", client, pClient->smart_priority); -#endif - } -#ifdef SMART_DEBUG - if ((now - SmartLastPrint) >= 5000) - { - fprintf (stderr, " use %2d\n", best); - SmartLastPrint = now; - } -#endif - pClient = clients[best]; - SmartLastIndex[bestPrio-SMART_MIN_PRIORITY] = pClient->index; - /* - * Set current client pointer - */ - if (SmartLastClient != pClient) - { - pClient->smart_start_tick = now; - SmartLastClient = pClient; - } - /* - * Adjust slice - */ - if (nready == 1) - { - /* - * If it's been a long time since another client - * has run, bump the slice up to get maximal - * performance from a single client - */ - if ((now - pClient->smart_start_tick) > 1000 && - SmartScheduleSlice < SmartScheduleMaxSlice) - { - SmartScheduleSlice += SmartScheduleInterval; - } - } - else - { - SmartScheduleSlice = SmartScheduleInterval; - } - return best; -} -#endif - -#define MAJOROP ((xReq *)client->requestBuffer)->reqType - -void -Dispatch(void) -{ - register int *clientReady; /* array of request ready clients */ - register int result; - register ClientPtr client; - register int nready; - register HWEventQueuePtr* icheck = checkForInput; -#ifdef SMART_SCHEDULE - long start_tick; -#endif - - unsigned long currentDispatch = 0; - - nextFreeClientID = 1; - InitSelections(); - nClients = 0; - - /* - * The agent initialization was successfully - * completed. We can now handle our clients. - */ - - #ifdef XKB - - nxagentInitXkbWrapper(); - - nxagentTuneXkbWrapper(); - - #endif - - #ifdef NXAGENT_ONSTART - - /* - * Set NX_WM property (used by NX client to identify - * the agent's window) three seconds since the first - * client connects. - */ - - nxagentWMtimeout = GetTimeInMillis() + 3000; - - #endif - - clientReady = (int *) ALLOCATE_LOCAL(sizeof(int) * MaxClients); - if (!clientReady) - return; - - #ifdef WATCH - - fprintf(stderr, "Dispatch: Watchpoint 12.\n"); - -/* -Reply Total Cached Bits In Bits Out Bits/Reply Ratio -------- ----- ------ ------- -------- ---------- ----- -#3 1 352 bits (0 KB) -> 236 bits (0 KB) -> 352/1 -> 236/1 = 1.492:1 -#14 1 256 bits (0 KB) -> 101 bits (0 KB) -> 256/1 -> 101/1 = 2.535:1 -#16 1 256 bits (0 KB) -> 26 bits (0 KB) -> 256/1 -> 26/1 = 9.846:1 -#20 2 2 12256 bits (1 KB) -> 56 bits (0 KB) -> 6128/1 -> 28/1 = 218.857:1 -#43 1 256 bits (0 KB) -> 45 bits (0 KB) -> 256/1 -> 45/1 = 5.689:1 -#47 2 2 42304 bits (5 KB) -> 49 bits (0 KB) -> 21152/1 -> 24/1 = 863.347:1 -#98 1 256 bits (0 KB) -> 34 bits (0 KB) -> 256/1 -> 34/1 = 7.529:1 -*/ - - sleep(30); - - #endif - - #ifdef TEST - fprintf(stderr, "Dispatch: Value of dispatchException is [%x].\n", - dispatchException); - - fprintf(stderr, "Dispatch: Value of dispatchExceptionAtReset is [%x].\n", - dispatchExceptionAtReset); - #endif - - if (!(dispatchException & DE_TERMINATE)) - dispatchException = 0; - - while (!dispatchException) - { - if (*icheck[0] != *icheck[1]) - { - ProcessInputEvents(); - FlushIfCriticalOutputPending(); - } - - /* - * Ensure we remove the splash after the timeout. - * Initializing clientReady[0] to -1 will tell - * WaitForSomething() to yield control after the - * timeout set in clientReady[1]. - */ - - clientReady[0] = 0; - - if (nxagentSplashWindow != None || (nxagentOption(Xdmcp) == 1 && nxagentXdmcpUp == 0)) - { - #ifdef TEST - fprintf(stderr, "******Dispatch: Requesting a timeout of [%d] Ms.\n", - NXAGENT_WAKEUP); - #endif - - clientReady[0] = -1; - clientReady[1] = NXAGENT_WAKEUP; - } - - if (serverGeneration > nxagentMaxAllowedResets && - nxagentSessionState == SESSION_STARTING && - (nxagentOption(Xdmcp) == 0 || nxagentXdmcpUp == 1)) - { - #ifdef NX_DEBUG_INPUT - fprintf(stderr, "Session: Session started at '%s' timestamp [%lu].\n", - GetTimeAsString(), GetTimeInMillis()); - #else - fprintf(stderr, "Session: Session started at '%s'.\n", - GetTimeAsString()); - #endif - - nxagentSessionState = SESSION_UP; - saveAgentState("RUNNING"); - } - - #ifdef BLOCKS - fprintf(stderr, "[End dispatch]\n"); - #endif - - nready = WaitForSomething(clientReady); - - #ifdef BLOCKS - fprintf(stderr, "[Begin dispatch]\n"); - #endif - - #ifdef TEST - fprintf(stderr, "******Dispatch: Running with [%d] clients ready.\n", - nready); - #endif - - #ifdef NXAGENT_ONSTART - - currentDispatch = GetTimeInMillis(); - - /* - * If the timeout is expired set the - * selection informing the NX client - * that the agent is ready. - */ - - if (!nxagentWMPassed && (nxagentWMtimeout < currentDispatch)) - { - nxagentRemoveSplashWindow(NULL); - } - - nxagentClients = nClients; - - #endif - -#ifdef SMART_SCHEDULE - if (nready && !SmartScheduleDisable) - { - clientReady[0] = SmartScheduleClient (clientReady, nready); - nready = 1; - } -#endif - /***************** - * Handle events in round robin fashion, doing input between - * each round - *****************/ - - while (!dispatchException && (--nready >= 0)) - { - client = clients[clientReady[nready]]; - if (! client) - { - /* KillClient can cause this to happen */ - continue; - } - /* GrabServer activation can cause this to be true */ - if (grabState == GrabKickout) - { - grabState = GrabActive; - break; - } - isItTimeToYield = FALSE; - - requestingClient = client; -#ifdef SMART_SCHEDULE - start_tick = SmartScheduleTime; -#endif - while (!isItTimeToYield) - { - if (*icheck[0] != *icheck[1]) - { - ProcessInputEvents(); - FlushIfCriticalOutputPending(); - } -#ifdef SMART_SCHEDULE - if (!SmartScheduleDisable && - (SmartScheduleTime - start_tick) >= SmartScheduleSlice) - { - /* Penalize clients which consume ticks */ - if (client->smart_priority > SMART_MIN_PRIORITY) - client->smart_priority--; - break; - } -#endif - /* now, finally, deal with client requests */ - - #ifdef TEST - fprintf(stderr, "******Dispatch: Reading request from client [%d].\n", - client->index); - #endif - - result = ReadRequestFromClient(client); - if (result <= 0) - { - if (result < 0) - CloseDownClient(client); - break; - } -#ifdef NXAGENT_SERVER - - #ifdef TEST - - else - { - - if (MAJOROP > 127) - { - fprintf(stderr, "******Dispatch: Read [Extension] request OPCODE#%d MINOR#%d " - "size [%d] client [%d].\n", MAJOROP, *((char *) client->requestBuffer + 1), - client->req_len << 2, client->index); - } - else - { - fprintf(stderr, "******Dispatch: Read [%s] request OPCODE#%d size [%d] client [%d].\n", - nxagentRequestLiteral[MAJOROP], MAJOROP, client->req_len << 2, - client->index); - } - } - - #endif -#endif - - client->sequence++; -#ifdef DEBUG - if ((client->requestLogIndex >= MAX_REQUEST_LOG) || (client->requestLogIndex <= 0)) - client->requestLogIndex = 0; - client->requestLog[client->requestLogIndex] = MAJOROP; - client->requestLogIndex++; -#endif - if (result > (maxBigRequestSize << 2)) - result = BadLength; - else -#ifdef NXAGENT_SERVER - { - result = (* client->requestVector[MAJOROP])(client); - - #ifdef TEST - - if (MAJOROP > 127) - { - fprintf(stderr, "******Dispatch: Handled [Extension] request OPCODE#%d MINOR#%d " - "size [%d] client [%d] result [%d].\n", MAJOROP, - *((char *) client->requestBuffer + 1), client->req_len << 2, - client->index, result); - } - else - { - fprintf(stderr, "******Dispatch: Handled [%s] request OPCODE#%d size [%d] client [%d] " - "result [%d].\n", nxagentRequestLiteral[MAJOROP], MAJOROP, - client->req_len << 2, client->index, result); - } - - #endif - - /* - * Can set isItTimeToYield to force - * the dispatcher to pay attention - * to another client. - */ - - nxagentDispatchHandler(client, client->req_len << 2, 0); - } -#else - result = (* client->requestVector[MAJOROP])(client); -#endif - - if (result != Success) - { - if (client->noClientException != Success) - CloseDownClient(client); - else - SendErrorToClient(client, MAJOROP, - MinorOpcodeOfRequest(client), - client->errorValue, result); - break; - } -#ifdef DAMAGEEXT - FlushIfCriticalOutputPending (); -#endif - } - FlushAllOutput(); -#ifdef SMART_SCHEDULE - client = clients[clientReady[nready]]; - if (client) - client->smart_stop_tick = SmartScheduleTime; -#endif - requestingClient = NULL; - } - dispatchException &= ~DE_PRIORITYCHANGE; - } -#if defined(DDXBEFORERESET) - ddxBeforeReset (); -#endif - if ((dispatchException & DE_RESET) && - (serverGeneration > nxagentMaxAllowedResets)) - { - dispatchException &= ~DE_RESET; - dispatchException |= DE_TERMINATE; - - fprintf(stderr, "Info: Reached threshold of maximum allowed resets.\n"); - } - - nxagentResetAtomMap(); - - if (serverGeneration > nxagentMaxAllowedResets) - { - /* - * The session is terminating. Force an I/O - * error on the display and wait until the - * NX transport is gone. - */ - - fprintf(stderr, "Session: Terminating session at '%s'.\n", GetTimeAsString()); - saveAgentState("TERMINATING"); - - nxagentWaitDisplay(); - - fprintf(stderr, "Session: Session terminated at '%s'.\n", GetTimeAsString()); - } - - if (nxagentOption(Shadow) == 1) - { - NXShadowDestroy(); - } - saveAgentState("TERMINATED"); - - KillAllClients(); - DEALLOCATE_LOCAL(clientReady); - dispatchException &= ~DE_RESET; -} - -#undef MAJOROP - -int -ProcBadRequest(ClientPtr client) -{ - return (BadRequest); -} - -int -ProcCreateWindow(ClientPtr client) -{ - register WindowPtr pParent, pWin; - REQUEST(xCreateWindowReq); - int result; - int len; - - REQUEST_AT_LEAST_SIZE(xCreateWindowReq); - - LEGAL_NEW_RESOURCE(stuff->wid, client); - if (!(pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client, - SecurityWriteAccess))) - return BadWindow; - len = client->req_len - (sizeof(xCreateWindowReq) >> 2); - if (Ones(stuff->mask) != len) - return BadLength; - if (!stuff->width || !stuff->height) - { - client->errorValue = 0; - return BadValue; - } - pWin = CreateWindow(stuff->wid, pParent, stuff->x, - stuff->y, stuff->width, stuff->height, - stuff->borderWidth, stuff->class, - stuff->mask, (XID *) &stuff[1], - (int)stuff->depth, - client, stuff->visual, &result); - if (pWin) - { - Mask mask = pWin->eventMask; - - pWin->eventMask = 0; /* subterfuge in case AddResource fails */ - if (!AddResource(stuff->wid, RT_WINDOW, (pointer)pWin)) - return BadAlloc; - pWin->eventMask = mask; - } - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); -} - -int -ProcChangeWindowAttributes(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xChangeWindowAttributesReq); - register int result; - int len; - - REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - len = client->req_len - (sizeof(xChangeWindowAttributesReq) >> 2); - if (len != Ones(stuff->valueMask)) - return BadLength; - result = ChangeWindowAttributes(pWin, - stuff->valueMask, - (XID *) &stuff[1], - client); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); -} - -int -ProcGetWindowAttributes(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xResourceReq); - xGetWindowAttributesReply wa; - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - GetWindowAttributes(pWin, client, &wa); - WriteReplyToClient(client, sizeof(xGetWindowAttributesReply), &wa); - return(client->noClientException); -} - -int -ProcDestroyWindow(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client, - SecurityDestroyAccess); - if (!pWin) - return(BadWindow); - if (pWin->parent) - FreeResource(stuff->id, RT_NONE); - return(client->noClientException); -} - -int -ProcDestroySubwindows(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client, - SecurityDestroyAccess); - if (!pWin) - return(BadWindow); - DestroySubwindows(pWin, client); - return(client->noClientException); -} - -int -ProcChangeSaveSet(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xChangeSaveSetReq); - register int result; - - REQUEST_SIZE_MATCH(xChangeSaveSetReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - if (client->clientAsMask == (CLIENT_BITS(pWin->drawable.id))) - return BadMatch; - if ((stuff->mode == SetModeInsert) || (stuff->mode == SetModeDelete)) - { - result = AlterSaveSetForClient(client, pWin, stuff->mode, FALSE, TRUE); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); - } - else - { - client->errorValue = stuff->mode; - return( BadValue ); - } -} - -int -ProcReparentWindow(register ClientPtr client) -{ - register WindowPtr pWin, pParent; - REQUEST(xReparentWindowReq); - register int result; - - REQUEST_SIZE_MATCH(xReparentWindowReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - - if (!nxagentWMPassed) - { - nxagentRemoveSplashWindow(pWin); - } - - pParent = (WindowPtr)SecurityLookupWindow(stuff->parent, client, - SecurityWriteAccess); - if (!pParent) - return(BadWindow); - if (SAME_SCREENS(pWin->drawable, pParent->drawable)) - { - if ((pWin->backgroundState == ParentRelative) && - (pParent->drawable.depth != pWin->drawable.depth)) - return BadMatch; - if ((pWin->drawable.class != InputOnly) && - (pParent->drawable.class == InputOnly)) - return BadMatch; - result = ReparentWindow(pWin, pParent, - (short)stuff->x, (short)stuff->y, client); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); - } - else - return (BadMatch); -} - -int -ProcMapWindow(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - MapWindow(pWin, client); - /* update cache to say it is mapped */ - return(client->noClientException); -} - -int -ProcMapSubwindows(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - MapSubwindows(pWin, client); - /* update cache to say it is mapped */ - return(client->noClientException); -} - -int -ProcUnmapWindow(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - UnmapWindow(pWin, FALSE); - /* update cache to say it is mapped */ - - return(client->noClientException); -} - -int -ProcUnmapSubwindows(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow( stuff->id, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - UnmapSubwindows(pWin); - return(client->noClientException); -} - -int -ProcConfigureWindow(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xConfigureWindowReq); - register int result; - int len; - - REQUEST_AT_LEAST_SIZE(xConfigureWindowReq); - pWin = (WindowPtr)SecurityLookupWindow( stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - len = client->req_len - (sizeof(xConfigureWindowReq) >> 2); - if (Ones((Mask)stuff->mask) != len) - return BadLength; - result = ConfigureWindow(pWin, (Mask)stuff->mask, (XID *) &stuff[1], - client); - - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); -} - -int -ProcCirculateWindow(register ClientPtr client) -{ - register WindowPtr pWin; - REQUEST(xCirculateWindowReq); - - REQUEST_SIZE_MATCH(xCirculateWindowReq); - if ((stuff->direction != RaiseLowest) && - (stuff->direction != LowerHighest)) - { - client->errorValue = stuff->direction; - return BadValue; - } - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - CirculateWindow(pWin, (int)stuff->direction, client); - return(client->noClientException); -} - -int -GetGeometry(register ClientPtr client, xGetGeometryReply *rep) -{ - register DrawablePtr pDraw; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->id, client, SecurityReadAccess); - rep->type = X_Reply; - rep->length = 0; - rep->sequenceNumber = client->sequence; - rep->root = WindowTable[pDraw->pScreen->myNum]->drawable.id; - rep->depth = pDraw->depth; - rep->width = pDraw->width; - rep->height = pDraw->height; - - /* XXX - Because the pixmap-implementation of the multibuffer extension - * may have the buffer-id's drawable resource value be a pointer - * to the buffer's window instead of the buffer itself - * (this happens if the buffer is the displayed buffer), - * we also have to check that the id matches before we can - * truly say that it is a DRAWABLE_WINDOW. - */ - - if ((pDraw->type == UNDRAWABLE_WINDOW) || - ((pDraw->type == DRAWABLE_WINDOW) && (stuff->id == pDraw->id))) - { - register WindowPtr pWin = (WindowPtr)pDraw; - rep->x = pWin->origin.x - wBorderWidth (pWin); - rep->y = pWin->origin.y - wBorderWidth (pWin); - rep->borderWidth = pWin->borderWidth; - } - else /* DRAWABLE_PIXMAP or DRAWABLE_BUFFER */ - { - rep->x = rep->y = rep->borderWidth = 0; - } - - return Success; -} - - -int -ProcGetGeometry(register ClientPtr client) -{ - xGetGeometryReply rep; - int status; - - if ((status = GetGeometry(client, &rep)) != Success) - return status; - - WriteReplyToClient(client, sizeof(xGetGeometryReply), &rep); - return(client->noClientException); -} - - -int -ProcQueryTree(register ClientPtr client) -{ - xQueryTreeReply reply; - int numChildren = 0; - register WindowPtr pChild, pWin, pHead; - Window *childIDs = (Window *)NULL; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - reply.type = X_Reply; - reply.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id; - reply.sequenceNumber = client->sequence; - if (pWin->parent) - reply.parent = pWin->parent->drawable.id; - else - reply.parent = (Window)None; - pHead = RealChildHead(pWin); - for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib) - { - if (!IsViewportFrame(pChild)) - { - numChildren++; - } - } - if (numChildren) - { - int curChild = 0; - - childIDs = (Window *) ALLOCATE_LOCAL(numChildren * sizeof(Window)); - if (!childIDs) - return BadAlloc; - for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib) - { - if (!IsViewportFrame(pChild)) - { - childIDs[curChild++] = pChild->drawable.id; - } - } - } - - reply.nChildren = numChildren; - reply.length = (numChildren * sizeof(Window)) >> 2; - - WriteReplyToClient(client, sizeof(xQueryTreeReply), &reply); - if (numChildren) - { - client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; - WriteSwappedDataToClient(client, numChildren * sizeof(Window), childIDs); - DEALLOCATE_LOCAL(childIDs); - } - - return(client->noClientException); -} - -int -ProcInternAtom(register ClientPtr client) -{ - Atom atom; - char *tchar; - REQUEST(xInternAtomReq); - - REQUEST_FIXED_SIZE(xInternAtomReq, stuff->nbytes); - if ((stuff->onlyIfExists != xTrue) && (stuff->onlyIfExists != xFalse)) - { - client->errorValue = stuff->onlyIfExists; - return(BadValue); - } - tchar = (char *) &stuff[1]; - atom = MakeAtom(tchar, stuff->nbytes, !stuff->onlyIfExists); - if (atom != BAD_RESOURCE) - { - xInternAtomReply reply; - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; - reply.atom = atom; - WriteReplyToClient(client, sizeof(xInternAtomReply), &reply); - return(client->noClientException); - } - else - return (BadAlloc); -} - -int -ProcGetAtomName(register ClientPtr client) -{ - char *str; - xGetAtomNameReply reply; - int len; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - if ( (str = NameForAtom(stuff->id)) ) - { - len = strlen(str); - reply.type = X_Reply; - reply.length = (len + 3) >> 2; - reply.sequenceNumber = client->sequence; - reply.nameLength = len; - WriteReplyToClient(client, sizeof(xGetAtomNameReply), &reply); - (void)WriteToClient(client, len, str); - return(client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadAtom); - } -} - -#ifdef K5AUTH -extern int k5_bad(); -#endif - -int -ProcSetSelectionOwner(register ClientPtr client) -{ - WindowPtr pWin; - TimeStamp time; - REQUEST(xSetSelectionOwnerReq); - - REQUEST_SIZE_MATCH(xSetSelectionOwnerReq); - UpdateCurrentTime(); - time = ClientTimeToServerTime(stuff->time); - - /* If the client's time stamp is in the future relative to the server's - time stamp, do not set the selection, just return success. */ - if (CompareTimeStamps(time, currentTime) == LATER) - return Success; - if (stuff->window != None) - { - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - } - else - pWin = (WindowPtr)None; - if (ValidAtom(stuff->selection)) - { - int i = 0; - - /* - * First, see if the selection is already set... - */ - while ((i < NumCurrentSelections) && - CurrentSelections[i].selection != stuff->selection) - i++; - if (i < NumCurrentSelections) - { - xEvent event; - - /* If the timestamp in client's request is in the past relative - to the time stamp indicating the last time the owner of the - selection was set, do not set the selection, just return - success. */ - if (CompareTimeStamps(time, CurrentSelections[i].lastTimeChanged) - == EARLIER) - return Success; - if (CurrentSelections[i].client && - (!pWin || (CurrentSelections[i].client != client))) - { - event.u.u.type = SelectionClear; - event.u.selectionClear.time = time.milliseconds; - event.u.selectionClear.window = CurrentSelections[i].window; - event.u.selectionClear.atom = CurrentSelections[i].selection; - (void) TryClientEvents (CurrentSelections[i].client, &event, 1, - NoEventMask, NoEventMask /* CantBeFiltered */, - NullGrab); - } - } - else - { - /* - * It doesn't exist, so add it... - */ - Selection *newsels; - - if (i == 0) - newsels = (Selection *)xalloc(sizeof(Selection)); - else - newsels = (Selection *)xrealloc(CurrentSelections, - (NumCurrentSelections + 1) * sizeof(Selection)); - if (!newsels) - return BadAlloc; - NumCurrentSelections++; - CurrentSelections = newsels; - CurrentSelections[i].selection = stuff->selection; - } - CurrentSelections[i].lastTimeChanged = time; - CurrentSelections[i].window = stuff->window; - CurrentSelections[i].pWin = pWin; - CurrentSelections[i].client = (pWin ? client : NullClient); - if (SelectionCallback) - { - SelectionInfoRec info; - - info.selection = &CurrentSelections[i]; - info.kind= SelectionSetOwner; - CallCallbacks(&SelectionCallback, &info); - } - -#ifdef NXAGENT_CLIPBOARD - if ((CurrentSelections[i].pWin != NULL) && - (nxagentOption(Clipboard) != ClipboardNone) && - ((CurrentSelections[i].selection == XA_PRIMARY) || - (CurrentSelections[i].selection == MakeAtom("CLIPBOARD", 9, 0)))) - { - nxagentSetSelectionOwner(&CurrentSelections[i]); - } -#endif - return (client->noClientException); - } - else - { - client->errorValue = stuff->selection; - return (BadAtom); - } -} - -int -ProcGetSelectionOwner(register ClientPtr client) -{ - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - if (ValidAtom(stuff->id)) - { - int i; - xGetSelectionOwnerReply reply; - - i = 0; - while ((i < NumCurrentSelections) && - CurrentSelections[i].selection != stuff->id) i++; - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; - if (i < NumCurrentSelections) - reply.owner = CurrentSelections[i].window; - else - reply.owner = None; - WriteReplyToClient(client, sizeof(xGetSelectionOwnerReply), &reply); - return(client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadAtom); - } -} - -int -ProcConvertSelection(register ClientPtr client) -{ - Bool paramsOkay; - xEvent event; - WindowPtr pWin; - REQUEST(xConvertSelectionReq); - - REQUEST_SIZE_MATCH(xConvertSelectionReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->requestor, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - -#ifdef NXAGENT_CLIPBOARD - if (((stuff->selection == XA_PRIMARY) || - (stuff->selection == MakeAtom("CLIPBOARD", 9, 0))) && - nxagentOption(Clipboard) != ClipboardNone) - { - int i = 0; - - while ((i < NumCurrentSelections) && - CurrentSelections[i].selection != stuff->selection) i++; - - if ((i < NumCurrentSelections) && (CurrentSelections[i].window != None)) - { - if (nxagentConvertSelection(client, pWin, stuff->selection, stuff->requestor, - stuff->property, stuff->target, stuff->time)) - { - return (client->noClientException); - } - } - } -#endif - - paramsOkay = (ValidAtom(stuff->selection) && ValidAtom(stuff->target)); - if (stuff->property != None) - paramsOkay &= ValidAtom(stuff->property); - if (paramsOkay) - { - int i; - - i = 0; - while ((i < NumCurrentSelections) && - CurrentSelections[i].selection != stuff->selection) i++; - if ((i < NumCurrentSelections) && - (CurrentSelections[i].window != None) && (CurrentSelections[i].client != NullClient) -#ifdef XCSECURITY - && (!client->CheckAccess || - (* client->CheckAccess)(client, CurrentSelections[i].window, - RT_WINDOW, SecurityReadAccess, - CurrentSelections[i].pWin)) -#endif - ) - { - event.u.u.type = SelectionRequest; - event.u.selectionRequest.time = stuff->time; - event.u.selectionRequest.owner = - CurrentSelections[i].window; - event.u.selectionRequest.requestor = stuff->requestor; - event.u.selectionRequest.selection = stuff->selection; - event.u.selectionRequest.target = stuff->target; - event.u.selectionRequest.property = stuff->property; - if (TryClientEvents( - CurrentSelections[i].client, &event, 1, NoEventMask, - NoEventMask /* CantBeFiltered */, NullGrab)) - return (client->noClientException); - } - event.u.u.type = SelectionNotify; - event.u.selectionNotify.time = stuff->time; - event.u.selectionNotify.requestor = stuff->requestor; - event.u.selectionNotify.selection = stuff->selection; - event.u.selectionNotify.target = stuff->target; - event.u.selectionNotify.property = None; - (void) TryClientEvents(client, &event, 1, NoEventMask, - NoEventMask /* CantBeFiltered */, NullGrab); - return (client->noClientException); - } - else - { - client->errorValue = stuff->property; - return (BadAtom); - } -} - -int -ProcGrabServer(register ClientPtr client) -{ - REQUEST_SIZE_MATCH(xReq); - if (grabState != GrabNone && client != grabClient) - { - ResetCurrentRequest(client); - client->sequence--; - BITSET(grabWaiters, client->index); - IgnoreClient(client); - return(client->noClientException); - } - OnlyListenToOneClient(client); - grabState = GrabKickout; - grabClient = client; - - if (ServerGrabCallback) - { - ServerGrabInfoRec grabinfo; - grabinfo.client = client; - grabinfo.grabstate = SERVER_GRABBED; - CallCallbacks(&ServerGrabCallback, (pointer)&grabinfo); - } - - return(client->noClientException); -} - -static void -UngrabServer(ClientPtr client) -{ - int i; - - grabState = GrabNone; - ListenToAllClients(); - for (i = mskcnt; --i >= 0 && !grabWaiters[i]; ) - ; - if (i >= 0) - { - i <<= 5; - while (!GETBIT(grabWaiters, i)) - i++; - BITCLEAR(grabWaiters, i); - AttendClient(clients[i]); - } - - if (ServerGrabCallback) - { - ServerGrabInfoRec grabinfo; - grabinfo.client = client; - grabinfo.grabstate = SERVER_UNGRABBED; - CallCallbacks(&ServerGrabCallback, (pointer)&grabinfo); - } -} - -int -ProcUngrabServer(register ClientPtr client) -{ - REQUEST_SIZE_MATCH(xReq); - UngrabServer(client); - return(client->noClientException); -} - -int -ProcTranslateCoords(register ClientPtr client) -{ - REQUEST(xTranslateCoordsReq); - - register WindowPtr pWin, pDst; - xTranslateCoordsReply rep; - - REQUEST_SIZE_MATCH(xTranslateCoordsReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->srcWid, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - pDst = (WindowPtr)SecurityLookupWindow(stuff->dstWid, client, - SecurityReadAccess); - if (!pDst) - return(BadWindow); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - if (!SAME_SCREENS(pWin->drawable, pDst->drawable)) - { - rep.sameScreen = xFalse; - rep.child = None; - rep.dstX = rep.dstY = 0; - } - else - { - INT16 x, y; - rep.sameScreen = xTrue; - rep.child = None; - /* computing absolute coordinates -- adjust to destination later */ - x = pWin->drawable.x + stuff->srcX; - y = pWin->drawable.y + stuff->srcY; - pWin = pDst->firstChild; - while (pWin) - { -#ifdef SHAPE - BoxRec box; -#endif - if ((pWin->mapped) && - (x >= pWin->drawable.x - wBorderWidth (pWin)) && - (x < pWin->drawable.x + (int)pWin->drawable.width + - wBorderWidth (pWin)) && - (y >= pWin->drawable.y - wBorderWidth (pWin)) && - (y < pWin->drawable.y + (int)pWin->drawable.height + - wBorderWidth (pWin)) -#ifdef SHAPE - /* When a window is shaped, a further check - * is made to see if the point is inside - * borderSize - */ - && (!wBoundingShape(pWin) || - POINT_IN_REGION(pWin->drawable.pScreen, - &pWin->borderSize, x, y, &box)) - - && (!wInputShape(pWin) || - POINT_IN_REGION(pWin->drawable.pScreen, - wInputShape(pWin), - x - pWin->drawable.x, - y - pWin->drawable.y, &box)) -#endif - ) - { - rep.child = pWin->drawable.id; - pWin = (WindowPtr) NULL; - } - else - pWin = pWin->nextSib; - } - /* adjust to destination coordinates */ - rep.dstX = x - pDst->drawable.x; - rep.dstY = y - pDst->drawable.y; - } - WriteReplyToClient(client, sizeof(xTranslateCoordsReply), &rep); - return(client->noClientException); -} - -int -ProcOpenFont(register ClientPtr client) -{ - int err; - char fontReq[256]; - REQUEST(xOpenFontReq); - - REQUEST_FIXED_SIZE(xOpenFontReq, stuff->nbytes); - client->errorValue = stuff->fid; - LEGAL_NEW_RESOURCE(stuff->fid, client); - - memcpy(fontReq,(char *)&stuff[1],(stuff->nbytes<256)?stuff->nbytes:255); - fontReq[stuff->nbytes]=0; - if (strchr(fontReq,'*') || strchr(fontReq,'?')) - { - extern int nxOpenFont(ClientPtr, XID, Mask, unsigned, char*); -#ifdef NXAGENT_FONTMATCH_DEBUG - fprintf(stderr, "Dispatch: ProcOpenFont try to find a common font with font pattern=%s\n",fontReq); -#endif - nxagentListRemoteFonts(fontReq, nxagentMaxFontNames); - err = nxOpenFont(client, stuff->fid, (Mask) 0, - stuff->nbytes, (char *)&stuff[1]); - } - else - err = OpenFont(client, stuff->fid, (Mask) 0, - stuff->nbytes, (char *)&stuff[1]); - if (err == Success) - { - return(client->noClientException); - } - else - return err; -} - -int -ProcCloseFont(register ClientPtr client) -{ - FontPtr pFont; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, - SecurityDestroyAccess); - if (pFont != (FontPtr)NULL) - { - #ifdef NXAGENT_SERVER - - /* - * When a client closes a font the resource - * should not be lost if the reference counter - * is not 0, otherwise the server will not be - * able to find this font looping through the - * resources. - */ - - if (pFont -> refcnt > 0) - { - if (nxagentFindClientResource(serverClient -> index, RT_NX_FONT, pFont) == 0) - { - #ifdef TEST - fprintf(stderr, "ProcCloseFont: Switching resource for font at [%p].\n", - (void *) pFont); - #endif - - nxagentFontPriv(pFont) -> mirrorID = FakeClientID(serverClient -> index); - - AddResource(nxagentFontPriv(pFont) -> mirrorID, RT_NX_FONT, pFont); - - } - #ifdef TEST - else - { - fprintf(stderr, "ProcCloseFont: Found duplicated font at [%p], " - "resource switching skipped.\n", (void *) pFont); - } - #endif - } - - #endif - - FreeResource(stuff->id, RT_NONE); - return(client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadFont); - } -} - -int -ProcQueryFont(register ClientPtr client) -{ - xQueryFontReply *reply; - FontPtr pFont; - register GC *pGC; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - client->errorValue = stuff->id; /* EITHER font or gc */ - - pFont = NULL; - pFont = (FontPtr)SecurityLookupIDByType(client, stuff->id, RT_FONT, - SecurityReadAccess); - if (!pFont) - { - /* can't use VERIFY_GC because it might return BadGC */ - pGC = (GC *) SecurityLookupIDByType(client, stuff->id, RT_GC, - SecurityReadAccess); - if (!pGC) - { - client->errorValue = stuff->id; - return(BadFont); /* procotol spec says only error is BadFont */ - } - pFont = pGC->font; - } - -/* test -{ - Atom name_atom, value_atom; - int nprops; - FontPropPtr props; - int i; - char *name; - - name_atom = MakeAtom("FONT", 4, True); - value_atom = 0L; - - nprops = pFont->info.nprops; - props = pFont->info.props; - - for (i = 0; i < nprops; i++) - if (props[i].name == name_atom) { - value_atom = props[i].value; - break; - } - - if (!value_atom) return (BadFont); - - name = (char *)NameForAtom(value_atom); - fprintf(stderr, "QueryFont: font name [%s]\n",name); -} - end test */ - - { - xCharInfo *pmax = FONTINKMAX(pFont); - xCharInfo *pmin = FONTINKMIN(pFont); - int nprotoxcistructs; - int rlength; - - nprotoxcistructs = ( - pmax->rightSideBearing == pmin->rightSideBearing && - pmax->leftSideBearing == pmin->leftSideBearing && - pmax->descent == pmin->descent && - pmax->ascent == pmin->ascent && - pmax->characterWidth == pmin->characterWidth) ? - 0 : N2dChars(pFont); - - rlength = sizeof(xQueryFontReply) + - FONTINFONPROPS(FONTCHARSET(pFont)) * sizeof(xFontProp) + - nprotoxcistructs * sizeof(xCharInfo); - reply = NULL; - reply = (xQueryFontReply *)ALLOCATE_LOCAL(rlength); - if(!reply) - { - return(BadAlloc); - } - - reply->type = X_Reply; - reply->length = (rlength - sizeof(xGenericReply)) >> 2; - reply->sequenceNumber = client->sequence; - QueryFont( pFont, reply, nprotoxcistructs); - - WriteReplyToClient(client, rlength, reply); - DEALLOCATE_LOCAL(reply); - return(client->noClientException); - } -} - -int -ProcQueryTextExtents(register ClientPtr client) -{ - REQUEST(xQueryTextExtentsReq); - xQueryTextExtentsReply reply; - FontPtr pFont; - GC *pGC; - ExtentInfoRec info; - unsigned long length; - - REQUEST_AT_LEAST_SIZE(xQueryTextExtentsReq); - - pFont = (FontPtr)SecurityLookupIDByType(client, stuff->fid, RT_FONT, - SecurityReadAccess); - if (!pFont) - { - pGC = (GC *)SecurityLookupIDByType(client, stuff->fid, RT_GC, - SecurityReadAccess); - if (!pGC) - { - client->errorValue = stuff->fid; - return(BadFont); - } - pFont = pGC->font; - } - length = client->req_len - (sizeof(xQueryTextExtentsReq) >> 2); - length = length << 1; - if (stuff->oddLength) - { - if (length == 0) - return(BadLength); - length--; - } - if (!QueryTextExtents(pFont, length, (unsigned char *)&stuff[1], &info)) - return(BadAlloc); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; - reply.drawDirection = info.drawDirection; - reply.fontAscent = info.fontAscent; - reply.fontDescent = info.fontDescent; - reply.overallAscent = info.overallAscent; - reply.overallDescent = info.overallDescent; - reply.overallWidth = info.overallWidth; - reply.overallLeft = info.overallLeft; - reply.overallRight = info.overallRight; - WriteReplyToClient(client, sizeof(xQueryTextExtentsReply), &reply); - return(client->noClientException); -} - -int -ProcListFonts(register ClientPtr client) -{ - char tmp[256]; - - REQUEST(xListFontsReq); - - REQUEST_FIXED_SIZE(xListFontsReq, stuff->nbytes); - memcpy(tmp,(unsigned char *) &stuff[1],(stuff->nbytes<256)?stuff->nbytes:255); - tmp[stuff->nbytes]=0; - -#ifdef NXAGENT_FONTMATCH_DEBUG - fprintf(stderr, "Dispatch: ListFont request with pattern %s max_names=%d\n",tmp,stuff->maxNames); -#endif - nxagentListRemoteFonts(tmp, stuff -> maxNames < nxagentMaxFontNames ? nxagentMaxFontNames : stuff->maxNames); - return ListFonts(client, (unsigned char *) &stuff[1], stuff->nbytes, - stuff->maxNames); -} - -int -ProcListFontsWithInfo(register ClientPtr client) -{ - char tmp[256]; - REQUEST(xListFontsWithInfoReq); - - REQUEST_FIXED_SIZE(xListFontsWithInfoReq, stuff->nbytes); - - memcpy(tmp,(unsigned char *) &stuff[1],(stuff->nbytes<256)?stuff->nbytes:255); - tmp[stuff->nbytes]=0; -#ifdef NXAGENT_FONTMATCH_DEBUG - fprintf(stderr, "Dispatch: ListFont with info request with pattern %s max_names=%d\n",tmp,stuff->maxNames); -#endif - nxagentListRemoteFonts(tmp, stuff -> maxNames < nxagentMaxFontNames ? nxagentMaxFontNames :stuff->maxNames); - - return StartListFontsWithInfo(client, stuff->nbytes, - (unsigned char *) &stuff[1], stuff->maxNames); -} - -/** - * - * \param value must conform to DeleteType - */ -int -dixDestroyPixmap(pointer value, XID pid) -{ - PixmapPtr pPixmap = (PixmapPtr)value; - return (*pPixmap->drawable.pScreen->DestroyPixmap)(pPixmap); -} - -int -ProcCreatePixmap(register ClientPtr client) -{ - PixmapPtr pMap; - register DrawablePtr pDraw; - REQUEST(xCreatePixmapReq); - DepthPtr pDepth; - register int i; - - REQUEST_SIZE_MATCH(xCreatePixmapReq); - client->errorValue = stuff->pid; - LEGAL_NEW_RESOURCE(stuff->pid, client); - SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->drawable, client, - SecurityReadAccess); - if (!stuff->width || !stuff->height) - { - client->errorValue = 0; - return BadValue; - } - if (stuff->width > 32767 || stuff->height > 32767) - { - /* It is allowed to try and allocate a pixmap which is larger than - * 32767 in either dimension. However, all of the framebuffer code - * is buggy and does not reliably draw to such big pixmaps, basically - * because the Region data structure operates with signed shorts - * for the rectangles in it. - * - * Furthermore, several places in the X server computes the - * size in bytes of the pixmap and tries to store it in an - * integer. This integer can overflow and cause the allocated size - * to be much smaller. - * - * So, such big pixmaps are rejected here with a BadAlloc - */ - return BadAlloc; - } - if (stuff->depth != 1) - { - pDepth = pDraw->pScreen->allowedDepths; - for (i=0; i<pDraw->pScreen->numDepths; i++, pDepth++) - if (pDepth->depth == stuff->depth) - goto CreatePmap; - client->errorValue = stuff->depth; - return BadValue; - } -CreatePmap: - pMap = (PixmapPtr)(*pDraw->pScreen->CreatePixmap) - (pDraw->pScreen, stuff->width, - stuff->height, stuff->depth); - if (pMap) - { - pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER; - pMap->drawable.id = stuff->pid; - if (AddResource(stuff->pid, RT_PIXMAP, (pointer)pMap)) - return(client->noClientException); - } - return (BadAlloc); -} - -int -ProcFreePixmap(register ClientPtr client) -{ - PixmapPtr pMap; - - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pMap = (PixmapPtr)SecurityLookupIDByType(client, stuff->id, RT_PIXMAP, - SecurityDestroyAccess); - if (pMap) - { - #ifdef NXAGENT_SERVER - - /* - * When a client releases a pixmap the resource - * should not be lost if the reference counter - * is not 0, otherwise the server will not be - * able to find this pixmap looping through the - * resources. - */ - - if (pMap -> refcnt > 0) - { - if (nxagentFindClientResource(serverClient -> index, RT_NX_PIXMAP, pMap) == 0) - { - #ifdef TEST - fprintf(stderr, "ProcFreePixmap: Switching resource for pixmap at [%p].\n", - (void *) pMap); - #endif - - nxagentPixmapPriv(pMap) -> mid = FakeClientID(serverClient -> index); - - AddResource(nxagentPixmapPriv(pMap) -> mid, RT_NX_PIXMAP, pMap); - } - #ifdef TEST - else - { - fprintf(stderr, "ProcFreePixmap: Found duplicated pixmap at [%p], " - "resource switching skipped.\n", (void *) pMap); - } - #endif - } - - #endif - - FreeResource(stuff->id, RT_NONE); - return(client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadPixmap); - } -} - -int -ProcCreateGC(register ClientPtr client) -{ - int error; - GC *pGC; - register DrawablePtr pDraw; - unsigned len; - REQUEST(xCreateGCReq); - - REQUEST_AT_LEAST_SIZE(xCreateGCReq); - client->errorValue = stuff->gc; - LEGAL_NEW_RESOURCE(stuff->gc, client); - SECURITY_VERIFY_DRAWABLE (pDraw, stuff->drawable, client, - SecurityReadAccess); - len = client->req_len - (sizeof(xCreateGCReq) >> 2); - if (len != Ones(stuff->mask)) - return BadLength; - pGC = (GC *)CreateGC(pDraw, stuff->mask, - (XID *) &stuff[1], &error); - if (error != Success) - return error; - if (!AddResource(stuff->gc, RT_GC, (pointer)pGC)) - return (BadAlloc); - return(client->noClientException); -} - -int -ProcChangeGC(register ClientPtr client) -{ - GC *pGC; - REQUEST(xChangeGCReq); - int result; - unsigned len; - - REQUEST_AT_LEAST_SIZE(xChangeGCReq); - SECURITY_VERIFY_GC(pGC, stuff->gc, client, SecurityWriteAccess); - len = client->req_len - (sizeof(xChangeGCReq) >> 2); - if (len != Ones(stuff->mask)) - return BadLength; - - result = dixChangeGC(client, pGC, stuff->mask, (CARD32 *) &stuff[1], 0); - if (client->noClientException != Success) - return(client->noClientException); - else - { - client->errorValue = clientErrorValue; - return(result); - } -} - -int -ProcCopyGC(register ClientPtr client) -{ - register GC *dstGC; - register GC *pGC; - int result; - REQUEST(xCopyGCReq); - - REQUEST_SIZE_MATCH(xCopyGCReq); - SECURITY_VERIFY_GC( pGC, stuff->srcGC, client, SecurityReadAccess); - SECURITY_VERIFY_GC( dstGC, stuff->dstGC, client, SecurityWriteAccess); - if ((dstGC->pScreen != pGC->pScreen) || (dstGC->depth != pGC->depth)) - return (BadMatch); - result = CopyGC(pGC, dstGC, stuff->mask); - if (client->noClientException != Success) - return(client->noClientException); - else - { - client->errorValue = clientErrorValue; - return(result); - } -} - -int -ProcSetDashes(register ClientPtr client) -{ - register GC *pGC; - int result; - REQUEST(xSetDashesReq); - - REQUEST_FIXED_SIZE(xSetDashesReq, stuff->nDashes); - if (stuff->nDashes == 0) - { - client->errorValue = 0; - return BadValue; - } - - SECURITY_VERIFY_GC(pGC,stuff->gc, client, SecurityWriteAccess); - - result = SetDashes(pGC, stuff->dashOffset, stuff->nDashes, - (unsigned char *)&stuff[1]); - if (client->noClientException != Success) - return(client->noClientException); - else - { - client->errorValue = clientErrorValue; - return(result); - } -} - -int -ProcSetClipRectangles(register ClientPtr client) -{ - int nr; - int result; - register GC *pGC; - REQUEST(xSetClipRectanglesReq); - - REQUEST_AT_LEAST_SIZE(xSetClipRectanglesReq); - if ((stuff->ordering != Unsorted) && (stuff->ordering != YSorted) && - (stuff->ordering != YXSorted) && (stuff->ordering != YXBanded)) - { - client->errorValue = stuff->ordering; - return BadValue; - } - SECURITY_VERIFY_GC(pGC,stuff->gc, client, SecurityWriteAccess); - - nr = (client->req_len << 2) - sizeof(xSetClipRectanglesReq); - if (nr & 4) - return(BadLength); - nr >>= 3; - result = SetClipRects(pGC, stuff->xOrigin, stuff->yOrigin, - nr, (xRectangle *)&stuff[1], (int)stuff->ordering); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); -} - -int -ProcFreeGC(register ClientPtr client) -{ - register GC *pGC; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - SECURITY_VERIFY_GC(pGC, stuff->id, client, SecurityDestroyAccess); - FreeResource(stuff->id, RT_NONE); - return(client->noClientException); -} - -int -ProcClearToBackground(register ClientPtr client) -{ - REQUEST(xClearAreaReq); - register WindowPtr pWin; - - REQUEST_SIZE_MATCH(xClearAreaReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - if (pWin->drawable.class == InputOnly) - { - client->errorValue = stuff->window; - return (BadMatch); - } - if ((stuff->exposures != xTrue) && (stuff->exposures != xFalse)) - { - client->errorValue = stuff->exposures; - return(BadValue); - } - (*pWin->drawable.pScreen->ClearToBackground)(pWin, stuff->x, stuff->y, - stuff->width, stuff->height, - (Bool)stuff->exposures); - return(client->noClientException); -} - -int -ProcCopyArea(register ClientPtr client) -{ - register DrawablePtr pDst; - register DrawablePtr pSrc; - register GC *pGC; - REQUEST(xCopyAreaReq); - RegionPtr pRgn; - - REQUEST_SIZE_MATCH(xCopyAreaReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, pGC, client); - if (stuff->dstDrawable != stuff->srcDrawable) - { - SECURITY_VERIFY_DRAWABLE(pSrc, stuff->srcDrawable, client, - SecurityReadAccess); - if ((pDst->pScreen != pSrc->pScreen) || (pDst->depth != pSrc->depth)) - { - client->errorValue = stuff->dstDrawable; - return (BadMatch); - } - } - else - pSrc = pDst; - - SET_DBE_SRCBUF(pSrc, stuff->srcDrawable); - - pRgn = (*pGC->ops->CopyArea)(pSrc, pDst, pGC, stuff->srcX, stuff->srcY, - stuff->width, stuff->height, - stuff->dstX, stuff->dstY); - if (pGC->graphicsExposures) - { - (*pDst->pScreen->SendGraphicsExpose) - (client, pRgn, stuff->dstDrawable, X_CopyArea, 0); - if (pRgn) - REGION_DESTROY(pDst->pScreen, pRgn); - } - - return(client->noClientException); -} - -int -ProcCopyPlane(register ClientPtr client) -{ - register DrawablePtr psrcDraw, pdstDraw; - register GC *pGC; - REQUEST(xCopyPlaneReq); - RegionPtr pRgn; - - REQUEST_SIZE_MATCH(xCopyPlaneReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, pGC, client); - if (stuff->dstDrawable != stuff->srcDrawable) - { - SECURITY_VERIFY_DRAWABLE(psrcDraw, stuff->srcDrawable, client, - SecurityReadAccess); - if (pdstDraw->pScreen != psrcDraw->pScreen) - { - client->errorValue = stuff->dstDrawable; - return (BadMatch); - } - } - else - psrcDraw = pdstDraw; - - SET_DBE_SRCBUF(psrcDraw, stuff->srcDrawable); - - /* Check to see if stuff->bitPlane has exactly ONE good bit set */ - if(stuff->bitPlane == 0 || (stuff->bitPlane & (stuff->bitPlane - 1)) || - (stuff->bitPlane > (1L << (psrcDraw->depth - 1)))) - { - client->errorValue = stuff->bitPlane; - return(BadValue); - } - - pRgn = (*pGC->ops->CopyPlane)(psrcDraw, pdstDraw, pGC, stuff->srcX, stuff->srcY, - stuff->width, stuff->height, - stuff->dstX, stuff->dstY, stuff->bitPlane); - if (pGC->graphicsExposures) - { - (*pdstDraw->pScreen->SendGraphicsExpose) - (client, pRgn, stuff->dstDrawable, X_CopyPlane, 0); - if (pRgn) - REGION_DESTROY(pdstDraw->pScreen, pRgn); - } - return(client->noClientException); -} - -int -ProcPolyPoint(register ClientPtr client) -{ - int npoint; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xPolyPointReq); - - REQUEST_AT_LEAST_SIZE(xPolyPointReq); - if ((stuff->coordMode != CoordModeOrigin) && - (stuff->coordMode != CoordModePrevious)) - { - client->errorValue = stuff->coordMode; - return BadValue; - } - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - npoint = ((client->req_len << 2) - sizeof(xPolyPointReq)) >> 2; - if (npoint) - { - (*pGC->ops->PolyPoint)(pDraw, pGC, stuff->coordMode, npoint, - (xPoint *) &stuff[1]); - } - return (client->noClientException); -} - -int -ProcPolyLine(register ClientPtr client) -{ - int npoint; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xPolyLineReq); - - REQUEST_AT_LEAST_SIZE(xPolyLineReq); - if ((stuff->coordMode != CoordModeOrigin) && - (stuff->coordMode != CoordModePrevious)) - { - client->errorValue = stuff->coordMode; - return BadValue; - } - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - npoint = ((client->req_len << 2) - sizeof(xPolyLineReq)) >> 2; - if (npoint > 1) - { - (*pGC->ops->Polylines)(pDraw, pGC, stuff->coordMode, npoint, - (DDXPointPtr) &stuff[1]); - } - return(client->noClientException); -} - -int -ProcPolySegment(register ClientPtr client) -{ - int nsegs; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xPolySegmentReq); - - REQUEST_AT_LEAST_SIZE(xPolySegmentReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - nsegs = (client->req_len << 2) - sizeof(xPolySegmentReq); - if (nsegs & 4) - return(BadLength); - nsegs >>= 3; - if (nsegs) - { - (*pGC->ops->PolySegment)(pDraw, pGC, nsegs, (xSegment *) &stuff[1]); - } - return (client->noClientException); -} - -int -ProcPolyRectangle (register ClientPtr client) -{ - int nrects; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xPolyRectangleReq); - - REQUEST_AT_LEAST_SIZE(xPolyRectangleReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - nrects = (client->req_len << 2) - sizeof(xPolyRectangleReq); - if (nrects & 4) - return(BadLength); - nrects >>= 3; - if (nrects) - { - (*pGC->ops->PolyRectangle)(pDraw, pGC, - nrects, (xRectangle *) &stuff[1]); - } - return(client->noClientException); -} - -int -ProcPolyArc(register ClientPtr client) -{ - int narcs; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xPolyArcReq); - - REQUEST_AT_LEAST_SIZE(xPolyArcReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - narcs = (client->req_len << 2) - sizeof(xPolyArcReq); - if (narcs % sizeof(xArc)) - return(BadLength); - narcs /= sizeof(xArc); - if (narcs) - { - (*pGC->ops->PolyArc)(pDraw, pGC, narcs, (xArc *) &stuff[1]); - } - return (client->noClientException); -} - -int -ProcFillPoly(register ClientPtr client) -{ - int things; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xFillPolyReq); - - REQUEST_AT_LEAST_SIZE(xFillPolyReq); - if ((stuff->shape != Complex) && (stuff->shape != Nonconvex) && - (stuff->shape != Convex)) - { - client->errorValue = stuff->shape; - return BadValue; - } - if ((stuff->coordMode != CoordModeOrigin) && - (stuff->coordMode != CoordModePrevious)) - { - client->errorValue = stuff->coordMode; - return BadValue; - } - - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - things = ((client->req_len << 2) - sizeof(xFillPolyReq)) >> 2; - if (things) - { - (*pGC->ops->FillPolygon) (pDraw, pGC, stuff->shape, - stuff->coordMode, things, - (DDXPointPtr) &stuff[1]); - } - return(client->noClientException); -} - -int -ProcPolyFillRectangle(register ClientPtr client) -{ - int things; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xPolyFillRectangleReq); - - REQUEST_AT_LEAST_SIZE(xPolyFillRectangleReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - things = (client->req_len << 2) - sizeof(xPolyFillRectangleReq); - if (things & 4) - return(BadLength); - things >>= 3; - - if (things) - { - (*pGC->ops->PolyFillRect) (pDraw, pGC, things, - (xRectangle *) &stuff[1]); - } - return (client->noClientException); -} - -int -ProcPolyFillArc(register ClientPtr client) -{ - int narcs; - register GC *pGC; - register DrawablePtr pDraw; - REQUEST(xPolyFillArcReq); - - REQUEST_AT_LEAST_SIZE(xPolyFillArcReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - narcs = (client->req_len << 2) - sizeof(xPolyFillArcReq); - if (narcs % sizeof(xArc)) - return(BadLength); - narcs /= sizeof(xArc); - if (narcs) - { - (*pGC->ops->PolyFillArc) (pDraw, pGC, narcs, (xArc *) &stuff[1]); - } - return (client->noClientException); -} - -#ifdef MATCH_CLIENT_ENDIAN - -int -ServerOrder (void) -{ - int whichbyte = 1; - - if (*((char *) &whichbyte)) - return LSBFirst; - return MSBFirst; -} - -#define ClientOrder(client) ((client)->swapped ? !ServerOrder() : ServerOrder()) - -void -ReformatImage (char *base, int nbytes, int bpp, int order) -{ - switch (bpp) { - case 1: /* yuck */ - if (BITMAP_BIT_ORDER != order) - BitOrderInvert ((unsigned char *) base, nbytes); -#if IMAGE_BYTE_ORDER != BITMAP_BIT_ORDER && BITMAP_SCANLINE_UNIT != 8 - ReformatImage (base, nbytes, BITMAP_SCANLINE_UNIT, order); -#endif - break; - case 4: - break; /* yuck */ - case 8: - break; - case 16: - if (IMAGE_BYTE_ORDER != order) - TwoByteSwap ((unsigned char *) base, nbytes); - break; - case 32: - if (IMAGE_BYTE_ORDER != order) - FourByteSwap ((unsigned char *) base, nbytes); - break; - } -} -#else -#define ReformatImage(b,n,bpp,o) -#endif - -/* 64-bit server notes: the protocol restricts padding of images to - * 8-, 16-, or 32-bits. We would like to have 64-bits for the server - * to use internally. Removes need for internal alignment checking. - * All of the PutImage functions could be changed individually, but - * as currently written, they call other routines which require things - * to be 64-bit padded on scanlines, so we changed things here. - * If an image would be padded differently for 64- versus 32-, then - * copy each scanline to a 64-bit padded scanline. - * Also, we need to make sure that the image is aligned on a 64-bit - * boundary, even if the scanlines are padded to our satisfaction. - */ -int -ProcPutImage(register ClientPtr client) -{ - register GC *pGC; - register DrawablePtr pDraw; - long length; /* length of scanline server padded */ - long lengthProto; /* length of scanline protocol padded */ - char *tmpImage; - REQUEST(xPutImageReq); - - REQUEST_AT_LEAST_SIZE(xPutImageReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - if (stuff->format == XYBitmap) - { - if ((stuff->depth != 1) || - (stuff->leftPad >= (unsigned int)screenInfo.bitmapScanlinePad)) - return BadMatch; - length = BitmapBytePad(stuff->width + stuff->leftPad); - } - else if (stuff->format == XYPixmap) - { - if ((pDraw->depth != stuff->depth) || - (stuff->leftPad >= (unsigned int)screenInfo.bitmapScanlinePad)) - return BadMatch; - length = BitmapBytePad(stuff->width + stuff->leftPad); - length *= stuff->depth; - } - else if (stuff->format == ZPixmap) - { - if ((pDraw->depth != stuff->depth) || (stuff->leftPad != 0)) - return BadMatch; - length = PixmapBytePad(stuff->width, stuff->depth); - } - else - { - client->errorValue = stuff->format; - return BadValue; - } - - tmpImage = (char *)&stuff[1]; - lengthProto = length; - - if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) + - (sizeof(xPutImageReq) >> 2)) != client->req_len) - return BadLength; - - ReformatImage (tmpImage, lengthProto * stuff->height, - stuff->format == ZPixmap ? BitsPerPixel (stuff->depth) : 1, - ClientOrder(client)); - - (*pGC->ops->PutImage) (pDraw, pGC, stuff->depth, stuff->dstX, stuff->dstY, - stuff->width, stuff->height, - stuff->leftPad, stuff->format, tmpImage); - - return (client->noClientException); -} - - -int -DoGetImage(register ClientPtr client, int format, Drawable drawable, - int x, int y, int width, int height, - Mask planemask, xGetImageReply **im_return) -{ - register DrawablePtr pDraw; - int nlines, linesPerBuf; - register int linesDone; - long widthBytesLine, length; - Mask plane = 0; - char *pBuf; - xGetImageReply xgi; -#ifdef XCSECURITY - RegionPtr pVisibleRegion = NULL; -#endif - - if ((format != XYPixmap) && (format != ZPixmap)) - { - client->errorValue = format; - return(BadValue); - } - SECURITY_VERIFY_DRAWABLE(pDraw, drawable, client, SecurityReadAccess); - if(pDraw->type == DRAWABLE_WINDOW) - { - if( /* check for being viewable */ - !((WindowPtr) pDraw)->realized || - /* check for being on screen */ - pDraw->x + x < 0 || - pDraw->x + x + width > pDraw->pScreen->width || - pDraw->y + y < 0 || - pDraw->y + y + height > pDraw->pScreen->height || - /* check for being inside of border */ - x < - wBorderWidth((WindowPtr)pDraw) || - x + width > wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width || - y < -wBorderWidth((WindowPtr)pDraw) || - y + height > wBorderWidth ((WindowPtr)pDraw) + (int)pDraw->height - ) - return(BadMatch); - xgi.visual = wVisual (((WindowPtr) pDraw)); - } - else - { - if(x < 0 || - x+width > (int)pDraw->width || - y < 0 || - y+height > (int)pDraw->height - ) - return(BadMatch); - xgi.visual = None; - } - - SET_DBE_SRCBUF(pDraw, drawable); - - xgi.type = X_Reply; - xgi.sequenceNumber = client->sequence; - xgi.depth = pDraw->depth; - if(format == ZPixmap) - { - widthBytesLine = PixmapBytePad(width, pDraw->depth); - length = widthBytesLine * height; - - } - else - { - widthBytesLine = BitmapBytePad(width); - plane = ((Mask)1) << (pDraw->depth - 1); - /* only planes asked for */ - length = widthBytesLine * height * - Ones(planemask & (plane | (plane - 1))); - - } - - xgi.length = length; - - if (im_return) { - pBuf = (char *)xalloc(sz_xGetImageReply + length); - if (!pBuf) - return (BadAlloc); - if (widthBytesLine == 0) - linesPerBuf = 0; - else - linesPerBuf = height; - *im_return = (xGetImageReply *)pBuf; - *(xGetImageReply *)pBuf = xgi; - pBuf += sz_xGetImageReply; - } else { - xgi.length = (xgi.length + 3) >> 2; - if (widthBytesLine == 0 || height == 0) - linesPerBuf = 0; - else if (widthBytesLine >= IMAGE_BUFSIZE) - linesPerBuf = 1; - else - { - linesPerBuf = IMAGE_BUFSIZE / widthBytesLine; - if (linesPerBuf > height) - linesPerBuf = height; - } - length = linesPerBuf * widthBytesLine; - if (linesPerBuf < height) - { - /* we have to make sure intermediate buffers don't need padding */ - while ((linesPerBuf > 1) && - (length & ((1L << LOG2_BYTES_PER_SCANLINE_PAD)-1))) - { - linesPerBuf--; - length -= widthBytesLine; - } - while (length & ((1L << LOG2_BYTES_PER_SCANLINE_PAD)-1)) - { - linesPerBuf++; - length += widthBytesLine; - } - } - if(!(pBuf = (char *) ALLOCATE_LOCAL(length))) - return (BadAlloc); - WriteReplyToClient(client, sizeof (xGetImageReply), &xgi); - } - -#ifdef XCSECURITY - if (client->trustLevel != XSecurityClientTrusted && - pDraw->type == DRAWABLE_WINDOW) - { - pVisibleRegion = NotClippedByChildren((WindowPtr)pDraw); - if (pVisibleRegion) - { - REGION_TRANSLATE(pDraw->pScreen, pVisibleRegion, -pDraw->x, -pDraw->y); - } - } -#endif - - if (linesPerBuf == 0) - { - /* nothing to do */ - } - else if (format == ZPixmap) - { - linesDone = 0; - while (height - linesDone > 0) - { - nlines = min(linesPerBuf, height - linesDone); - (*pDraw->pScreen->GetImage) (pDraw, - x, - y + linesDone, - width, - nlines, - format, - planemask, - (pointer) pBuf); -#ifdef XCSECURITY - if (pVisibleRegion) - SecurityCensorImage(client, pVisibleRegion, widthBytesLine, - pDraw, x, y + linesDone, width, - nlines, format, pBuf); -#endif - - /* Note that this is NOT a call to WriteSwappedDataToClient, - as we do NOT byte swap */ - if (!im_return) - { - ReformatImage (pBuf, (int)(nlines * widthBytesLine), - BitsPerPixel (pDraw->depth), - ClientOrder(client)); - -/* Don't split me, gcc pukes when you do */ - (void)WriteToClient(client, - (int)(nlines * widthBytesLine), - pBuf); - } - linesDone += nlines; - } - } - else /* XYPixmap */ - { - for (; plane; plane >>= 1) - { - if (planemask & plane) - { - linesDone = 0; - while (height - linesDone > 0) - { - nlines = min(linesPerBuf, height - linesDone); - (*pDraw->pScreen->GetImage) (pDraw, - x, - y + linesDone, - width, - nlines, - format, - plane, - (pointer)pBuf); -#ifdef XCSECURITY - if (pVisibleRegion) - SecurityCensorImage(client, pVisibleRegion, - widthBytesLine, - pDraw, x, y + linesDone, width, - nlines, format, pBuf); -#endif - - /* Note: NOT a call to WriteSwappedDataToClient, - as we do NOT byte swap */ - if (im_return) { - pBuf += nlines * widthBytesLine; - } else { - ReformatImage (pBuf, - (int)(nlines * widthBytesLine), - 1, - ClientOrder (client)); - -/* Don't split me, gcc pukes when you do */ - (void)WriteToClient(client, - (int)(nlines * widthBytesLine), - pBuf); - } - linesDone += nlines; - } - } - } - } -#ifdef XCSECURITY - if (pVisibleRegion) - REGION_DESTROY(pDraw->pScreen, pVisibleRegion); -#endif - if (!im_return) - DEALLOCATE_LOCAL(pBuf); - return (client->noClientException); -} - -int -ProcGetImage(register ClientPtr client) -{ - REQUEST(xGetImageReq); - - REQUEST_SIZE_MATCH(xGetImageReq); - - return DoGetImage(client, stuff->format, stuff->drawable, - stuff->x, stuff->y, - (int)stuff->width, (int)stuff->height, - stuff->planeMask, (xGetImageReply **)NULL); -} - -int -ProcPolyText(register ClientPtr client) -{ - int err; - REQUEST(xPolyTextReq); - DrawablePtr pDraw; - GC *pGC; - - REQUEST_AT_LEAST_SIZE(xPolyTextReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - err = PolyText(client, - pDraw, - pGC, - (unsigned char *)&stuff[1], - ((unsigned char *) stuff) + (client->req_len << 2), - stuff->x, - stuff->y, - stuff->reqType, - stuff->drawable); - - if (err == Success) - { - return(client->noClientException); - } - else - return err; -} - -int -ProcImageText8(register ClientPtr client) -{ - int err; - register DrawablePtr pDraw; - register GC *pGC; - - REQUEST(xImageTextReq); - - REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - err = ImageText(client, - pDraw, - pGC, - stuff->nChars, - (unsigned char *)&stuff[1], - stuff->x, - stuff->y, - stuff->reqType, - stuff->drawable); - - if (err == Success) - { - return(client->noClientException); - } - else - return err; -} - -int -ProcImageText16(register ClientPtr client) -{ - int err; - register DrawablePtr pDraw; - register GC *pGC; - - REQUEST(xImageTextReq); - - REQUEST_FIXED_SIZE(xImageTextReq, stuff->nChars << 1); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - err = ImageText(client, - pDraw, - pGC, - stuff->nChars, - (unsigned char *)&stuff[1], - stuff->x, - stuff->y, - stuff->reqType, - stuff->drawable); - - if (err == Success) - { - return(client->noClientException); - } - else - return err; -} - - -int -ProcCreateColormap(register ClientPtr client) -{ - VisualPtr pVisual; - ColormapPtr pmap; - Colormap mid; - register WindowPtr pWin; - ScreenPtr pScreen; - REQUEST(xCreateColormapReq); - int i, result; - - REQUEST_SIZE_MATCH(xCreateColormapReq); - - if ((stuff->alloc != AllocNone) && (stuff->alloc != AllocAll)) - { - client->errorValue = stuff->alloc; - return(BadValue); - } - mid = stuff->mid; - LEGAL_NEW_RESOURCE(mid, client); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - - pScreen = pWin->drawable.pScreen; - for (i = 0, pVisual = pScreen->visuals; - i < pScreen->numVisuals; - i++, pVisual++) - { - if (pVisual->vid != stuff->visual) - continue; - result = CreateColormap(mid, pScreen, pVisual, &pmap, - (int)stuff->alloc, client->index); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); - } - client->errorValue = stuff->visual; - return(BadValue); -} - -int -ProcFreeColormap(register ClientPtr client) -{ - ColormapPtr pmap; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pmap = (ColormapPtr )SecurityLookupIDByType(client, stuff->id, RT_COLORMAP, - SecurityDestroyAccess); - if (pmap) - { - /* Freeing a default colormap is a no-op */ - if (!(pmap->flags & IsDefault)) - FreeResource(stuff->id, RT_NONE); - return (client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadColor); - } -} - - -int -ProcCopyColormapAndFree(register ClientPtr client) -{ - Colormap mid; - ColormapPtr pSrcMap; - REQUEST(xCopyColormapAndFreeReq); - int result; - - REQUEST_SIZE_MATCH(xCopyColormapAndFreeReq); - mid = stuff->mid; - LEGAL_NEW_RESOURCE(mid, client); - if( (pSrcMap = (ColormapPtr )SecurityLookupIDByType(client, stuff->srcCmap, - RT_COLORMAP, SecurityReadAccess|SecurityWriteAccess)) ) - { - result = CopyColormapAndFree(mid, pSrcMap, client->index); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); - } - else - { - client->errorValue = stuff->srcCmap; - return(BadColor); - } -} - -int -ProcInstallColormap(register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->id, - RT_COLORMAP, SecurityReadAccess); - if (pcmp) - { - (*(pcmp->pScreen->InstallColormap)) (pcmp); - return (client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadColor); - } -} - -int -ProcUninstallColormap(register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->id, - RT_COLORMAP, SecurityReadAccess); - if (pcmp) - { - if(pcmp->mid != pcmp->pScreen->defColormap) - (*(pcmp->pScreen->UninstallColormap)) (pcmp); - return (client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadColor); - } -} - -int -ProcListInstalledColormaps(register ClientPtr client) -{ - xListInstalledColormapsReply *preply; - int nummaps; - WindowPtr pWin; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client, - SecurityReadAccess); - - if (!pWin) - return(BadWindow); - - preply = (xListInstalledColormapsReply *) - ALLOCATE_LOCAL(sizeof(xListInstalledColormapsReply) + - pWin->drawable.pScreen->maxInstalledCmaps * - sizeof(Colormap)); - if(!preply) - return(BadAlloc); - - preply->type = X_Reply; - preply->sequenceNumber = client->sequence; - nummaps = (*pWin->drawable.pScreen->ListInstalledColormaps) - (pWin->drawable.pScreen, (Colormap *)&preply[1]); - preply->nColormaps = nummaps; - preply->length = nummaps; - WriteReplyToClient(client, sizeof (xListInstalledColormapsReply), preply); - client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; - WriteSwappedDataToClient(client, nummaps * sizeof(Colormap), &preply[1]); - DEALLOCATE_LOCAL(preply); - return(client->noClientException); -} - -int -ProcAllocColor (register ClientPtr client) -{ - ColormapPtr pmap; - int retval; - xAllocColorReply acr; - REQUEST(xAllocColorReq); - - REQUEST_SIZE_MATCH(xAllocColorReq); - pmap = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityWriteAccess); - if (pmap) - { -#ifdef LBX - /* - * If the colormap is grabbed by a proxy, the server will have - * to regain control over the colormap. This AllocColor request - * will be handled after the server gets back the colormap control. - */ - if (LbxCheckColorRequest (client, pmap, (xReq *) stuff)) - return Success; -#endif - acr.type = X_Reply; - acr.length = 0; - acr.sequenceNumber = client->sequence; - acr.red = stuff->red; - acr.green = stuff->green; - acr.blue = stuff->blue; - acr.pixel = 0; - if( (retval = AllocColor(pmap, &acr.red, &acr.green, &acr.blue, - &acr.pixel, client->index)) ) - { - if (client->noClientException != Success) - return(client->noClientException); - else - return (retval); - } -#ifdef PANORAMIX - if (noPanoramiXExtension || !pmap->pScreen->myNum) -#endif - WriteReplyToClient(client, sizeof(xAllocColorReply), &acr); - return (client->noClientException); - - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcAllocNamedColor (register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xAllocNamedColorReq); - - REQUEST_FIXED_SIZE(xAllocNamedColorReq, stuff->nbytes); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityWriteAccess); - if (pcmp) - { - int retval; - - xAllocNamedColorReply ancr; - -#ifdef LBX - /* - * If the colormap is grabbed by a proxy, the server will have - * to regain control over the colormap. This AllocNamedColor request - * will be handled after the server gets back the colormap control. - */ - if (LbxCheckColorRequest (client, pcmp, (xReq *) stuff)) - return Success; -#endif - ancr.type = X_Reply; - ancr.length = 0; - ancr.sequenceNumber = client->sequence; - - if(OsLookupColor(pcmp->pScreen->myNum, (char *)&stuff[1], stuff->nbytes, - &ancr.exactRed, &ancr.exactGreen, &ancr.exactBlue)) - { - ancr.screenRed = ancr.exactRed; - ancr.screenGreen = ancr.exactGreen; - ancr.screenBlue = ancr.exactBlue; - ancr.pixel = 0; - if( (retval = AllocColor(pcmp, - &ancr.screenRed, &ancr.screenGreen, &ancr.screenBlue, - &ancr.pixel, client->index)) ) - { - if (client->noClientException != Success) - return(client->noClientException); - else - return(retval); - } -#ifdef PANORAMIX - if (noPanoramiXExtension || !pcmp->pScreen->myNum) -#endif - WriteReplyToClient(client, sizeof (xAllocNamedColorReply), &ancr); - return (client->noClientException); - } - else - return(BadName); - - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcAllocColorCells (register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xAllocColorCellsReq); - - REQUEST_SIZE_MATCH(xAllocColorCellsReq); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityWriteAccess); - if (pcmp) - { - xAllocColorCellsReply accr; - int npixels, nmasks, retval; - long length; - Pixel *ppixels, *pmasks; - -#ifdef LBX - /* - * If the colormap is grabbed by a proxy, the server will have - * to regain control over the colormap. This AllocColorCells request - * will be handled after the server gets back the colormap control. - */ - if (LbxCheckColorRequest (client, pcmp, (xReq *) stuff)) - return Success; -#endif - npixels = stuff->colors; - if (!npixels) - { - client->errorValue = npixels; - return (BadValue); - } - if (stuff->contiguous != xTrue && stuff->contiguous != xFalse) - { - client->errorValue = stuff->contiguous; - return (BadValue); - } - nmasks = stuff->planes; - length = ((long)npixels + (long)nmasks) * sizeof(Pixel); - ppixels = (Pixel *)ALLOCATE_LOCAL(length); - if(!ppixels) - return(BadAlloc); - pmasks = ppixels + npixels; - - if( (retval = AllocColorCells(client->index, pcmp, npixels, nmasks, - (Bool)stuff->contiguous, ppixels, pmasks)) ) - { - DEALLOCATE_LOCAL(ppixels); - if (client->noClientException != Success) - return(client->noClientException); - else - return(retval); - } -#ifdef PANORAMIX - if (noPanoramiXExtension || !pcmp->pScreen->myNum) -#endif - { - accr.type = X_Reply; - accr.length = length >> 2; - accr.sequenceNumber = client->sequence; - accr.nPixels = npixels; - accr.nMasks = nmasks; - WriteReplyToClient(client, sizeof (xAllocColorCellsReply), &accr); - client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; - WriteSwappedDataToClient(client, length, ppixels); - } - DEALLOCATE_LOCAL(ppixels); - return (client->noClientException); - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcAllocColorPlanes(register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xAllocColorPlanesReq); - - REQUEST_SIZE_MATCH(xAllocColorPlanesReq); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityWriteAccess); - if (pcmp) - { - xAllocColorPlanesReply acpr; - int npixels, retval; - long length; - Pixel *ppixels; - -#ifdef LBX - /* - * If the colormap is grabbed by a proxy, the server will have - * to regain control over the colormap. This AllocColorPlanes request - * will be handled after the server gets back the colormap control. - */ - if (LbxCheckColorRequest (client, pcmp, (xReq *) stuff)) - return Success; -#endif - npixels = stuff->colors; - if (!npixels) - { - client->errorValue = npixels; - return (BadValue); - } - if (stuff->contiguous != xTrue && stuff->contiguous != xFalse) - { - client->errorValue = stuff->contiguous; - return (BadValue); - } - acpr.type = X_Reply; - acpr.sequenceNumber = client->sequence; - acpr.nPixels = npixels; - length = (long)npixels * sizeof(Pixel); - ppixels = (Pixel *)ALLOCATE_LOCAL(length); - if(!ppixels) - return(BadAlloc); - if( (retval = AllocColorPlanes(client->index, pcmp, npixels, - (int)stuff->red, (int)stuff->green, (int)stuff->blue, - (Bool)stuff->contiguous, ppixels, - &acpr.redMask, &acpr.greenMask, &acpr.blueMask)) ) - { - DEALLOCATE_LOCAL(ppixels); - if (client->noClientException != Success) - return(client->noClientException); - else - return(retval); - } - acpr.length = length >> 2; -#ifdef PANORAMIX - if (noPanoramiXExtension || !pcmp->pScreen->myNum) -#endif - { - WriteReplyToClient(client, sizeof(xAllocColorPlanesReply), &acpr); - client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write; - WriteSwappedDataToClient(client, length, ppixels); - } - DEALLOCATE_LOCAL(ppixels); - return (client->noClientException); - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcFreeColors(register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xFreeColorsReq); - - REQUEST_AT_LEAST_SIZE(xFreeColorsReq); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityWriteAccess); - if (pcmp) - { - int count; - int retval; - - if(pcmp->flags & AllAllocated) - return(BadAccess); - count = ((client->req_len << 2)- sizeof(xFreeColorsReq)) >> 2; - retval = FreeColors(pcmp, client->index, count, - (Pixel *)&stuff[1], (Pixel)stuff->planeMask); - if (client->noClientException != Success) - return(client->noClientException); - else - { - client->errorValue = clientErrorValue; - return(retval); - } - - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcStoreColors (ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xStoreColorsReq); - - REQUEST_AT_LEAST_SIZE(xStoreColorsReq); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityWriteAccess); - if (pcmp) - { - int count; - int retval; - - count = (client->req_len << 2) - sizeof(xStoreColorsReq); - if (count % sizeof(xColorItem)) - return(BadLength); - count /= sizeof(xColorItem); - retval = StoreColors(pcmp, count, (xColorItem *)&stuff[1]); - if (client->noClientException != Success) - return(client->noClientException); - else - { - client->errorValue = clientErrorValue; - return(retval); - } - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcStoreNamedColor (register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xStoreNamedColorReq); - - REQUEST_FIXED_SIZE(xStoreNamedColorReq, stuff->nbytes); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityWriteAccess); - if (pcmp) - { - xColorItem def; - int retval; - - if(OsLookupColor(pcmp->pScreen->myNum, (char *)&stuff[1], - stuff->nbytes, &def.red, &def.green, &def.blue)) - { - def.flags = stuff->flags; - def.pixel = stuff->pixel; - retval = StoreColors(pcmp, 1, &def); - if (client->noClientException != Success) - return(client->noClientException); - else - return(retval); - } - return (BadName); - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcQueryColors(register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xQueryColorsReq); - - REQUEST_AT_LEAST_SIZE(xQueryColorsReq); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityReadAccess); - if (pcmp) - { - int count, retval; - xrgb *prgbs; - xQueryColorsReply qcr; - - count = ((client->req_len << 2) - sizeof(xQueryColorsReq)) >> 2; - prgbs = (xrgb *)ALLOCATE_LOCAL(count * sizeof(xrgb)); - if(!prgbs && count) - return(BadAlloc); - if( (retval = QueryColors(pcmp, count, (Pixel *)&stuff[1], prgbs)) ) - { - if (prgbs) DEALLOCATE_LOCAL(prgbs); - if (client->noClientException != Success) - return(client->noClientException); - else - { - client->errorValue = clientErrorValue; - return (retval); - } - } - qcr.type = X_Reply; - qcr.length = (count * sizeof(xrgb)) >> 2; - qcr.sequenceNumber = client->sequence; - qcr.nColors = count; - WriteReplyToClient(client, sizeof(xQueryColorsReply), &qcr); - if (count) - { - client->pSwapReplyFunc = (ReplySwapPtr) SQColorsExtend; - WriteSwappedDataToClient(client, count * sizeof(xrgb), prgbs); - } - if (prgbs) DEALLOCATE_LOCAL(prgbs); - return(client->noClientException); - - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcLookupColor(register ClientPtr client) -{ - ColormapPtr pcmp; - REQUEST(xLookupColorReq); - - REQUEST_FIXED_SIZE(xLookupColorReq, stuff->nbytes); - pcmp = (ColormapPtr)SecurityLookupIDByType(client, stuff->cmap, - RT_COLORMAP, SecurityReadAccess); - if (pcmp) - { - xLookupColorReply lcr; - - if(OsLookupColor(pcmp->pScreen->myNum, (char *)&stuff[1], stuff->nbytes, - &lcr.exactRed, &lcr.exactGreen, &lcr.exactBlue)) - { - lcr.type = X_Reply; - lcr.length = 0; - lcr.sequenceNumber = client->sequence; - lcr.screenRed = lcr.exactRed; - lcr.screenGreen = lcr.exactGreen; - lcr.screenBlue = lcr.exactBlue; - (*pcmp->pScreen->ResolveColor)(&lcr.screenRed, - &lcr.screenGreen, - &lcr.screenBlue, - pcmp->pVisual); - WriteReplyToClient(client, sizeof(xLookupColorReply), &lcr); - return(client->noClientException); - } - return (BadName); - } - else - { - client->errorValue = stuff->cmap; - return (BadColor); - } -} - -int -ProcCreateCursor (register ClientPtr client) -{ - CursorPtr pCursor; - - register PixmapPtr src; - register PixmapPtr msk; - unsigned char * srcbits; - unsigned char * mskbits; - unsigned short width, height; - long n; - CursorMetricRec cm; - - - REQUEST(xCreateCursorReq); - - REQUEST_SIZE_MATCH(xCreateCursorReq); - LEGAL_NEW_RESOURCE(stuff->cid, client); - - src = (PixmapPtr)SecurityLookupIDByType(client, stuff->source, - RT_PIXMAP, SecurityReadAccess); - msk = (PixmapPtr)SecurityLookupIDByType(client, stuff->mask, - RT_PIXMAP, SecurityReadAccess); - if ( src == (PixmapPtr)NULL) - { - client->errorValue = stuff->source; - return (BadPixmap); - } - if ( msk == (PixmapPtr)NULL) - { - if (stuff->mask != None) - { - client->errorValue = stuff->mask; - return (BadPixmap); - } - } - else if ( src->drawable.width != msk->drawable.width - || src->drawable.height != msk->drawable.height - || src->drawable.depth != 1 - || msk->drawable.depth != 1) - return (BadMatch); - - width = src->drawable.width; - height = src->drawable.height; - - if ( stuff->x > width - || stuff->y > height ) - return (BadMatch); - - n = BitmapBytePad(width)*height; - srcbits = (unsigned char *)xalloc(n); - if (!srcbits) - return (BadAlloc); - mskbits = (unsigned char *)xalloc(n); - if (!mskbits) - { - xfree(srcbits); - return (BadAlloc); - } - - /* zeroing the (pad) bits helps some ddx cursor handling */ - bzero((char *)srcbits, n); - (* src->drawable.pScreen->GetImage)( (DrawablePtr)src, 0, 0, width, height, - XYPixmap, 1, (pointer)srcbits); - if ( msk == (PixmapPtr)NULL) - { - register unsigned char *bits = mskbits; - while (--n >= 0) - *bits++ = ~0; - } - else - { - /* zeroing the (pad) bits helps some ddx cursor handling */ - bzero((char *)mskbits, n); - (* msk->drawable.pScreen->GetImage)( (DrawablePtr)msk, 0, 0, width, - height, XYPixmap, 1, (pointer)mskbits); - } - cm.width = width; - cm.height = height; - cm.xhot = stuff->x; - cm.yhot = stuff->y; - pCursor = AllocCursor( srcbits, mskbits, &cm, - stuff->foreRed, stuff->foreGreen, stuff->foreBlue, - stuff->backRed, stuff->backGreen, stuff->backBlue); - - if (pCursor && AddResource(stuff->cid, RT_CURSOR, (pointer)pCursor)) - { - #ifdef TEST - fprintf(stderr, "ProcCreateCursor: Created cursor at [%p].\n", (void *) pCursor); - #endif - - return (client->noClientException); - } - - return BadAlloc; -} - -int -ProcCreateGlyphCursor (register ClientPtr client) -{ - CursorPtr pCursor; - int res; - - REQUEST(xCreateGlyphCursorReq); - - REQUEST_SIZE_MATCH(xCreateGlyphCursorReq); - LEGAL_NEW_RESOURCE(stuff->cid, client); - - res = AllocGlyphCursor(stuff->source, stuff->sourceChar, - stuff->mask, stuff->maskChar, - stuff->foreRed, stuff->foreGreen, stuff->foreBlue, - stuff->backRed, stuff->backGreen, stuff->backBlue, - &pCursor, client); - if (res != Success) - return res; - if (AddResource(stuff->cid, RT_CURSOR, (pointer)pCursor)) - return client->noClientException; - return BadAlloc; -} - - -int -ProcFreeCursor (register ClientPtr client) -{ - CursorPtr pCursor; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->id, - RT_CURSOR, SecurityDestroyAccess); - if (pCursor) - { - FreeResource(stuff->id, RT_NONE); - return (client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadCursor); - } -} - -int -ProcQueryBestSize (register ClientPtr client) -{ - xQueryBestSizeReply reply; - register DrawablePtr pDraw; - ScreenPtr pScreen; - REQUEST(xQueryBestSizeReq); - - REQUEST_SIZE_MATCH(xQueryBestSizeReq); - if ((stuff->class != CursorShape) && - (stuff->class != TileShape) && - (stuff->class != StippleShape)) - { - client->errorValue = stuff->class; - return(BadValue); - } - SECURITY_VERIFY_GEOMETRABLE (pDraw, stuff->drawable, client, - SecurityReadAccess); - if (stuff->class != CursorShape && pDraw->type == UNDRAWABLE_WINDOW) - return (BadMatch); - pScreen = pDraw->pScreen; - (* pScreen->QueryBestSize)(stuff->class, &stuff->width, - &stuff->height, pScreen); - reply.type = X_Reply; - reply.length = 0; - reply.sequenceNumber = client->sequence; - reply.width = stuff->width; - reply.height = stuff->height; - WriteReplyToClient(client, sizeof(xQueryBestSizeReply), &reply); - return (client->noClientException); -} - - -int -ProcSetScreenSaver (register ClientPtr client) -{ - int blankingOption, exposureOption; - REQUEST(xSetScreenSaverReq); - - REQUEST_SIZE_MATCH(xSetScreenSaverReq); - blankingOption = stuff->preferBlank; - if ((blankingOption != DontPreferBlanking) && - (blankingOption != PreferBlanking) && - (blankingOption != DefaultBlanking)) - { - client->errorValue = blankingOption; - return BadValue; - } - exposureOption = stuff->allowExpose; - if ((exposureOption != DontAllowExposures) && - (exposureOption != AllowExposures) && - (exposureOption != DefaultExposures)) - { - client->errorValue = exposureOption; - return BadValue; - } - if (stuff->timeout < -1) - { - client->errorValue = stuff->timeout; - return BadValue; - } - if (stuff->interval < -1) - { - client->errorValue = stuff->interval; - return BadValue; - } - - /* - * The NX agent uses the screen saver procedure - * to monitor the user activities and launch its - * handlers (like timeout feature), so we can't - * always allow the clients to change our values. - */ - - #ifdef TEST - fprintf(stderr, "ProcSetScreenSaver: Called with timeout [%d] interval [%d] Blanking [%d] Exposure [%d].\n", - stuff -> timeout, stuff -> interval, blankingOption, exposureOption); - #endif - - if (nxagentOption(Timeout) == 0) - { - if (blankingOption == DefaultBlanking) - { - ScreenSaverBlanking = defaultScreenSaverBlanking; - } - else - { - ScreenSaverBlanking = blankingOption; - } - - if (exposureOption == DefaultExposures) - { - ScreenSaverAllowExposures = defaultScreenSaverAllowExposures; - } - else - { - ScreenSaverAllowExposures = exposureOption; - } - - if (stuff->timeout >= 0) - { - ScreenSaverTime = stuff->timeout * MILLI_PER_SECOND; - } - else - { - ScreenSaverTime = defaultScreenSaverTime; - } - - if (stuff->interval >= 0) - { - ScreenSaverInterval = stuff->interval * MILLI_PER_SECOND; - } - else - { - ScreenSaverInterval = defaultScreenSaverInterval; - } - - SetScreenSaverTimer(); - } - #ifdef TEST - - else - { - fprintf(stderr, "ProcSetScreenSaver: Keeping auto-disconnect timeout set to [%d] seconds.\n", - nxagentOption(Timeout)); - } - - #endif - - return (client->noClientException); -} - -int -ProcGetScreenSaver(register ClientPtr client) -{ - xGetScreenSaverReply rep; - - REQUEST_SIZE_MATCH(xReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - rep.timeout = ScreenSaverTime / MILLI_PER_SECOND; - rep.interval = ScreenSaverInterval / MILLI_PER_SECOND; - rep.preferBlanking = ScreenSaverBlanking; - rep.allowExposures = ScreenSaverAllowExposures; - WriteReplyToClient(client, sizeof(xGetScreenSaverReply), &rep); - return (client->noClientException); -} - -int -ProcChangeHosts(register ClientPtr client) -{ - REQUEST(xChangeHostsReq); - int result; - - REQUEST_FIXED_SIZE(xChangeHostsReq, stuff->hostLength); - - if(stuff->mode == HostInsert) - result = AddHost(client, (int)stuff->hostFamily, - stuff->hostLength, (pointer)&stuff[1]); - else if (stuff->mode == HostDelete) - result = RemoveHost(client, (int)stuff->hostFamily, - stuff->hostLength, (pointer)&stuff[1]); - else - { - client->errorValue = stuff->mode; - return BadValue; - } - if (!result) - result = client->noClientException; - return (result); -} - -int -ProcListHosts(register ClientPtr client) -{ - xListHostsReply reply; - int len, nHosts, result; - pointer pdata; - /* REQUEST(xListHostsReq); */ - - REQUEST_SIZE_MATCH(xListHostsReq); -#ifdef XCSECURITY - /* untrusted clients can't list hosts */ - if (client->trustLevel != XSecurityClientTrusted) - { - SecurityAudit("client %d attempted to list hosts\n", client->index); - return BadAccess; - } -#endif - result = GetHosts(&pdata, &nHosts, &len, &reply.enabled); - if (result != Success) - return(result); - reply.type = X_Reply; - reply.sequenceNumber = client->sequence; - reply.nHosts = nHosts; - reply.length = len >> 2; - WriteReplyToClient(client, sizeof(xListHostsReply), &reply); - if (nHosts) - { - client->pSwapReplyFunc = (ReplySwapPtr) SLHostsExtend; - WriteSwappedDataToClient(client, len, pdata); - } - xfree(pdata); - return (client->noClientException); -} - -int -ProcChangeAccessControl(register ClientPtr client) -{ - int result; - REQUEST(xSetAccessControlReq); - - REQUEST_SIZE_MATCH(xSetAccessControlReq); - if ((stuff->mode != EnableAccess) && (stuff->mode != DisableAccess)) - { - client->errorValue = stuff->mode; - return BadValue; - } - result = ChangeAccessControl(client, stuff->mode == EnableAccess); - if (!result) - result = client->noClientException; - return (result); -} - -int -ProcKillClient(register ClientPtr client) -{ - REQUEST(xResourceReq); - ClientPtr killclient; - - REQUEST_SIZE_MATCH(xResourceReq); - if (stuff->id == AllTemporary) - { - CloseDownRetainedResources(); - return (client->noClientException); - } - - if ((killclient = LookupClient(stuff->id, client))) - { - CloseDownClient(killclient); - /* if an LBX proxy gets killed, isItTimeToYield will be set */ - if (isItTimeToYield || (client == killclient)) - { - /* force yield and return Success, so that Dispatch() - * doesn't try to touch client - */ - isItTimeToYield = TRUE; - return (Success); - } - return (client->noClientException); - } - else - { - client->errorValue = stuff->id; - return (BadValue); - } -} - -int -ProcSetFontPath(register ClientPtr client) -{ - unsigned char *ptr; - unsigned long nbytes, total; - long nfonts; - int n, result; - int error; - REQUEST(xSetFontPathReq); - - REQUEST_AT_LEAST_SIZE(xSetFontPathReq); - - nbytes = (client->req_len << 2) - sizeof(xSetFontPathReq); - total = nbytes; - ptr = (unsigned char *)&stuff[1]; - nfonts = stuff->nFonts; - while (--nfonts >= 0) - { - if ((total == 0) || (total < (n = (*ptr + 1)))) - return(BadLength); - total -= n; - ptr += n; - } - if (total >= 4) - return(BadLength); - result = SetFontPath(client, stuff->nFonts, (unsigned char *)&stuff[1], - &error); - if (!result) - { - result = client->noClientException; - client->errorValue = error; - } - return (result); -} - -int -ProcGetFontPath(register ClientPtr client) -{ - xGetFontPathReply reply; - int stringLens, numpaths; - unsigned char *bufferStart; - /* REQUEST (xReq); */ - - REQUEST_SIZE_MATCH(xReq); - bufferStart = GetFontPath(&numpaths, &stringLens); - - reply.type = X_Reply; - reply.sequenceNumber = client->sequence; - reply.length = (stringLens + numpaths + 3) >> 2; - reply.nPaths = numpaths; - - WriteReplyToClient(client, sizeof(xGetFontPathReply), &reply); - if (stringLens || numpaths) - (void)WriteToClient(client, stringLens + numpaths, (char *)bufferStart); - return(client->noClientException); -} - -int -ProcChangeCloseDownMode(register ClientPtr client) -{ - REQUEST(xSetCloseDownModeReq); - - REQUEST_SIZE_MATCH(xSetCloseDownModeReq); - if ((stuff->mode == AllTemporary) || - (stuff->mode == RetainPermanent) || - (stuff->mode == RetainTemporary)) - { - client->closeDownMode = stuff->mode; - return (client->noClientException); - } - else - { - client->errorValue = stuff->mode; - return (BadValue); - } -} - -int ProcForceScreenSaver(register ClientPtr client) -{ - REQUEST(xForceScreenSaverReq); - - REQUEST_SIZE_MATCH(xForceScreenSaverReq); - - if ((stuff->mode != ScreenSaverReset) && - (stuff->mode != ScreenSaverActive)) - { - client->errorValue = stuff->mode; - return BadValue; - } - - /* - * The NX agent uses the screen saver procedure - * to monitor the user activities and launch its - * handlers (like timeout feature), so we can't - * always allow the clients to force the screen - * saver handler execution. - */ - - if (nxagentOption(Timeout) == 0) - { - SaveScreens(SCREEN_SAVER_FORCER, (int)stuff->mode); - } - - #ifdef TEST - - else - { - fprintf(stderr, "ProcForceScreenSaver: Ignoring the client request with mode [%d].\n", - stuff -> mode); - } - - #endif - - return client->noClientException; -} - -int ProcNoOperation(register ClientPtr client) -{ - REQUEST_AT_LEAST_SIZE(xReq); - - /* noop -- don't do anything */ - return(client->noClientException); -} - -void -InitProcVectors(void) -{ - int i; - for (i = 0; i<256; i++) - { - if(!ProcVector[i]) - { - ProcVector[i] = SwappedProcVector[i] = ProcBadRequest; - ReplySwapVector[i] = ReplyNotSwappd; - } -#ifdef K5AUTH - if (!k5_Vector[i]) - { - k5_Vector[i] = k5_bad; - } -#endif - } - for(i = LASTEvent; i < 128; i++) - { - EventSwapVector[i] = NotImplemented; - } - -} - -/********************** - * CloseDownClient - * - * Client can either mark his resources destroy or retain. If retained and - * then killed again, the client is really destroyed. - *********************/ - -void -CloseDownClient(register ClientPtr client) -{ - Bool really_close_down = client->clientGone || - client->closeDownMode == DestroyAll; - - /* - * There must be a better way to hook a - * call-back function to be called any - * time a client is going to be closed. - */ - - nxagentClearClipboard(client, NULL); - - /* - * Need to reset the karma counter and - * get rid of the pending sync replies. - */ - - nxagentWakeupByReset(client); - - /* - * Check if the client - * is a shadow nxagent. - */ - - nxagentCheckIfShadowAgent(client); - - if (!client->clientGone) - { - /* ungrab server if grabbing client dies */ - if (grabState != GrabNone && grabClient == client) - { - UngrabServer(client); - } - BITCLEAR(grabWaiters, client->index); - DeleteClientFromAnySelections(client); - ReleaseActiveGrabs(client); - DeleteClientFontStuff(client); - if (!really_close_down) - { - /* This frees resources that should never be retained - * no matter what the close down mode is. Actually we - * could do this unconditionally, but it's probably - * better not to traverse all the client's resources - * twice (once here, once a few lines down in - * FreeClientResources) in the common case of - * really_close_down == TRUE. - */ - FreeClientNeverRetainResources(client); - client->clientState = ClientStateRetained; - if (ClientStateCallback) - { - NewClientInfoRec clientinfo; - - clientinfo.client = client; - clientinfo.prefix = (xConnSetupPrefix *)NULL; - clientinfo.setup = (xConnSetup *) NULL; - CallCallbacks((&ClientStateCallback), (pointer)&clientinfo); - } - } - client->clientGone = TRUE; /* so events aren't sent to client */ - if (ClientIsAsleep(client)) - ClientSignal (client); - ProcessWorkQueueZombies(); -#ifdef LBX - ProcessQTagZombies(); -#endif - CloseDownConnection(client); - - /* If the client made it to the Running stage, nClients has - * been incremented on its behalf, so we need to decrement it - * now. If it hasn't gotten to Running, nClients has *not* - * been incremented, so *don't* decrement it. - */ - if (client->clientState != ClientStateInitial && - client->clientState != ClientStateAuthenticating ) - { - --nClients; - } - } - - if (really_close_down) - { - if (client->clientState == ClientStateRunning && nClients == 0) - dispatchException |= dispatchExceptionAtReset; - - client->clientState = ClientStateGone; - if (ClientStateCallback) - { - NewClientInfoRec clientinfo; - - clientinfo.client = client; - clientinfo.prefix = (xConnSetupPrefix *)NULL; - clientinfo.setup = (xConnSetup *) NULL; - CallCallbacks((&ClientStateCallback), (pointer)&clientinfo); - } - FreeClientResources(client); - if (client->index < nextFreeClientID) - nextFreeClientID = client->index; - clients[client->index] = NullClient; -#ifdef SMART_SCHEDULE - SmartLastClient = NullClient; -#endif - xfree(client); - - while (!clients[currentMaxClients-1]) - currentMaxClients--; - } -} - -static void -KillAllClients() -{ - int i; - for (i=1; i<currentMaxClients; i++) - if (clients[i]) { - /* Make sure Retained clients are released. */ - clients[i]->closeDownMode = DestroyAll; - CloseDownClient(clients[i]); - } -} - -/********************* - * CloseDownRetainedResources - * - * Find all clients that are gone and have terminated in RetainTemporary - * and destroy their resources. - *********************/ - -void -CloseDownRetainedResources() -{ - register int i; - register ClientPtr client; - - for (i=1; i<currentMaxClients; i++) - { - client = clients[i]; - if (client && (client->closeDownMode == RetainTemporary) - && (client->clientGone)) - CloseDownClient(client); - } -} - -void InitClient(ClientPtr client, int i, pointer ospriv) -{ - client->index = i; - client->sequence = 0; - client->clientAsMask = ((Mask)i) << CLIENTOFFSET; - client->clientGone = FALSE; - if (i) - { - client->closeDownMode = DestroyAll; - client->lastDrawable = (DrawablePtr)WindowTable[0]; - client->lastDrawableID = WindowTable[0]->drawable.id; - } - else - { - client->closeDownMode = RetainPermanent; - client->lastDrawable = (DrawablePtr)NULL; - client->lastDrawableID = INVALID; - } - client->lastGC = (GCPtr) NULL; - client->lastGCID = INVALID; - client->numSaved = 0; - client->saveSet = (SaveSetElt *)NULL; - client->noClientException = Success; -#ifdef LOG_DEBUG - client->requestLogIndex = 0; -#endif - client->requestVector = InitialVector; - client->osPrivate = ospriv; - client->swapped = FALSE; - client->big_requests = FALSE; - client->priority = 0; - client->clientState = ClientStateInitial; -#ifdef XKB - if (!noXkbExtension) { - client->xkbClientFlags = 0; - client->mapNotifyMask = 0; - QueryMinMaxKeyCodes(&client->minKC,&client->maxKC); - } -#endif - client->replyBytesRemaining = 0; -#ifdef LBX - client->readRequest = StandardReadRequestFromClient; -#endif -#ifdef XCSECURITY - client->trustLevel = XSecurityClientTrusted; - client->CheckAccess = NULL; - client->authId = 0; -#endif -#ifdef XAPPGROUP - client->appgroup = NULL; -#endif - client->fontResFunc = NULL; -#ifdef SMART_SCHEDULE - client->smart_priority = 0; - client->smart_start_tick = SmartScheduleTime; - client->smart_stop_tick = SmartScheduleTime; - client->smart_check_tick = SmartScheduleTime; -#endif -} - -extern int clientPrivateLen; -extern unsigned *clientPrivateSizes; -extern unsigned totalClientSize; - -int -InitClientPrivates(ClientPtr client) -{ - register char *ptr; - DevUnion *ppriv; - register unsigned *sizes; - register unsigned size; - register int i; - - if (totalClientSize == sizeof(ClientRec)) - ppriv = (DevUnion *)NULL; - else if (client->index) - ppriv = (DevUnion *)(client + 1); - else - { - ppriv = (DevUnion *)xalloc(totalClientSize - sizeof(ClientRec)); - if (!ppriv) - return 0; - } - client->devPrivates = ppriv; - sizes = clientPrivateSizes; - ptr = (char *)(ppriv + clientPrivateLen); - for (i = clientPrivateLen; --i >= 0; ppriv++, sizes++) - { - if ( (size = *sizes) ) - { - ppriv->ptr = (pointer)ptr; - ptr += size; - } - else - ppriv->ptr = (pointer)NULL; - } - - /* - * Initialize the private members. - */ - - nxagentInitClientPrivates(client); - - return 1; -} - -/************************ - * int NextAvailableClient(ospriv) - * - * OS dependent portion can't assign client id's because of CloseDownModes. - * Returns NULL if there are no free clients. - *************************/ - -ClientPtr NextAvailableClient(pointer ospriv) -{ - register int i; - register ClientPtr client; - xReq data; - - i = nextFreeClientID; - if (i == MAXCLIENTS) - return (ClientPtr)NULL; - clients[i] = client = (ClientPtr)xalloc(totalClientSize); - if (!client) - return (ClientPtr)NULL; - InitClient(client, i, ospriv); - InitClientPrivates(client); - if (!InitClientResources(client)) - { - xfree(client); - return (ClientPtr)NULL; - } - data.reqType = 1; - data.length = (sz_xReq + sz_xConnClientPrefix) >> 2; - if (!InsertFakeRequest(client, (char *)&data, sz_xReq)) - { - FreeClientResources(client); - xfree(client); - return (ClientPtr)NULL; - } - if (i == currentMaxClients) - currentMaxClients++; - while ((nextFreeClientID < MAXCLIENTS) && clients[nextFreeClientID]) - nextFreeClientID++; - if (ClientStateCallback) - { - NewClientInfoRec clientinfo; - - clientinfo.client = client; - clientinfo.prefix = (xConnSetupPrefix *)NULL; - clientinfo.setup = (xConnSetup *) NULL; - CallCallbacks((&ClientStateCallback), (pointer)&clientinfo); - } - return(client); -} - -int -ProcInitialConnection(register ClientPtr client) -{ - REQUEST(xReq); - register xConnClientPrefix *prefix; - int whichbyte = 1; - - prefix = (xConnClientPrefix *)((char *)stuff + sz_xReq); - if ((prefix->byteOrder != 'l') && (prefix->byteOrder != 'B')) - return (client->noClientException = -1); - if (((*(char *) &whichbyte) && (prefix->byteOrder == 'B')) || - (!(*(char *) &whichbyte) && (prefix->byteOrder == 'l'))) - { - client->swapped = TRUE; - SwapConnClientPrefix(prefix); - } - stuff->reqType = 2; - stuff->length += ((prefix->nbytesAuthProto + (unsigned)3) >> 2) + - ((prefix->nbytesAuthString + (unsigned)3) >> 2); - if (client->swapped) - { - swaps(&stuff->length, whichbyte); - } - ResetCurrentRequest(client); - return (client->noClientException); -} - -#ifdef LBX -void -IncrementClientCount() -{ - nClients++; -} -#endif - -int -SendConnSetup(register ClientPtr client, char *reason) -{ - register xWindowRoot *root; - register int i; - int numScreens; - char* lConnectionInfo; - xConnSetupPrefix* lconnSetupPrefix; - - if (reason) - { - xConnSetupPrefix csp; - - csp.success = xFalse; - csp.lengthReason = strlen(reason); - csp.length = (csp.lengthReason + (unsigned)3) >> 2; - csp.majorVersion = X_PROTOCOL; - csp.minorVersion = X_PROTOCOL_REVISION; - if (client->swapped) - WriteSConnSetupPrefix(client, &csp); - else - (void)WriteToClient(client, sz_xConnSetupPrefix, (char *) &csp); - (void)WriteToClient(client, (int)csp.lengthReason, reason); - return (client->noClientException = -1); - } - - numScreens = screenInfo.numScreens; - lConnectionInfo = ConnectionInfo; - lconnSetupPrefix = &connSetupPrefix; - - /* We're about to start speaking X protocol back to the client by - * sending the connection setup info. This means the authorization - * step is complete, and we can count the client as an - * authorized one. - */ - nClients++; - - client->requestVector = client->swapped ? SwappedProcVector : ProcVector; - client->sequence = 0; -#ifdef XAPPGROUP - XagConnectionInfo (client, &lconnSetupPrefix, &lConnectionInfo, &numScreens); -#endif - ((xConnSetup *)lConnectionInfo)->ridBase = client->clientAsMask; - ((xConnSetup *)lConnectionInfo)->ridMask = RESOURCE_ID_MASK; -#ifdef MATCH_CLIENT_ENDIAN - ((xConnSetup *)lConnectionInfo)->imageByteOrder = ClientOrder (client); - ((xConnSetup *)lConnectionInfo)->bitmapBitOrder = ClientOrder (client); -#endif - /* fill in the "currentInputMask" */ - root = (xWindowRoot *)(lConnectionInfo + connBlockScreenStart); -#ifdef PANORAMIX - if (noPanoramiXExtension) - numScreens = screenInfo.numScreens; - else - numScreens = ((xConnSetup *)ConnectionInfo)->numRoots; -#endif - - for (i=0; i<numScreens; i++) - { - register unsigned int j; - register xDepth *pDepth; - - root->currentInputMask = WindowTable[i]->eventMask | - wOtherEventMasks (WindowTable[i]); - pDepth = (xDepth *)(root + 1); - for (j = 0; j < root->nDepths; j++) - { - pDepth = (xDepth *)(((char *)(pDepth + 1)) + - pDepth->nVisuals * sizeof(xVisualType)); - } - root = (xWindowRoot *)pDepth; - } - - if (client->swapped) - { - WriteSConnSetupPrefix(client, lconnSetupPrefix); - WriteSConnectionInfo(client, - (unsigned long)(lconnSetupPrefix->length << 2), - lConnectionInfo); - } - else - { - (void)WriteToClient(client, sizeof(xConnSetupPrefix), - (char *) lconnSetupPrefix); - (void)WriteToClient(client, (int)(lconnSetupPrefix->length << 2), - lConnectionInfo); - } - client->clientState = ClientStateRunning; - if (ClientStateCallback) - { - NewClientInfoRec clientinfo; - - clientinfo.client = client; - clientinfo.prefix = lconnSetupPrefix; - clientinfo.setup = (xConnSetup *)lConnectionInfo; - CallCallbacks((&ClientStateCallback), (pointer)&clientinfo); - } - return (client->noClientException); -} - -int -ProcEstablishConnection(register ClientPtr client) -{ - char *reason, *auth_proto, *auth_string; - register xConnClientPrefix *prefix; - REQUEST(xReq); - - prefix = (xConnClientPrefix *)((char *)stuff + sz_xReq); - auth_proto = (char *)prefix + sz_xConnClientPrefix; - auth_string = auth_proto + ((prefix->nbytesAuthProto + 3) & ~3); - if ((prefix->majorVersion != X_PROTOCOL) || - (prefix->minorVersion != X_PROTOCOL_REVISION)) - reason = "Protocol version mismatch"; - else - reason = ClientAuthorized(client, - (unsigned short)prefix->nbytesAuthProto, - auth_proto, - (unsigned short)prefix->nbytesAuthString, - auth_string); - /* - * If Kerberos is being used for this client, the clientState - * will be set to ClientStateAuthenticating at this point. - * More messages need to be exchanged among the X server, Kerberos - * server, and client to figure out if everyone is authorized. - * So we don't want to send the connection setup info yet, since - * the auth step isn't really done. - */ - if (client->clientState == ClientStateCheckingSecurity) - client->clientState = ClientStateCheckedSecurity; - else if (client->clientState != ClientStateAuthenticating) - return(SendConnSetup(client, reason)); - return(client->noClientException); -} - -void -SendErrorToClient(ClientPtr client, unsigned majorCode, unsigned minorCode, - XID resId, int errorCode) -{ - xError rep; - - rep.type = X_Error; - rep.sequenceNumber = client->sequence; - rep.errorCode = errorCode; - rep.majorCode = majorCode; - rep.minorCode = minorCode; - rep.resourceID = resId; - - WriteEventsToClient (client, 1, (xEvent *)&rep); -} - -void -DeleteWindowFromAnySelections(WindowPtr pWin) -{ - register int i; - - for (i = 0; i< NumCurrentSelections; i++) - if (CurrentSelections[i].pWin == pWin) - { - if (SelectionCallback) - { - SelectionInfoRec info; - - info.selection = &CurrentSelections[i]; - info.kind = SelectionWindowDestroy; - CallCallbacks(&SelectionCallback, &info); - } - CurrentSelections[i].pWin = (WindowPtr)NULL; - CurrentSelections[i].window = None; - CurrentSelections[i].client = NullClient; - } -} - -static void -DeleteClientFromAnySelections(ClientPtr client) -{ - register int i; - - for (i = 0; i< NumCurrentSelections; i++) - if (CurrentSelections[i].client == client) - { - if (SelectionCallback) - { - SelectionInfoRec info; - - info.selection = &CurrentSelections[i]; - info.kind = SelectionWindowDestroy; - CallCallbacks(&SelectionCallback, &info); - } - CurrentSelections[i].pWin = (WindowPtr)NULL; - CurrentSelections[i].window = None; - CurrentSelections[i].client = NullClient; - } -} - -void -MarkClientException(ClientPtr client) -{ - client->noClientException = -1; -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c deleted file mode 100644 index 2b64269..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c +++ /dev/null @@ -1,2805 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XdotOrg: xc/programs/Xserver/dix/dixfonts.c,v 1.8 2005/07/03 08:53:38 daniels Exp $ */ -/* $XFree86: xc/programs/Xserver/dix/dixfonts.c,v 3.28 2003/11/08 02:02:03 dawes Exp $ */ -/************************************************************************ -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -************************************************************************/ -/* The panoramix components contained the following notice */ -/* -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. - -******************************************************************/ -/* $Xorg: dixfonts.c,v 1.4 2000/08/17 19:48:18 cpqbld Exp $ */ - -#define NEED_REPLIES -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xproto.h> -#include "scrnintstr.h" -#include "resource.h" -#include "dixstruct.h" -#include "cursorstr.h" -#include "misc.h" -#include "opaque.h" -#include "dixfontstr.h" -#include "closestr.h" - -/* -#define NXAGENT_DEBUG -*/ - -#ifdef DEBUG -#include <stdio.h> -#endif - -#include "Agent.h" -#include "Font.h" - -#ifndef NX_TRANS_SOCKET - -#define NX_TRANS_SOCKET - -#endif - -#ifdef NX_TRANS_SOCKET - -char _NXFontPath[1024]; - -/* - * Override the default font path and make - * it configurable at run time, based on - * the NX_FONT environment. - */ - -static const char *_NXGetFontPath(const char *path) -{ - const char *fontEnv; - - /* - * Check the environment only once. - */ - - if (*_NXFontPath != '\0') - { - return _NXFontPath; - } - - fontEnv = getenv("NX_FONT"); - - if (fontEnv != NULL && *fontEnv != '\0') - { - if (strlen(fontEnv) + 1 > 1024) - { -#ifdef NX_TRANS_TEST - fprintf(stderr, "_NXGetFontPath: WARNING! Maximum length of font path exceeded.\n"); -#endif - goto _NXGetFontPathError; - } - - strcpy(_NXFontPath, fontEnv); - -#ifdef NX_TRANS_TEST - fprintf(stderr, "_NXGetFontPath: Using NX font path [%s].\n", _NXFontPath); -#endif - - return _NXFontPath; - } - -_NXGetFontPathError: - - strncpy(_NXFontPath, path, 1023); - _NXFontPath[1023] = '\0'; - -#ifdef NX_TRANS_TEST - fprintf(stderr, "_NXGetFontPath: Using default font path [%s].\n", _NXFontPath); -#endif - - return _NXFontPath; -} - -#endif - -#ifdef PANORAMIX -#include "../../Xext/panoramiX.h" -#include "../../Xext/panoramiXsrv.h" -#endif - -#ifdef LBX -#include "lbxserve.h" -#endif - -#ifdef XF86BIGFONT -#define _XF86BIGFONT_SERVER_ -#include <X11/extensions/xf86bigfont.h> -#endif - -#define QUERYCHARINFO(pci, pr) *(pr) = (pci)->metrics - -extern pointer fosNaturalParams; -extern FontPtr defaultFont; - -static FontPathElementPtr *font_path_elements = (FontPathElementPtr *) 0; -static int num_fpes = 0; -FPEFunctions *fpe_functions = (FPEFunctions *) 0; -static int num_fpe_types = 0; - -static unsigned char *font_path_string; - -static int num_slept_fpes = 0; -static int size_slept_fpes = 0; -static FontPathElementPtr *slept_fpes = (FontPathElementPtr *) 0; -static FontPatternCachePtr patternCache; - -int -FontToXError(err) - int err; -{ - switch (err) { - case Successful: - return Success; - case AllocError: - return BadAlloc; - case BadFontName: - return BadName; - case BadFontPath: - case BadFontFormat: /* is there something better? */ - case BadCharRange: - return BadValue; - default: - return err; - } -} - - -/* - * adding RT_FONT prevents conflict with default cursor font - */ -Bool -SetDefaultFont(char *defaultfontname) -{ - int err; - FontPtr pf; - XID fid; - - fid = FakeClientID(0); - err = OpenFont(serverClient, fid, FontLoadAll | FontOpenSync, - (unsigned) strlen(defaultfontname), defaultfontname); - if (err != Success) - return FALSE; - pf = (FontPtr) LookupIDByType(fid, RT_FONT); - if (pf == (FontPtr) NULL) - return FALSE; - defaultFont = pf; - return TRUE; -} - -/* - * note that the font wakeup queue is not refcounted. this is because - * an fpe needs to be added when it's inited, and removed when it's finally - * freed, in order to handle any data that isn't requested, like FS events. - * - * since the only thing that should call these routines is the renderer's - * init_fpe() and free_fpe(), there shouldn't be any problem in using - * freed data. - */ -void -QueueFontWakeup(FontPathElementPtr fpe) -{ - int i; - FontPathElementPtr *new; - - for (i = 0; i < num_slept_fpes; i++) { - if (slept_fpes[i] == fpe) { - -#ifdef DEBUG - fprintf(stderr, "re-queueing fpe wakeup\n"); -#endif - - return; - } - } - if (num_slept_fpes == size_slept_fpes) { - new = (FontPathElementPtr *) - xrealloc(slept_fpes, - sizeof(FontPathElementPtr) * (size_slept_fpes + 4)); - if (!new) - return; - slept_fpes = new; - size_slept_fpes += 4; - } - slept_fpes[num_slept_fpes] = fpe; - num_slept_fpes++; -} - -void -RemoveFontWakeup(FontPathElementPtr fpe) -{ - int i, - j; - - for (i = 0; i < num_slept_fpes; i++) { - if (slept_fpes[i] == fpe) { - for (j = i; j < num_slept_fpes; j++) { - slept_fpes[j] = slept_fpes[j + 1]; - } - num_slept_fpes--; - return; - } - } -} - -void -FontWakeup(pointer data, int count, pointer LastSelectMask) -{ - int i; - FontPathElementPtr fpe; - - if (count < 0) - return; - /* wake up any fpe's that may be waiting for information */ - for (i = 0; i < num_slept_fpes; i++) { - fpe = slept_fpes[i]; - (void) (*fpe_functions[fpe->type].wakeup_fpe) (fpe, LastSelectMask); - } -} - -/* XXX -- these two funcs may want to be broken into macros */ -static void -UseFPE(FontPathElementPtr fpe) -{ - fpe->refcount++; -} - -static void -FreeFPE (FontPathElementPtr fpe) -{ - fpe->refcount--; - if (fpe->refcount == 0) { - (*fpe_functions[fpe->type].free_fpe) (fpe); - xfree(fpe->name); - xfree(fpe); - } -} - -static Bool -doOpenFont(ClientPtr client, OFclosurePtr c) -{ - FontPtr pfont = NullFont; - FontPathElementPtr fpe = NULL; - ScreenPtr pScr; - int err = Successful; - int i; - char *alias, - *newname; - int newlen; - int aliascount = 20; - char nxagentOrigFontName[256]; - int nxagentOrigFontNameLen; - - /* - * Decide at runtime what FontFormat to use. - */ - Mask FontFormat = - - ((screenInfo.imageByteOrder == LSBFirst) ? - BitmapFormatByteOrderLSB : BitmapFormatByteOrderMSB) | - - ((screenInfo.bitmapBitOrder == LSBFirst) ? - BitmapFormatBitOrderLSB : BitmapFormatBitOrderMSB) | - - BitmapFormatImageRectMin | - -#if GLYPHPADBYTES == 1 - BitmapFormatScanlinePad8 | -#endif - -#if GLYPHPADBYTES == 2 - BitmapFormatScanlinePad16 | -#endif - -#if GLYPHPADBYTES == 4 - BitmapFormatScanlinePad32 | -#endif - -#if GLYPHPADBYTES == 8 - BitmapFormatScanlinePad64 | -#endif - - BitmapFormatScanlineUnit8; - - - nxagentOrigFontNameLen = (c -> origFontNameLen < 256) ? c -> origFontNameLen : 255; - - memcpy(nxagentOrigFontName, c -> origFontName, nxagentOrigFontNameLen); - - nxagentOrigFontName[nxagentOrigFontNameLen] = 0; - - if (client->clientGone) - { - if (c->current_fpe < c->num_fpes) - { - fpe = c->fpe_list[c->current_fpe]; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - } - err = Successful; - goto bail; - } - while (c->current_fpe < c->num_fpes) { - fpe = c->fpe_list[c->current_fpe]; - err = (*fpe_functions[fpe->type].open_font) - ((pointer) client, fpe, c->flags, - c->fontname, c->fnamelen, FontFormat, - BitmapFormatMaskByte | - BitmapFormatMaskBit | - BitmapFormatMaskImageRectangle | - BitmapFormatMaskScanLinePad | - BitmapFormatMaskScanLineUnit, - c->fontid, &pfont, &alias, - c->non_cachable_font && c->non_cachable_font->fpe == fpe ? - c->non_cachable_font : - (FontPtr)0); - - if (err == FontNameAlias && alias) { - newlen = strlen(alias); - newname = (char *) xrealloc(c->fontname, newlen); - if (!newname) { - err = AllocError; - break; - } - memmove(newname, alias, newlen); - c->fontname = newname; - c->fnamelen = newlen; - c->current_fpe = 0; - if (--aliascount <= 0) - break; - continue; - } - if (err == BadFontName) { - c->current_fpe++; - continue; - } - if (err == Suspended) { - if (!c->slept) { - c->slept = TRUE; - ClientSleep(client, (ClientSleepProcPtr)doOpenFont, (pointer) c); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doOpenFont: client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - break; - } - - if (err != Successful) - goto bail; - if (!pfont) { - err = BadFontName; - goto bail; - } - /* check values for firstCol, lastCol, firstRow, and lastRow */ - if (pfont->info.firstCol > pfont->info.lastCol || - pfont->info.firstRow > pfont->info.lastRow || - pfont->info.lastCol - pfont->info.firstCol > 255) { - err = AllocError; - goto bail; - } - if (!pfont->fpe) - pfont->fpe = fpe; - pfont->refcnt++; - if (pfont->refcnt == 1) { - UseFPE(pfont->fpe); - for (i = 0; i < screenInfo.numScreens; i++) { - pScr = screenInfo.screens[i]; - if (pScr->RealizeFont) - { - - /* NXAGENT uses useless screen pointer to pass the original font name - * to realizeFont, could be a source of problems in the future. - */ - - if (!(*pScr->RealizeFont) ((ScreenPtr)nxagentOrigFontName, pfont)) - { - CloseFont (pfont, (Font) 0); - err=BadFontName; - goto bail; - } - } - } - } - if (!AddResource(c->fontid, RT_FONT, (pointer) pfont)) { - err = AllocError; - goto bail; - } - if( nxagentFontPriv(pfont) -> mirrorID == 0 ) - { - extern RESTYPE RT_NX_FONT; - - nxagentFontPriv(pfont) -> mirrorID = FakeClientID(0); - if (!AddResource(nxagentFontPriv(pfont) -> mirrorID, RT_NX_FONT, (pointer) pfont)) { - FreeResource(c->fontid, RT_NONE); - err = AllocError; - goto bail; - } - } - if (patternCache && pfont != c->non_cachable_font) - CacheFontPattern(patternCache, nxagentOrigFontName, nxagentOrigFontNameLen, - pfont); -bail: - if (err != Successful && c->client != serverClient) { - SendErrorToClient(c->client, X_OpenFont, 0, - c->fontid, FontToXError(err)); - } - if (c->slept) - { - ClientWakeup(c->client); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doOpenFont: client [%lx] wakeup.\n", client); -#endif - } - for (i = 0; i < c->num_fpes; i++) { - FreeFPE(c->fpe_list[i]); - } - xfree(c->fpe_list); - xfree(c->fontname); - xfree(c); - return TRUE; -} - -int -OpenFont(ClientPtr client, XID fid, Mask flags, unsigned lenfname, char *pfontname) -{ - OFclosurePtr c; - int i; - FontPtr cached = (FontPtr)0; - -#ifdef FONTDEBUG - char *f; - f = (char *)xalloc(lenfname + 1); - memmove(f, pfontname, lenfname); - f[lenfname] = '\0'; - ErrorF("OpenFont: fontname is \"%s\"\n", f); - xfree(f); -#endif - if (!lenfname || lenfname > XLFDMAXFONTNAMELEN) - return BadName; - if (patternCache) - { - - /* - ** Check name cache. If we find a cached version of this font that - ** is cachable, immediately satisfy the request with it. If we find - ** a cached version of this font that is non-cachable, we do not - ** satisfy the request with it. Instead, we pass the FontPtr to the - ** FPE's open_font code (the fontfile FPE in turn passes the - ** information to the rasterizer; the fserve FPE ignores it). - ** - ** Presumably, the font is marked non-cachable because the FPE has - ** put some licensing restrictions on it. If the FPE, using - ** whatever logic it relies on, determines that it is willing to - ** share this existing font with the client, then it has the option - ** to return the FontPtr we passed it as the newly-opened font. - ** This allows the FPE to exercise its licensing logic without - ** having to create another instance of a font that already exists. - */ - - cached = FindCachedFontPattern(patternCache, pfontname, lenfname); - if (cached && cached->info.cachable) - { - if (!AddResource(fid, RT_FONT, (pointer) cached)) - return BadAlloc; - cached->refcnt++; - return Success; - } - } - c = (OFclosurePtr) xalloc(sizeof(OFclosureRec)); - if (!c) - return BadAlloc; - c->fontname = (char *) xalloc(lenfname); - c->origFontName = pfontname; - c->origFontNameLen = lenfname; - if (!c->fontname) { - xfree(c); - return BadAlloc; - } - /* - * copy the current FPE list, so that if it gets changed by another client - * while we're blocking, the request still appears atomic - */ - c->fpe_list = (FontPathElementPtr *) - xalloc(sizeof(FontPathElementPtr) * num_fpes); - if (!c->fpe_list) { - xfree(c->fontname); - xfree(c); - return BadAlloc; - } - memmove(c->fontname, pfontname, lenfname); - for (i = 0; i < num_fpes; i++) { - c->fpe_list[i] = font_path_elements[i]; - UseFPE(c->fpe_list[i]); - } - c->client = client; - c->fontid = fid; - c->current_fpe = 0; - c->num_fpes = num_fpes; - c->fnamelen = lenfname; - c->slept = FALSE; - c->flags = flags; - c->non_cachable_font = cached; - - (void) doOpenFont(client, c); - return Success; -} - -/** - * Decrement font's ref count, and free storage if ref count equals zero - * - * \param value must conform to DeleteType - */ -int -CloseFont(pointer value, XID fid) -{ - int nscr; - ScreenPtr pscr; - FontPathElementPtr fpe; - FontPtr pfont = (FontPtr)value; - - if (pfont == NullFont) - return (Success); - if (--pfont->refcnt == 0) { - if (patternCache) - RemoveCachedFontPattern (patternCache, pfont); - /* - * since the last reference is gone, ask each screen to free any - * storage it may have allocated locally for it. - */ - for (nscr = 0; nscr < screenInfo.numScreens; nscr++) { - pscr = screenInfo.screens[nscr]; - if (pscr->UnrealizeFont) - (*pscr->UnrealizeFont) (pscr, pfont); - } - if (pfont == defaultFont) - defaultFont = NULL; -#ifdef LBX - LbxFreeFontTag(pfont); -#endif -#ifdef XF86BIGFONT - { - extern void XF86BigfontFreeFontShm(FontPtr); - XF86BigfontFreeFontShm(pfont); - } -#endif - fpe = pfont->fpe; - (*fpe_functions[fpe->type].close_font) (fpe, pfont); - FreeFPE(fpe); - } - return (Success); -} - - -/***====================================================================***/ - -/** - * Sets up pReply as the correct QueryFontReply for pFont with the first - * nProtoCCIStructs char infos. - * - * \param pReply caller must allocate this storage - */ -void -QueryFont(FontPtr pFont, xQueryFontReply *pReply, int nProtoCCIStructs) -{ - FontPropPtr pFP; - int r, - c, - i; - xFontProp *prFP; - xCharInfo *prCI; - xCharInfo *charInfos[256]; - unsigned char chars[512]; - int ninfos; - unsigned long ncols; - unsigned long count; - - /* pr->length set in dispatch */ - pReply->minCharOrByte2 = pFont->info.firstCol; - pReply->defaultChar = pFont->info.defaultCh; - pReply->maxCharOrByte2 = pFont->info.lastCol; - pReply->drawDirection = pFont->info.drawDirection; - pReply->allCharsExist = pFont->info.allExist; - pReply->minByte1 = pFont->info.firstRow; - pReply->maxByte1 = pFont->info.lastRow; - pReply->fontAscent = pFont->info.fontAscent; - pReply->fontDescent = pFont->info.fontDescent; - - pReply->minBounds = pFont->info.ink_minbounds; - pReply->maxBounds = pFont->info.ink_maxbounds; - - pReply->nFontProps = pFont->info.nprops; - pReply->nCharInfos = nProtoCCIStructs; - - for (i = 0, pFP = pFont->info.props, prFP = (xFontProp *) (&pReply[1]); - i < pFont->info.nprops; - i++, pFP++, prFP++) { - prFP->name = pFP->name; - prFP->value = pFP->value; - } - - ninfos = 0; - ncols = (unsigned long) (pFont->info.lastCol - pFont->info.firstCol + 1); - prCI = (xCharInfo *) (prFP); - for (r = pFont->info.firstRow; - ninfos < nProtoCCIStructs && r <= (int)pFont->info.lastRow; - r++) { - i = 0; - for (c = pFont->info.firstCol; c <= (int)pFont->info.lastCol; c++) { - chars[i++] = r; - chars[i++] = c; - } - (*pFont->get_metrics) (pFont, ncols, chars, - TwoD16Bit, &count, charInfos); - i = 0; - for (i = 0; i < (int) count && ninfos < nProtoCCIStructs; i++) { - *prCI = *charInfos[i]; - prCI++; - ninfos++; - } - } - return; -} - -static Bool -doListFontsAndAliases(ClientPtr client, LFclosurePtr c) -{ - FontPathElementPtr fpe; - int err = Successful; - FontNamesPtr names = NULL; - char *name, *resolved=NULL; - int namelen, resolvedlen; - int nnames; - int stringLens; - int i; - xListFontsReply reply; - char *bufptr; - char *bufferStart; - int aliascount = 0; - - if (client->clientGone) - { - if (c->current.current_fpe < c->num_fpes) - { - fpe = c->fpe_list[c->current.current_fpe]; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - } - err = Successful; - goto bail; - } - - if (!c->current.patlen) - goto finish; - - while (c->current.current_fpe < c->num_fpes) { - fpe = c->fpe_list[c->current.current_fpe]; - err = Successful; - - if (!fpe_functions[fpe->type].start_list_fonts_and_aliases) - { - /* This FPE doesn't support/require list_fonts_and_aliases */ - - err = (*fpe_functions[fpe->type].list_fonts) - ((pointer) c->client, fpe, c->current.pattern, - c->current.patlen, c->current.max_names - c->names->nnames, - c->names); - - if (err == Suspended) { - if (!c->slept) { - c->slept = TRUE; - ClientSleep(client, - (ClientSleepProcPtr)doListFontsAndAliases, - (pointer) c); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFont (1): client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - - err = BadFontName; - } - else - { - /* Start of list_fonts_and_aliases functionality. Modeled - after list_fonts_with_info in that it resolves aliases, - except that the information collected from FPEs is just - names, not font info. Each list_next_font_or_alias() - returns either a name into name/namelen or an alias into - name/namelen and its target name into resolved/resolvedlen. - The code at this level then resolves the alias by polling - the FPEs. */ - - if (!c->current.list_started) { - err = (*fpe_functions[fpe->type].start_list_fonts_and_aliases) - ((pointer) c->client, fpe, c->current.pattern, - c->current.patlen, c->current.max_names - c->names->nnames, - &c->current.private); - if (err == Suspended) { - if (!c->slept) { - ClientSleep(client, - (ClientSleepProcPtr)doListFontsAndAliases, - (pointer) c); - c->slept = TRUE; - } - return TRUE; - } - if (err == Successful) - c->current.list_started = TRUE; - } - if (err == Successful) { - char *tmpname; - name = 0; - err = (*fpe_functions[fpe->type].list_next_font_or_alias) - ((pointer) c->client, fpe, &name, &namelen, &tmpname, - &resolvedlen, c->current.private); - if (err == Suspended) { - if (!c->slept) { - ClientSleep(client, - (ClientSleepProcPtr)doListFontsAndAliases, - (pointer) c); - c->slept = TRUE; -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFont (2): client [%lx] sleeping.\n", client); -#endif -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFont (3): client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - if (err == FontNameAlias) { - if (resolved) xfree(resolved); - resolved = (char *) xalloc(resolvedlen + 1); - if (resolved) - memmove(resolved, tmpname, resolvedlen + 1); - } - } - - if (err == Successful) - { - if (c->haveSaved) - { - if (c->savedName) - (void)AddFontNamesName(c->names, c->savedName, - c->savedNameLen); - } - else - (void)AddFontNamesName(c->names, name, namelen); - } - - /* - * When we get an alias back, save our state and reset back to - * the start of the FPE looking for the specified name. As - * soon as a real font is found for the alias, pop back to the - * old state - */ - else if (err == FontNameAlias) { - char tmp_pattern[XLFDMAXFONTNAMELEN]; - /* - * when an alias recurses, we need to give - * the last FPE a chance to clean up; so we call - * it again, and assume that the error returned - * is BadFontName, indicating the alias resolution - * is complete. - */ - memmove(tmp_pattern, resolved, resolvedlen); - if (c->haveSaved) - { - char *tmpname; - int tmpnamelen; - - tmpname = 0; - (void) (*fpe_functions[fpe->type].list_next_font_or_alias) - ((pointer) c->client, fpe, &tmpname, &tmpnamelen, - &tmpname, &tmpnamelen, c->current.private); - if (--aliascount <= 0) - { - err = BadFontName; - goto ContBadFontName; - } - } - else - { - c->saved = c->current; - c->haveSaved = TRUE; - if (c->savedName) - xfree(c->savedName); - c->savedName = (char *)xalloc(namelen + 1); - if (c->savedName) - memmove(c->savedName, name, namelen + 1); - c->savedNameLen = namelen; - aliascount = 20; - } - memmove(c->current.pattern, tmp_pattern, resolvedlen); - c->current.patlen = resolvedlen; - c->current.max_names = c->names->nnames + 1; - c->current.current_fpe = -1; - c->current.private = 0; - err = BadFontName; - } - } - /* - * At the end of this FPE, step to the next. If we've finished - * processing an alias, pop state back. If we've collected enough - * font names, quit. - */ - if (err == BadFontName) { - ContBadFontName: ; - c->current.list_started = FALSE; - c->current.current_fpe++; - err = Successful; - if (c->haveSaved) - { - if (c->names->nnames == c->current.max_names || - c->current.current_fpe == c->num_fpes) { - c->haveSaved = FALSE; - c->current = c->saved; - /* Give the saved namelist a chance to clean itself up */ - continue; - } - } - if (c->names->nnames == c->current.max_names) - break; - } - } - - /* - * send the reply - */ - if (err != Successful) { - SendErrorToClient(client, X_ListFonts, 0, 0, FontToXError(err)); - goto bail; - } - -finish: - - names = c->names; - nnames = names->nnames; - client = c->client; - stringLens = 0; - for (i = 0; i < nnames; i++) - stringLens += (names->length[i] <= 255) ? names->length[i] : 0; - - reply.type = X_Reply; - reply.length = (stringLens + nnames + 3) >> 2; - reply.nFonts = nnames; - reply.sequenceNumber = client->sequence; - - bufptr = bufferStart = (char *) ALLOCATE_LOCAL(reply.length << 2); - - if (!bufptr && reply.length) { - SendErrorToClient(client, X_ListFonts, 0, 0, BadAlloc); - goto bail; - } - /* - * since WriteToClient long word aligns things, copy to temp buffer and - * write all at once - */ - for (i = 0; i < nnames; i++) { - if (names->length[i] > 255) - reply.nFonts--; - else - { - { - /* dirty hack: don't list to client fonts not existing on the remote side */ - char tmp[256]; - - memcpy(tmp, names->names[i], names->length[i]); - tmp[ names->length[i] ] = 0; - - if (nxagentFontLookUp(tmp) == 0) - { -#ifdef NXAGENT_FONTMATCH_DEBUG - fprintf(stderr, "doListFontsAndAliases:\n"); - fprintf(stderr, " removing font: %s \n", tmp); -#endif - reply.nFonts--; - stringLens -= names->length[i]; - continue; - } - } - *bufptr++ = names->length[i]; - memmove( bufptr, names->names[i], names->length[i]); - bufptr += names->length[i]; - } - } - nnames = reply.nFonts; - reply.length = (stringLens + nnames + 3) >> 2; - client->pSwapReplyFunc = ReplySwapVector[X_ListFonts]; - WriteSwappedDataToClient(client, sizeof(xListFontsReply), &reply); - (void) WriteToClient(client, stringLens + nnames, bufferStart); - DEALLOCATE_LOCAL(bufferStart); - -bail: - if (c->slept) - { - ClientWakeup(client); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFont: client [%lx] wakeup.\n", client); -#endif - } - for (i = 0; i < c->num_fpes; i++) - FreeFPE(c->fpe_list[i]); - xfree(c->fpe_list); - if (c->savedName) xfree(c->savedName); - FreeFontNames(names); - xfree(c); - if (resolved) xfree(resolved); - return TRUE; -} - -int -ListFonts(ClientPtr client, unsigned char *pattern, unsigned length, - unsigned max_names) -{ - int i; - LFclosurePtr c; - - /* - * The right error to return here would be BadName, however the - * specification does not allow for a Name error on this request. - * Perhaps a better solution would be to return a nil list, i.e. - * a list containing zero fontnames. - */ - if (length > XLFDMAXFONTNAMELEN) - return BadAlloc; - - if (!(c = (LFclosurePtr) xalloc(sizeof *c))) - return BadAlloc; - c->fpe_list = (FontPathElementPtr *) - xalloc(sizeof(FontPathElementPtr) * num_fpes); - if (!c->fpe_list) { - xfree(c); - return BadAlloc; - } - c->names = MakeFontNamesRecord(max_names < nxagentMaxFontNames ? max_names : nxagentMaxFontNames); - if (!c->names) - { - xfree(c->fpe_list); - xfree(c); - return BadAlloc; - } - memmove( c->current.pattern, pattern, length); - for (i = 0; i < num_fpes; i++) { - c->fpe_list[i] = font_path_elements[i]; - UseFPE(c->fpe_list[i]); - } - c->client = client; - c->num_fpes = num_fpes; - c->current.patlen = length; - c->current.current_fpe = 0; - c->current.max_names = max_names; - c->current.list_started = FALSE; - c->current.private = 0; - c->haveSaved = FALSE; - c->slept = FALSE; - c->savedName = 0; - doListFontsAndAliases(client, c); - return Success; -} - -int -doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c) -{ - FontPathElementPtr fpe; - int err = Successful; - char *name; - int namelen; - int numFonts; - FontInfoRec fontInfo, - *pFontInfo; - xListFontsWithInfoReply *reply; - int length; - xFontProp *pFP; - int i; - int aliascount = 0; - xListFontsWithInfoReply finalReply; - - if (client->clientGone) - { - if (c->current.current_fpe < c->num_fpes) - { - fpe = c->fpe_list[c->current.current_fpe]; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - } - err = Successful; - goto bail; - } - client->pSwapReplyFunc = ReplySwapVector[X_ListFontsWithInfo]; - if (!c->current.patlen) - goto finish; - while (c->current.current_fpe < c->num_fpes) - { - fpe = c->fpe_list[c->current.current_fpe]; - err = Successful; - if (!c->current.list_started) - { - err = (*fpe_functions[fpe->type].start_list_fonts_with_info) - (client, fpe, c->current.pattern, c->current.patlen, - c->current.max_names, &c->current.private); - if (err == Suspended) - { - if (!c->slept) - { - ClientSleep(client, (ClientSleepProcPtr)doListFontsWithInfo, c); - c->slept = TRUE; -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFontWinfo (1): client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - if (err == Successful) - c->current.list_started = TRUE; - } - if (err == Successful) - { - name = 0; - pFontInfo = &fontInfo; - err = (*fpe_functions[fpe->type].list_next_font_with_info) - (client, fpe, &name, &namelen, &pFontInfo, - &numFonts, c->current.private); - if (err == Suspended) - { - if (!c->slept) - { - ClientSleep(client, - (ClientSleepProcPtr)doListFontsWithInfo, - c); - c->slept = TRUE; -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFontWinfo (2): client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - } - /* - * When we get an alias back, save our state and reset back to the - * start of the FPE looking for the specified name. As soon as a real - * font is found for the alias, pop back to the old state - */ - if (err == FontNameAlias) - { - /* - * when an alias recurses, we need to give - * the last FPE a chance to clean up; so we call - * it again, and assume that the error returned - * is BadFontName, indicating the alias resolution - * is complete. - */ - if (c->haveSaved) - { - char *tmpname; - int tmpnamelen; - FontInfoPtr tmpFontInfo; - - tmpname = 0; - tmpFontInfo = &fontInfo; - (void) (*fpe_functions[fpe->type].list_next_font_with_info) - (client, fpe, &tmpname, &tmpnamelen, &tmpFontInfo, - &numFonts, c->current.private); - if (--aliascount <= 0) - { - err = BadFontName; - goto ContBadFontName; - } - } - else - { - c->saved = c->current; - c->haveSaved = TRUE; - c->savedNumFonts = numFonts; - if (c->savedName) - xfree(c->savedName); - c->savedName = (char *)xalloc(namelen + 1); - if (c->savedName) - memmove(c->savedName, name, namelen + 1); - aliascount = 20; - } - memmove(c->current.pattern, name, namelen); - c->current.patlen = namelen; - c->current.max_names = 1; - c->current.current_fpe = 0; - c->current.private = 0; - c->current.list_started = FALSE; - } - /* - * At the end of this FPE, step to the next. If we've finished - * processing an alias, pop state back. If we've sent enough font - * names, quit. Always wait for BadFontName to let the FPE - * have a chance to clean up. - */ - else if (err == BadFontName) - { - ContBadFontName: ; - c->current.list_started = FALSE; - c->current.current_fpe++; - err = Successful; - if (c->haveSaved) - { - if (c->current.max_names == 0 || - c->current.current_fpe == c->num_fpes) - { - c->haveSaved = FALSE; - c->saved.max_names -= (1 - c->current.max_names); - c->current = c->saved; - } - } - else if (c->current.max_names == 0) - break; - } - else if (err == Successful) - { - - if (c->haveSaved) - { - numFonts = c->savedNumFonts; - name = c->savedName; - namelen = strlen(name); - } - - if (nxagentFontLookUp(name) == 0) - { -#ifdef NXAGENT_FONTMATCH_DEBUG - fprintf(stderr, "doListFontsAndAliases (with info):\n"); - fprintf(stderr, " removing font: %s \n", name); -#endif - continue; - } - - length = sizeof(*reply) + pFontInfo->nprops * sizeof(xFontProp); - reply = c->reply; - if (c->length < length) - { - reply = (xListFontsWithInfoReply *) xrealloc(c->reply, length); - if (!reply) - { - err = AllocError; - break; - } - c->reply = reply; - c->length = length; - } - reply->type = X_Reply; - reply->length = (sizeof *reply - sizeof(xGenericReply) + - pFontInfo->nprops * sizeof(xFontProp) + - namelen + 3) >> 2; - reply->sequenceNumber = client->sequence; - reply->nameLength = namelen; - reply->minBounds = pFontInfo->ink_minbounds; - reply->maxBounds = pFontInfo->ink_maxbounds; - reply->minCharOrByte2 = pFontInfo->firstCol; - reply->maxCharOrByte2 = pFontInfo->lastCol; - reply->defaultChar = pFontInfo->defaultCh; - reply->nFontProps = pFontInfo->nprops; - reply->drawDirection = pFontInfo->drawDirection; - reply->minByte1 = pFontInfo->firstRow; - reply->maxByte1 = pFontInfo->lastRow; - reply->allCharsExist = pFontInfo->allExist; - reply->fontAscent = pFontInfo->fontAscent; - reply->fontDescent = pFontInfo->fontDescent; - reply->nReplies = numFonts; - pFP = (xFontProp *) (reply + 1); - for (i = 0; i < pFontInfo->nprops; i++) - { - pFP->name = pFontInfo->props[i].name; - pFP->value = pFontInfo->props[i].value; - pFP++; - } - WriteSwappedDataToClient(client, length, reply); - (void) WriteToClient(client, namelen, name); - if (pFontInfo == &fontInfo) - { - xfree(fontInfo.props); - xfree(fontInfo.isStringProp); - } - --c->current.max_names; - } - } -finish: - length = sizeof(xListFontsWithInfoReply); - bzero((char *) &finalReply, sizeof(xListFontsWithInfoReply)); - finalReply.type = X_Reply; - finalReply.sequenceNumber = client->sequence; - finalReply.length = (sizeof(xListFontsWithInfoReply) - - sizeof(xGenericReply)) >> 2; - WriteSwappedDataToClient(client, length, &finalReply); -bail: - if (c->slept) - { - ClientWakeup(client); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doListFontWinfo: client [%lx] wakeup.\n", client); -#endif - } - for (i = 0; i < c->num_fpes; i++) - FreeFPE(c->fpe_list[i]); - xfree(c->reply); - xfree(c->fpe_list); - if (c->savedName) xfree(c->savedName); - xfree(c); - return TRUE; -} - -int -StartListFontsWithInfo(ClientPtr client, int length, unsigned char *pattern, - int max_names) -{ - int i; - LFWIclosurePtr c; - - /* - * The right error to return here would be BadName, however the - * specification does not allow for a Name error on this request. - * Perhaps a better solution would be to return a nil list, i.e. - * a list containing zero fontnames. - */ - if (length > XLFDMAXFONTNAMELEN) - return BadAlloc; - - if (!(c = (LFWIclosurePtr) xalloc(sizeof *c))) - goto badAlloc; - c->fpe_list = (FontPathElementPtr *) - xalloc(sizeof(FontPathElementPtr) * num_fpes); - if (!c->fpe_list) - { - xfree(c); - goto badAlloc; - } - memmove(c->current.pattern, pattern, length); - for (i = 0; i < num_fpes; i++) - { - c->fpe_list[i] = font_path_elements[i]; - UseFPE(c->fpe_list[i]); - } - c->client = client; - c->num_fpes = num_fpes; - c->reply = 0; - c->length = 0; - c->current.patlen = length; - c->current.current_fpe = 0; - c->current.max_names = max_names; - c->current.list_started = FALSE; - c->current.private = 0; - c->savedNumFonts = 0; - c->haveSaved = FALSE; - c->slept = FALSE; - c->savedName = 0; - doListFontsWithInfo(client, c); - return Success; -badAlloc: - return BadAlloc; -} - -#define TextEltHeader 2 -#define FontShiftSize 5 -static XID clearGC[] = { CT_NONE }; -#define clearGCmask (GCClipMask) - -int -doPolyText(ClientPtr client, register PTclosurePtr c) -{ - register FontPtr pFont = c->pGC->font, oldpFont; - Font fid, oldfid; - int err = Success, lgerr; /* err is in X error, not font error, space */ - enum { NEVER_SLEPT, START_SLEEP, SLEEPING } client_state = NEVER_SLEPT; - FontPathElementPtr fpe; - GC *origGC = NULL; - - if (client->clientGone) - { - fpe = c->pGC->font->fpe; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - - if (c->slept) - { - /* Client has died, but we cannot bail out right now. We - need to clean up after the work we did when going to - sleep. Setting the drawable pointer to 0 makes this - happen without any attempts to render or perform other - unnecessary activities. */ - c->pDraw = (DrawablePtr)0; - } - else - { - err = Success; - goto bail; - } - } - - /* Make sure our drawable hasn't disappeared while we slept. */ - if (c->slept && - c->pDraw && - c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did, - RC_DRAWABLE, SecurityWriteAccess)) - { - /* Our drawable has disappeared. Treat like client died... ask - the FPE code to clean up after client and avoid further - rendering while we clean up after ourself. */ - fpe = c->pGC->font->fpe; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - c->pDraw = (DrawablePtr)0; - } - - client_state = c->slept ? SLEEPING : NEVER_SLEPT; - - while (c->endReq - c->pElt > TextEltHeader) - { - if (*c->pElt == FontChange) - { - if (c->endReq - c->pElt < FontShiftSize) - { - err = BadLength; - goto bail; - } - - oldpFont = pFont; - oldfid = fid; - - fid = ((Font)*(c->pElt+4)) /* big-endian */ - | ((Font)*(c->pElt+3)) << 8 - | ((Font)*(c->pElt+2)) << 16 - | ((Font)*(c->pElt+1)) << 24; - pFont = (FontPtr)SecurityLookupIDByType(client, fid, RT_FONT, - SecurityReadAccess); - if (!pFont) - { - client->errorValue = fid; - err = BadFont; - /* restore pFont and fid for step 4 (described below) */ - pFont = oldpFont; - fid = oldfid; - - /* If we're in START_SLEEP mode, the following step - shortens the request... in the unlikely event that - the fid somehow becomes valid before we come through - again to actually execute the polytext, which would - then mess up our refcounting scheme badly. */ - c->err = err; - c->endReq = c->pElt; - - goto bail; - } - - /* Step 3 (described below) on our new font */ - if (client_state == START_SLEEP) - pFont->refcnt++; - else - { - if (pFont != c->pGC->font && c->pDraw) - { - ChangeGC( c->pGC, GCFont, &fid); - ValidateGC(c->pDraw, c->pGC); - if (c->reqType == X_PolyText8) - c->polyText = (PolyTextPtr) c->pGC->ops->PolyText8; - else - c->polyText = (PolyTextPtr) c->pGC->ops->PolyText16; - } - - /* Undo the refcnt++ we performed when going to sleep */ - if (client_state == SLEEPING) - (void)CloseFont(c->pGC->font, (Font)0); - } - c->pElt += FontShiftSize; - } - else /* print a string */ - { - unsigned char *pNextElt; - pNextElt = c->pElt + TextEltHeader + (*c->pElt)*c->itemSize; - if ( pNextElt > c->endReq) - { - err = BadLength; - goto bail; - } - if (client_state == START_SLEEP) - { - c->pElt = pNextElt; - continue; - } - if (c->pDraw) - { - lgerr = LoadGlyphs(client, c->pGC->font, *c->pElt, c->itemSize, - c->pElt + TextEltHeader); - } - else lgerr = Successful; - - if (lgerr == Suspended) - { - if (!c->slept) { - int len; - GC *pGC; - PTclosurePtr new_closure; - - /* We're putting the client to sleep. We need to do a few things - to ensure successful and atomic-appearing execution of the - remainder of the request. First, copy the remainder of the - request into a safe malloc'd area. Second, create a scratch GC - to use for the remainder of the request. Third, mark all fonts - referenced in the remainder of the request to prevent their - deallocation. Fourth, make the original GC look like the - request has completed... set its font to the final font value - from this request. These GC manipulations are for the unlikely - (but possible) event that some other client is using the GC. - Steps 3 and 4 are performed by running this procedure through - the remainder of the request in a special no-render mode - indicated by client_state = START_SLEEP. */ - - /* Step 1 */ - /* Allocate a malloc'd closure structure to replace - the local one we were passed */ - new_closure = (PTclosurePtr) xalloc(sizeof(PTclosureRec)); - if (!new_closure) - { - err = BadAlloc; - goto bail; - } - *new_closure = *c; - c = new_closure; - - len = c->endReq - c->pElt; - c->data = (unsigned char *)xalloc(len); - if (!c->data) - { - xfree(c); - err = BadAlloc; - goto bail; - } - memmove(c->data, c->pElt, len); - c->pElt = c->data; - c->endReq = c->pElt + len; - - /* Step 2 */ - - pGC = GetScratchGC(c->pGC->depth, c->pGC->pScreen); - if (!pGC) - { - xfree(c->data); - xfree(c); - err = BadAlloc; - goto bail; - } - - pGC->tileIsPixel = TRUE; - pGC->tile.pixel = 0; - pGC->stipple = NullPixmap; - - if ((err = CopyGC(c->pGC, pGC, GCFunction | - GCPlaneMask | GCForeground | - GCBackground | GCFillStyle | - GCTile | GCStipple | - GCTileStipXOrigin | - GCTileStipYOrigin | GCFont | - GCSubwindowMode | GCClipXOrigin | - GCClipYOrigin | GCClipMask)) != - Success) - { - FreeScratchGC(pGC); - xfree(c->data); - xfree(c); - err = BadAlloc; - goto bail; - } - origGC = c->pGC; - c->pGC = pGC; - ValidateGC(c->pDraw, c->pGC); - - c->slept = TRUE; - ClientSleep(client, - (ClientSleepProcPtr)doPolyText, - (pointer) c); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doPolyText (1): client [%lx] sleeping.\n", client); -#endif - - /* Set up to perform steps 3 and 4 */ - client_state = START_SLEEP; - continue; /* on to steps 3 and 4 */ - } - return TRUE; - } - else if (lgerr != Successful) - { - err = FontToXError(lgerr); - goto bail; - } - if (c->pDraw) - { - c->xorg += *((INT8 *)(c->pElt + 1)); /* must be signed */ - c->xorg = (* c->polyText)(c->pDraw, c->pGC, c->xorg, c->yorg, - *c->pElt, c->pElt + TextEltHeader); - } - c->pElt = pNextElt; - } - } - -bail: - - if (client_state == START_SLEEP) - { - /* Step 4 */ - if (pFont != origGC->font) - { - ChangeGC(origGC, GCFont, &fid); - ValidateGC(c->pDraw, origGC); - } - - /* restore pElt pointer for execution of remainder of the request */ - c->pElt = c->data; - return TRUE; - } - - if (c->err != Success) err = c->err; - if (err != Success && c->client != serverClient) { -#ifdef PANORAMIX - if (noPanoramiXExtension || !c->pGC->pScreen->myNum) -#endif - SendErrorToClient(c->client, c->reqType, 0, 0, err); - } - if (c->slept) - { - ClientWakeup(c->client); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doPolytext: client [%lx] wakeup.\n", client); -#endif - ChangeGC(c->pGC, clearGCmask, clearGC); - - /* Unreference the font from the scratch GC */ - CloseFont(c->pGC->font, (Font)0); - c->pGC->font = NullFont; - - FreeScratchGC(c->pGC); - xfree(c->data); - xfree(c); - } - return TRUE; -} - -int -PolyText(ClientPtr client, DrawablePtr pDraw, GC *pGC, unsigned char *pElt, - unsigned char *endReq, int xorg, int yorg, int reqType, XID did) -{ - PTclosureRec local_closure; - - local_closure.pElt = pElt; - local_closure.endReq = endReq; - local_closure.client = client; - local_closure.pDraw = pDraw; - local_closure.xorg = xorg; - local_closure.yorg = yorg; - if ((local_closure.reqType = reqType) == X_PolyText8) - { - local_closure.polyText = (PolyTextPtr) pGC->ops->PolyText8; - local_closure.itemSize = 1; - } - else - { - local_closure.polyText = (PolyTextPtr) pGC->ops->PolyText16; - local_closure.itemSize = 2; - } - local_closure.pGC = pGC; - local_closure.did = did; - local_closure.err = Success; - local_closure.slept = FALSE; - - (void) doPolyText(client, &local_closure); - return Success; -} - - -#undef TextEltHeader -#undef FontShiftSize - -int -doImageText(ClientPtr client, register ITclosurePtr c) -{ - int err = Success, lgerr; /* err is in X error, not font error, space */ - FontPathElementPtr fpe; - - if (client->clientGone) - { - fpe = c->pGC->font->fpe; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - err = Success; - goto bail; - } - - /* Make sure our drawable hasn't disappeared while we slept. */ - if (c->slept && - c->pDraw && - c->pDraw != (DrawablePtr)SecurityLookupIDByClass(client, c->did, - RC_DRAWABLE, SecurityWriteAccess)) - { - /* Our drawable has disappeared. Treat like client died... ask - the FPE code to clean up after client. */ - fpe = c->pGC->font->fpe; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - err = Success; - goto bail; - } - - lgerr = LoadGlyphs(client, c->pGC->font, c->nChars, c->itemSize, c->data); - if (lgerr == Suspended) - { - if (!c->slept) { - GC *pGC; - unsigned char *data; - ITclosurePtr new_closure; - - /* We're putting the client to sleep. We need to - save some state. Similar problem to that handled - in doPolyText, but much simpler because the - request structure is much simpler. */ - - new_closure = (ITclosurePtr) xalloc(sizeof(ITclosureRec)); - if (!new_closure) - { - err = BadAlloc; - goto bail; - } - *new_closure = *c; - c = new_closure; - - data = (unsigned char *)xalloc(c->nChars * c->itemSize); - if (!data) - { - xfree(c); - err = BadAlloc; - goto bail; - } - memmove(data, c->data, c->nChars * c->itemSize); - c->data = data; - - pGC = GetScratchGC(c->pGC->depth, c->pGC->pScreen); - if (!pGC) - { - xfree(c->data); - xfree(c); - err = BadAlloc; - goto bail; - } - - pGC->tileIsPixel = TRUE; - pGC->tile.pixel = 0; - pGC->stipple = NullPixmap; - - if ((err = CopyGC(c->pGC, pGC, GCFunction | GCPlaneMask | - GCForeground | GCBackground | GCFillStyle | - GCTile | GCStipple | GCTileStipXOrigin | - GCTileStipYOrigin | GCFont | - GCSubwindowMode | GCClipXOrigin | - GCClipYOrigin | GCClipMask)) != Success) - { - FreeScratchGC(pGC); - xfree(c->data); - xfree(c); - err = BadAlloc; - goto bail; - } - c->pGC = pGC; - ValidateGC(c->pDraw, c->pGC); - - c->slept = TRUE; - ClientSleep(client, (ClientSleepProcPtr)doImageText, (pointer) c); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doImageText (1): client [%lx] sleeping.\n", client); -#endif - - } - return TRUE; - } - else if (lgerr != Successful) - { - err = FontToXError(lgerr); - goto bail; - } - if (c->pDraw) - { - (* c->imageText)(c->pDraw, c->pGC, c->xorg, c->yorg, - c->nChars, c->data); - } - -bail: - - if (err != Success && c->client != serverClient) { - SendErrorToClient(c->client, c->reqType, 0, 0, err); - } - if (c->slept) - { - ClientWakeup(c->client); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: doImageText: client [%lx] wakeup.\n", client); -#endif - ChangeGC(c->pGC, clearGCmask, clearGC); - - /* Unreference the font from the scratch GC */ - CloseFont(c->pGC->font, (Font)0); - c->pGC->font = NullFont; - - FreeScratchGC(c->pGC); - xfree(c->data); - xfree(c); - } - return TRUE; -} - -int -ImageText(ClientPtr client, DrawablePtr pDraw, GC *pGC, int nChars, - unsigned char *data, int xorg, int yorg, int reqType, XID did) -{ - ITclosureRec local_closure; - - local_closure.client = client; - local_closure.pDraw = pDraw; - local_closure.pGC = pGC; - local_closure.nChars = nChars; - local_closure.data = data; - local_closure.xorg = xorg; - local_closure.yorg = yorg; - if ((local_closure.reqType = reqType) == X_ImageText8) - { - local_closure.imageText = (ImageTextPtr) pGC->ops->ImageText8; - local_closure.itemSize = 1; - } - else - { - local_closure.imageText = (ImageTextPtr) pGC->ops->ImageText16; - local_closure.itemSize = 2; - } - local_closure.did = did; - local_closure.slept = FALSE; - - (void) doImageText(client, &local_closure); - return Success; -} - - -/* does the necessary magic to figure out the fpe type */ -static int -DetermineFPEType(char *pathname) -{ - int i; - - for (i = 0; i < num_fpe_types; i++) { - if ((*fpe_functions[i].name_check) (pathname)) - return i; - } - return -1; -} - - -static void -FreeFontPath(FontPathElementPtr *list, int n, Bool force) -{ - int i; - - for (i = 0; i < n; i++) { - if (force) { - /* Sanity check that all refcounts will be 0 by the time - we get to the end of the list. */ - int found = 1; /* the first reference is us */ - int j; - for (j = i+1; j < n; j++) { - if (list[j] == list[i]) - found++; - } - if (list[i]->refcount != found) { - ErrorF("FreeFontPath: FPE \"%.*s\" refcount is %d, should be %d; fixing.\n", - list[i]->name_length, list[i]->name, - list[i]->refcount, found); - list[i]->refcount = found; /* ensure it will get freed */ - } - } - FreeFPE(list[i]); - } - xfree((char *) list); -} - -static FontPathElementPtr -find_existing_fpe(FontPathElementPtr *list, int num, unsigned char *name, int len) -{ - FontPathElementPtr fpe; - int i; - - for (i = 0; i < num; i++) { - fpe = list[i]; - if (fpe->name_length == len && memcmp(name, fpe->name, len) == 0) - return fpe; - } - return (FontPathElementPtr) 0; -} - - -static int -SetFontPathElements(int npaths, unsigned char *paths, int *bad, Bool persist) -{ - int i, err = 0; - int valid_paths = 0; - unsigned int len; - unsigned char *cp = paths; - FontPathElementPtr fpe = NULL, *fplist; - - fplist = (FontPathElementPtr *) - xalloc(sizeof(FontPathElementPtr) * npaths); - if (!fplist) { - *bad = 0; - return BadAlloc; - } - for (i = 0; i < num_fpe_types; i++) { - if (fpe_functions[i].set_path_hook) - (*fpe_functions[i].set_path_hook) (); - } - for (i = 0; i < npaths; i++) - { - len = (unsigned int) (*cp++); - - if (len == 0) - { - if (persist) - ErrorF ("Removing empty element from the valid list of fontpaths\n"); - err = BadValue; - } - else - { - /* if it's already in our active list, just reset it */ - /* - * note that this can miss FPE's in limbo -- may be worth catching - * them, though it'd muck up refcounting - */ - fpe = find_existing_fpe(font_path_elements, num_fpes, cp, len); - if (fpe) - { - err = (*fpe_functions[fpe->type].reset_fpe) (fpe); - if (err == Successful) - { - UseFPE(fpe);/* since it'll be decref'd later when freed - * from the old list */ - } - else - fpe = 0; - } - /* if error or can't do it, act like it's a new one */ - if (!fpe) - { - fpe = (FontPathElementPtr) xalloc(sizeof(FontPathElementRec)); - if (!fpe) - { - err = BadAlloc; - goto bail; - } - fpe->name = (char *) xalloc(len + 1); - if (!fpe->name) - { - xfree(fpe); - err = BadAlloc; - goto bail; - } - fpe->refcount = 1; - - strncpy(fpe->name, (char *) cp, (int) len); - fpe->name[len] = '\0'; - fpe->name_length = len; - fpe->type = DetermineFPEType(fpe->name); - if (fpe->type == -1) - err = BadValue; - else - err = (*fpe_functions[fpe->type].init_fpe) (fpe); - if (err != Successful) - { - #ifndef NXAGENT_SERVER - if (persist) - { - ErrorF("Could not init font path element %s, removing from list!\n", - fpe->name); - } - #endif - xfree (fpe->name); - xfree (fpe); - } - } - } - if (err != Successful) - { - if (!persist) - goto bail; - } - else - { - fplist[valid_paths++] = fpe; - } - cp += len; - } - - FreeFontPath(font_path_elements, num_fpes, FALSE); - font_path_elements = fplist; - if (patternCache) - EmptyFontPatternCache(patternCache); - num_fpes = valid_paths; - - return Success; -bail: - *bad = i; - while (--valid_paths >= 0) - FreeFPE(fplist[valid_paths]); - xfree(fplist); - return FontToXError(err); -} - -/* XXX -- do we need to pass error down to each renderer? */ -int -SetFontPath(ClientPtr client, int npaths, unsigned char *paths, int *error) -{ - int err = Success; - - if (npaths == 0) { - if (SetDefaultFontPath(defaultFontPath) != Success) - return BadValue; - } else { - err = SetFontPathElements(npaths, paths, error, FALSE); - } - return err; -} - -int -SetDefaultFontPath(char *path) -{ - unsigned char *cp, - *pp, - *nump, - *newpath; - int num = 1, - len, - err, - size = 0, - bad; - - /* get enough for string, plus values -- use up commas */ -#ifdef NX_TRANS_SOCKET - len = strlen(_NXGetFontPath(path)) + 1; -#else - len = strlen(path) + 1; -#endif - nump = cp = newpath = (unsigned char *) ALLOCATE_LOCAL(len); - if (!newpath) - return BadAlloc; -#ifdef NX_TRANS_SOCKET - pp = (unsigned char *) _NXGetFontPath(path); -#else - pp = (unsigned char *) path; -#endif - cp++; - while (*pp) { - if (*pp == ',') { - *nump = (unsigned char) size; - nump = cp++; - pp++; - num++; - size = 0; - } else { - *cp++ = *pp++; - size++; - } - } - *nump = (unsigned char) size; - - err = SetFontPathElements(num, newpath, &bad, TRUE); - - DEALLOCATE_LOCAL(newpath); - - return err; -} - -unsigned char * -GetFontPath(int *count, int *length) -{ - int i; - unsigned char *c; - int len; - FontPathElementPtr fpe; - - len = 0; - for (i = 0; i < num_fpes; i++) { - fpe = font_path_elements[i]; - len += fpe->name_length + 1; - } - font_path_string = (unsigned char *) xrealloc(font_path_string, len); - if (!font_path_string) - return NULL; - - c = font_path_string; - *length = 0; - for (i = 0; i < num_fpes; i++) { - fpe = font_path_elements[i]; - *c = fpe->name_length; - *length += *c++; - memmove(c, fpe->name, fpe->name_length); - c += fpe->name_length; - } - *count = num_fpes; - return font_path_string; -} - -int -LoadGlyphs(ClientPtr client, FontPtr pfont, unsigned nchars, int item_size, unsigned char *data) -{ - if (fpe_functions[pfont->fpe->type].load_glyphs) - return (*fpe_functions[pfont->fpe->type].load_glyphs) - (client, pfont, 0, nchars, item_size, data); - else - return Successful; -} - -void -DeleteClientFontStuff(ClientPtr client) -{ - int i; - FontPathElementPtr fpe; - - for (i = 0; i < num_fpes; i++) - { - fpe = font_path_elements[i]; - if (fpe_functions[fpe->type].client_died) - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - } -} - -void -InitFonts () -{ - patternCache = MakeFontPatternCache(); - -#ifndef KDRIVESERVER - if (screenInfo.numScreens > screenInfo.numVideoScreens) { - PrinterFontRegisterFpeFunctions(); - FontFileCheckRegisterFpeFunctions(); - check_fs_register_fpe_functions(); - } else -#endif - { -#ifdef KDRIVESERVER - BuiltinRegisterFpeFunctions(); -#endif - FontFileRegisterFpeFunctions(); -#ifndef NOFONTSERVERACCESS - fs_register_fpe_functions(); -#endif - } -} - -int -GetDefaultPointSize () -{ - return 120; -} - - -FontResolutionPtr -GetClientResolutions (int *num) -{ - if (requestingClient && requestingClient->fontResFunc != NULL && - !requestingClient->clientGone) - { - return (*requestingClient->fontResFunc)(requestingClient, num); - } - else { - static struct _FontResolution res; - ScreenPtr pScreen; - - pScreen = screenInfo.screens[0]; - res.x_resolution = (pScreen->width * 25.4) / pScreen->mmWidth; - /* - * XXX - we'll want this as long as bitmap instances are prevalent - so that we can match them from scalable fonts - */ - if (res.x_resolution < 88) - res.x_resolution = 75; - else - res.x_resolution = 100; - res.y_resolution = (pScreen->height * 25.4) / pScreen->mmHeight; - if (res.y_resolution < 88) - res.y_resolution = 75; - else - res.y_resolution = 100; - res.point_size = 120; - *num = 1; - return &res; - } -} - -/* - * returns the type index of the new fpe - * - * should be called (only once!) by each type of fpe when initialized - */ - -int -RegisterFPEFunctions(NameCheckFunc name_func, - InitFpeFunc init_func, - FreeFpeFunc free_func, - ResetFpeFunc reset_func, - OpenFontFunc open_func, - CloseFontFunc close_func, - ListFontsFunc list_func, - StartLfwiFunc start_lfwi_func, - NextLfwiFunc next_lfwi_func, - WakeupFpeFunc wakeup_func, - ClientDiedFunc client_died, - LoadGlyphsFunc load_glyphs, - StartLaFunc start_list_alias_func, - NextLaFunc next_list_alias_func, - SetPathFunc set_path_func) -{ - FPEFunctions *new; - - /* grow the list */ - new = (FPEFunctions *) xrealloc(fpe_functions, - (num_fpe_types + 1) * sizeof(FPEFunctions)); - if (!new) - return -1; - fpe_functions = new; - - fpe_functions[num_fpe_types].name_check = name_func; - fpe_functions[num_fpe_types].open_font = open_func; - fpe_functions[num_fpe_types].close_font = close_func; - fpe_functions[num_fpe_types].wakeup_fpe = wakeup_func; - fpe_functions[num_fpe_types].list_fonts = list_func; - fpe_functions[num_fpe_types].start_list_fonts_with_info = - start_lfwi_func; - fpe_functions[num_fpe_types].list_next_font_with_info = - next_lfwi_func; - fpe_functions[num_fpe_types].init_fpe = init_func; - fpe_functions[num_fpe_types].free_fpe = free_func; - fpe_functions[num_fpe_types].reset_fpe = reset_func; - fpe_functions[num_fpe_types].client_died = client_died; - fpe_functions[num_fpe_types].load_glyphs = load_glyphs; - fpe_functions[num_fpe_types].start_list_fonts_and_aliases = - start_list_alias_func; - fpe_functions[num_fpe_types].list_next_font_or_alias = - next_list_alias_func; - fpe_functions[num_fpe_types].set_path_hook = set_path_func; - - return num_fpe_types++; -} - -void -FreeFonts() -{ - if (patternCache) { - FreeFontPatternCache(patternCache); - patternCache = 0; - } - FreeFontPath(font_path_elements, num_fpes, TRUE); - font_path_elements = 0; - num_fpes = 0; - xfree(fpe_functions); - num_fpe_types = 0; - fpe_functions = (FPEFunctions *) 0; -} - -/* convenience functions for FS interface */ - -FontPtr -find_old_font(XID id) -{ - return (FontPtr) SecurityLookupIDByType(NullClient, id, RT_NONE, - SecurityUnknownAccess); -} - -Font -GetNewFontClientID() -{ - return FakeClientID(0); -} - -int -StoreFontClientFont(FontPtr pfont, Font id) -{ - return AddResource(id, RT_NONE, (pointer) pfont); -} - -void -DeleteFontClientID(Font id) -{ - FreeResource(id, RT_NONE); -} - -int -client_auth_generation(ClientPtr client) -{ - return 0; -} - -static int fs_handlers_installed = 0; -static unsigned int last_server_gen; - -int -init_fs_handlers(FontPathElementPtr fpe, BlockHandlerProcPtr block_handler) -{ - /* if server has reset, make sure the b&w handlers are reinstalled */ - if (last_server_gen < serverGeneration) { - last_server_gen = serverGeneration; - fs_handlers_installed = 0; - } - if (fs_handlers_installed == 0) { - -#ifdef DEBUG - fprintf(stderr, "adding FS b & w handlers\n"); -#endif - - if (!RegisterBlockAndWakeupHandlers(block_handler, - FontWakeup, (pointer) 0)) - return AllocError; - fs_handlers_installed++; - } - QueueFontWakeup(fpe); - return Successful; -} - -void -remove_fs_handlers(FontPathElementPtr fpe, BlockHandlerProcPtr block_handler, Bool all) -{ - if (all) { - /* remove the handlers if no one else is using them */ - if (--fs_handlers_installed == 0) { - -#ifdef DEBUG - fprintf(stderr, "removing FS b & w handlers\n"); -#endif - - RemoveBlockAndWakeupHandlers(block_handler, FontWakeup, - (pointer) 0); - } - } - RemoveFontWakeup(fpe); -} - -#ifdef DEBUG -#define GLWIDTHBYTESPADDED(bits,nbytes) \ - ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \ - :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \ - :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \ - :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \ - : 0) - -#define GLYPH_SIZE(ch, nbytes) \ - GLWIDTHBYTESPADDED((ch)->metrics.rightSideBearing - \ - (ch)->metrics.leftSideBearing, (nbytes)) -void -dump_char_ascii(CharInfoPtr cip) -{ - int r, - l; - int bpr; - int byte; - static unsigned maskTab[] = { - (1 << 7), (1 << 6), (1 << 5), (1 << 4), - (1 << 3), (1 << 2), (1 << 1), (1 << 0), - }; - - bpr = GLYPH_SIZE(cip, 4); - for (r = 0; r < (cip->metrics.ascent + cip->metrics.descent); r++) { - pointer row = (pointer) cip->bits + r * bpr; - - byte = 0; - for (l = 0; l <= (cip->metrics.rightSideBearing - - cip->metrics.leftSideBearing); l++) { - if (maskTab[l & 7] & (((int *)row)[l >> 3])) - putchar('X'); - else - putchar('.'); - } - putchar('\n'); - } -} - -#endif - - -typedef struct -{ - LFclosurePtr c; - OFclosurePtr oc; -} nxFs,*nxFsPtr; - -static Bool -#if NeedFunctionPrototypes -nxdoListFontsAndAliases(ClientPtr client, nxFsPtr fss) -#else -nxdoListFontsAndAliases(client, fss) - ClientPtr client; - nxFsPtr fss; -#endif -{ - LFclosurePtr c=fss->c; - OFclosurePtr oc=fss->oc; - FontPathElementPtr fpe; - int err = Successful; - char *name, *resolved=NULL; - int namelen, resolvedlen; - int i; - int aliascount = 0; - char tmp[256]; - tmp[0]=0; - if (client->clientGone) - { - if (c->current.current_fpe < c->num_fpes) - { - fpe = c->fpe_list[c->current.current_fpe]; - (*fpe_functions[fpe->type].client_died) ((pointer) client, fpe); - } - err = Successful; - goto bail; - } - - if (!c->current.patlen) - goto finish; - - while (c->current.current_fpe < c->num_fpes) { - fpe = c->fpe_list[c->current.current_fpe]; - err = Successful; - - if (!fpe_functions[fpe->type].start_list_fonts_and_aliases) - { - /* This FPE doesn't support/require list_fonts_and_aliases */ - - err = (*fpe_functions[fpe->type].list_fonts) - ((pointer) c->client, fpe, c->current.pattern, - c->current.patlen, c->current.max_names - c->names->nnames, - c->names); - - if (err == Suspended) { - if (!c->slept) { - c->slept = TRUE; - ClientSleep(client, - (ClientSleepProcPtr)nxdoListFontsAndAliases, - (pointer) fss); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: nxdoListFont (1): client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - - err = BadFontName; - } - else - { - /* Start of list_fonts_and_aliases functionality. Modeled - after list_fonts_with_info in that it resolves aliases, - except that the information collected from FPEs is just - names, not font info. Each list_next_font_or_alias() - returns either a name into name/namelen or an alias into - name/namelen and its target name into resolved/resolvedlen. - The code at this level then resolves the alias by polling - the FPEs. */ - - if (!c->current.list_started) { - err = (*fpe_functions[fpe->type].start_list_fonts_and_aliases) - ((pointer) c->client, fpe, c->current.pattern, - c->current.patlen, c->current.max_names - c->names->nnames, - &c->current.private); - if (err == Suspended) { - if (!c->slept) { - ClientSleep(client, - (ClientSleepProcPtr)nxdoListFontsAndAliases, - (pointer) fss); - c->slept = TRUE; -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: nxdoListFont (2): client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - if (err == Successful) - c->current.list_started = TRUE; - } - if (err == Successful) { - char *tmpname; - name = 0; - err = (*fpe_functions[fpe->type].list_next_font_or_alias) - ((pointer) c->client, fpe, &name, &namelen, &tmpname, - &resolvedlen, c->current.private); - if (err == Suspended) { - if (!c->slept) { - ClientSleep(client, - (ClientSleepProcPtr)nxdoListFontsAndAliases, - (pointer) fss); - c->slept = TRUE; -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: nxdoListFont (3): client [%lx] sleeping.\n", client); -#endif - } - return TRUE; - } - if (err == FontNameAlias) { - if (resolved) xfree(resolved); - resolved = (char *) xalloc(resolvedlen + 1); - if (resolved) - { - memmove(resolved, tmpname, resolvedlen); - resolved[resolvedlen] = '\0'; - } - } - } - - if (err == Successful) - { - if (c->haveSaved) - { - if (c->savedName) - { - memcpy(tmp,c->savedName,c->savedNameLen>255?255:c->savedNameLen); - tmp[c->savedNameLen>255?256:c->savedNameLen]=0; - if (nxagentFontLookUp(tmp)) - break; - else tmp[0]=0; - } - } - else - { - memcpy(tmp,name,namelen>255?255:namelen); - tmp[namelen>255?256:namelen]=0; - if (nxagentFontLookUp(tmp)) - break; - else tmp[0]=0; - } - } - - /* - * When we get an alias back, save our state and reset back to - * the start of the FPE looking for the specified name. As - * soon as a real font is found for the alias, pop back to the - * old state - */ - else if (err == FontNameAlias) { - char tmp_pattern[XLFDMAXFONTNAMELEN]; - /* - * when an alias recurses, we need to give - * the last FPE a chance to clean up; so we call - * it again, and assume that the error returned - * is BadFontName, indicating the alias resolution - * is complete. - */ - memmove(tmp_pattern, resolved, resolvedlen); - if (c->haveSaved) - { - char *tmpname; - int tmpnamelen; - - tmpname = 0; - (void) (*fpe_functions[fpe->type].list_next_font_or_alias) - ((pointer) c->client, fpe, &tmpname, &tmpnamelen, - &tmpname, &tmpnamelen, c->current.private); - if (--aliascount <= 0) - { - err = BadFontName; - goto ContBadFontName; - } - } - else - { - c->saved = c->current; - c->haveSaved = TRUE; - if (c->savedName) - xfree(c->savedName); - c->savedName = (char *)xalloc(namelen + 1); - if (c->savedName) - { - memmove(c->savedName, name, namelen); - c->savedName[namelen] = '\0'; - } - c->savedNameLen = namelen; - aliascount = 20; - } - memmove(c->current.pattern, tmp_pattern, resolvedlen); - c->current.patlen = resolvedlen; - c->current.max_names = c->names->nnames + 1; - c->current.current_fpe = -1; - c->current.private = 0; - err = BadFontName; - } - } - /* - * At the end of this FPE, step to the next. If we've finished - * processing an alias, pop state back. If we've collected enough - * font names, quit. - */ - if (err == BadFontName) { - ContBadFontName: ; - c->current.list_started = FALSE; - c->current.current_fpe++; - err = Successful; - if (c->haveSaved) - { - if (c->names->nnames == c->current.max_names || - c->current.current_fpe == c->num_fpes) { - c->haveSaved = FALSE; - c->current = c->saved; - /* Give the saved namelist a chance to clean itself up */ - continue; - } - } - if (c->names->nnames == c->current.max_names) - break; - } - } - - /* - * send the reply - */ -bail: -finish: - if (strlen(tmp)) - { -#ifdef NXAGENT_FONTMATCH_DEBUG - fprintf(stderr, "nxListFont changed (0) font to %s\n",tmp); -#endif - memcpy(oc->fontname, tmp, strlen(tmp)); - oc->fnamelen = strlen(tmp); - - oc->origFontName = oc->fontname; - oc->origFontNameLen = oc->fnamelen; - - } - else - { - for (i = 0; i < c->names->nnames; i++) - { - if (c->names->length[i] > 255) - continue; - else - { - memcpy(tmp, c->names->names[i], c->names->length[i]); - tmp[ c->names->length[i] ] = 0; - if (nxagentFontLookUp(tmp) == 0) - continue; - memcpy(oc->fontname, tmp, strlen(tmp)); - oc->fnamelen = strlen(tmp); - - oc->origFontName = oc->fontname; - oc->origFontNameLen = oc->fnamelen; - -#ifdef NXAGENT_FONTMATCH_DEBUG - fprintf(stderr, "nxListFont changed (1) font to %s\n",tmp); -#endif - break; - } - } - } - - if (c->slept) - { - ClientWakeup(client); -#ifdef NXAGENT_DEBUG - fprintf(stderr, " NXdixfonts: nxdoListFont: client [%lx] wakeup.\n", client); -#endif - } - for (i = 0; i < c->num_fpes; i++) - FreeFPE(c->fpe_list[i]); - xfree(c->fpe_list); - if (c->savedName) xfree(c->savedName); - FreeFontNames(c->names); - xfree(c); - xfree(fss); - if (resolved) xfree(resolved); - - return doOpenFont(client, oc); -} - -int -nxOpenFont(client, fid, flags, lenfname, pfontname) - ClientPtr client; - XID fid; - Mask flags; - unsigned lenfname; - char *pfontname; -{ - nxFsPtr fss; - LFclosurePtr c; - OFclosurePtr oc; - int i; - FontPtr cached = (FontPtr)0; - -#ifdef FONTDEBUG - char *f; - f = (char *)xalloc(lenfname + 1); - memmove(f, pfontname, lenfname); - f[lenfname] = '\0'; - ErrorF("OpenFont: fontname is \"%s\"\n", f); - xfree(f); -#endif - if (!lenfname || lenfname > XLFDMAXFONTNAMELEN) - return BadName; - if (patternCache) - { - - /* - ** Check name cache. If we find a cached version of this font that - ** is cachable, immediately satisfy the request with it. If we find - ** a cached version of this font that is non-cachable, we do not - ** satisfy the request with it. Instead, we pass the FontPtr to the - ** FPE's open_font code (the fontfile FPE in turn passes the - ** information to the rasterizer; the fserve FPE ignores it). - ** - ** Presumably, the font is marked non-cachable because the FPE has - ** put some licensing restrictions on it. If the FPE, using - ** whatever logic it relies on, determines that it is willing to - ** share this existing font with the client, then it has the option - ** to return the FontPtr we passed it as the newly-opened font. - ** This allows the FPE to exercise its licensing logic without - ** having to create another instance of a font that already exists. - */ - - cached = FindCachedFontPattern(patternCache, pfontname, lenfname); - if (cached && cached->info.cachable) - { - if (!AddResource(fid, RT_FONT, (pointer) cached)) - return BadAlloc; - cached->refcnt++; - return Success; - } - } - if (!(fss = (nxFsPtr) xalloc(sizeof(nxFs)))) - return BadAlloc; - - if (!(c = (LFclosurePtr) xalloc(sizeof *c))) - { - xfree(fss); - return BadAlloc; - } - c->fpe_list = (FontPathElementPtr *) - xalloc(sizeof(FontPathElementPtr) * num_fpes); - if (!c->fpe_list) { - xfree(c); - xfree(fss); - return BadAlloc; - } - c->names = MakeFontNamesRecord(100); - if (!c->names) - { - xfree(c->fpe_list); - xfree(c); - xfree(fss); - return BadAlloc; - } - memmove( c->current.pattern, pfontname, lenfname); - for (i = 0; i < num_fpes; i++) { - c->fpe_list[i] = font_path_elements[i]; - UseFPE(c->fpe_list[i]); - } - c->client = client; - c->num_fpes = num_fpes; - c->current.patlen = lenfname; - c->current.current_fpe = 0; - c->current.max_names = nxagentMaxFontNames; - c->current.list_started = FALSE; - c->current.private = 0; - c->haveSaved = FALSE; - c->slept = FALSE; - c->savedName = 0; - - oc = (OFclosurePtr) xalloc(sizeof(OFclosureRec)); - if (!oc) - { - for (i = 0; i < c->num_fpes; i++) - FreeFPE(c->fpe_list[i]); - xfree(c->fpe_list); - xfree(c); - xfree(fss); - return BadAlloc; - } - oc->fontname = (char *) xalloc(256);/* I don't want to deal with future reallocs errors */ - oc->origFontName = pfontname; - oc->origFontNameLen = lenfname; - if (!oc->fontname) { - for (i = 0; i < c->num_fpes; i++) - FreeFPE(c->fpe_list[i]); - xfree(c->fpe_list); - xfree(c); - xfree(oc); - xfree(fss); - return BadAlloc; - } - /* - * copy the current FPE list, so that if it gets changed by another client - * while we're blocking, the request still appears atomic - */ - oc->fpe_list = (FontPathElementPtr *) - xalloc(sizeof(FontPathElementPtr) * num_fpes); - if (!oc->fpe_list) { - xfree(oc->fontname); - xfree(oc); - for (i = 0; i < c->num_fpes; i++) - FreeFPE(c->fpe_list[i]); - xfree(c->fpe_list); - xfree(c); - xfree(fss); - return BadAlloc; - } - memmove(oc->fontname, pfontname, lenfname); - for (i = 0; i < num_fpes; i++) { - oc->fpe_list[i] = font_path_elements[i]; - UseFPE(oc->fpe_list[i]); - } - oc->client = client; - oc->fontid = fid; - oc->current_fpe = 0; - oc->num_fpes = num_fpes; - oc->fnamelen = lenfname; - oc->slept = FALSE; - oc->flags = flags; - oc->non_cachable_font = cached; - fss->c=c; - fss->oc=oc; - nxdoListFontsAndAliases(client, fss); - return Success; -} - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c deleted file mode 100644 index c5593ad..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c +++ /dev/null @@ -1,5044 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XdotOrg: xc/programs/Xserver/dix/events.c,v 1.17 2005/08/25 22:11:04 anholt Exp $ */ -/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.51 2004/01/12 17:04:52 tsi Exp $ */ -/************************************************************ - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -********************************************************/ - -/* The panoramix components contained the following notice */ -/***************************************************************** - -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. - -******************************************************************/ - -/***************************************************************** - -Copyright 2003-2005 Sun Microsystems, Inc. - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, and/or sell copies of the Software, and to permit persons -to whom the Software is furnished to do so, provided that the above -copyright notice(s) and this permission notice appear in all copies of -the Software and that both the above copyright notice(s) and this -permission notice appear in supporting documentation. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL -INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING -FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, -NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION -WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Except as contained in this notice, the name of a copyright holder -shall not be used in advertising or otherwise to promote the sale, use -or other dealings in this Software without prior written authorization -of the copyright holder. - -******************************************************************/ - -/* $Xorg: events.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include "Xlib.h" -#include "misc.h" -#include "resource.h" -#define NEED_EVENTS -#define NEED_REPLIES -#include <X11/Xproto.h> -#include "windowstr.h" -#include "inputstr.h" -#include "scrnintstr.h" -#include "cursorstr.h" - -#include "dixstruct.h" -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" -#endif -#include "globals.h" - -#ifdef XKB -#include <X11/extensions/XKBsrv.h> -extern Bool XkbFilterEvents(ClientPtr, int, xEvent *); -#endif - -#ifdef XCSECURITY -#define _SECURITY_SERVER -#include <X11/extensions/security.h> -#endif - -#ifdef XEVIE -extern WindowPtr *WindowTable; -extern int xevieFlag; -extern int xevieClientIndex; -extern DeviceIntPtr xeviemouse; -extern DeviceIntPtr xeviekb; -extern Mask xevieMask; -extern Mask xevieFilters[128]; -extern int xevieEventSent; -extern int xevieKBEventSent; -int xeviegrabState = 0; -xEvent *xeviexE; -#endif - -#include <X11/extensions/XIproto.h> -#include "exevents.h" -#include "extnsionst.h" - -#include "dixevents.h" -#include "dixgrabs.h" -#include "../../dix/dispatch.h" - -#include "NXlib.h" - -#include "Events.h" -#include "Windows.h" -#include "Args.h" - -#ifdef NX_DEBUG_INPUT -extern int nxagentDebugInput; -extern int nxagentDebugInputDevices; -#endif - -extern Display *nxagentDisplay; - -extern WindowPtr nxagentLastEnteredWindow; - -#define EXTENSION_EVENT_BASE 64 - -#define NoSuchEvent 0x80000000 /* so doesn't match NoEventMask */ -#define StructureAndSubMask ( StructureNotifyMask | SubstructureNotifyMask ) -#define AllButtonsMask ( \ - Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask ) -#define MotionMask ( \ - PointerMotionMask | Button1MotionMask | \ - Button2MotionMask | Button3MotionMask | Button4MotionMask | \ - Button5MotionMask | ButtonMotionMask ) -#define PropagateMask ( \ - KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | \ - MotionMask ) -#define PointerGrabMask ( \ - ButtonPressMask | ButtonReleaseMask | \ - EnterWindowMask | LeaveWindowMask | \ - PointerMotionHintMask | KeymapStateMask | \ - MotionMask ) -#define AllModifiersMask ( \ - ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | \ - Mod3Mask | Mod4Mask | Mod5Mask ) -#define AllEventMasks (lastEventMask|(lastEventMask-1)) -/* - * The following relies on the fact that the Button<n>MotionMasks are equal - * to the corresponding Button<n>Masks from the current modifier/button state. - */ -#define Motion_Filter(class) (PointerMotionMask | \ - (class)->state | (class)->motionMask) - - -#define WID(w) ((w) ? ((w)->drawable.id) : 0) - -#define XE_KBPTR (xE->u.keyButtonPointer) - - -#define rClient(obj) (clients[CLIENT_ID((obj)->resource)]) - -CallbackListPtr EventCallback; -CallbackListPtr DeviceEventCallback; - -#define DNPMCOUNT 8 - -Mask DontPropagateMasks[DNPMCOUNT]; -static int DontPropagateRefCnts[DNPMCOUNT]; - -#ifdef DEBUG -static debug_events = 0; -#endif -InputInfo inputInfo; - -static struct { - QdEventPtr pending, *pendtail; - DeviceIntPtr replayDev; /* kludgy rock to put flag for */ - WindowPtr replayWin; /* ComputeFreezes */ - Bool playingEvents; - TimeStamp time; -} syncEvents; - -/* - * The window trace information is used to avoid having to compute all the - * windows between the root and the current pointer window each time a button - * or key goes down. The grabs on each of those windows must be checked. - */ -static WindowPtr *spriteTrace = (WindowPtr *)NULL; -#define ROOT spriteTrace[0] -static int spriteTraceSize = 0; -static int spriteTraceGood; - -static struct { - CursorPtr current; - BoxRec hotLimits; /* logical constraints of hot spot */ - Bool confined; /* confined to screen */ -#if defined(SHAPE) || defined(PANORAMIX) - RegionPtr hotShape; /* additional logical shape constraint */ -#endif - BoxRec physLimits; /* physical constraints of hot spot */ - WindowPtr win; /* window of logical position */ - HotSpot hot; /* logical pointer position */ - HotSpot hotPhys; /* physical pointer position */ -#ifdef PANORAMIX - ScreenPtr screen; /* all others are in Screen 0 coordinates */ - RegionRec Reg1; /* Region 1 for confining motion */ - RegionRec Reg2; /* Region 2 for confining virtual motion */ - WindowPtr windows[MAXSCREENS]; - WindowPtr confineWin; /* confine window */ -#endif -} sprite; /* info about the cursor sprite */ - -#ifdef XEVIE -WindowPtr xeviewin; -HotSpot xeviehot; -#endif - -static void DoEnterLeaveEvents( - WindowPtr fromWin, - WindowPtr toWin, - int mode -); - -static WindowPtr XYToWindow( - int x, - int y -); - -extern int lastEvent; - -static Mask lastEventMask; - -#ifdef XINPUT -extern int DeviceMotionNotify; -#endif - -#define CantBeFiltered NoEventMask -static Mask filters[128] = -{ - NoSuchEvent, /* 0 */ - NoSuchEvent, /* 1 */ - KeyPressMask, /* KeyPress */ - KeyReleaseMask, /* KeyRelease */ - ButtonPressMask, /* ButtonPress */ - ButtonReleaseMask, /* ButtonRelease */ - PointerMotionMask, /* MotionNotify (initial state) */ - EnterWindowMask, /* EnterNotify */ - LeaveWindowMask, /* LeaveNotify */ - FocusChangeMask, /* FocusIn */ - FocusChangeMask, /* FocusOut */ - KeymapStateMask, /* KeymapNotify */ - ExposureMask, /* Expose */ - CantBeFiltered, /* GraphicsExpose */ - CantBeFiltered, /* NoExpose */ - VisibilityChangeMask, /* VisibilityNotify */ - SubstructureNotifyMask, /* CreateNotify */ - StructureAndSubMask, /* DestroyNotify */ - StructureAndSubMask, /* UnmapNotify */ - StructureAndSubMask, /* MapNotify */ - SubstructureRedirectMask, /* MapRequest */ - StructureAndSubMask, /* ReparentNotify */ - StructureAndSubMask, /* ConfigureNotify */ - SubstructureRedirectMask, /* ConfigureRequest */ - StructureAndSubMask, /* GravityNotify */ - ResizeRedirectMask, /* ResizeRequest */ - StructureAndSubMask, /* CirculateNotify */ - SubstructureRedirectMask, /* CirculateRequest */ - PropertyChangeMask, /* PropertyNotify */ - CantBeFiltered, /* SelectionClear */ - CantBeFiltered, /* SelectionRequest */ - CantBeFiltered, /* SelectionNotify */ - ColormapChangeMask, /* ColormapNotify */ - CantBeFiltered, /* ClientMessage */ - CantBeFiltered /* MappingNotify */ -}; - -static CARD8 criticalEvents[32] = -{ - 0x7c /* key and button events */ -}; - -#ifdef PANORAMIX - -static void ConfineToShape(RegionPtr shape, int *px, int *py); -static void SyntheticMotion(int x, int y); -static void PostNewCursor(void); - -static Bool -XineramaSetCursorPosition( - int x, - int y, - Bool generateEvent -){ - ScreenPtr pScreen; - BoxRec box; - int i; - - /* x,y are in Screen 0 coordinates. We need to decide what Screen - to send the message too and what the coordinates relative to - that screen are. */ - - pScreen = sprite.screen; - x += panoramiXdataPtr[0].x; - y += panoramiXdataPtr[0].y; - - if(!POINT_IN_REGION(pScreen, &XineramaScreenRegions[pScreen->myNum], - x, y, &box)) - { - FOR_NSCREENS(i) - { - if(i == pScreen->myNum) - continue; - if(POINT_IN_REGION(pScreen, &XineramaScreenRegions[i], x, y, &box)) - { - pScreen = screenInfo.screens[i]; - break; - } - } - } - - sprite.screen = pScreen; - sprite.hotPhys.x = x - panoramiXdataPtr[0].x; - sprite.hotPhys.y = y - panoramiXdataPtr[0].y; - x -= panoramiXdataPtr[pScreen->myNum].x; - y -= panoramiXdataPtr[pScreen->myNum].y; - - return (*pScreen->SetCursorPosition)(pScreen, x, y, generateEvent); -} - - -static void -XineramaConstrainCursor(void) -{ - ScreenPtr pScreen = sprite.screen; - BoxRec newBox = sprite.physLimits; - - /* Translate the constraining box to the screen - the sprite is actually on */ - newBox.x1 += panoramiXdataPtr[0].x - panoramiXdataPtr[pScreen->myNum].x; - newBox.x2 += panoramiXdataPtr[0].x - panoramiXdataPtr[pScreen->myNum].x; - newBox.y1 += panoramiXdataPtr[0].y - panoramiXdataPtr[pScreen->myNum].y; - newBox.y2 += panoramiXdataPtr[0].y - panoramiXdataPtr[pScreen->myNum].y; - - (* pScreen->ConstrainCursor)(pScreen, &newBox); -} - -static void -XineramaCheckPhysLimits( - CursorPtr cursor, - Bool generateEvents -){ - HotSpot new; - - if (!cursor) - return; - - new = sprite.hotPhys; - - /* I don't care what the DDX has to say about it */ - sprite.physLimits = sprite.hotLimits; - - /* constrain the pointer to those limits */ - if (new.x < sprite.physLimits.x1) - new.x = sprite.physLimits.x1; - else - if (new.x >= sprite.physLimits.x2) - new.x = sprite.physLimits.x2 - 1; - if (new.y < sprite.physLimits.y1) - new.y = sprite.physLimits.y1; - else - if (new.y >= sprite.physLimits.y2) - new.y = sprite.physLimits.y2 - 1; - - if (sprite.hotShape) /* more work if the shape is a mess */ - ConfineToShape(sprite.hotShape, &new.x, &new.y); - - if((new.x != sprite.hotPhys.x) || (new.y != sprite.hotPhys.y)) - { - XineramaSetCursorPosition (new.x, new.y, generateEvents); - if (!generateEvents) - SyntheticMotion(new.x, new.y); - } - - /* Tell DDX what the limits are */ - XineramaConstrainCursor(); -} - - -static Bool -XineramaSetWindowPntrs(WindowPtr pWin) -{ - if(pWin == WindowTable[0]) { - memcpy(sprite.windows, WindowTable, - PanoramiXNumScreens*sizeof(WindowPtr)); - } else { - PanoramiXRes *win; - int i; - - win = (PanoramiXRes*)LookupIDByType(pWin->drawable.id, XRT_WINDOW); - - if(!win) - return FALSE; - - for(i = 0; i < PanoramiXNumScreens; i++) { - sprite.windows[i] = LookupIDByType(win->info[i].id, RT_WINDOW); - if(!sprite.windows[i]) /* window is being unmapped */ - return FALSE; - } - } - return TRUE; -} - -static void -XineramaCheckVirtualMotion( - QdEventPtr qe, - WindowPtr pWin -){ - - if (qe) - { - sprite.hot.pScreen = qe->pScreen; /* should always be Screen 0 */ -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = qe->event->u.keyButtonPointer.rootX; -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = qe->event->u.keyButtonPointer.rootY; - pWin = inputInfo.pointer->grab ? inputInfo.pointer->grab->confineTo : - NullWindow; - } - if (pWin) - { - int x, y, off_x, off_y, i; - BoxRec lims; - - if(!XineramaSetWindowPntrs(pWin)) - return; - - i = PanoramiXNumScreens - 1; - - REGION_COPY(sprite.screen, &sprite.Reg2, - &sprite.windows[i]->borderSize); - off_x = panoramiXdataPtr[i].x; - off_y = panoramiXdataPtr[i].y; - - while(i--) { - x = off_x - panoramiXdataPtr[i].x; - y = off_y - panoramiXdataPtr[i].y; - - if(x || y) - REGION_TRANSLATE(sprite.screen, &sprite.Reg2, x, y); - - REGION_UNION(sprite.screen, &sprite.Reg2, &sprite.Reg2, - &sprite.windows[i]->borderSize); - - off_x = panoramiXdataPtr[i].x; - off_y = panoramiXdataPtr[i].y; - } - - lims = *REGION_EXTENTS(sprite.screen, &sprite.Reg2); - - if (sprite.hot.x < lims.x1) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = lims.x1; - else if (sprite.hot.x >= lims.x2) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = lims.x2 - 1; - if (sprite.hot.y < lims.y1) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = lims.y1; - else if (sprite.hot.y >= lims.y2) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = lims.y2 - 1; - - if (REGION_NUM_RECTS(&sprite.Reg2) > 1) - ConfineToShape(&sprite.Reg2, &sprite.hot.x, &sprite.hot.y); - - if (qe) - { - qe->pScreen = sprite.hot.pScreen; - qe->event->u.keyButtonPointer.rootX = sprite.hot.x; - qe->event->u.keyButtonPointer.rootY = sprite.hot.y; - } - } -} - - -static Bool -XineramaCheckMotion(xEvent *xE) -{ - WindowPtr prevSpriteWin = sprite.win; - - if (xE && !syncEvents.playingEvents) - { - /* Motion events entering DIX get translated to Screen 0 - coordinates. Replayed events have already been - translated since they've entered DIX before */ - XE_KBPTR.rootX += panoramiXdataPtr[sprite.screen->myNum].x - - panoramiXdataPtr[0].x; - XE_KBPTR.rootY += panoramiXdataPtr[sprite.screen->myNum].y - - panoramiXdataPtr[0].y; -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = XE_KBPTR.rootX; -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = XE_KBPTR.rootY; - if (sprite.hot.x < sprite.physLimits.x1) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = sprite.physLimits.x1; - else if (sprite.hot.x >= sprite.physLimits.x2) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = sprite.physLimits.x2 - 1; - if (sprite.hot.y < sprite.physLimits.y1) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = sprite.physLimits.y1; - else if (sprite.hot.y >= sprite.physLimits.y2) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = sprite.physLimits.y2 - 1; - - if (sprite.hotShape) - ConfineToShape(sprite.hotShape, &sprite.hot.x, &sprite.hot.y); - - sprite.hotPhys = sprite.hot; - if ((sprite.hotPhys.x != XE_KBPTR.rootX) || - (sprite.hotPhys.y != XE_KBPTR.rootY)) - { - XineramaSetCursorPosition( - sprite.hotPhys.x, sprite.hotPhys.y, FALSE); - } - XE_KBPTR.rootX = sprite.hot.x; - XE_KBPTR.rootY = sprite.hot.y; - } - -#ifdef XEVIE - xeviewin = -#endif - sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y); - - if (sprite.win != prevSpriteWin) - { - if (prevSpriteWin != NullWindow) { - if (!xE) - UpdateCurrentTimeIf(); - DoEnterLeaveEvents(prevSpriteWin, sprite.win, NotifyNormal); - } - PostNewCursor(); - return FALSE; - } - return TRUE; -} - - -static void -XineramaConfineCursorToWindow(WindowPtr pWin, Bool generateEvents) -{ - - if (syncEvents.playingEvents) - { - XineramaCheckVirtualMotion((QdEventPtr)NULL, pWin); - SyntheticMotion(sprite.hot.x, sprite.hot.y); - } - else - { - int x, y, off_x, off_y, i; - - if(!XineramaSetWindowPntrs(pWin)) - return; - - i = PanoramiXNumScreens - 1; - - REGION_COPY(sprite.screen, &sprite.Reg1, - &sprite.windows[i]->borderSize); - off_x = panoramiXdataPtr[i].x; - off_y = panoramiXdataPtr[i].y; - - while(i--) { - x = off_x - panoramiXdataPtr[i].x; - y = off_y - panoramiXdataPtr[i].y; - - if(x || y) - REGION_TRANSLATE(sprite.screen, &sprite.Reg1, x, y); - - REGION_UNION(sprite.screen, &sprite.Reg1, &sprite.Reg1, - &sprite.windows[i]->borderSize); - - off_x = panoramiXdataPtr[i].x; - off_y = panoramiXdataPtr[i].y; - } - - sprite.hotLimits = *REGION_EXTENTS(sprite.screen, &sprite.Reg1); - - if(REGION_NUM_RECTS(&sprite.Reg1) > 1) - sprite.hotShape = &sprite.Reg1; - else - sprite.hotShape = NullRegion; - - sprite.confined = FALSE; - sprite.confineWin = (pWin == WindowTable[0]) ? NullWindow : pWin; - - XineramaCheckPhysLimits(sprite.current, generateEvents); - } -} - - -static void -XineramaChangeToCursor(CursorPtr cursor) -{ - if (cursor != sprite.current) - { - if ((sprite.current->bits->xhot != cursor->bits->xhot) || - (sprite.current->bits->yhot != cursor->bits->yhot)) - XineramaCheckPhysLimits(cursor, FALSE); - (*sprite.screen->DisplayCursor)(sprite.screen, cursor); - FreeCursor(sprite.current, (Cursor)0); - sprite.current = cursor; - sprite.current->refcnt++; - } -} - - -#endif /* PANORAMIX */ - -void -SetMaskForEvent(Mask mask, int event) -{ - if ((event < LASTEvent) || (event >= 128)) - FatalError("SetMaskForEvent: bogus event number"); - filters[event] = mask; -} - -void -SetCriticalEvent(int event) -{ - if (event >= 128) - FatalError("SetCriticalEvent: bogus event number"); - criticalEvents[event >> 3] |= 1 << (event & 7); -} - -static void -SyntheticMotion(int x, int y) -{ - xEvent xE; - -#ifdef PANORAMIX - /* Translate back to the sprite screen since processInputProc - will translate from sprite screen to screen 0 upon reentry - to the DIX layer */ - if(!noPanoramiXExtension) { - x += panoramiXdataPtr[0].x - panoramiXdataPtr[sprite.screen->myNum].x; - y += panoramiXdataPtr[0].y - panoramiXdataPtr[sprite.screen->myNum].y; - } -#endif - xE.u.keyButtonPointer.rootX = x; - xE.u.keyButtonPointer.rootY = y; - if (syncEvents.playingEvents) - xE.u.keyButtonPointer.time = syncEvents.time.milliseconds; - else - xE.u.keyButtonPointer.time = currentTime.milliseconds; - xE.u.u.type = MotionNotify; - (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1); -} - -#ifdef SHAPE -static void -ConfineToShape(RegionPtr shape, int *px, int *py) -{ - BoxRec box; - int x = *px, y = *py; - int incx = 1, incy = 1; - - if (POINT_IN_REGION(sprite.hot.pScreen, shape, x, y, &box)) - return; - box = *REGION_EXTENTS(sprite.hot.pScreen, shape); - /* this is rather crude */ - do { - x += incx; - if (x >= box.x2) - { - incx = -1; - x = *px - 1; - } - else if (x < box.x1) - { - incx = 1; - x = *px; - y += incy; - if (y >= box.y2) - { - incy = -1; - y = *py - 1; - } - else if (y < box.y1) - return; /* should never get here! */ - } - } while (!POINT_IN_REGION(sprite.hot.pScreen, shape, x, y, &box)); - *px = x; - *py = y; -} -#endif - -static void -CheckPhysLimits( - CursorPtr cursor, - Bool generateEvents, - Bool confineToScreen, - ScreenPtr pScreen) -{ - HotSpot new; - - if (!cursor) - return; - new = sprite.hotPhys; - if (pScreen) - new.pScreen = pScreen; - else - pScreen = new.pScreen; - (*pScreen->CursorLimits) (pScreen, cursor, &sprite.hotLimits, - &sprite.physLimits); - sprite.confined = confineToScreen; - (* pScreen->ConstrainCursor)(pScreen, &sprite.physLimits); - if (new.x < sprite.physLimits.x1) - new.x = sprite.physLimits.x1; - else - if (new.x >= sprite.physLimits.x2) - new.x = sprite.physLimits.x2 - 1; - if (new.y < sprite.physLimits.y1) - new.y = sprite.physLimits.y1; - else - if (new.y >= sprite.physLimits.y2) - new.y = sprite.physLimits.y2 - 1; -#ifdef SHAPE - if (sprite.hotShape) - ConfineToShape(sprite.hotShape, &new.x, &new.y); -#endif - if ((pScreen != sprite.hotPhys.pScreen) || - (new.x != sprite.hotPhys.x) || (new.y != sprite.hotPhys.y)) - { - if (pScreen != sprite.hotPhys.pScreen) - sprite.hotPhys = new; - (*pScreen->SetCursorPosition) (pScreen, new.x, new.y, generateEvents); - if (!generateEvents) - SyntheticMotion(new.x, new.y); - } -} - -static void -CheckVirtualMotion( - register QdEventPtr qe, - register WindowPtr pWin) -{ -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - XineramaCheckVirtualMotion(qe, pWin); - return; - } -#endif - if (qe) - { - sprite.hot.pScreen = qe->pScreen; -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = qe->event->u.keyButtonPointer.rootX; -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = qe->event->u.keyButtonPointer.rootY; - pWin = inputInfo.pointer->grab ? inputInfo.pointer->grab->confineTo : - NullWindow; - } - if (pWin) - { - BoxRec lims; - - if (sprite.hot.pScreen != pWin->drawable.pScreen) - { - sprite.hot.pScreen = pWin->drawable.pScreen; -#ifdef XEVIE - xeviehot.x = xeviehot.y = 0; -#endif - sprite.hot.x = sprite.hot.y = 0; - } - lims = *REGION_EXTENTS(pWin->drawable.pScreen, &pWin->borderSize); - if (sprite.hot.x < lims.x1) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = lims.x1; - else if (sprite.hot.x >= lims.x2) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = lims.x2 - 1; - if (sprite.hot.y < lims.y1) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = lims.y1; - else if (sprite.hot.y >= lims.y2) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = lims.y2 - 1; -#ifdef SHAPE - if (wBoundingShape(pWin)) - ConfineToShape(&pWin->borderSize, &sprite.hot.x, &sprite.hot.y); -#endif - if (qe) - { - qe->pScreen = sprite.hot.pScreen; - qe->event->u.keyButtonPointer.rootX = sprite.hot.x; - qe->event->u.keyButtonPointer.rootY = sprite.hot.y; - } - } - ROOT = WindowTable[sprite.hot.pScreen->myNum]; -} - -static void -ConfineCursorToWindow(WindowPtr pWin, Bool generateEvents, Bool confineToScreen) -{ - ScreenPtr pScreen = pWin->drawable.pScreen; - -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - XineramaConfineCursorToWindow(pWin, generateEvents); - return; - } -#endif - - if (syncEvents.playingEvents) - { - CheckVirtualMotion((QdEventPtr)NULL, pWin); - SyntheticMotion(sprite.hot.x, sprite.hot.y); - } - else - { - sprite.hotLimits = *REGION_EXTENTS( pScreen, &pWin->borderSize); -#ifdef SHAPE - sprite.hotShape = wBoundingShape(pWin) ? &pWin->borderSize - : NullRegion; -#endif - CheckPhysLimits(sprite.current, generateEvents, confineToScreen, - pScreen); - } -} - -Bool -PointerConfinedToScreen() -{ - return sprite.confined; -} - -static void -ChangeToCursor(CursorPtr cursor) -{ -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - XineramaChangeToCursor(cursor); - return; - } -#endif - - if (cursor != sprite.current) - { - if ((sprite.current->bits->xhot != cursor->bits->xhot) || - (sprite.current->bits->yhot != cursor->bits->yhot)) - CheckPhysLimits(cursor, FALSE, sprite.confined, - (ScreenPtr)NULL); - (*sprite.hotPhys.pScreen->DisplayCursor) (sprite.hotPhys.pScreen, - cursor); - FreeCursor(sprite.current, (Cursor)0); - sprite.current = cursor; - sprite.current->refcnt++; - } -} - -/* returns true if b is a descendent of a */ -Bool -IsParent(register WindowPtr a, register WindowPtr b) -{ - for (b = b->parent; b; b = b->parent) - if (b == a) return TRUE; - return FALSE; -} - -static void -PostNewCursor(void) -{ - register WindowPtr win; - register GrabPtr grab = inputInfo.pointer->grab; - - if (syncEvents.playingEvents) - return; - if (grab) - { - if (grab->cursor) - { - ChangeToCursor(grab->cursor); - return; - } - if (IsParent(grab->window, sprite.win)) - win = sprite.win; - else - win = grab->window; - } - else - win = sprite.win; - for (; win; win = win->parent) - if (win->optional && win->optional->cursor != NullCursor) - { - ChangeToCursor(win->optional->cursor); - return; - } -} - -WindowPtr -GetCurrentRootWindow() -{ - return ROOT; -} - -WindowPtr -GetSpriteWindow() -{ - return sprite.win; -} - -CursorPtr -GetSpriteCursor() -{ - return sprite.current; -} - -void -GetSpritePosition(int *px, int *py) -{ - *px = sprite.hotPhys.x; - *py = sprite.hotPhys.y; -} - -#ifdef PANORAMIX -int -XineramaGetCursorScreen() -{ - if(!noPanoramiXExtension) { - return sprite.screen->myNum; - } else { - return 0; - } -} -#endif /* PANORAMIX */ - -#define TIMESLOP (5 * 60 * 1000) /* 5 minutes */ - -static void -MonthChangedOrBadTime(register xEvent *xE) -{ - /* If the ddx/OS is careless about not processing timestamped events from - * different sources in sorted order, then it's possible for time to go - * backwards when it should not. Here we ensure a decent time. - */ - if ((currentTime.milliseconds - XE_KBPTR.time) > TIMESLOP) - currentTime.months++; - else - XE_KBPTR.time = currentTime.milliseconds; -} - -#define NoticeTime(xE) { \ - if ((xE)->u.keyButtonPointer.time < currentTime.milliseconds) \ - MonthChangedOrBadTime(xE); \ - currentTime.milliseconds = (xE)->u.keyButtonPointer.time; \ - lastDeviceEventTime = currentTime; } - -void -NoticeEventTime(register xEvent *xE) -{ - if (!syncEvents.playingEvents) - NoticeTime(xE); -} - -/************************************************************************** - * The following procedures deal with synchronous events * - **************************************************************************/ - -void -EnqueueEvent(xEvent *xE, DeviceIntPtr device, int count) -{ - register QdEventPtr tail = *syncEvents.pendtail; - register QdEventPtr qe; - xEvent *qxE; - - NoticeTime(xE); - -#ifdef XKB - /* Fix for key repeating bug. */ - if (device->key != NULL && device->key->xkbInfo != NULL && - xE->u.u.type == KeyRelease) - AccessXCancelRepeatKey(device->key->xkbInfo, xE->u.u.detail); -#endif - - if (DeviceEventCallback) - { - DeviceEventInfoRec eventinfo; - /* The RECORD spec says that the root window field of motion events - * must be valid. At this point, it hasn't been filled in yet, so - * we do it here. The long expression below is necessary to get - * the current root window; the apparently reasonable alternative - * GetCurrentRootWindow()->drawable.id doesn't give you the right - * answer on the first motion event after a screen change because - * the data that GetCurrentRootWindow relies on hasn't been - * updated yet. - */ - if (xE->u.u.type == MotionNotify) - XE_KBPTR.root = - WindowTable[sprite.hotPhys.pScreen->myNum]->drawable.id; - eventinfo.events = xE; - eventinfo.count = count; - CallCallbacks(&DeviceEventCallback, (pointer)&eventinfo); - } - if (xE->u.u.type == MotionNotify) - { -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - XE_KBPTR.rootX += panoramiXdataPtr[sprite.screen->myNum].x - - panoramiXdataPtr[0].x; - XE_KBPTR.rootY += panoramiXdataPtr[sprite.screen->myNum].y - - panoramiXdataPtr[0].y; - } -#endif - sprite.hotPhys.x = XE_KBPTR.rootX; - sprite.hotPhys.y = XE_KBPTR.rootY; - /* do motion compression */ - if (tail && - (tail->event->u.u.type == MotionNotify) && - (tail->pScreen == sprite.hotPhys.pScreen)) - { - tail->event->u.keyButtonPointer.rootX = sprite.hotPhys.x; - tail->event->u.keyButtonPointer.rootY = sprite.hotPhys.y; - tail->event->u.keyButtonPointer.time = XE_KBPTR.time; - tail->months = currentTime.months; - return; - } - } - qe = (QdEventPtr)xalloc(sizeof(QdEventRec) + (count * sizeof(xEvent))); - if (!qe) - return; - qe->next = (QdEventPtr)NULL; - qe->device = device; - qe->pScreen = sprite.hotPhys.pScreen; - qe->months = currentTime.months; - qe->event = (xEvent *)(qe + 1); - qe->evcount = count; - for (qxE = qe->event; --count >= 0; qxE++, xE++) - *qxE = *xE; - if (tail) - syncEvents.pendtail = &tail->next; - *syncEvents.pendtail = qe; -} - -static void -PlayReleasedEvents(void) -{ - register QdEventPtr *prev, qe; - register DeviceIntPtr dev; - - prev = &syncEvents.pending; - while ( (qe = *prev) ) - { - if (!qe->device->sync.frozen) - { - *prev = qe->next; - if (*syncEvents.pendtail == *prev) - syncEvents.pendtail = prev; - if (qe->event->u.u.type == MotionNotify) - CheckVirtualMotion(qe, NullWindow); - syncEvents.time.months = qe->months; - syncEvents.time.milliseconds = qe->event->u.keyButtonPointer.time; -#ifdef PANORAMIX - /* Translate back to the sprite screen since processInputProc - will translate from sprite screen to screen 0 upon reentry - to the DIX layer */ - if(!noPanoramiXExtension) { - qe->event->u.keyButtonPointer.rootX += - panoramiXdataPtr[0].x - - panoramiXdataPtr[sprite.screen->myNum].x; - qe->event->u.keyButtonPointer.rootY += - panoramiXdataPtr[0].y - - panoramiXdataPtr[sprite.screen->myNum].y; - } -#endif - (*qe->device->public.processInputProc)(qe->event, qe->device, - qe->evcount); - xfree(qe); - for (dev = inputInfo.devices; dev && dev->sync.frozen; dev = dev->next) - ; - if (!dev) - break; - /* Playing the event may have unfrozen another device. */ - /* So to play it safe, restart at the head of the queue */ - prev = &syncEvents.pending; - } - else - prev = &qe->next; - } -} - -static void -FreezeThaw(register DeviceIntPtr dev, Bool frozen) -{ - dev->sync.frozen = frozen; - if (frozen) - dev->public.processInputProc = dev->public.enqueueInputProc; - else - dev->public.processInputProc = dev->public.realInputProc; -} - -void -ComputeFreezes() -{ - register DeviceIntPtr replayDev = syncEvents.replayDev; - register int i; - WindowPtr w; - register xEvent *xE; - int count; - GrabPtr grab; - register DeviceIntPtr dev; - - for (dev = inputInfo.devices; dev; dev = dev->next) - FreezeThaw(dev, dev->sync.other || (dev->sync.state >= FROZEN)); - if (syncEvents.playingEvents || (!replayDev && !syncEvents.pending)) - return; - syncEvents.playingEvents = TRUE; - if (replayDev) - { - xE = replayDev->sync.event; - count = replayDev->sync.evcount; - syncEvents.replayDev = (DeviceIntPtr)NULL; - - w = XYToWindow( XE_KBPTR.rootX, XE_KBPTR.rootY); - for (i = 0; i < spriteTraceGood; i++) - { - if (syncEvents.replayWin == spriteTrace[i]) - { - if (!CheckDeviceGrabs(replayDev, xE, i+1, count)) { - if (replayDev->focus) - DeliverFocusedEvent(replayDev, xE, w, count); - else - DeliverDeviceEvents(w, xE, NullGrab, NullWindow, - replayDev, count); - } - goto playmore; - } - } - /* must not still be in the same stack */ - if (replayDev->focus) - DeliverFocusedEvent(replayDev, xE, w, count); - else - DeliverDeviceEvents(w, xE, NullGrab, NullWindow, replayDev, count); - } -playmore: - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (!dev->sync.frozen) - { - PlayReleasedEvents(); - break; - } - } - syncEvents.playingEvents = FALSE; - /* the following may have been skipped during replay, so do it now */ - if ((grab = inputInfo.pointer->grab) && grab->confineTo) - { - if (grab->confineTo->drawable.pScreen != sprite.hotPhys.pScreen) - sprite.hotPhys.x = sprite.hotPhys.y = 0; - ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); - } - else - ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], - TRUE, FALSE); - PostNewCursor(); -} - -#ifdef RANDR -void -ScreenRestructured (ScreenPtr pScreen) -{ - GrabPtr grab; - - if ((grab = inputInfo.pointer->grab) && grab->confineTo) - { - if (grab->confineTo->drawable.pScreen != sprite.hotPhys.pScreen) - sprite.hotPhys.x = sprite.hotPhys.y = 0; - ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); - } - else - ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], - TRUE, FALSE); -} -#endif - -void -CheckGrabForSyncs(register DeviceIntPtr thisDev, Bool thisMode, Bool otherMode) -{ - register GrabPtr grab = thisDev->grab; - register DeviceIntPtr dev; - - if (thisMode == GrabModeSync) - thisDev->sync.state = FROZEN_NO_EVENT; - else - { /* free both if same client owns both */ - thisDev->sync.state = THAWED; - if (thisDev->sync.other && - (CLIENT_BITS(thisDev->sync.other->resource) == - CLIENT_BITS(grab->resource))) - thisDev->sync.other = NullGrab; - } - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev != thisDev) - { - if (otherMode == GrabModeSync) - dev->sync.other = grab; - else - { /* free both if same client owns both */ - if (dev->sync.other && - (CLIENT_BITS(dev->sync.other->resource) == - CLIENT_BITS(grab->resource))) - dev->sync.other = NullGrab; - } - } - } - ComputeFreezes(); -} - -void -ActivatePointerGrab(register DeviceIntPtr mouse, register GrabPtr grab, - TimeStamp time, Bool autoGrab) -{ - WindowPtr oldWin = (mouse->grab) ? mouse->grab->window - : sprite.win; - - if (grab->confineTo) - { - if (grab->confineTo->drawable.pScreen != sprite.hotPhys.pScreen) - sprite.hotPhys.x = sprite.hotPhys.y = 0; - ConfineCursorToWindow(grab->confineTo, FALSE, TRUE); - } - DoEnterLeaveEvents(oldWin, grab->window, NotifyGrab); - mouse->valuator->motionHintWindow = NullWindow; - if (syncEvents.playingEvents) - mouse->grabTime = syncEvents.time; - else - mouse->grabTime = time; - if (grab->cursor) - grab->cursor->refcnt++; - mouse->activeGrab = *grab; - mouse->grab = &mouse->activeGrab; - mouse->fromPassiveGrab = autoGrab; - PostNewCursor(); - CheckGrabForSyncs(mouse,(Bool)grab->pointerMode, (Bool)grab->keyboardMode); - - #ifdef NXAGENT_SERVER - - /* - * If grab is synchronous, events are delivered to clients only if they send - * an AllowEvent request. If mode field in AllowEvent request is SyncPointer, the - * delivered event is saved in a queue and replayed later, when grab is released. - * We should export sync grab to X as async in order to avoid events to be - * queued twice, in the agent and in the X server. This solution have a drawback: - * replayed events are not delivered to that application that are not clients of - * the agent. - * A different solution could be to make the grab asynchronous in the agent and - * to export it as synchronous. But this seems to be less safe. - * - * To make internal grab asynchronous, change previous line as follows. - * - * if (nxagentOption(Rootless)) - * { - * CheckGrabForSyncs(mouse, GrabModeAsync, (Bool)grab->keyboardMode); - * } - * else - * { - * CheckGrabForSyncs(mouse,(Bool)grab->pointerMode, (Bool)grab->keyboardMode); - * } - */ - - if (nxagentOption(Rootless) == 1) - { - /* - * FIXME: We should use the correct value - * for the cursor. Temporarily we set it - * to None. - */ - - int resource = nxagentWaitForResource(NXGetCollectGrabPointerResource, - nxagentCollectGrabPointerPredicate); - - NXCollectGrabPointer(nxagentDisplay, resource, nxagentWindow(grab -> window), - 1, grab -> eventMask & PointerGrabMask, - GrabModeAsync, GrabModeAsync, (grab -> confineTo) ? - nxagentWindow(grab -> confineTo) : None, - None, CurrentTime); - } - - #endif -} - -void -DeactivatePointerGrab(register DeviceIntPtr mouse) -{ - register GrabPtr grab = mouse->grab; - register DeviceIntPtr dev; - - mouse->valuator->motionHintWindow = NullWindow; - mouse->grab = NullGrab; - mouse->sync.state = NOT_GRABBED; - mouse->fromPassiveGrab = FALSE; - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev->sync.other == grab) - dev->sync.other = NullGrab; - } - DoEnterLeaveEvents(grab->window, sprite.win, NotifyUngrab); - if (grab->confineTo) - ConfineCursorToWindow(ROOT, FALSE, FALSE); - PostNewCursor(); - if (grab->cursor) - FreeCursor(grab->cursor, (Cursor)0); - ComputeFreezes(); - - #ifdef NXAGENT_SERVER - - if (nxagentOption(Rootless) == 1) - { - XUngrabPointer(nxagentDisplay, CurrentTime); - - if (sprite.win == ROOT) - { - mouse -> button -> state &= - ~(Button1Mask | Button2Mask | Button3Mask | - Button4Mask | Button5Mask); - } - } - - #endif -} - -void -ActivateKeyboardGrab(register DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, Bool passive) -{ - WindowPtr oldWin; - - if (keybd->grab) - oldWin = keybd->grab->window; - else if (keybd->focus) - oldWin = keybd->focus->win; - else - oldWin = sprite.win; - if (oldWin == FollowKeyboardWin) - oldWin = inputInfo.keyboard->focus->win; - if (keybd->valuator) - keybd->valuator->motionHintWindow = NullWindow; - DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab); - if (syncEvents.playingEvents) - keybd->grabTime = syncEvents.time; - else - keybd->grabTime = time; - keybd->activeGrab = *grab; - keybd->grab = &keybd->activeGrab; - keybd->fromPassiveGrab = passive; - CheckGrabForSyncs(keybd, (Bool)grab->keyboardMode, (Bool)grab->pointerMode); -} - -void -DeactivateKeyboardGrab(register DeviceIntPtr keybd) -{ - register GrabPtr grab = keybd->grab; - register DeviceIntPtr dev; - register WindowPtr focusWin = keybd->focus ? keybd->focus->win - : sprite.win; - - if (focusWin == FollowKeyboardWin) - focusWin = inputInfo.keyboard->focus->win; - if (keybd->valuator) - keybd->valuator->motionHintWindow = NullWindow; - keybd->grab = NullGrab; - keybd->sync.state = NOT_GRABBED; - keybd->fromPassiveGrab = FALSE; - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev->sync.other == grab) - dev->sync.other = NullGrab; - } - DoFocusEvents(keybd, grab->window, focusWin, NotifyUngrab); - ComputeFreezes(); -} - -void -AllowSome(ClientPtr client, TimeStamp time, DeviceIntPtr thisDev, int newState) -{ - Bool thisGrabbed, otherGrabbed, othersFrozen, thisSynced; - TimeStamp grabTime; - register DeviceIntPtr dev; - - thisGrabbed = thisDev->grab && SameClient(thisDev->grab, client); - thisSynced = FALSE; - otherGrabbed = FALSE; - othersFrozen = TRUE; - grabTime = thisDev->grabTime; - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev == thisDev) - continue; - if (dev->grab && SameClient(dev->grab, client)) - { - if (!(thisGrabbed || otherGrabbed) || - (CompareTimeStamps(dev->grabTime, grabTime) == LATER)) - grabTime = dev->grabTime; - otherGrabbed = TRUE; - if (thisDev->sync.other == dev->grab) - thisSynced = TRUE; - if (dev->sync.state < FROZEN) - othersFrozen = FALSE; - } - else if (!dev->sync.other || !SameClient(dev->sync.other, client)) - othersFrozen = FALSE; - } - if (!((thisGrabbed && thisDev->sync.state >= FROZEN) || thisSynced)) - return; - if ((CompareTimeStamps(time, currentTime) == LATER) || - (CompareTimeStamps(time, grabTime) == EARLIER)) - return; - switch (newState) - { - case THAWED: /* Async */ - if (thisGrabbed) - thisDev->sync.state = THAWED; - if (thisSynced) - thisDev->sync.other = NullGrab; - ComputeFreezes(); - break; - case FREEZE_NEXT_EVENT: /* Sync */ - if (thisGrabbed) - { - thisDev->sync.state = FREEZE_NEXT_EVENT; - if (thisSynced) - thisDev->sync.other = NullGrab; - ComputeFreezes(); - } - break; - case THAWED_BOTH: /* AsyncBoth */ - if (othersFrozen) - { - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev->grab && SameClient(dev->grab, client)) - dev->sync.state = THAWED; - if (dev->sync.other && SameClient(dev->sync.other, client)) - dev->sync.other = NullGrab; - } - ComputeFreezes(); - } - break; - case FREEZE_BOTH_NEXT_EVENT: /* SyncBoth */ - if (othersFrozen) - { - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev->grab && SameClient(dev->grab, client)) - dev->sync.state = FREEZE_BOTH_NEXT_EVENT; - if (dev->sync.other && SameClient(dev->sync.other, client)) - dev->sync.other = NullGrab; - } - ComputeFreezes(); - } - break; - case NOT_GRABBED: /* Replay */ - if (thisGrabbed && thisDev->sync.state == FROZEN_WITH_EVENT) - { - if (thisSynced) - thisDev->sync.other = NullGrab; - syncEvents.replayDev = thisDev; - syncEvents.replayWin = thisDev->grab->window; - (*thisDev->DeactivateGrab)(thisDev); - syncEvents.replayDev = (DeviceIntPtr)NULL; - } - break; - case THAW_OTHERS: /* AsyncOthers */ - if (othersFrozen) - { - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev == thisDev) - continue; - if (dev->grab && SameClient(dev->grab, client)) - dev->sync.state = THAWED; - if (dev->sync.other && SameClient(dev->sync.other, client)) - dev->sync.other = NullGrab; - } - ComputeFreezes(); - } - break; - } -} - -int -ProcAllowEvents(register ClientPtr client) -{ - TimeStamp time; - DeviceIntPtr mouse = inputInfo.pointer; - DeviceIntPtr keybd = inputInfo.keyboard; - REQUEST(xAllowEventsReq); - - REQUEST_SIZE_MATCH(xAllowEventsReq); - time = ClientTimeToServerTime(stuff->time); - switch (stuff->mode) - { - case ReplayPointer: - AllowSome(client, time, mouse, NOT_GRABBED); - break; - case SyncPointer: - AllowSome(client, time, mouse, FREEZE_NEXT_EVENT); - break; - case AsyncPointer: - AllowSome(client, time, mouse, THAWED); - break; - case ReplayKeyboard: - AllowSome(client, time, keybd, NOT_GRABBED); - break; - case SyncKeyboard: - AllowSome(client, time, keybd, FREEZE_NEXT_EVENT); - break; - case AsyncKeyboard: - AllowSome(client, time, keybd, THAWED); - break; - case SyncBoth: - AllowSome(client, time, keybd, FREEZE_BOTH_NEXT_EVENT); - break; - case AsyncBoth: - AllowSome(client, time, keybd, THAWED_BOTH); - break; - default: - client->errorValue = stuff->mode; - return BadValue; - } - - /* - * This is not necessary if we export grab to X as asynchronous. - * - * if (nxagentOption(Rootless) && stuff -> mode != ReplayKeyboard && - * stuff -> mode != SyncKeyboard && stuff -> mode != AsyncKeyboard) - * { - * XAllowEvents(nxagentDisplay, stuff -> mode, CurrentTime); - * } - */ - - return Success; -} - -void -ReleaseActiveGrabs(ClientPtr client) -{ - register DeviceIntPtr dev; - Bool done; - - /* XXX CloseDownClient should remove passive grabs before - * releasing active grabs. - */ - do { - done = TRUE; - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev->grab && SameClient(dev->grab, client)) - { - (*dev->DeactivateGrab)(dev); - done = FALSE; - } - } - } while (!done); -} - -/************************************************************************** - * The following procedures deal with delivering events * - **************************************************************************/ - -int -TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask, - Mask filter, GrabPtr grab) -{ - int i; - int type; - -#ifdef NX_DEBUG_INPUT - if (grab && nxagentDebugInput && grab->window) - { - fprintf(stderr, "TryClientEvents: Grab window is [0x%x].\n", - (unsigned int)grab->window->drawable.id); - if (!SameClient(grab, client)) - fprintf(stderr, "TryClientEvents: Events are going to be " - "discarded.\n"); - } -#endif -#if defined(DEBUG) || defined(NX_DEBUG_INPUT) -#ifdef NX_DEBUG_INPUT - if (nxagentDebugInput == 1) - fprintf(stderr, "Event([%d, %d], mask=0x%x), client=%d", - pEvents->u.u.type, pEvents->u.u.detail, (unsigned int)mask, - client->index); -#else - if (debug_events) ErrorF( - "Event([%d, %d], mask=0x%x), client=%d", - pEvents->u.u.type, pEvents->u.u.detail, mask, client->index); -#endif -#endif - if ((client) && (client != serverClient) && (!client->clientGone) && - ((filter == CantBeFiltered) || (mask & filter))) - { - if (grab && !SameClient(grab, client)) - return -1; /* don't send, but notify caller */ - type = pEvents->u.u.type; - if (type == MotionNotify) - { - if (mask & PointerMotionHintMask) - { - if (WID(inputInfo.pointer->valuator->motionHintWindow) == - pEvents->u.keyButtonPointer.event) - { -#if defined(DEBUG) || defined(NX_DEBUG_INPUT) -#ifdef NX_DEBUG_INPUT - if (nxagentDebugInput == 1) - { - fprintf(stderr,"\nmotionHintWindow == keyButtonPointer.event\n"); - } -#else - if (debug_events) ErrorF("\n"); - fprintf(stderr,"motionHintWindow == keyButtonPointer.event\n"); -#endif -#endif - return 1; /* don't send, but pretend we did */ - } - pEvents->u.u.detail = NotifyHint; - } - else - { - pEvents->u.u.detail = NotifyNormal; - } - } -#ifdef XINPUT - else - { - if ((type == DeviceMotionNotify) && - MaybeSendDeviceMotionNotifyHint - ((deviceKeyButtonPointer*)pEvents, mask) != 0) - return 1; - } -#endif - type &= 0177; - if (type != KeymapNotify) - { - /* all extension events must have a sequence number */ - for (i = 0; i < count; i++) - pEvents[i].u.u.sequenceNumber = client->sequence; - } - - if (BitIsOn(criticalEvents, type)) - { -#ifdef SMART_SCHEDULE - if (client->smart_priority < SMART_MAX_PRIORITY) - client->smart_priority++; -#endif - SetCriticalOutputPending(); - } - - WriteEventsToClient(client, count, pEvents); -#if defined(DEBUG) || defined(NX_DEBUG_INPUT) -#ifdef NX_DEBUG_INPUT - if (nxagentDebugInput == 1) - fprintf(stderr, " delivered\n"); -#else - if (debug_events) ErrorF( " delivered\n"); -#endif -#endif - return 1; - } - else - { -#if defined(DEBUG) || defined(NX_DEBUG_INPUT) -#ifdef NX_DEBUG_INPUT - if (nxagentDebugInput == 1) - fprintf(stderr, "\n"); -#else - if (debug_events) ErrorF("\n"); -#endif -#endif - return 0; - } -} - -int -DeliverEventsToWindow(register WindowPtr pWin, xEvent *pEvents, int count, - Mask filter, GrabPtr grab, int mskidx) -{ - int deliveries = 0, nondeliveries = 0; - int attempt; - register InputClients *other; - ClientPtr client = NullClient; - Mask deliveryMask = 0; /* If a grab occurs due to a button press, then - this mask is the mask of the grab. */ - int type = pEvents->u.u.type; - - /* CantBeFiltered means only window owner gets the event */ - if ((filter == CantBeFiltered) || !(type & EXTENSION_EVENT_BASE)) - { - /* if nobody ever wants to see this event, skip some work */ - if (filter != CantBeFiltered && - !((wOtherEventMasks(pWin)|pWin->eventMask) & filter)) - return 0; - if ( (attempt = TryClientEvents(wClient(pWin), pEvents, count, - pWin->eventMask, filter, grab)) ) - { - if (attempt > 0) - { - deliveries++; - client = wClient(pWin); - deliveryMask = pWin->eventMask; - } else - nondeliveries--; - } - } - if (filter != CantBeFiltered) - { - if (type & EXTENSION_EVENT_BASE) - { - OtherInputMasks *inputMasks; - - inputMasks = wOtherInputMasks(pWin); - if (!inputMasks || - !(inputMasks->inputEvents[mskidx] & filter)) - return 0; - other = inputMasks->inputClients; - } - else - other = (InputClients *)wOtherClients(pWin); - for (; other; other = other->next) - { - if ( (attempt = TryClientEvents(rClient(other), pEvents, count, - other->mask[mskidx], filter, grab)) ) - { - if (attempt > 0) - { - deliveries++; - client = rClient(other); - deliveryMask = other->mask[mskidx]; - } else - nondeliveries--; - } - } - } - if ((type == ButtonPress) && deliveries && (!grab)) - { - GrabRec tempGrab; - - tempGrab.device = inputInfo.pointer; - tempGrab.resource = client->clientAsMask; - tempGrab.window = pWin; - tempGrab.ownerEvents = (deliveryMask & OwnerGrabButtonMask) ? TRUE : FALSE; - tempGrab.eventMask = deliveryMask; - tempGrab.keyboardMode = GrabModeAsync; - tempGrab.pointerMode = GrabModeAsync; - tempGrab.confineTo = NullWindow; - tempGrab.cursor = NullCursor; - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "DeliverEventsToWindow: Activating passive grab on pointer.\n"); - } - #endif - (*inputInfo.pointer->ActivateGrab)(inputInfo.pointer, &tempGrab, - currentTime, TRUE); - } - else if ((type == MotionNotify) && deliveries) - inputInfo.pointer->valuator->motionHintWindow = pWin; -#ifdef XINPUT - else - { - if (((type == DeviceMotionNotify) -#ifdef XKB - || (type == DeviceButtonPress) -#endif - ) && deliveries) - CheckDeviceGrabAndHintWindow (pWin, type, - (deviceKeyButtonPointer*) pEvents, - grab, client, deliveryMask); - } -#endif - if (deliveries) - return deliveries; - return nondeliveries; -} - -/* If the event goes to dontClient, don't send it and return 0. if - send works, return 1 or if send didn't work, return 2. - Only works for core events. -*/ - -#ifdef PANORAMIX -static int -XineramaTryClientEventsResult( - ClientPtr client, - GrabPtr grab, - Mask mask, - Mask filter -){ - if ((client) && (client != serverClient) && (!client->clientGone) && - ((filter == CantBeFiltered) || (mask & filter))) - { - if (grab && !SameClient(grab, client)) return -1; - else return 1; - } - return 0; -} -#endif - -int -MaybeDeliverEventsToClient(register WindowPtr pWin, xEvent *pEvents, - int count, Mask filter, ClientPtr dontClient) -{ - register OtherClients *other; - - - if (pWin->eventMask & filter) - { - if (wClient(pWin) == dontClient) - return 0; -#ifdef PANORAMIX - if(!noPanoramiXExtension && pWin->drawable.pScreen->myNum) - return XineramaTryClientEventsResult( - wClient(pWin), NullGrab, pWin->eventMask, filter); -#endif - return TryClientEvents(wClient(pWin), pEvents, count, - pWin->eventMask, filter, NullGrab); - } - for (other = wOtherClients(pWin); other; other = other->next) - { - if (other->mask & filter) - { - if (SameClient(other, dontClient)) - return 0; -#ifdef PANORAMIX - if(!noPanoramiXExtension && pWin->drawable.pScreen->myNum) - return XineramaTryClientEventsResult( - rClient(other), NullGrab, other->mask, filter); -#endif - return TryClientEvents(rClient(other), pEvents, count, - other->mask, filter, NullGrab); - } - } - return 2; -} - -static void -FixUpEventFromWindow( - xEvent *xE, - WindowPtr pWin, - Window child, - Bool calcChild) -{ - if (calcChild) - { - WindowPtr w=spriteTrace[spriteTraceGood-1]; - /* If the search ends up past the root should the child field be - set to none or should the value in the argument be passed - through. It probably doesn't matter since everyone calls - this function with child == None anyway. */ - - while (w) - { - /* If the source window is same as event window, child should be - none. Don't bother going all all the way back to the root. */ - - if (w == pWin) - { - child = None; - break; - } - - if (w->parent == pWin) - { - child = w->drawable.id; - break; - } - w = w->parent; - } - } - XE_KBPTR.root = ROOT->drawable.id; - XE_KBPTR.event = pWin->drawable.id; - if (sprite.hot.pScreen == pWin->drawable.pScreen) - { - XE_KBPTR.sameScreen = xTrue; - XE_KBPTR.child = child; - XE_KBPTR.eventX = - XE_KBPTR.rootX - pWin->drawable.x; - XE_KBPTR.eventY = - XE_KBPTR.rootY - pWin->drawable.y; - } - else - { - XE_KBPTR.sameScreen = xFalse; - XE_KBPTR.child = None; - XE_KBPTR.eventX = 0; - XE_KBPTR.eventY = 0; - } -} - -int -DeliverDeviceEvents(register WindowPtr pWin, register xEvent *xE, GrabPtr grab, - register WindowPtr stopAt, DeviceIntPtr dev, int count) -{ - Window child = None; - int type = xE->u.u.type; - Mask filter = filters[type]; - int deliveries = 0; - - if (type & EXTENSION_EVENT_BASE) - { - register OtherInputMasks *inputMasks; - int mskidx = dev->id; - - inputMasks = wOtherInputMasks(pWin); - if (inputMasks && !(filter & inputMasks->deliverableEvents[mskidx])) - return 0; - while (pWin) - { - if (inputMasks && (inputMasks->inputEvents[mskidx] & filter)) - { - FixUpEventFromWindow(xE, pWin, child, FALSE); - deliveries = DeliverEventsToWindow(pWin, xE, count, filter, - grab, mskidx); - if (deliveries > 0) - return deliveries; - } - if ((deliveries < 0) || - (pWin == stopAt) || - (inputMasks && - (filter & inputMasks->dontPropagateMask[mskidx]))) - return 0; - child = pWin->drawable.id; - pWin = pWin->parent; - if (pWin) - inputMasks = wOtherInputMasks(pWin); - } - } - else - { - if (!(filter & pWin->deliverableEvents)) - return 0; - while (pWin) - { - if ((wOtherEventMasks(pWin)|pWin->eventMask) & filter) - { - FixUpEventFromWindow(xE, pWin, child, FALSE); - deliveries = DeliverEventsToWindow(pWin, xE, count, filter, - grab, 0); - if (deliveries > 0) - return deliveries; - } - if ((deliveries < 0) || - (pWin == stopAt) || - (filter & wDontPropagateMask(pWin))) - return 0; - child = pWin->drawable.id; - pWin = pWin->parent; - } - } - return 0; -} - -/* not useful for events that propagate up the tree or extension events */ -int -DeliverEvents(register WindowPtr pWin, register xEvent *xE, int count, - register WindowPtr otherParent) -{ - Mask filter; - int deliveries; - -#ifdef PANORAMIX - if(!noPanoramiXExtension && pWin->drawable.pScreen->myNum) - return count; -#endif - - if (!count) - return 0; - filter = filters[xE->u.u.type]; - if ((filter & SubstructureNotifyMask) && (xE->u.u.type != CreateNotify)) - xE->u.destroyNotify.event = pWin->drawable.id; - if (filter != StructureAndSubMask) - return DeliverEventsToWindow(pWin, xE, count, filter, NullGrab, 0); - deliveries = DeliverEventsToWindow(pWin, xE, count, StructureNotifyMask, - NullGrab, 0); - if (pWin->parent) - { - xE->u.destroyNotify.event = pWin->parent->drawable.id; - deliveries += DeliverEventsToWindow(pWin->parent, xE, count, - SubstructureNotifyMask, NullGrab, - 0); - if (xE->u.u.type == ReparentNotify) - { - xE->u.destroyNotify.event = otherParent->drawable.id; - deliveries += DeliverEventsToWindow(otherParent, xE, count, - SubstructureNotifyMask, - NullGrab, 0); - } - } - return deliveries; -} - - -static Bool -PointInBorderSize(WindowPtr pWin, int x, int y) -{ - BoxRec box; - - if(POINT_IN_REGION(pWin->drawable.pScreen, &pWin->borderSize, x, y, &box)) - return TRUE; - -#ifdef PANORAMIX - if(!noPanoramiXExtension && XineramaSetWindowPntrs(pWin)) { - int i; - - for(i = 1; i < PanoramiXNumScreens; i++) { - if(POINT_IN_REGION(sprite.screen, - &sprite.windows[i]->borderSize, - x + panoramiXdataPtr[0].x - panoramiXdataPtr[i].x, - y + panoramiXdataPtr[0].y - panoramiXdataPtr[i].y, - &box)) - return TRUE; - } - } -#endif - return FALSE; -} - -static WindowPtr -XYToWindow(int x, int y) -{ - register WindowPtr pWin; - BoxRec box; - - spriteTraceGood = 1; /* root window still there */ - - if (nxagentOption(Rootless)) - { - if (nxagentLastEnteredWindow == NULL) - { - return ROOT; - } - - pWin = ROOT->lastChild; - - while (pWin && pWin != ROOT->firstChild && pWin != nxagentLastEnteredWindow) - { - pWin = pWin->prevSib; - } - } - else - { - pWin = ROOT->firstChild; - } - - while (pWin) - { - if ((pWin->mapped) && - (x >= pWin->drawable.x - wBorderWidth (pWin)) && - (x < pWin->drawable.x + (int)pWin->drawable.width + - wBorderWidth(pWin)) && - (y >= pWin->drawable.y - wBorderWidth (pWin)) && - (y < pWin->drawable.y + (int)pWin->drawable.height + - wBorderWidth (pWin)) -#ifdef SHAPE - /* When a window is shaped, a further check - * is made to see if the point is inside - * borderSize - */ - && (!wBoundingShape(pWin) || PointInBorderSize(pWin, x, y)) - && (!wInputShape(pWin) || - POINT_IN_REGION(pWin->drawable.pScreen, - wInputShape(pWin), - x - pWin->drawable.x, - y - pWin->drawable.y, &box)) -#endif - ) - { - if (spriteTraceGood >= spriteTraceSize) - { - spriteTraceSize += 10; - Must_have_memory = TRUE; /* XXX */ - spriteTrace = (WindowPtr *)xrealloc( - spriteTrace, spriteTraceSize*sizeof(WindowPtr)); - Must_have_memory = FALSE; /* XXX */ - } - spriteTrace[spriteTraceGood++] = pWin; - pWin = pWin->firstChild; - } - else - pWin = pWin->nextSib; - } - return spriteTrace[spriteTraceGood-1]; -} - -static Bool -CheckMotion(xEvent *xE) -{ - WindowPtr prevSpriteWin = sprite.win; - -#ifdef PANORAMIX - if(!noPanoramiXExtension) - return XineramaCheckMotion(xE); -#endif - - if (xE && !syncEvents.playingEvents) - { - if (sprite.hot.pScreen != sprite.hotPhys.pScreen) - { - sprite.hot.pScreen = sprite.hotPhys.pScreen; - ROOT = WindowTable[sprite.hot.pScreen->myNum]; - } -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = XE_KBPTR.rootX; -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = XE_KBPTR.rootY; - if (sprite.hot.x < sprite.physLimits.x1) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = sprite.physLimits.x1; - else if (sprite.hot.x >= sprite.physLimits.x2) -#ifdef XEVIE - xeviehot.x = -#endif - sprite.hot.x = sprite.physLimits.x2 - 1; - if (sprite.hot.y < sprite.physLimits.y1) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = sprite.physLimits.y1; - else if (sprite.hot.y >= sprite.physLimits.y2) -#ifdef XEVIE - xeviehot.y = -#endif - sprite.hot.y = sprite.physLimits.y2 - 1; -#ifdef SHAPE - if (sprite.hotShape) - ConfineToShape(sprite.hotShape, &sprite.hot.x, &sprite.hot.y); -#endif - sprite.hotPhys = sprite.hot; - - /* - * This code force cursor position to be inside the - * root window of the agent. We can't view a reason - * to do this and it interacts in an undesirable way - * with toggling fullscreen. - * - * if ((sprite.hotPhys.x != XE_KBPTR.rootX) || - * (sprite.hotPhys.y != XE_KBPTR.rootY)) - * { - * (*sprite.hotPhys.pScreen->SetCursorPosition)( - * sprite.hotPhys.pScreen, - * sprite.hotPhys.x, sprite.hotPhys.y, FALSE); - * } - */ - - XE_KBPTR.rootX = sprite.hot.x; - XE_KBPTR.rootY = sprite.hot.y; - } - -#ifdef XEVIE - xeviewin = -#endif - sprite.win = XYToWindow(sprite.hot.x, sprite.hot.y); -#ifdef notyet - if (!(sprite.win->deliverableEvents & - Motion_Filter(inputInfo.pointer->button)) - !syncEvents.playingEvents) - { - /* XXX Do PointerNonInterestBox here */ - } -#endif - if (sprite.win != prevSpriteWin) - { - if (prevSpriteWin != NullWindow) { - if (!xE) - UpdateCurrentTimeIf(); - DoEnterLeaveEvents(prevSpriteWin, sprite.win, NotifyNormal); - } - PostNewCursor(); - return FALSE; - } - return TRUE; -} - -void -WindowsRestructured() -{ - (void) CheckMotion((xEvent *)NULL); -} - -#ifdef PANORAMIX -/* This was added to support reconfiguration under Xdmx. The problem is - * that if the 0th screen (i.e., WindowTable[0]) is moved to an origin - * other than 0,0, the information in the private sprite structure must - * be updated accordingly, or XYToWindow (and other routines) will not - * compute correctly. */ -void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff) -{ - ScreenPtr pScreen = win->drawable.pScreen; - GrabPtr grab; - - if (noPanoramiXExtension) return; - - sprite.hot.x -= xoff; - sprite.hot.y -= yoff; - - sprite.hotPhys.x -= xoff; - sprite.hotPhys.y -= yoff; - - sprite.hotLimits.x1 -= xoff; - sprite.hotLimits.y1 -= yoff; - sprite.hotLimits.x2 -= xoff; - sprite.hotLimits.y2 -= yoff; - - if (REGION_NOTEMPTY(sprite.screen, &sprite.Reg1)) - REGION_TRANSLATE(sprite.screen, &sprite.Reg1, xoff, yoff); - if (REGION_NOTEMPTY(sprite.screen, &sprite.Reg2)) - REGION_TRANSLATE(sprite.screen, &sprite.Reg2, xoff, yoff); - - /* FIXME: if we call ConfineCursorToWindow, must we do anything else? */ - if ((grab = inputInfo.pointer->grab) && grab->confineTo) { - if (grab->confineTo->drawable.pScreen != sprite.hotPhys.pScreen) - sprite.hotPhys.x = sprite.hotPhys.y = 0; - ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); - } else - ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], - TRUE, FALSE); -} -#endif - -void -DefineInitialRootWindow(register WindowPtr win) -{ - register ScreenPtr pScreen = win->drawable.pScreen; - #ifdef VIEWPORT_FRAME - extern void nxagentInitViewportFrame(ScreenPtr, WindowPtr); - #endif - extern int nxagentShadowInit(ScreenPtr, WindowPtr); - - sprite.hotPhys.pScreen = pScreen; - sprite.hotPhys.x = pScreen->width / 2; - sprite.hotPhys.y = pScreen->height / 2; - sprite.hot = sprite.hotPhys; - sprite.hotLimits.x2 = pScreen->width; - sprite.hotLimits.y2 = pScreen->height; -#ifdef XEVIE - xeviewin = -#endif - sprite.win = win; - sprite.current = wCursor (win); - sprite.current->refcnt++; - spriteTraceGood = 1; - ROOT = win; - (*pScreen->CursorLimits) ( - pScreen, sprite.current, &sprite.hotLimits, &sprite.physLimits); - sprite.confined = FALSE; - (*pScreen->ConstrainCursor) (pScreen, &sprite.physLimits); - (*pScreen->SetCursorPosition) (pScreen, sprite.hot.x, sprite.hot.y, FALSE); - (*pScreen->DisplayCursor) (pScreen, sprite.current); - -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - sprite.hotLimits.x1 = -panoramiXdataPtr[0].x; - sprite.hotLimits.y1 = -panoramiXdataPtr[0].y; - sprite.hotLimits.x2 = PanoramiXPixWidth - panoramiXdataPtr[0].x; - sprite.hotLimits.y2 = PanoramiXPixHeight - panoramiXdataPtr[0].y; - sprite.physLimits = sprite.hotLimits; - sprite.confineWin = NullWindow; -#ifdef SHAPE - sprite.hotShape = NullRegion; -#endif - sprite.screen = pScreen; - /* gotta UNINIT these someplace */ - REGION_NULL(pScreen, &sprite.Reg1); - REGION_NULL(pScreen, &sprite.Reg2); - } -#endif - - #ifdef VIEWPORT_FRAME - nxagentInitViewportFrame(pScreen, win); - #endif - - if (nxagentOption(Shadow)) - { - if (nxagentShadowInit(pScreen, win) == -1) - { - FatalError("Failed to connect to display '%s'", nxagentShadowDisplayName); - } - } -} - -/* - * This does not take any shortcuts, and even ignores its argument, since - * it does not happen very often, and one has to walk up the tree since - * this might be a newly instantiated cursor for an intermediate window - * between the one the pointer is in and the one that the last cursor was - * instantiated from. - */ -void -WindowHasNewCursor(WindowPtr pWin) -{ - PostNewCursor(); -} - -void -NewCurrentScreen(ScreenPtr newScreen, int x, int y) -{ - sprite.hotPhys.x = x; - sprite.hotPhys.y = y; -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - sprite.hotPhys.x += panoramiXdataPtr[newScreen->myNum].x - - panoramiXdataPtr[0].x; - sprite.hotPhys.y += panoramiXdataPtr[newScreen->myNum].y - - panoramiXdataPtr[0].y; - if (newScreen != sprite.screen) { - sprite.screen = newScreen; - /* Make sure we tell the DDX to update its copy of the screen */ - if(sprite.confineWin) - XineramaConfineCursorToWindow(sprite.confineWin, TRUE); - else - XineramaConfineCursorToWindow(WindowTable[0], TRUE); - /* if the pointer wasn't confined, the DDX won't get - told of the pointer warp so we reposition it here */ - if(!syncEvents.playingEvents) - (*sprite.screen->SetCursorPosition)(sprite.screen, - sprite.hotPhys.x + panoramiXdataPtr[0].x - - panoramiXdataPtr[sprite.screen->myNum].x, - sprite.hotPhys.y + panoramiXdataPtr[0].y - - panoramiXdataPtr[sprite.screen->myNum].y, FALSE); - } - } else -#endif - if (newScreen != sprite.hotPhys.pScreen) - ConfineCursorToWindow(WindowTable[newScreen->myNum], TRUE, FALSE); -} - -#ifdef PANORAMIX - -static Bool -XineramaPointInWindowIsVisible( - WindowPtr pWin, - int x, - int y -) -{ - ScreenPtr pScreen = pWin->drawable.pScreen; - BoxRec box; - int i, xoff, yoff; - - if (!pWin->realized) return FALSE; - - if (POINT_IN_REGION(pScreen, &pWin->borderClip, x, y, &box)) - return TRUE; - - if(!XineramaSetWindowPntrs(pWin)) return FALSE; - - xoff = x + panoramiXdataPtr[0].x; - yoff = y + panoramiXdataPtr[0].y; - - for(i = 1; i < PanoramiXNumScreens; i++) { - pWin = sprite.windows[i]; - pScreen = pWin->drawable.pScreen; - x = xoff - panoramiXdataPtr[i].x; - y = yoff - panoramiXdataPtr[i].y; - - if(POINT_IN_REGION(pScreen, &pWin->borderClip, x, y, &box) - && (!wInputShape(pWin) || - POINT_IN_REGION(pWin->drawable.pScreen, - wInputShape(pWin), - x - pWin->drawable.x, - y - pWin->drawable.y, &box))) - return TRUE; - - } - - return FALSE; -} - -static int -XineramaWarpPointer(ClientPtr client) -{ - WindowPtr dest = NULL; - int x, y; - - REQUEST(xWarpPointerReq); - - - if (stuff->dstWid != None) - { - dest = SecurityLookupWindow(stuff->dstWid, client, SecurityReadAccess); - if (!dest) - return BadWindow; - } - x = sprite.hotPhys.x; - y = sprite.hotPhys.y; - - if (stuff->srcWid != None) - { - int winX, winY; - XID winID = stuff->srcWid; - WindowPtr source; - - source = SecurityLookupWindow(winID, client, SecurityReadAccess); - if (!source) return BadWindow; - - winX = source->drawable.x; - winY = source->drawable.y; - if(source == WindowTable[0]) { - winX -= panoramiXdataPtr[0].x; - winY -= panoramiXdataPtr[0].y; - } - if (x < winX + stuff->srcX || - y < winY + stuff->srcY || - (stuff->srcWidth != 0 && - winX + stuff->srcX + (int)stuff->srcWidth < x) || - (stuff->srcHeight != 0 && - winY + stuff->srcY + (int)stuff->srcHeight < y) || - !XineramaPointInWindowIsVisible(source, x, y)) - return Success; - } - if (dest) { - x = dest->drawable.x; - y = dest->drawable.y; - if(dest == WindowTable[0]) { - x -= panoramiXdataPtr[0].x; - y -= panoramiXdataPtr[0].y; - } - } - - x += stuff->dstX; - y += stuff->dstY; - - if (x < sprite.physLimits.x1) - x = sprite.physLimits.x1; - else if (x >= sprite.physLimits.x2) - x = sprite.physLimits.x2 - 1; - if (y < sprite.physLimits.y1) - y = sprite.physLimits.y1; - else if (y >= sprite.physLimits.y2) - y = sprite.physLimits.y2 - 1; - if (sprite.hotShape) - ConfineToShape(sprite.hotShape, &x, &y); - - XineramaSetCursorPosition(x, y, TRUE); - - return Success; -} - -#endif - - -int -ProcWarpPointer(ClientPtr client) -{ - WindowPtr dest = NULL; - int x, y; - ScreenPtr newScreen; - - REQUEST(xWarpPointerReq); - - REQUEST_SIZE_MATCH(xWarpPointerReq); - -#ifdef PANORAMIX - if(!noPanoramiXExtension) - return XineramaWarpPointer(client); -#endif - - if (stuff->dstWid != None) - { - dest = SecurityLookupWindow(stuff->dstWid, client, SecurityReadAccess); - if (!dest) - return BadWindow; - } - x = sprite.hotPhys.x; - y = sprite.hotPhys.y; - - if (stuff->srcWid != None) - { - int winX, winY; - XID winID = stuff->srcWid; - WindowPtr source; - - source = SecurityLookupWindow(winID, client, SecurityReadAccess); - if (!source) return BadWindow; - - winX = source->drawable.x; - winY = source->drawable.y; - if (source->drawable.pScreen != sprite.hotPhys.pScreen || - x < winX + stuff->srcX || - y < winY + stuff->srcY || - (stuff->srcWidth != 0 && - winX + stuff->srcX + (int)stuff->srcWidth < x) || - (stuff->srcHeight != 0 && - winY + stuff->srcY + (int)stuff->srcHeight < y) || - !PointInWindowIsVisible(source, x, y)) - return Success; - } - if (dest) - { - x = dest->drawable.x; - y = dest->drawable.y; - newScreen = dest->drawable.pScreen; - } else - newScreen = sprite.hotPhys.pScreen; - - x += stuff->dstX; - y += stuff->dstY; - - if (x < 0) - x = 0; - else if (x >= newScreen->width) - x = newScreen->width - 1; - if (y < 0) - y = 0; - else if (y >= newScreen->height) - y = newScreen->height - 1; - - if (newScreen == sprite.hotPhys.pScreen) - { - if (x < sprite.physLimits.x1) - x = sprite.physLimits.x1; - else if (x >= sprite.physLimits.x2) - x = sprite.physLimits.x2 - 1; - if (y < sprite.physLimits.y1) - y = sprite.physLimits.y1; - else if (y >= sprite.physLimits.y2) - y = sprite.physLimits.y2 - 1; -#if defined(SHAPE) - if (sprite.hotShape) - ConfineToShape(sprite.hotShape, &x, &y); -#endif - (*newScreen->SetCursorPosition)(newScreen, x, y, TRUE); - } - else if (!PointerConfinedToScreen()) - { - NewCurrentScreen(newScreen, x, y); - } - return Success; -} - -static Bool -BorderSizeNotEmpty(WindowPtr pWin) -{ - if(REGION_NOTEMPTY(sprite.hotPhys.pScreen, &pWin->borderSize)) - return TRUE; - -#ifdef PANORAMIX - if(!noPanoramiXExtension && XineramaSetWindowPntrs(pWin)) { - int i; - - for(i = 1; i < PanoramiXNumScreens; i++) { - if(REGION_NOTEMPTY(sprite.screen, &sprite.windows[i]->borderSize)) - return TRUE; - } - } -#endif - return FALSE; -} - -/* "CheckPassiveGrabsOnWindow" checks to see if the event passed in causes a - passive grab set on the window to be activated. */ - -static Bool -CheckPassiveGrabsOnWindow( - WindowPtr pWin, - register DeviceIntPtr device, - register xEvent *xE, - int count) -{ - register GrabPtr grab = wPassiveGrabs(pWin); - GrabRec tempGrab; - register xEvent *dxE; - - if (!grab) - return FALSE; - tempGrab.window = pWin; - tempGrab.device = device; - tempGrab.type = xE->u.u.type; - tempGrab.detail.exact = xE->u.u.detail; - tempGrab.detail.pMask = NULL; - tempGrab.modifiersDetail.pMask = NULL; - for (; grab; grab = grab->next) - { -#ifdef XKB - DeviceIntPtr gdev; - XkbSrvInfoPtr xkbi; - - gdev= grab->modifierDevice; - xkbi= gdev->key->xkbInfo; -#endif - tempGrab.modifierDevice = grab->modifierDevice; - if ((device == grab->modifierDevice) && - ((xE->u.u.type == KeyPress) -#if defined(XINPUT) && defined(XKB) - || (xE->u.u.type == DeviceKeyPress) -#endif - )) - tempGrab.modifiersDetail.exact = -#ifdef XKB - (noXkbExtension?gdev->key->prev_state:xkbi->state.grab_mods); -#else - grab->modifierDevice->key->prev_state; -#endif - else - tempGrab.modifiersDetail.exact = -#ifdef XKB - (noXkbExtension ? gdev->key->state : xkbi->state.grab_mods); -#else - grab->modifierDevice->key->state; -#endif - if (GrabMatchesSecond(&tempGrab, grab) && - (!grab->confineTo || - (grab->confineTo->realized && - BorderSizeNotEmpty(grab->confineTo)))) - { -#ifdef XCSECURITY - if (!SecurityCheckDeviceAccess(wClient(pWin), device, FALSE)) - return FALSE; -#endif -#ifdef XKB - if (!noXkbExtension) { - XE_KBPTR.state &= 0x1f00; - XE_KBPTR.state |= - tempGrab.modifiersDetail.exact&(~0x1f00); - } -#endif - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "CheckPassiveGrabsOnWindow: Activating passive grab on %s.\n", - device == inputInfo.keyboard ? "keyboard" : "pointer"); - } - #endif - (*device->ActivateGrab)(device, grab, currentTime, TRUE); - - FixUpEventFromWindow(xE, grab->window, None, TRUE); - - (void) TryClientEvents(rClient(grab), xE, count, - filters[xE->u.u.type], - filters[xE->u.u.type], grab); - - if (device->sync.state == FROZEN_NO_EVENT) - { - if (device->sync.evcount < count) - { - Must_have_memory = TRUE; /* XXX */ - device->sync.event = (xEvent *)xrealloc(device->sync.event, - count* - sizeof(xEvent)); - Must_have_memory = FALSE; /* XXX */ - } - device->sync.evcount = count; - for (dxE = device->sync.event; --count >= 0; dxE++, xE++) - *dxE = *xE; - device->sync.state = FROZEN_WITH_EVENT; - } - return TRUE; - } - } - return FALSE; -} - -/** -"CheckDeviceGrabs" handles both keyboard and pointer events that may cause -a passive grab to be activated. If the event is a keyboard event, the -ancestors of the focus window are traced down and tried to see if they have -any passive grabs to be activated. If the focus window itself is reached and -it's descendants contain they pointer, the ancestors of the window that the -pointer is in are then traced down starting at the focus window, otherwise no -grabs are activated. If the event is a pointer event, the ancestors of the -window that the pointer is in are traced down starting at the root until -CheckPassiveGrabs causes a passive grab to activate or all the windows are -tried. PRH -*/ - -Bool -CheckDeviceGrabs(register DeviceIntPtr device, register xEvent *xE, - int checkFirst, int count) -{ - register int i; - register WindowPtr pWin = NULL; - register FocusClassPtr focus = device->focus; - - if (((xE->u.u.type == ButtonPress) -#if defined(XINPUT) && defined(XKB) - || (xE->u.u.type == DeviceButtonPress) -#endif - ) && (device->button->buttonsDown != 1)) - return FALSE; - - i = checkFirst; - - if (focus) - { - for (; i < focus->traceGood; i++) - { - pWin = focus->trace[i]; - if (pWin->optional && - CheckPassiveGrabsOnWindow(pWin, device, xE, count)) - return TRUE; - } - - if ((focus->win == NoneWin) || - (i >= spriteTraceGood) || - ((i > checkFirst) && (pWin != spriteTrace[i-1]))) - return FALSE; - } - - for (; i < spriteTraceGood; i++) - { - pWin = spriteTrace[i]; - if (pWin->optional && - CheckPassiveGrabsOnWindow(pWin, device, xE, count)) - return TRUE; - } - - return FALSE; -} - -void -DeliverFocusedEvent(DeviceIntPtr keybd, xEvent *xE, WindowPtr window, int count) -{ - WindowPtr focus = keybd->focus->win; - int mskidx = 0; - - if (focus == FollowKeyboardWin) - focus = inputInfo.keyboard->focus->win; - if (!focus) - return; - if (focus == PointerRootWin) - { - DeliverDeviceEvents(window, xE, NullGrab, NullWindow, keybd, count); - return; - } - if ((focus == window) || IsParent(focus, window)) - { - if (DeliverDeviceEvents(window, xE, NullGrab, focus, keybd, count)) - return; - } - /* just deliver it to the focus window */ - FixUpEventFromWindow(xE, focus, None, FALSE); - if (xE->u.u.type & EXTENSION_EVENT_BASE) - mskidx = keybd->id; - (void)DeliverEventsToWindow(focus, xE, count, filters[xE->u.u.type], - NullGrab, mskidx); -} - -void -DeliverGrabbedEvent(register xEvent *xE, register DeviceIntPtr thisDev, - Bool deactivateGrab, int count) -{ - register GrabPtr grab = thisDev->grab; - int deliveries = 0; - register DeviceIntPtr dev; - register xEvent *dxE; - - if (grab->ownerEvents) - { - WindowPtr focus; - - if (thisDev->focus) - { - focus = thisDev->focus->win; - if (focus == FollowKeyboardWin) - focus = inputInfo.keyboard->focus->win; - } - else - focus = PointerRootWin; - if (focus == PointerRootWin) - deliveries = DeliverDeviceEvents(sprite.win, xE, grab, NullWindow, - thisDev, count); - else if (focus && (focus == sprite.win || IsParent(focus, sprite.win))) - deliveries = DeliverDeviceEvents(sprite.win, xE, grab, focus, - thisDev, count); - else if (focus) - deliveries = DeliverDeviceEvents(focus, xE, grab, focus, - thisDev, count); - } - if (!deliveries) - { - FixUpEventFromWindow(xE, grab->window, None, TRUE); - deliveries = TryClientEvents(rClient(grab), xE, count, - (Mask)grab->eventMask, - filters[xE->u.u.type], grab); - if (deliveries && (xE->u.u.type == MotionNotify -#ifdef XINPUT - || xE->u.u.type == DeviceMotionNotify -#endif - )) - thisDev->valuator->motionHintWindow = grab->window; - } - if (deliveries && !deactivateGrab && (xE->u.u.type != MotionNotify -#ifdef XINPUT - && xE->u.u.type != DeviceMotionNotify -#endif - )) - switch (thisDev->sync.state) - { - case FREEZE_BOTH_NEXT_EVENT: - for (dev = inputInfo.devices; dev; dev = dev->next) - { - if (dev == thisDev) - continue; - FreezeThaw(dev, TRUE); - if ((dev->sync.state == FREEZE_BOTH_NEXT_EVENT) && - (CLIENT_BITS(dev->grab->resource) == - CLIENT_BITS(thisDev->grab->resource))) - dev->sync.state = FROZEN_NO_EVENT; - else - dev->sync.other = thisDev->grab; - } - /* fall through */ - case FREEZE_NEXT_EVENT: - thisDev->sync.state = FROZEN_WITH_EVENT; - FreezeThaw(thisDev, TRUE); - if (thisDev->sync.evcount < count) - { - Must_have_memory = TRUE; /* XXX */ - thisDev->sync.event = (xEvent *)xrealloc(thisDev->sync.event, - count*sizeof(xEvent)); - Must_have_memory = FALSE; /* XXX */ - } - thisDev->sync.evcount = count; - for (dxE = thisDev->sync.event; --count >= 0; dxE++, xE++) - *dxE = *xE; - break; - } -} - -void -#ifdef XKB -CoreProcessKeyboardEvent (register xEvent *xE, register DeviceIntPtr keybd, int count) -#else -ProcessKeyboardEvent (register xEvent *xE, register DeviceIntPtr keybd, int count) -#endif -{ - int key, bit; - register BYTE *kptr; - register int i; - register CARD8 modifiers; - register CARD16 mask; - GrabPtr grab = keybd->grab; - Bool deactivateGrab = FALSE; - register KeyClassPtr keyc = keybd->key; -#ifdef XEVIE - static Window rootWin = 0; - - if(!xeviegrabState && xevieFlag && clients[xevieClientIndex] && - (xevieMask & xevieFilters[xE->u.u.type])) { - key = xE->u.u.detail; - kptr = &keyc->down[key >> 3]; - bit = 1 << (key & 7); - if((xE->u.u.type == KeyPress && (*kptr & bit)) || - (xE->u.u.type == KeyRelease && !(*kptr & bit))) - {} else { -#ifdef XKB - if(!noXkbExtension) - xevieKBEventSent = 1; -#endif - if(!xevieKBEventSent) - { - xeviekb = keybd; - if(!rootWin) { - rootWin = GetCurrentRootWindow()->drawable.id; - } - xE->u.keyButtonPointer.event = xeviewin->drawable.id; - xE->u.keyButtonPointer.root = rootWin; - xE->u.keyButtonPointer.child = (xeviewin->firstChild) ? xeviewin->firstChild-> -drawable.id:0; - xE->u.keyButtonPointer.rootX = xeviehot.x; - xE->u.keyButtonPointer.rootY = xeviehot.y; - xE->u.keyButtonPointer.state = keyc->state; - WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE); -#ifdef XKB - if(noXkbExtension) -#endif - return; - } else { - xevieKBEventSent = 0; - } - } - } -#endif - - if (!syncEvents.playingEvents) - { - NoticeTime(xE); - if (DeviceEventCallback) - { - DeviceEventInfoRec eventinfo; - eventinfo.events = xE; - eventinfo.count = count; - CallCallbacks(&DeviceEventCallback, (pointer)&eventinfo); - } - } -#ifdef XEVIE - /* fix for bug5094030: don't change the state bit if the event is from XEvIE client */ - if(!(!xeviegrabState && xevieFlag && clients[xevieClientIndex] && - (xevieMask & xevieFilters[xE->u.u.type] -#ifdef XKB - && !noXkbExtension -#endif - ))) -#endif - XE_KBPTR.state = (keyc->state | inputInfo.pointer->button->state); - XE_KBPTR.rootX = sprite.hot.x; - XE_KBPTR.rootY = sprite.hot.y; - key = xE->u.u.detail; - kptr = &keyc->down[key >> 3]; - bit = 1 << (key & 7); - modifiers = keyc->modifierMap[key]; -#if defined(XKB) && defined(XEVIE) - if(!noXkbExtension && !xeviegrabState && - xevieFlag && clients[xevieClientIndex] && - (xevieMask & xevieFilters[xE->u.u.type])) { - switch(xE->u.u.type) { - case KeyPress: *kptr &= ~bit; break; - case KeyRelease: *kptr |= bit; break; - } - } -#endif - -#ifdef DEBUG - if ((xkbDebugFlags&0x4)&& - ((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))) { - ErrorF("CoreProcessKbdEvent: Key %d %s\n",key, - (xE->u.u.type==KeyPress?"down":"up")); - } -#endif - switch (xE->u.u.type) - { - case KeyPress: - if (*kptr & bit) /* allow ddx to generate multiple downs */ - { - if (!modifiers) - { - xE->u.u.type = KeyRelease; - (*keybd->public.processInputProc)(xE, keybd, count); - xE->u.u.type = KeyPress; - /* release can have side effects, don't fall through */ - (*keybd->public.processInputProc)(xE, keybd, count); - } - return; - } - inputInfo.pointer->valuator->motionHintWindow = NullWindow; - *kptr |= bit; - keyc->prev_state = keyc->state; - for (i = 0, mask = 1; modifiers; i++, mask <<= 1) - { - if (mask & modifiers) - { - /* This key affects modifier "i" */ - keyc->modifierKeyCount[i]++; - keyc->state |= mask; - modifiers &= ~mask; - } - } - if (!grab && CheckDeviceGrabs(keybd, xE, 0, count)) - { - keybd->activatingKey = key; - return; - } - break; - case KeyRelease: - if (!(*kptr & bit)) /* guard against duplicates */ - return; - inputInfo.pointer->valuator->motionHintWindow = NullWindow; - *kptr &= ~bit; - keyc->prev_state = keyc->state; - for (i = 0, mask = 1; modifiers; i++, mask <<= 1) - { - if (mask & modifiers) { - /* This key affects modifier "i" */ - if (--keyc->modifierKeyCount[i] <= 0) { - keyc->state &= ~mask; - keyc->modifierKeyCount[i] = 0; - } - modifiers &= ~mask; - } - } - if (keybd->fromPassiveGrab && (key == keybd->activatingKey)) - deactivateGrab = TRUE; - break; - default: - FatalError("Impossible keyboard event"); - } - if (grab) - DeliverGrabbedEvent(xE, keybd, deactivateGrab, count); - else - DeliverFocusedEvent(keybd, xE, sprite.win, count); - if (deactivateGrab) - #ifdef NX_DEBUG_INPUT - { - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcessKeyboardEvent: Deactivating grab on keyboard.\n"); - } - #endif - (*keybd->DeactivateGrab)(keybd); - #ifdef NX_DEBUG_INPUT - } - #endif -} - -#ifdef XKB -/* This function is used to set the key pressed or key released state - - this is only used when the pressing of keys does not cause - CoreProcessKeyEvent to be called, as in for example Mouse Keys. -*/ -void -FixKeyState (register xEvent *xE, register DeviceIntPtr keybd) -{ - int key, bit; - register BYTE *kptr; - register KeyClassPtr keyc = keybd->key; - - key = xE->u.u.detail; - kptr = &keyc->down[key >> 3]; - bit = 1 << (key & 7); -#ifdef DEBUG - if ((xkbDebugFlags&0x4)&& - ((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))) { - ErrorF("FixKeyState: Key %d %s\n",key, - (xE->u.u.type==KeyPress?"down":"up")); - } -#endif - switch (xE->u.u.type) - { - case KeyPress: - *kptr |= bit; - break; - case KeyRelease: - *kptr &= ~bit; - break; - default: - FatalError("Impossible keyboard event"); - } -} -#endif - -void -#ifdef XKB -CoreProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count) -#else -ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count) -#endif -{ - register GrabPtr grab = mouse->grab; - Bool deactivateGrab = FALSE; - register ButtonClassPtr butc = mouse->button; -#ifdef XKB - XkbSrvInfoPtr xkbi; - - xkbi = inputInfo.keyboard->key->xkbInfo; -#endif -#ifdef XEVIE - if(xevieFlag && clients[xevieClientIndex] && !xeviegrabState && - (xevieMask & xevieFilters[xE->u.u.type])) { - if(xevieEventSent) - xevieEventSent = 0; - else { - xeviemouse = mouse; - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInput == 1) - { - fprintf(stderr, "ProcessPointerEvent: Going to send XEVIE event.\n"); - } - #endif - WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE); - return; - } - } -#endif - - if (!syncEvents.playingEvents) - NoticeTime(xE) - XE_KBPTR.state = (butc->state | ( -#ifdef XKB - (noXkbExtension ? - inputInfo.keyboard->key->state : - xkbi->state.grab_mods) -#else - inputInfo.keyboard->key->state -#endif - )); - { - NoticeTime(xE); - if (DeviceEventCallback) - { - DeviceEventInfoRec eventinfo; - /* see comment in EnqueueEvents regarding the next three lines */ - if (xE->u.u.type == MotionNotify) - XE_KBPTR.root = - WindowTable[sprite.hotPhys.pScreen->myNum]->drawable.id; - eventinfo.events = xE; - eventinfo.count = count; - CallCallbacks(&DeviceEventCallback, (pointer)&eventinfo); - } - } - if (xE->u.u.type != MotionNotify) - { - register int key; - register BYTE *kptr; - int bit; - - XE_KBPTR.rootX = sprite.hot.x; - XE_KBPTR.rootY = sprite.hot.y; - - key = xE->u.u.detail; - kptr = &butc->down[key >> 3]; - bit = 1 << (key & 7); - switch (xE->u.u.type) - { - case ButtonPress: - mouse->valuator->motionHintWindow = NullWindow; - if (!(*kptr & bit)) - butc->buttonsDown++; - butc->motionMask = ButtonMotionMask; - *kptr |= bit; -#if !defined(XFree86Server) || !defined(XINPUT) - xE->u.u.detail = butc->map[key]; -#endif - #ifdef NX_DEBUG_INPUT - if (xE->u.u.detail == 0) - { - if (nxagentDebugInput == 1) - { - fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0" - " for ButtonPress.\n"); - } - return; - } - #else - if (xE->u.u.detail == 0) - return; - #endif - if (xE->u.u.detail <= 5) - butc->state |= (Button1Mask >> 1) << xE->u.u.detail; - filters[MotionNotify] = Motion_Filter(butc); - if (!grab) - #ifdef NX_DEBUG_INPUT - if (CheckDeviceGrabs(mouse, xE, 0, count)) - { - if (nxagentDebugInput == 1) - { - fprintf(stderr, "ProcessPointerEvent: CheckDeviceGrabs" - " returned True for ButtonPress.\n"); - } - return; - } - #else - if (CheckDeviceGrabs(mouse, xE, 0, count)) - return; - #endif - break; - case ButtonRelease: - mouse->valuator->motionHintWindow = NullWindow; - if (*kptr & bit) - --butc->buttonsDown; - if (!butc->buttonsDown) - butc->motionMask = 0; - *kptr &= ~bit; -#if !defined(XFree86Server) || !defined(XINPUT) - xE->u.u.detail = butc->map[key]; -#endif - #ifdef NX_DEBUG_INPUT - if (xE->u.u.detail == 0) - { - if (nxagentDebugInput == 1) - { - fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0" - " for ButtonRelease.\n"); - } - return; - } - #else - if (xE->u.u.detail == 0) - return; - #endif - if (xE->u.u.detail <= 5) - butc->state &= ~((Button1Mask >> 1) << xE->u.u.detail); - filters[MotionNotify] = Motion_Filter(butc); - if (!butc->state && mouse->fromPassiveGrab) - deactivateGrab = TRUE; - break; - default: - FatalError("bogus pointer event from ddx"); - } - } - #ifdef NX_DEBUG_INPUT - else if (!CheckMotion(xE)) - { - if (nxagentDebugInput == 1) - { - fprintf(stderr, "ProcessPointerEvent: CheckMotion returned False" - " for MotionNotify.\n"); - } - return; - } - if (grab) - { - if (nxagentDebugInput == 1) - { - fprintf(stderr, "ProcessPointerEvent: Going to deliver grabbed " - "events (count = %d).\n", count); - } - DeliverGrabbedEvent(xE, mouse, deactivateGrab, count); - } - else - { - if (nxagentDebugInput == 1) - { - fprintf(stderr, "ProcessPointerEvent: Going to deliver device " - "events (count = %d).\n", count); - } - DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow, - mouse, count); - } - #else - else if (!CheckMotion(xE)) - return; - if (grab) - DeliverGrabbedEvent(xE, mouse, deactivateGrab, count); - else - DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow, - mouse, count); - #endif - if (deactivateGrab) - #ifdef NX_DEBUG_INPUT - { - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcessPointerEvent: Deactivating grab on pointer.\n"); - } - #endif - (*mouse->DeactivateGrab)(mouse); - #ifdef NX_DEBUG_INPUT - } - #endif -} - -#define AtMostOneClient \ - (SubstructureRedirectMask | ResizeRedirectMask | ButtonPressMask) - -void -RecalculateDeliverableEvents(pWin) - register WindowPtr pWin; -{ - register OtherClients *others; - register WindowPtr pChild; - - pChild = pWin; - while (1) - { - if (pChild->optional) - { - pChild->optional->otherEventMasks = 0; - for (others = wOtherClients(pChild); others; others = others->next) - { - pChild->optional->otherEventMasks |= others->mask; - } - } - pChild->deliverableEvents = pChild->eventMask| - wOtherEventMasks(pChild); - if (pChild->parent) - pChild->deliverableEvents |= - (pChild->parent->deliverableEvents & - ~wDontPropagateMask(pChild) & PropagateMask); - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - while (!pChild->nextSib && (pChild != pWin)) - pChild = pChild->parent; - if (pChild == pWin) - break; - pChild = pChild->nextSib; - } -} - -/** - * - * \param value must conform to DeleteType - */ -int -OtherClientGone(pointer value, XID id) -{ - register OtherClientsPtr other, prev; - register WindowPtr pWin = (WindowPtr)value; - - prev = 0; - for (other = wOtherClients(pWin); other; other = other->next) - { - if (other->resource == id) - { - if (prev) - prev->next = other->next; - else - { - if (!(pWin->optional->otherClients = other->next)) - CheckWindowOptionalNeed (pWin); - } - xfree(other); - RecalculateDeliverableEvents(pWin); - return(Success); - } - prev = other; - } - FatalError("client not on event list"); - /*NOTREACHED*/ - return -1; /* make compiler happy */ -} - -int -EventSelectForWindow(register WindowPtr pWin, register ClientPtr client, Mask mask) -{ - Mask check; - OtherClients * others; - - if (mask & ~AllEventMasks) - { - client->errorValue = mask; - return BadValue; - } - check = (mask & AtMostOneClient); - if (check & (pWin->eventMask|wOtherEventMasks(pWin))) - { /* It is illegal for two different - clients to select on any of the - events for AtMostOneClient. However, - it is OK, for some client to - continue selecting on one of those - events. */ - if ((wClient(pWin) != client) && (check & pWin->eventMask)) - return BadAccess; - for (others = wOtherClients (pWin); others; others = others->next) - { - if (!SameClient(others, client) && (check & others->mask)) - return BadAccess; - } - } - if (wClient (pWin) == client) - { - check = pWin->eventMask; -#ifdef SGIMISC - pWin->eventMask = - (mask & ~SGIMiscSpecialDestroyMask) | (pWin->eventMask & SGIMiscSpecialDestroyMask); -#else - pWin->eventMask = mask; -#endif - } - else - { - for (others = wOtherClients (pWin); others; others = others->next) - { - if (SameClient(others, client)) - { - check = others->mask; -#ifdef SGIMISC - mask = (mask & ~SGIMiscSpecialDestroyMask) | (others->mask & SGIMiscSpecialDestroyMask); -#endif - if (mask == 0) - { - FreeResource(others->resource, RT_NONE); - return Success; - } - else - others->mask = mask; - goto maskSet; - } - } - check = 0; - if (!pWin->optional && !MakeWindowOptional (pWin)) - return BadAlloc; - others = (OtherClients *) xalloc(sizeof(OtherClients)); - if (!others) - return BadAlloc; - others->mask = mask; - others->resource = FakeClientID(client->index); - others->next = pWin->optional->otherClients; - pWin->optional->otherClients = others; - if (!AddResource(others->resource, RT_OTHERCLIENT, (pointer)pWin)) - return BadAlloc; - } -maskSet: - if ((inputInfo.pointer->valuator->motionHintWindow == pWin) && - (mask & PointerMotionHintMask) && - !(check & PointerMotionHintMask) && - !inputInfo.pointer->grab) - inputInfo.pointer->valuator->motionHintWindow = NullWindow; - RecalculateDeliverableEvents(pWin); - return Success; -} - -int -EventSuppressForWindow(register WindowPtr pWin, register ClientPtr client, - Mask mask, Bool *checkOptional) -{ - register int i, free; - - if ((mask & ~PropagateMask) && !permitOldBugs) - { - client->errorValue = mask; - return BadValue; - } - if (pWin->dontPropagate) - DontPropagateRefCnts[pWin->dontPropagate]--; - if (!mask) - i = 0; - else - { - for (i = DNPMCOUNT, free = 0; --i > 0; ) - { - if (!DontPropagateRefCnts[i]) - free = i; - else if (mask == DontPropagateMasks[i]) - break; - } - if (!i && free) - { - i = free; - DontPropagateMasks[i] = mask; - } - } - if (i || !mask) - { - pWin->dontPropagate = i; - if (i) - DontPropagateRefCnts[i]++; - if (pWin->optional) - { - pWin->optional->dontPropagateMask = mask; - *checkOptional = TRUE; - } - } - else - { - if (!pWin->optional && !MakeWindowOptional (pWin)) - { - if (pWin->dontPropagate) - DontPropagateRefCnts[pWin->dontPropagate]++; - return BadAlloc; - } - pWin->dontPropagate = 0; - pWin->optional->dontPropagateMask = mask; - } - RecalculateDeliverableEvents(pWin); - return Success; -} - -static WindowPtr -CommonAncestor( - register WindowPtr a, - register WindowPtr b) -{ - for (b = b->parent; b; b = b->parent) - if (IsParent(b, a)) return b; - return NullWindow; -} - -static void -EnterLeaveEvent( - int type, - int mode, - int detail, - register WindowPtr pWin, - Window child) -{ - xEvent event; - register DeviceIntPtr keybd = inputInfo.keyboard; - WindowPtr focus; - register DeviceIntPtr mouse = inputInfo.pointer; - register GrabPtr grab = mouse->grab; - Mask mask; - - if ((pWin == mouse->valuator->motionHintWindow) && - (detail != NotifyInferior)) - mouse->valuator->motionHintWindow = NullWindow; - if (grab) - { - mask = (pWin == grab->window) ? grab->eventMask : 0; - if (grab->ownerEvents) - mask |= EventMaskForClient(pWin, rClient(grab)); - } - else - { - mask = pWin->eventMask | wOtherEventMasks(pWin); - } - if (mask & filters[type]) - { - event.u.u.type = type; - event.u.u.detail = detail; - event.u.enterLeave.time = currentTime.milliseconds; - event.u.enterLeave.rootX = sprite.hot.x; - event.u.enterLeave.rootY = sprite.hot.y; - /* Counts on the same initial structure of crossing & button events! */ - FixUpEventFromWindow(&event, pWin, None, FALSE); - /* Enter/Leave events always set child */ - event.u.enterLeave.child = child; - event.u.enterLeave.flags = event.u.keyButtonPointer.sameScreen ? - ELFlagSameScreen : 0; -#ifdef XKB - if (!noXkbExtension) { - event.u.enterLeave.state = mouse->button->state & 0x1f00; - event.u.enterLeave.state |= - XkbGrabStateFromRec(&keybd->key->xkbInfo->state); - } else -#endif - event.u.enterLeave.state = keybd->key->state | mouse->button->state; - event.u.enterLeave.mode = mode; - focus = keybd->focus->win; - if ((focus != NoneWin) && - ((pWin == focus) || (focus == PointerRootWin) || - IsParent(focus, pWin))) - event.u.enterLeave.flags |= ELFlagFocus; - if (grab) - (void)TryClientEvents(rClient(grab), &event, 1, mask, - filters[type], grab); - else - (void)DeliverEventsToWindow(pWin, &event, 1, filters[type], - NullGrab, 0); - } - if ((type == EnterNotify) && (mask & KeymapStateMask)) - { - xKeymapEvent ke; - -#ifdef XCSECURITY - ClientPtr client = grab ? rClient(grab) - : clients[CLIENT_ID(pWin->drawable.id)]; - if (!SecurityCheckDeviceAccess(client, keybd, FALSE)) - { - bzero((char *)&ke.map[0], 31); - } - else -#endif - memmove((char *)&ke.map[0], (char *)&keybd->key->down[1], 31); - ke.type = KeymapNotify; - if (grab) - (void)TryClientEvents(rClient(grab), (xEvent *)&ke, 1, mask, - KeymapStateMask, grab); - else - (void)DeliverEventsToWindow(pWin, (xEvent *)&ke, 1, - KeymapStateMask, NullGrab, 0); - } -} - -static void -EnterNotifies(WindowPtr ancestor, WindowPtr child, int mode, int detail) -{ - WindowPtr parent = child->parent; - - if (ancestor == parent) - return; - EnterNotifies(ancestor, parent, mode, detail); - EnterLeaveEvent(EnterNotify, mode, detail, parent, child->drawable.id); -} - -static void -LeaveNotifies(WindowPtr child, WindowPtr ancestor, int mode, int detail) -{ - register WindowPtr pWin; - - if (ancestor == child) - return; - for (pWin = child->parent; pWin != ancestor; pWin = pWin->parent) - { - EnterLeaveEvent(LeaveNotify, mode, detail, pWin, child->drawable.id); - child = pWin; - } -} - -static void -DoEnterLeaveEvents(WindowPtr fromWin, WindowPtr toWin, int mode) -{ - if (fromWin == toWin) - return; - if (IsParent(fromWin, toWin)) - { - EnterLeaveEvent(LeaveNotify, mode, NotifyInferior, fromWin, None); - EnterNotifies(fromWin, toWin, mode, NotifyVirtual); - EnterLeaveEvent(EnterNotify, mode, NotifyAncestor, toWin, None); - } - else if (IsParent(toWin, fromWin)) - { - EnterLeaveEvent(LeaveNotify, mode, NotifyAncestor, fromWin, None); - LeaveNotifies(fromWin, toWin, mode, NotifyVirtual); - EnterLeaveEvent(EnterNotify, mode, NotifyInferior, toWin, None); - } - else - { /* neither fromWin nor toWin is descendent of the other */ - WindowPtr common = CommonAncestor(toWin, fromWin); - /* common == NullWindow ==> different screens */ - EnterLeaveEvent(LeaveNotify, mode, NotifyNonlinear, fromWin, None); - LeaveNotifies(fromWin, common, mode, NotifyNonlinearVirtual); - EnterNotifies(common, toWin, mode, NotifyNonlinearVirtual); - EnterLeaveEvent(EnterNotify, mode, NotifyNonlinear, toWin, None); - } -} - -static void -FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, register WindowPtr pWin) -{ - xEvent event; - -#ifdef XINPUT - if (dev != inputInfo.keyboard) - { - DeviceFocusEvent(dev, type, mode, detail, pWin); - return; - } -#endif - event.u.focus.mode = mode; - event.u.u.type = type; - event.u.u.detail = detail; - event.u.focus.window = pWin->drawable.id; - (void)DeliverEventsToWindow(pWin, &event, 1, filters[type], NullGrab, - 0); - if ((type == FocusIn) && - ((pWin->eventMask | wOtherEventMasks(pWin)) & KeymapStateMask)) - { - xKeymapEvent ke; -#ifdef XCSECURITY - ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)]; - if (!SecurityCheckDeviceAccess(client, dev, FALSE)) - { - bzero((char *)&ke.map[0], 31); - } - else -#endif - memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31); - ke.type = KeymapNotify; - (void)DeliverEventsToWindow(pWin, (xEvent *)&ke, 1, - KeymapStateMask, NullGrab, 0); - } -} - - /* - * recursive because it is easier - * no-op if child not descended from ancestor - */ -static Bool -FocusInEvents( - DeviceIntPtr dev, - WindowPtr ancestor, WindowPtr child, WindowPtr skipChild, - int mode, int detail, - Bool doAncestor) -{ - if (child == NullWindow) - return ancestor == NullWindow; - if (ancestor == child) - { - if (doAncestor) - FocusEvent(dev, FocusIn, mode, detail, child); - return TRUE; - } - if (FocusInEvents(dev, ancestor, child->parent, skipChild, mode, detail, - doAncestor)) - { - if (child != skipChild) - FocusEvent(dev, FocusIn, mode, detail, child); - return TRUE; - } - return FALSE; -} - -/* dies horribly if ancestor is not an ancestor of child */ -static void -FocusOutEvents( - DeviceIntPtr dev, - WindowPtr child, WindowPtr ancestor, - int mode, int detail, - Bool doAncestor) -{ - register WindowPtr pWin; - - for (pWin = child; pWin != ancestor; pWin = pWin->parent) - FocusEvent(dev, FocusOut, mode, detail, pWin); - if (doAncestor) - FocusEvent(dev, FocusOut, mode, detail, ancestor); -} - -void -DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) -{ - int out, in; /* for holding details for to/from - PointerRoot/None */ - int i; - - if (fromWin == toWin) - return; - out = (fromWin == NoneWin) ? NotifyDetailNone : NotifyPointerRoot; - in = (toWin == NoneWin) ? NotifyDetailNone : NotifyPointerRoot; - /* wrong values if neither, but then not referenced */ - - if ((toWin == NullWindow) || (toWin == PointerRootWin)) - { - if ((fromWin == NullWindow) || (fromWin == PointerRootWin)) - { - if (fromWin == PointerRootWin) - FocusOutEvents(dev, sprite.win, ROOT, mode, NotifyPointer, - TRUE); - /* Notify all the roots */ -#ifdef PANORAMIX - if ( !noPanoramiXExtension ) - FocusEvent(dev, FocusOut, mode, out, WindowTable[0]); - else -#endif - for (i=0; i<screenInfo.numScreens; i++) - FocusEvent(dev, FocusOut, mode, out, WindowTable[i]); - } - else - { - if (IsParent(fromWin, sprite.win)) - FocusOutEvents(dev, sprite.win, fromWin, mode, NotifyPointer, - FALSE); - FocusEvent(dev, FocusOut, mode, NotifyNonlinear, fromWin); - /* next call catches the root too, if the screen changed */ - FocusOutEvents(dev, fromWin->parent, NullWindow, mode, - NotifyNonlinearVirtual, FALSE); - } - /* Notify all the roots */ -#ifdef PANORAMIX - if ( !noPanoramiXExtension ) - FocusEvent(dev, FocusIn, mode, in, WindowTable[0]); - else -#endif - for (i=0; i<screenInfo.numScreens; i++) - FocusEvent(dev, FocusIn, mode, in, WindowTable[i]); - if (toWin == PointerRootWin) - (void)FocusInEvents(dev, ROOT, sprite.win, NullWindow, mode, - NotifyPointer, TRUE); - } - else - { - if ((fromWin == NullWindow) || (fromWin == PointerRootWin)) - { - if (fromWin == PointerRootWin) - FocusOutEvents(dev, sprite.win, ROOT, mode, NotifyPointer, - TRUE); -#ifdef PANORAMIX - if ( !noPanoramiXExtension ) - FocusEvent(dev, FocusOut, mode, out, WindowTable[0]); - else -#endif - for (i=0; i<screenInfo.numScreens; i++) - FocusEvent(dev, FocusOut, mode, out, WindowTable[i]); - if (toWin->parent != NullWindow) - (void)FocusInEvents(dev, ROOT, toWin, toWin, mode, - NotifyNonlinearVirtual, TRUE); - FocusEvent(dev, FocusIn, mode, NotifyNonlinear, toWin); - if (IsParent(toWin, sprite.win)) - (void)FocusInEvents(dev, toWin, sprite.win, NullWindow, mode, - NotifyPointer, FALSE); - } - else - { - if (IsParent(toWin, fromWin)) - { - FocusEvent(dev, FocusOut, mode, NotifyAncestor, fromWin); - FocusOutEvents(dev, fromWin->parent, toWin, mode, - NotifyVirtual, FALSE); - FocusEvent(dev, FocusIn, mode, NotifyInferior, toWin); - if ((IsParent(toWin, sprite.win)) && - (sprite.win != fromWin) && - (!IsParent(fromWin, sprite.win)) && - (!IsParent(sprite.win, fromWin))) - (void)FocusInEvents(dev, toWin, sprite.win, NullWindow, - mode, NotifyPointer, FALSE); - } - else - if (IsParent(fromWin, toWin)) - { - if ((IsParent(fromWin, sprite.win)) && - (sprite.win != fromWin) && - (!IsParent(toWin, sprite.win)) && - (!IsParent(sprite.win, toWin))) - FocusOutEvents(dev, sprite.win, fromWin, mode, - NotifyPointer, FALSE); - FocusEvent(dev, FocusOut, mode, NotifyInferior, fromWin); - (void)FocusInEvents(dev, fromWin, toWin, toWin, mode, - NotifyVirtual, FALSE); - FocusEvent(dev, FocusIn, mode, NotifyAncestor, toWin); - } - else - { - /* neither fromWin or toWin is child of other */ - WindowPtr common = CommonAncestor(toWin, fromWin); - /* common == NullWindow ==> different screens */ - if (IsParent(fromWin, sprite.win)) - FocusOutEvents(dev, sprite.win, fromWin, mode, - NotifyPointer, FALSE); - FocusEvent(dev, FocusOut, mode, NotifyNonlinear, fromWin); - if (fromWin->parent != NullWindow) - FocusOutEvents(dev, fromWin->parent, common, mode, - NotifyNonlinearVirtual, FALSE); - if (toWin->parent != NullWindow) - (void)FocusInEvents(dev, common, toWin, toWin, mode, - NotifyNonlinearVirtual, FALSE); - FocusEvent(dev, FocusIn, mode, NotifyNonlinear, toWin); - if (IsParent(toWin, sprite.win)) - (void)FocusInEvents(dev, toWin, sprite.win, NullWindow, - mode, NotifyPointer, FALSE); - } - } - } -} - -int -SetInputFocus( - ClientPtr client, - DeviceIntPtr dev, - Window focusID, - CARD8 revertTo, - Time ctime, - Bool followOK) -{ - register FocusClassPtr focus; - register WindowPtr focusWin; - int mode; - TimeStamp time; - - UpdateCurrentTime(); - if ((revertTo != RevertToParent) && - (revertTo != RevertToPointerRoot) && - (revertTo != RevertToNone) && - ((revertTo != RevertToFollowKeyboard) || !followOK)) - { - client->errorValue = revertTo; - return BadValue; - } - time = ClientTimeToServerTime(ctime); - if ((focusID == None) || (focusID == PointerRoot)) - focusWin = (WindowPtr)(long)focusID; - else if ((focusID == FollowKeyboard) && followOK) - focusWin = inputInfo.keyboard->focus->win; - else if (!(focusWin = SecurityLookupWindow(focusID, client, - SecurityReadAccess))) - return BadWindow; - else - { - /* It is a match error to try to set the input focus to an - unviewable window. */ - - if(!focusWin->realized) - return(BadMatch); - } - focus = dev->focus; - if ((CompareTimeStamps(time, currentTime) == LATER) || - (CompareTimeStamps(time, focus->time) == EARLIER)) - return Success; - mode = (dev->grab) ? NotifyWhileGrabbed : NotifyNormal; - if (focus->win == FollowKeyboardWin) - DoFocusEvents(dev, inputInfo.keyboard->focus->win, focusWin, mode); - else - DoFocusEvents(dev, focus->win, focusWin, mode); - focus->time = time; - focus->revert = revertTo; - if (focusID == FollowKeyboard) - focus->win = FollowKeyboardWin; - else - focus->win = focusWin; - if ((focusWin == NoneWin) || (focusWin == PointerRootWin)) - focus->traceGood = 0; - else - { - int depth = 0; - register WindowPtr pWin; - - for (pWin = focusWin; pWin; pWin = pWin->parent) depth++; - if (depth > focus->traceSize) - { - focus->traceSize = depth+1; - Must_have_memory = TRUE; /* XXX */ - focus->trace = (WindowPtr *)xrealloc(focus->trace, - focus->traceSize * - sizeof(WindowPtr)); - Must_have_memory = FALSE; /* XXX */ - } - focus->traceGood = depth; - for (pWin = focusWin, depth--; pWin; pWin = pWin->parent, depth--) - focus->trace[depth] = pWin; - } - return Success; -} - -int -ProcSetInputFocus(client) - ClientPtr client; -{ - REQUEST(xSetInputFocusReq); - - REQUEST_SIZE_MATCH(xSetInputFocusReq); -#ifdef XCSECURITY - if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE)) - return Success; -#endif - return SetInputFocus(client, inputInfo.keyboard, stuff->focus, - stuff->revertTo, stuff->time, FALSE); -} - -int -ProcGetInputFocus(ClientPtr client) -{ - xGetInputFocusReply rep; - /* REQUEST(xReq); */ - FocusClassPtr focus = inputInfo.keyboard->focus; - - REQUEST_SIZE_MATCH(xReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - if (focus->win == NoneWin) - rep.focus = None; - else if (focus->win == PointerRootWin) - rep.focus = PointerRoot; - else rep.focus = focus->win->drawable.id; - rep.revertTo = focus->revert; - WriteReplyToClient(client, sizeof(xGetInputFocusReply), &rep); - return Success; -} - -int -ProcGrabPointer(ClientPtr client) -{ - xGrabPointerReply rep; - DeviceIntPtr device = inputInfo.pointer; - GrabPtr grab; - WindowPtr pWin, confineTo; - CursorPtr cursor, oldCursor; - REQUEST(xGrabPointerReq); - TimeStamp time; - - REQUEST_SIZE_MATCH(xGrabPointerReq); - UpdateCurrentTime(); - if ((stuff->pointerMode != GrabModeSync) && - (stuff->pointerMode != GrabModeAsync)) - { - client->errorValue = stuff->pointerMode; - return BadValue; - } - if ((stuff->keyboardMode != GrabModeSync) && - (stuff->keyboardMode != GrabModeAsync)) - { - client->errorValue = stuff->keyboardMode; - return BadValue; - } - if ((stuff->ownerEvents != xFalse) && (stuff->ownerEvents != xTrue)) - { - client->errorValue = stuff->ownerEvents; - return BadValue; - } - if ((stuff->eventMask & ~PointerGrabMask) && !permitOldBugs) - { - client->errorValue = stuff->eventMask; - return BadValue; - } - pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess); - if (!pWin) - return BadWindow; - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcGrabPointer: pWin [%p] client [%d].\n", pWin, client -> index); - } - #endif - if (stuff->confineTo == None) - confineTo = NullWindow; - else - { - confineTo = SecurityLookupWindow(stuff->confineTo, client, - SecurityReadAccess); - if (!confineTo) - return BadWindow; - } - if (stuff->cursor == None) - cursor = NullCursor; - else - { - cursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor, - RT_CURSOR, SecurityReadAccess); - if (!cursor) - { - client->errorValue = stuff->cursor; - return BadCursor; - } - } - /* at this point, some sort of reply is guaranteed. */ - time = ClientTimeToServerTime(stuff->time); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - grab = device->grab; - if ((grab) && !SameClient(grab, client)) - rep.status = AlreadyGrabbed; - else if ((!pWin->realized) || - (confineTo && - !(confineTo->realized && BorderSizeNotEmpty(confineTo)))) - rep.status = GrabNotViewable; - else if (device->sync.frozen && - device->sync.other && !SameClient(device->sync.other, client)) - rep.status = GrabFrozen; - else if ((CompareTimeStamps(time, currentTime) == LATER) || - (CompareTimeStamps(time, device->grabTime) == EARLIER)) - rep.status = GrabInvalidTime; - else - { - GrabRec tempGrab; - - oldCursor = NullCursor; - if (grab) - { - if (grab->confineTo && !confineTo) - ConfineCursorToWindow(ROOT, FALSE, FALSE); - oldCursor = grab->cursor; - } - tempGrab.cursor = cursor; - tempGrab.resource = client->clientAsMask; - tempGrab.ownerEvents = stuff->ownerEvents; - tempGrab.eventMask = stuff->eventMask; - tempGrab.confineTo = confineTo; - tempGrab.window = pWin; - tempGrab.keyboardMode = stuff->keyboardMode; - tempGrab.pointerMode = stuff->pointerMode; - tempGrab.device = device; - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcGrabPointer: Activating active grab on pointer.\n"); - } - #endif - (*device->ActivateGrab)(device, &tempGrab, time, FALSE); - if (oldCursor) - FreeCursor (oldCursor, (Cursor)0); - rep.status = GrabSuccess; - } - WriteReplyToClient(client, sizeof(xGrabPointerReply), &rep); - return Success; -} - -int -ProcChangeActivePointerGrab(ClientPtr client) -{ - DeviceIntPtr device = inputInfo.pointer; - register GrabPtr grab = device->grab; - CursorPtr newCursor, oldCursor; - REQUEST(xChangeActivePointerGrabReq); - TimeStamp time; - - REQUEST_SIZE_MATCH(xChangeActivePointerGrabReq); - if ((stuff->eventMask & ~PointerGrabMask) && !permitOldBugs) - { - client->errorValue = stuff->eventMask; - return BadValue; - } - if (stuff->cursor == None) - newCursor = NullCursor; - else - { - newCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor, - RT_CURSOR, SecurityReadAccess); - if (!newCursor) - { - client->errorValue = stuff->cursor; - return BadCursor; - } - } - if (!grab) - return Success; - if (!SameClient(grab, client)) - return Success; - time = ClientTimeToServerTime(stuff->time); - if ((CompareTimeStamps(time, currentTime) == LATER) || - (CompareTimeStamps(time, device->grabTime) == EARLIER)) - return Success; - oldCursor = grab->cursor; - grab->cursor = newCursor; - if (newCursor) - newCursor->refcnt++; - PostNewCursor(); - if (oldCursor) - FreeCursor(oldCursor, (Cursor)0); - grab->eventMask = stuff->eventMask; - return Success; -} - -int -ProcUngrabPointer(ClientPtr client) -{ - DeviceIntPtr device = inputInfo.pointer; - GrabPtr grab; - TimeStamp time; - REQUEST(xResourceReq); - - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcUngrabPointer: client [%d].\n", client -> index); - } - #endif - REQUEST_SIZE_MATCH(xResourceReq); - UpdateCurrentTime(); - grab = device->grab; - time = ClientTimeToServerTime(stuff->id); - if ((CompareTimeStamps(time, currentTime) != LATER) && - (CompareTimeStamps(time, device->grabTime) != EARLIER) && - (grab) && SameClient(grab, client)) - #ifdef NX_DEBUG_INPUT - { - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcUngrabPointer: Deactivating grab on pointer.\n"); - } - #endif - (*device->DeactivateGrab)(device); - #ifdef NX_DEBUG_INPUT - } - else - { - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcUngrabPointer: current time [%lu] request time [%lu] grab time [%lu].\n", - currentTime.milliseconds, time.milliseconds, device->grabTime.milliseconds); - } - } - #endif - return Success; -} - -int -GrabDevice(register ClientPtr client, register DeviceIntPtr dev, - unsigned this_mode, unsigned other_mode, Window grabWindow, - unsigned ownerEvents, Time ctime, Mask mask, CARD8 *status) -{ - register WindowPtr pWin; - register GrabPtr grab; - TimeStamp time; - - UpdateCurrentTime(); - if ((this_mode != GrabModeSync) && (this_mode != GrabModeAsync)) - { - client->errorValue = this_mode; - return BadValue; - } - if ((other_mode != GrabModeSync) && (other_mode != GrabModeAsync)) - { - client->errorValue = other_mode; - return BadValue; - } - if ((ownerEvents != xFalse) && (ownerEvents != xTrue)) - { - client->errorValue = ownerEvents; - return BadValue; - } - pWin = SecurityLookupWindow(grabWindow, client, SecurityReadAccess); - if (!pWin) - return BadWindow; - time = ClientTimeToServerTime(ctime); - grab = dev->grab; - if (grab && !SameClient(grab, client)) - *status = AlreadyGrabbed; - else if (!pWin->realized) - *status = GrabNotViewable; - else if ((CompareTimeStamps(time, currentTime) == LATER) || - (CompareTimeStamps(time, dev->grabTime) == EARLIER)) - *status = GrabInvalidTime; - else if (dev->sync.frozen && - dev->sync.other && !SameClient(dev->sync.other, client)) - *status = GrabFrozen; - else - { - GrabRec tempGrab; - - tempGrab.window = pWin; - tempGrab.resource = client->clientAsMask; - tempGrab.ownerEvents = ownerEvents; - tempGrab.keyboardMode = this_mode; - tempGrab.pointerMode = other_mode; - tempGrab.eventMask = mask; - tempGrab.device = dev; - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "GrabDevice: Activating active grab on keyboard.\n"); - } - #endif - (*dev->ActivateGrab)(dev, &tempGrab, time, FALSE); - *status = GrabSuccess; - } - return Success; -} - -int -ProcGrabKeyboard(ClientPtr client) -{ - xGrabKeyboardReply rep; - REQUEST(xGrabKeyboardReq); - int result; - - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcGrabKeyboard: client [%d].\n", client -> index); - } - #endif - REQUEST_SIZE_MATCH(xGrabKeyboardReq); -#ifdef XCSECURITY - if (!SecurityCheckDeviceAccess(client, inputInfo.keyboard, TRUE)) - { - result = Success; - rep.status = AlreadyGrabbed; - } - else -#endif - result = GrabDevice(client, inputInfo.keyboard, stuff->keyboardMode, - stuff->pointerMode, stuff->grabWindow, - stuff->ownerEvents, stuff->time, - KeyPressMask | KeyReleaseMask, &rep.status); - if (result != Success) - return result; - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - WriteReplyToClient(client, sizeof(xGrabKeyboardReply), &rep); - return Success; -} - -int -ProcUngrabKeyboard(ClientPtr client) -{ - DeviceIntPtr device = inputInfo.keyboard; - GrabPtr grab; - TimeStamp time; - REQUEST(xResourceReq); - - #ifdef NX_DEBUG_INPUT - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcUngrabKeyboard: client [%d].\n", client -> index); - } - #endif - REQUEST_SIZE_MATCH(xResourceReq); - UpdateCurrentTime(); - grab = device->grab; - time = ClientTimeToServerTime(stuff->id); - if ((CompareTimeStamps(time, currentTime) != LATER) && - (CompareTimeStamps(time, device->grabTime) != EARLIER) && - (grab) && SameClient(grab, client)) - #ifdef NX_DEBUG_INPUT - { - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcUngrabKeyboard: Deactivating grab on keyboard.\n"); - } - #endif - (*device->DeactivateGrab)(device); - #ifdef NX_DEBUG_INPUT - } - else - { - if (nxagentDebugInputDevices == 1) - { - fprintf(stderr, "ProcUngrabKeyboard: current time [%lu] request time [%lu] grab time [%lu].\n", - currentTime.milliseconds, time.milliseconds, device->grabTime.milliseconds); - } - } - #endif - return Success; -} - -int -ProcQueryPointer(ClientPtr client) -{ - xQueryPointerReply rep; - WindowPtr pWin, t; - REQUEST(xResourceReq); - DeviceIntPtr mouse = inputInfo.pointer; - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = SecurityLookupWindow(stuff->id, client, SecurityReadAccess); - if (!pWin) - return BadWindow; - if (mouse->valuator->motionHintWindow) - MaybeStopHint(mouse, client); - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.mask = mouse->button->state | inputInfo.keyboard->key->state; - rep.length = 0; - rep.root = (ROOT)->drawable.id; - rep.rootX = sprite.hot.x; - rep.rootY = sprite.hot.y; - rep.child = None; - if (sprite.hot.pScreen == pWin->drawable.pScreen) - { - rep.sameScreen = xTrue; - rep.winX = sprite.hot.x - pWin->drawable.x; - rep.winY = sprite.hot.y - pWin->drawable.y; - for (t = sprite.win; t; t = t->parent) - if (t->parent == pWin) - { - rep.child = t->drawable.id; - break; - } - } - else - { - rep.sameScreen = xFalse; - rep.winX = 0; - rep.winY = 0; - } - -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - rep.rootX += panoramiXdataPtr[0].x; - rep.rootY += panoramiXdataPtr[0].y; - if(stuff->id == rep.root) { - rep.winX += panoramiXdataPtr[0].x; - rep.winY += panoramiXdataPtr[0].y; - } - } -#endif - - WriteReplyToClient(client, sizeof(xQueryPointerReply), &rep); - - return(Success); -} - -void -InitEvents() -{ - int i; - - sprite.hot.pScreen = sprite.hotPhys.pScreen = (ScreenPtr)NULL; - inputInfo.numDevices = 0; - inputInfo.devices = (DeviceIntPtr)NULL; - inputInfo.off_devices = (DeviceIntPtr)NULL; - inputInfo.keyboard = (DeviceIntPtr)NULL; - inputInfo.pointer = (DeviceIntPtr)NULL; - if (spriteTraceSize == 0) - { - spriteTraceSize = 32; - spriteTrace = (WindowPtr *)xalloc(32*sizeof(WindowPtr)); - if (!spriteTrace) - FatalError("failed to allocate spriteTrace"); - } - spriteTraceGood = 0; - lastEventMask = OwnerGrabButtonMask; - filters[MotionNotify] = PointerMotionMask; -#ifdef XEVIE - xeviewin = -#endif - sprite.win = NullWindow; - sprite.current = NullCursor; - sprite.hotLimits.x1 = 0; - sprite.hotLimits.y1 = 0; - sprite.hotLimits.x2 = 0; - sprite.hotLimits.y2 = 0; - sprite.confined = FALSE; - syncEvents.replayDev = (DeviceIntPtr)NULL; - syncEvents.replayWin = NullWindow; - while (syncEvents.pending) - { - QdEventPtr next = syncEvents.pending->next; - xfree(syncEvents.pending); - syncEvents.pending = next; - } - syncEvents.pendtail = &syncEvents.pending; - syncEvents.playingEvents = FALSE; - syncEvents.time.months = 0; - syncEvents.time.milliseconds = 0; /* hardly matters */ - currentTime.months = 0; - currentTime.milliseconds = GetTimeInMillis(); - lastDeviceEventTime = currentTime; - for (i = 0; i < DNPMCOUNT; i++) - { - DontPropagateMasks[i] = 0; - DontPropagateRefCnts[i] = 0; - } -} - -void -CloseDownEvents(void) -{ - xfree(spriteTrace); - spriteTrace = NULL; - spriteTraceSize = 0; -} - -int -ProcSendEvent(ClientPtr client) -{ - WindowPtr pWin; - WindowPtr effectiveFocus = NullWindow; /* only set if dest==InputFocus */ - REQUEST(xSendEventReq); - - REQUEST_SIZE_MATCH(xSendEventReq); - - /* The client's event type must be a core event type or one defined by an - extension. */ - - -#ifdef NXAGENT_CLIPBOARD - - if (stuff -> event.u.u.type == SelectionNotify) - { - extern int nxagentSendNotify(xEvent*); - if (nxagentSendNotify(&stuff->event) == 1) - return Success; - } -#endif - - if ( ! ((stuff->event.u.u.type > X_Reply && - stuff->event.u.u.type < LASTEvent) || - (stuff->event.u.u.type >= EXTENSION_EVENT_BASE && - stuff->event.u.u.type < (unsigned)lastEvent))) - { - client->errorValue = stuff->event.u.u.type; - return BadValue; - } - if (stuff->event.u.u.type == ClientMessage && - stuff->event.u.u.detail != 8 && - stuff->event.u.u.detail != 16 && - stuff->event.u.u.detail != 32 && - !permitOldBugs) - { - client->errorValue = stuff->event.u.u.detail; - return BadValue; - } - if ((stuff->eventMask & ~AllEventMasks) && !permitOldBugs) - { - client->errorValue = stuff->eventMask; - return BadValue; - } - - if (stuff->destination == PointerWindow) - pWin = sprite.win; - else if (stuff->destination == InputFocus) - { - WindowPtr inputFocus = inputInfo.keyboard->focus->win; - - if (inputFocus == NoneWin) - return Success; - - /* If the input focus is PointerRootWin, send the event to where - the pointer is if possible, then perhaps propogate up to root. */ - if (inputFocus == PointerRootWin) - inputFocus = ROOT; - - if (IsParent(inputFocus, sprite.win)) - { - effectiveFocus = inputFocus; - pWin = sprite.win; - } - else - effectiveFocus = pWin = inputFocus; - } - else - pWin = SecurityLookupWindow(stuff->destination, client, - SecurityReadAccess); - if (!pWin) - return BadWindow; - if ((stuff->propagate != xFalse) && (stuff->propagate != xTrue)) - { - client->errorValue = stuff->propagate; - return BadValue; - } - stuff->event.u.u.type |= 0x80; - if (stuff->propagate) - { - for (;pWin; pWin = pWin->parent) - { - if (DeliverEventsToWindow(pWin, &stuff->event, 1, stuff->eventMask, - NullGrab, 0)) - return Success; - if (pWin == effectiveFocus) - return Success; - stuff->eventMask &= ~wDontPropagateMask(pWin); - if (!stuff->eventMask) - break; - } - } - else - (void)DeliverEventsToWindow(pWin, &stuff->event, 1, stuff->eventMask, - NullGrab, 0); - return Success; -} - -int -ProcUngrabKey(ClientPtr client) -{ - REQUEST(xUngrabKeyReq); - WindowPtr pWin; - GrabRec tempGrab; - DeviceIntPtr keybd = inputInfo.keyboard; - - REQUEST_SIZE_MATCH(xUngrabKeyReq); - pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess); - if (!pWin) - return BadWindow; - - if (((stuff->key > keybd->key->curKeySyms.maxKeyCode) || - (stuff->key < keybd->key->curKeySyms.minKeyCode)) - && (stuff->key != AnyKey)) - { - client->errorValue = stuff->key; - return BadValue; - } - if ((stuff->modifiers != AnyModifier) && - (stuff->modifiers & ~AllModifiersMask)) - { - client->errorValue = stuff->modifiers; - return BadValue; - } - tempGrab.resource = client->clientAsMask; - tempGrab.device = keybd; - tempGrab.window = pWin; - tempGrab.modifiersDetail.exact = stuff->modifiers; - tempGrab.modifiersDetail.pMask = NULL; - tempGrab.modifierDevice = inputInfo.keyboard; - tempGrab.type = KeyPress; - tempGrab.detail.exact = stuff->key; - tempGrab.detail.pMask = NULL; - - if (!DeletePassiveGrabFromList(&tempGrab)) - return(BadAlloc); - return(Success); -} - -int -ProcGrabKey(ClientPtr client) -{ - WindowPtr pWin; - REQUEST(xGrabKeyReq); - GrabPtr grab; - DeviceIntPtr keybd = inputInfo.keyboard; - - REQUEST_SIZE_MATCH(xGrabKeyReq); - if ((stuff->ownerEvents != xTrue) && (stuff->ownerEvents != xFalse)) - { - client->errorValue = stuff->ownerEvents; - return(BadValue); - } - if ((stuff->pointerMode != GrabModeSync) && - (stuff->pointerMode != GrabModeAsync)) - { - client->errorValue = stuff->pointerMode; - return BadValue; - } - if ((stuff->keyboardMode != GrabModeSync) && - (stuff->keyboardMode != GrabModeAsync)) - { - client->errorValue = stuff->keyboardMode; - return BadValue; - } - if (((stuff->key > keybd->key->curKeySyms.maxKeyCode) || - (stuff->key < keybd->key->curKeySyms.minKeyCode)) - && (stuff->key != AnyKey)) - { - client->errorValue = stuff->key; - return BadValue; - } - if ((stuff->modifiers != AnyModifier) && - (stuff->modifiers & ~AllModifiersMask)) - { - client->errorValue = stuff->modifiers; - return BadValue; - } - pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess); - if (!pWin) - return BadWindow; - - grab = CreateGrab(client->index, keybd, pWin, - (Mask)(KeyPressMask | KeyReleaseMask), (Bool)stuff->ownerEvents, - (Bool)stuff->keyboardMode, (Bool)stuff->pointerMode, - keybd, stuff->modifiers, KeyPress, stuff->key, - NullWindow, NullCursor); - if (!grab) - return BadAlloc; - return AddPassiveGrabToList(grab); -} - - -int -ProcGrabButton(ClientPtr client) -{ - WindowPtr pWin, confineTo; - REQUEST(xGrabButtonReq); - CursorPtr cursor; - GrabPtr grab; - - REQUEST_SIZE_MATCH(xGrabButtonReq); - if ((stuff->pointerMode != GrabModeSync) && - (stuff->pointerMode != GrabModeAsync)) - { - client->errorValue = stuff->pointerMode; - return BadValue; - } - if ((stuff->keyboardMode != GrabModeSync) && - (stuff->keyboardMode != GrabModeAsync)) - { - client->errorValue = stuff->keyboardMode; - return BadValue; - } - if ((stuff->modifiers != AnyModifier) && - (stuff->modifiers & ~AllModifiersMask)) - { - client->errorValue = stuff->modifiers; - return BadValue; - } - if ((stuff->ownerEvents != xFalse) && (stuff->ownerEvents != xTrue)) - { - client->errorValue = stuff->ownerEvents; - return BadValue; - } - if (stuff->eventMask & ~PointerGrabMask) - { - client->errorValue = stuff->eventMask; - return BadValue; - } - pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess); - if (!pWin) - return BadWindow; - if (stuff->confineTo == None) - confineTo = NullWindow; - else { - confineTo = SecurityLookupWindow(stuff->confineTo, client, - SecurityReadAccess); - if (!confineTo) - return BadWindow; - } - if (stuff->cursor == None) - cursor = NullCursor; - else - { - cursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor, - RT_CURSOR, SecurityReadAccess); - if (!cursor) - { - client->errorValue = stuff->cursor; - return BadCursor; - } - } - - - grab = CreateGrab(client->index, inputInfo.pointer, pWin, - permitOldBugs ? (Mask)(stuff->eventMask | - ButtonPressMask | ButtonReleaseMask) : - (Mask)stuff->eventMask, - (Bool)stuff->ownerEvents, (Bool) stuff->keyboardMode, - (Bool)stuff->pointerMode, inputInfo.keyboard, stuff->modifiers, - ButtonPress, stuff->button, confineTo, cursor); - if (!grab) - return BadAlloc; - return AddPassiveGrabToList(grab); -} - -int -ProcUngrabButton(ClientPtr client) -{ - REQUEST(xUngrabButtonReq); - WindowPtr pWin; - GrabRec tempGrab; - - REQUEST_SIZE_MATCH(xUngrabButtonReq); - if ((stuff->modifiers != AnyModifier) && - (stuff->modifiers & ~AllModifiersMask)) - { - client->errorValue = stuff->modifiers; - return BadValue; - } - pWin = SecurityLookupWindow(stuff->grabWindow, client, SecurityReadAccess); - if (!pWin) - return BadWindow; - tempGrab.resource = client->clientAsMask; - tempGrab.device = inputInfo.pointer; - tempGrab.window = pWin; - tempGrab.modifiersDetail.exact = stuff->modifiers; - tempGrab.modifiersDetail.pMask = NULL; - tempGrab.modifierDevice = inputInfo.keyboard; - tempGrab.type = ButtonPress; - tempGrab.detail.exact = stuff->button; - tempGrab.detail.pMask = NULL; - - if (!DeletePassiveGrabFromList(&tempGrab)) - return(BadAlloc); - return(Success); -} - -void -DeleteWindowFromAnyEvents(WindowPtr pWin, Bool freeResources) -{ - WindowPtr parent; - DeviceIntPtr mouse = inputInfo.pointer; - DeviceIntPtr keybd = inputInfo.keyboard; - FocusClassPtr focus = keybd->focus; - OtherClientsPtr oc; - GrabPtr passive; - - - /* Deactivate any grabs performed on this window, before making any - input focus changes. */ - - if (mouse->grab && - ((mouse->grab->window == pWin) || (mouse->grab->confineTo == pWin))) - (*mouse->DeactivateGrab)(mouse); - - /* Deactivating a keyboard grab should cause focus events. */ - - if (keybd->grab && (keybd->grab->window == pWin)) - (*keybd->DeactivateGrab)(keybd); - - /* If the focus window is a root window (ie. has no parent) then don't - delete the focus from it. */ - - if ((pWin == focus->win) && (pWin->parent != NullWindow)) - { - int focusEventMode = NotifyNormal; - - /* If a grab is in progress, then alter the mode of focus events. */ - - if (keybd->grab) - focusEventMode = NotifyWhileGrabbed; - - switch (focus->revert) - { - case RevertToNone: - DoFocusEvents(keybd, pWin, NoneWin, focusEventMode); - focus->win = NoneWin; - focus->traceGood = 0; - break; - case RevertToParent: - parent = pWin; - do - { - parent = parent->parent; - focus->traceGood--; - } while (!parent->realized -/* This would be a good protocol change -- windows being reparented - during SaveSet processing would cause the focus to revert to the - nearest enclosing window which will survive the death of the exiting - client, instead of ending up reverting to a dying window and thence - to None - */ -#ifdef NOTDEF - || clients[CLIENT_ID(parent->drawable.id)]->clientGone -#endif - ); - DoFocusEvents(keybd, pWin, parent, focusEventMode); - focus->win = parent; - focus->revert = RevertToNone; - break; - case RevertToPointerRoot: - DoFocusEvents(keybd, pWin, PointerRootWin, focusEventMode); - focus->win = PointerRootWin; - focus->traceGood = 0; - break; - } - } - - if (mouse->valuator->motionHintWindow == pWin) - mouse->valuator->motionHintWindow = NullWindow; - - if (freeResources) - { - if (pWin->dontPropagate) - DontPropagateRefCnts[pWin->dontPropagate]--; - while ( (oc = wOtherClients(pWin)) ) - FreeResource(oc->resource, RT_NONE); - while ( (passive = wPassiveGrabs(pWin)) ) - FreeResource(passive->resource, RT_NONE); - } -#ifdef XINPUT - DeleteWindowFromAnyExtEvents(pWin, freeResources); -#endif -} - -/** - * Call this whenever some window at or below pWin has changed geometry - */ -void -CheckCursorConfinement(WindowPtr pWin) -{ - GrabPtr grab = inputInfo.pointer->grab; - WindowPtr confineTo; - -#ifdef PANORAMIX - if(!noPanoramiXExtension && pWin->drawable.pScreen->myNum) return; -#endif - - if (grab && (confineTo = grab->confineTo)) - { - if (!BorderSizeNotEmpty(confineTo)) - (*inputInfo.pointer->DeactivateGrab)(inputInfo.pointer); - else if ((pWin == confineTo) || IsParent(pWin, confineTo)) - ConfineCursorToWindow(confineTo, TRUE, TRUE); - } -} - -Mask -EventMaskForClient(WindowPtr pWin, ClientPtr client) -{ - register OtherClientsPtr other; - - if (wClient (pWin) == client) - return pWin->eventMask; - for (other = wOtherClients(pWin); other; other = other->next) - { - if (SameClient(other, client)) - return other->mask; - } - return 0; -} - -int -ProcRecolorCursor(ClientPtr client) -{ - CursorPtr pCursor; - int nscr; - ScreenPtr pscr; - Bool displayed; - REQUEST(xRecolorCursorReq); - - REQUEST_SIZE_MATCH(xRecolorCursorReq); - pCursor = (CursorPtr)SecurityLookupIDByType(client, stuff->cursor, - RT_CURSOR, SecurityWriteAccess); - if ( !pCursor) - { - client->errorValue = stuff->cursor; - return (BadCursor); - } - - pCursor->foreRed = stuff->foreRed; - pCursor->foreGreen = stuff->foreGreen; - pCursor->foreBlue = stuff->foreBlue; - - pCursor->backRed = stuff->backRed; - pCursor->backGreen = stuff->backGreen; - pCursor->backBlue = stuff->backBlue; - - for (nscr = 0; nscr < screenInfo.numScreens; nscr++) - { - pscr = screenInfo.screens[nscr]; -#ifdef PANORAMIX - if(!noPanoramiXExtension) - displayed = (pscr == sprite.screen); - else -#endif - displayed = (pscr == sprite.hotPhys.pScreen); - ( *pscr->RecolorCursor)(pscr, pCursor, - (pCursor == sprite.current) && displayed); - } - return (Success); -} - -void -WriteEventsToClient(ClientPtr pClient, int count, xEvent *events) -{ -#ifdef PANORAMIX - xEvent eventCopy; -#endif - xEvent eventTo, *eventFrom; - int i; - -#ifdef XKB - if ((!noXkbExtension)&&(!XkbFilterEvents(pClient, count, events))) - return; -#endif - -#ifdef PANORAMIX - if(!noPanoramiXExtension && - (panoramiXdataPtr[0].x || panoramiXdataPtr[0].y)) - { - switch(events->u.u.type) { - case MotionNotify: - case ButtonPress: - case ButtonRelease: - case KeyPress: - case KeyRelease: - case EnterNotify: - case LeaveNotify: - /* - When multiple clients want the same event DeliverEventsToWindow - passes the same event structure multiple times so we can't - modify the one passed to us - */ - count = 1; /* should always be 1 */ - memcpy(&eventCopy, events, sizeof(xEvent)); - eventCopy.u.keyButtonPointer.rootX += panoramiXdataPtr[0].x; - eventCopy.u.keyButtonPointer.rootY += panoramiXdataPtr[0].y; - if(eventCopy.u.keyButtonPointer.event == - eventCopy.u.keyButtonPointer.root) - { - eventCopy.u.keyButtonPointer.eventX += panoramiXdataPtr[0].x; - eventCopy.u.keyButtonPointer.eventY += panoramiXdataPtr[0].y; - } - events = &eventCopy; - break; - default: break; - } - } -#endif - - if (EventCallback) - { - EventInfoRec eventinfo; - eventinfo.client = pClient; - eventinfo.events = events; - eventinfo.count = count; - CallCallbacks(&EventCallback, (pointer)&eventinfo); - } - if(pClient->swapped) - { - for(i = 0; i < count; i++) - { - eventFrom = &events[i]; - /* Remember to strip off the leading bit of type in case - this event was sent with "SendEvent." */ - (*EventSwapVector[eventFrom->u.u.type & 0177]) - (eventFrom, &eventTo); - (void)WriteToClient(pClient, sizeof(xEvent), (char *)&eventTo); - } - } - else - { - (void)WriteToClient(pClient, count * sizeof(xEvent), (char *) events); - } -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c deleted file mode 100644 index ead9b9d..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c +++ /dev/null @@ -1,508 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XFree86: xc/programs/Xserver/dix/extension.c,v 3.11 2001/12/14 19:59:31 dawes Exp $ */ -/*********************************************************** - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* $Xorg: extension.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#define NEED_EVENTS -#define NEED_REPLIES -#include <X11/Xproto.h> -#include "misc.h" -#include "dixstruct.h" -#include "extnsionst.h" -#include "gcstruct.h" -#include "scrnintstr.h" -#include "../../dix/dispatch.h" -#ifdef XCSECURITY -#define _SECURITY_SERVER -#include <X11/extensions/security.h> -#endif -#ifdef LBX -#include "lbxserve.h" -#endif - -#include "Trap.h" - -#define EXTENSION_BASE 128 -#define EXTENSION_EVENT_BASE 64 -#define LAST_EVENT 128 -#define LAST_ERROR 255 - -ScreenProcEntry AuxillaryScreenProcs[MAXSCREENS]; - -static ExtensionEntry **extensions = (ExtensionEntry **)NULL; - -int lastEvent = EXTENSION_EVENT_BASE; -static int lastError = FirstExtensionError; -static unsigned int NumExtensions = 0; - -ExtensionEntry * -AddExtension(char *name, int NumEvents, int NumErrors, - int (*MainProc)(ClientPtr c1), - int (*SwappedMainProc)(ClientPtr c2), - void (*CloseDownProc)(ExtensionEntry *e), - unsigned short (*MinorOpcodeProc)(ClientPtr c3)) -{ - int i; - register ExtensionEntry *ext, **newexts; - - if (!MainProc || !SwappedMainProc || !CloseDownProc || !MinorOpcodeProc) - return((ExtensionEntry *) NULL); - if ((lastEvent + NumEvents > LAST_EVENT) || - (unsigned)(lastError + NumErrors > LAST_ERROR)) - return((ExtensionEntry *) NULL); - - ext = (ExtensionEntry *) xalloc(sizeof(ExtensionEntry)); - if (!ext) - return((ExtensionEntry *) NULL); - ext->name = (char *)xalloc(strlen(name) + 1); - ext->num_aliases = 0; - ext->aliases = (char **)NULL; - if (!ext->name) - { - xfree(ext); - return((ExtensionEntry *) NULL); - } - strcpy(ext->name, name); - i = NumExtensions; - newexts = (ExtensionEntry **) xrealloc(extensions, - (i + 1) * sizeof(ExtensionEntry *)); - if (!newexts) - { - xfree(ext->name); - xfree(ext); - return((ExtensionEntry *) NULL); - } - NumExtensions++; - extensions = newexts; - extensions[i] = ext; - ext->index = i; - ext->base = i + EXTENSION_BASE; - ext->CloseDown = CloseDownProc; - ext->MinorOpcode = MinorOpcodeProc; - ProcVector[i + EXTENSION_BASE] = MainProc; - SwappedProcVector[i + EXTENSION_BASE] = SwappedMainProc; - if (NumEvents) - { - ext->eventBase = lastEvent; - ext->eventLast = lastEvent + NumEvents; - lastEvent += NumEvents; - } - else - { - ext->eventBase = 0; - ext->eventLast = 0; - } - if (NumErrors) - { - ext->errorBase = lastError; - ext->errorLast = lastError + NumErrors; - lastError += NumErrors; - } - else - { - ext->errorBase = 0; - ext->errorLast = 0; - } -#ifdef XCSECURITY - ext->secure = FALSE; -#endif - -#ifdef LBX - (void) LbxAddExtension(name, ext->base, ext->eventBase, ext->errorBase); -#endif - return(ext); -} - -Bool AddExtensionAlias(char *alias, ExtensionEntry *ext) -{ - char *name; - char **aliases; - - aliases = (char **)xrealloc(ext->aliases, - (ext->num_aliases + 1) * sizeof(char *)); - if (!aliases) - return FALSE; - ext->aliases = aliases; - name = (char *)xalloc(strlen(alias) + 1); - if (!name) - return FALSE; - strcpy(name, alias); - ext->aliases[ext->num_aliases] = name; - ext->num_aliases++; -#ifdef LBX - return LbxAddExtensionAlias(ext->index, alias); -#else - return TRUE; -#endif -} - -static int -FindExtension(char *extname, int len) -{ - int i, j; - - for (i=0; i<NumExtensions; i++) - { - if ((strlen(extensions[i]->name) == len) && - !strncmp(extname, extensions[i]->name, len)) - break; - for (j = extensions[i]->num_aliases; --j >= 0;) - { - if ((strlen(extensions[i]->aliases[j]) == len) && - !strncmp(extname, extensions[i]->aliases[j], len)) - break; - } - if (j >= 0) break; - } - return ((i == NumExtensions) ? -1 : i); -} - -/* - * CheckExtension returns the extensions[] entry for the requested - * extension name. Maybe this could just return a Bool instead? - */ -ExtensionEntry * -CheckExtension(const char *extname) -{ - int n; - - n = FindExtension((char*)extname, strlen(extname)); - if (n != -1) - return extensions[n]; - else - return NULL; -} - -void -DeclareExtensionSecurity(char *extname, Bool secure) -{ -#ifdef XCSECURITY - int i = FindExtension(extname, strlen(extname)); - if (i >= 0) - { - int majorop = extensions[i]->base; - extensions[i]->secure = secure; - if (secure) - { - UntrustedProcVector[majorop] = ProcVector[majorop]; - SwappedUntrustedProcVector[majorop] = SwappedProcVector[majorop]; - } - else - { - UntrustedProcVector[majorop] = ProcBadRequest; - SwappedUntrustedProcVector[majorop] = ProcBadRequest; - } - } -#endif -#ifdef LBX - LbxDeclareExtensionSecurity(extname, secure); -#endif -} - -unsigned short -StandardMinorOpcode(ClientPtr client) -{ - return ((xReq *)client->requestBuffer)->data; -} - -unsigned short -MinorOpcodeOfRequest(ClientPtr client) -{ - unsigned char major; - - major = ((xReq *)client->requestBuffer)->reqType; - if (major < EXTENSION_BASE) - return 0; - major -= EXTENSION_BASE; - if (major >= NumExtensions) - return 0; - return (*extensions[major]->MinorOpcode)(client); -} - -void -CloseDownExtensions() -{ - register int i,j; - -#ifdef LBX - LbxCloseDownExtensions(); -#endif - - for (i = NumExtensions - 1; i >= 0; i--) - { - (* extensions[i]->CloseDown)(extensions[i]); - NumExtensions = i; - xfree(extensions[i]->name); - for (j = extensions[i]->num_aliases; --j >= 0;) - xfree(extensions[i]->aliases[j]); - xfree(extensions[i]->aliases); - xfree(extensions[i]); - } - xfree(extensions); - extensions = (ExtensionEntry **)NULL; - lastEvent = EXTENSION_EVENT_BASE; - lastError = FirstExtensionError; - for (i=0; i<MAXSCREENS; i++) - { - register ScreenProcEntry *spentry = &AuxillaryScreenProcs[i]; - - while (spentry->num) - { - spentry->num--; - xfree(spentry->procList[spentry->num].name); - } - xfree(spentry->procList); - spentry->procList = (ProcEntryPtr)NULL; - } -} - - -int -ProcQueryExtension(ClientPtr client) -{ - xQueryExtensionReply reply; - int i; - REQUEST(xQueryExtensionReq); - - REQUEST_FIXED_SIZE(xQueryExtensionReq, stuff->nbytes); - - reply.type = X_Reply; - reply.length = 0; - reply.major_opcode = 0; - reply.sequenceNumber = client->sequence; - - if ( ! NumExtensions ) - reply.present = xFalse; - else - { - i = FindExtension((char *)&stuff[1], stuff->nbytes); - if (i < 0 - - /* - * Hide RENDER if our implementation - * is faulty. - */ - - || (nxagentRenderTrap && strcmp(extensions[i]->name, "RENDER") == 0) -#ifdef XCSECURITY - /* don't show insecure extensions to untrusted clients */ - || (client->trustLevel == XSecurityClientUntrusted && - !extensions[i]->secure) -#endif - ) - reply.present = xFalse; - else - { - reply.present = xTrue; - reply.major_opcode = extensions[i]->base; - reply.first_event = extensions[i]->eventBase; - reply.first_error = extensions[i]->errorBase; - } - } - WriteReplyToClient(client, sizeof(xQueryExtensionReply), &reply); - return(client->noClientException); -} - -int -ProcListExtensions(ClientPtr client) -{ - xListExtensionsReply reply; - char *bufptr, *buffer; - int total_length = 0; - - REQUEST_SIZE_MATCH(xReq); - - reply.type = X_Reply; - reply.nExtensions = 0; - reply.length = 0; - reply.sequenceNumber = client->sequence; - buffer = NULL; - - if ( NumExtensions ) - { - register int i, j; - - for (i=0; i<NumExtensions; i++) - { -#ifdef XCSECURITY - /* don't show insecure extensions to untrusted clients */ - if (client->trustLevel == XSecurityClientUntrusted && - !extensions[i]->secure) - continue; -#endif - /* - * Hide RENDER if our implementation - * is faulty. - */ - - if (nxagentRenderTrap && strcmp(extensions[i]->name, "RENDER") == 0) - continue; - - total_length += strlen(extensions[i]->name) + 1; - reply.nExtensions += 1 + extensions[i]->num_aliases; - for (j = extensions[i]->num_aliases; --j >= 0;) - total_length += strlen(extensions[i]->aliases[j]) + 1; - } - reply.length = (total_length + 3) >> 2; - buffer = bufptr = (char *)ALLOCATE_LOCAL(total_length); - if (!buffer) - return(BadAlloc); - for (i=0; i<NumExtensions; i++) - { - int len; -#ifdef XCSECURITY - if (client->trustLevel == XSecurityClientUntrusted && - !extensions[i]->secure) - continue; -#endif - *bufptr++ = len = strlen(extensions[i]->name); - memmove(bufptr, extensions[i]->name, len); - bufptr += len; - for (j = extensions[i]->num_aliases; --j >= 0;) - { - *bufptr++ = len = strlen(extensions[i]->aliases[j]); - memmove(bufptr, extensions[i]->aliases[j], len); - bufptr += len; - } - } - } - WriteReplyToClient(client, sizeof(xListExtensionsReply), &reply); - if (reply.length) - { - WriteToClient(client, total_length, buffer); - DEALLOCATE_LOCAL(buffer); - } - return(client->noClientException); -} - - -ExtensionLookupProc -LookupProc(char *name, GCPtr pGC) -{ - register int i; - register ScreenProcEntry *spentry; - spentry = &AuxillaryScreenProcs[pGC->pScreen->myNum]; - if (spentry->num) - { - for (i = 0; i < spentry->num; i++) - if (strcmp(name, spentry->procList[i].name) == 0) - return(spentry->procList[i].proc); - } - return (ExtensionLookupProc)NULL; -} - -Bool -RegisterProc(char *name, GC *pGC, ExtensionLookupProc proc) -{ - return RegisterScreenProc(name, pGC->pScreen, proc); -} - -Bool -RegisterScreenProc(char *name, ScreenPtr pScreen, ExtensionLookupProc proc) -{ - register ScreenProcEntry *spentry; - register ProcEntryPtr procEntry = (ProcEntryPtr)NULL; - char *newname; - int i; - - spentry = &AuxillaryScreenProcs[pScreen->myNum]; - /* first replace duplicates */ - if (spentry->num) - { - for (i = 0; i < spentry->num; i++) - if (strcmp(name, spentry->procList[i].name) == 0) - { - procEntry = &spentry->procList[i]; - break; - } - } - if (procEntry) - procEntry->proc = proc; - else - { - newname = (char *)xalloc(strlen(name)+1); - if (!newname) - return FALSE; - procEntry = (ProcEntryPtr) - xrealloc(spentry->procList, - sizeof(ProcEntryRec) * (spentry->num+1)); - if (!procEntry) - { - xfree(newname); - return FALSE; - } - spentry->procList = procEntry; - procEntry += spentry->num; - procEntry->name = newname; - strcpy(newname, name); - procEntry->proc = proc; - spentry->num++; - } - return TRUE; -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c deleted file mode 100644 index 51c5479..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c +++ /dev/null @@ -1,575 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XFree86: xc/programs/Xserver/GL/glx/glxext.c,v 1.9 2003/09/28 20:15:43 alanh Exp $ -** The contents of this file are subject to the GLX Public License Version 1.0 -** (the "License"). You may not use this file except in compliance with the -** License. You may obtain a copy of the License at Silicon Graphics, Inc., -** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 -** or at http://www.sgi.com/software/opensource/glx/license.html. -** -** Software distributed under the License is distributed on an "AS IS" -** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY -** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR -** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific -** language governing rights and limitations under the License. -** -** The Original Software is GLX version 1.2 source code, released February, -** 1999. The developer of the Original Software is Silicon Graphics, Inc. -** Those portions of the Subject Software created by Silicon Graphics, Inc. -** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. -** -*/ - -#define NEED_REPLIES -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "glxserver.h" -#include <windowstr.h> -#include <propertyst.h> -#include <os.h> -#include "g_disptab.h" -#include "unpack.h" -#include "glxutil.h" -#include "glxext.h" -#include "micmap.h" - -#include "Trap.h" - -#define PANIC -#define WARNING -#undef TEST -#undef DEBUG - -void GlxWrapInitVisuals(miInitVisualsProcPtr *); -void GlxSetVisualConfigs(int nconfigs, - __GLXvisualConfig *configs, void **privates); - -static __GLXextensionInfo *__glXExt /* = &__glDDXExtensionInfo */; - -/* -** Forward declarations. -*/ -static int __glXSwapDispatch(ClientPtr); -static int __glXDispatch(ClientPtr); - -/* -** Called when the extension is reset. -*/ -static void ResetExtension(ExtensionEntry* extEntry) -{ - __glXFlushContextCache(); - (*__glXExt->resetExtension)(); - __glXScreenReset(); -} - -/* -** Initialize the per-client context storage. -*/ -static void ResetClientState(int clientIndex) -{ - __GLXclientState *cl = __glXClients[clientIndex]; - - if (cl->returnBuf) __glXFree(cl->returnBuf); - if (cl->largeCmdBuf) __glXFree(cl->largeCmdBuf); - if (cl->currentContexts) __glXFree(cl->currentContexts); - __glXMemset(cl, 0, sizeof(__GLXclientState)); - /* - ** By default, assume that the client supports - ** GLX major version 1 minor version 0 protocol. - */ - cl->GLClientmajorVersion = 1; - cl->GLClientminorVersion = 0; - if (cl->GLClientextensions) __glXFree(cl->GLClientextensions); - -} - -/* -** Reset state used to keep track of large (multi-request) commands. -*/ -void __glXResetLargeCommandStatus(__GLXclientState *cl) -{ - cl->largeCmdBytesSoFar = 0; - cl->largeCmdBytesTotal = 0; - cl->largeCmdRequestsSoFar = 0; - cl->largeCmdRequestsTotal = 0; -} - -/* -** This procedure is called when the client who created the context goes -** away OR when glXDestroyContext is called. In either case, all we do is -** flag that the ID is no longer valid, and (maybe) free the context. -** use. -*/ -static int ContextGone(__GLXcontext* cx, XID id) -{ - cx->idExists = GL_FALSE; - if (!cx->isCurrent) { - __glXFreeContext(cx); - } - - return True; -} - -/* -** Free a client's state. -*/ -static int ClientGone(int clientIndex, XID id) -{ - __GLXcontext *cx; - __GLXclientState *cl = __glXClients[clientIndex]; - int i; - - if (cl) { - /* - ** Free all the contexts that are current for this client. - */ - for (i=0; i < cl->numCurrentContexts; i++) { - cx = cl->currentContexts[i]; - if (cx) { - __glXDeassociateContext(cx); - cx->isCurrent = GL_FALSE; - if (!cx->idExists) { - __glXFreeContext(cx); - } - } - } - /* - ** Re-initialize the client state structure. Don't free it because - ** we'll probably get another client with this index and use the struct - ** again. There is a maximum of MAXCLIENTS of these structures. - */ - ResetClientState(clientIndex); - } - - return True; -} - -/* -** Free a GLX Pixmap. -*/ -static int PixmapGone(__GLXpixmap *pGlxPixmap, XID id) -{ - PixmapPtr pPixmap = (PixmapPtr) pGlxPixmap->pDraw; - - pGlxPixmap->idExists = False; - if (!pGlxPixmap->refcnt) { - /* - ** The DestroyPixmap routine should decrement the refcount and free - ** only if it's zero. - */ - (*pGlxPixmap->pScreen->DestroyPixmap)(pPixmap); - __glXFree(pGlxPixmap); - } - - return True; -} - -/* -** Free a context. -*/ -GLboolean __glXFreeContext(__GLXcontext *cx) -{ - if (cx->idExists || cx->isCurrent) return GL_FALSE; - - if (!cx->isDirect) { - if ((*cx->gc->exports.destroyContext)((__GLcontext *)cx->gc) == GL_FALSE) { - return GL_FALSE; - } - } - if (cx->feedbackBuf) __glXFree(cx->feedbackBuf); - if (cx->selectBuf) __glXFree(cx->selectBuf); - __glXFree(cx); - if (cx == __glXLastContext) { - __glXFlushContextCache(); - } - - return GL_TRUE; -} - -extern RESTYPE __glXSwapBarrierRes; - -static int SwapBarrierGone(int screen, XID drawable) -{ - if (__glXSwapBarrierFuncs && - __glXSwapBarrierFuncs[screen].bindSwapBarrierFunc != NULL) { - __glXSwapBarrierFuncs[screen].bindSwapBarrierFunc(screen, drawable, 0); - } - FreeResourceByType(drawable, __glXSwapBarrierRes, FALSE); - return True; -} - -/************************************************************************/ - -/* -** These routines can be used to check whether a particular GL command -** has caused an error. Specifically, we use them to check whether a -** given query has caused an error, in which case a zero-length data -** reply is sent to the client. -*/ - -static GLboolean errorOccured = GL_FALSE; - -/* -** The GL was will call this routine if an error occurs. -*/ -void __glXErrorCallBack(__GLinterface *gc, GLenum code) -{ - errorOccured = GL_TRUE; -} - -/* -** Clear the error flag before calling the GL command. -*/ -void __glXClearErrorOccured(void) -{ - errorOccured = GL_FALSE; -} - -/* -** Check if the GL command caused an error. -*/ -GLboolean __glXErrorOccured(void) -{ - return errorOccured; -} - -/************************************************************************/ - -/* -** Initialize the GLX extension. -*/ -void GlxExtensionInit(void) -{ - ExtensionEntry *extEntry; - int i; - - __glXContextRes = CreateNewResourceType((DeleteType)ContextGone); - __glXClientRes = CreateNewResourceType((DeleteType)ClientGone); - __glXPixmapRes = CreateNewResourceType((DeleteType)PixmapGone); - - /* - ** Add extension to server extensions. - */ - extEntry = AddExtension(GLX_EXTENSION_NAME, __GLX_NUMBER_EVENTS, - __GLX_NUMBER_ERRORS, __glXDispatch, - __glXSwapDispatch, ResetExtension, - StandardMinorOpcode); - if (!extEntry) { - FatalError("__glXExtensionInit: AddExtensions failed\n"); - return; - } - if (!AddExtensionAlias(GLX_EXTENSION_ALIAS, extEntry)) { - ErrorF("__glXExtensionInit: AddExtensionAlias failed\n"); - return; - } - - __glXBadContext = extEntry->errorBase + GLXBadContext; - __glXBadContextState = extEntry->errorBase + GLXBadContextState; - __glXBadDrawable = extEntry->errorBase + GLXBadDrawable; - __glXBadPixmap = extEntry->errorBase + GLXBadPixmap; - __glXBadContextTag = extEntry->errorBase + GLXBadContextTag; - __glXBadCurrentWindow = extEntry->errorBase + GLXBadCurrentWindow; - __glXBadRenderRequest = extEntry->errorBase + GLXBadRenderRequest; - __glXBadLargeRequest = extEntry->errorBase + GLXBadLargeRequest; - __glXUnsupportedPrivateRequest = extEntry->errorBase + - GLXUnsupportedPrivateRequest; - - __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone); - - /* - ** Initialize table of client state. There is never a client 0. - */ - for (i=1; i <= MAXCLIENTS; i++) { - __glXClients[i] = 0; - } - - /* - ** Initialize screen specific data. - */ - __glXScreenInit(screenInfo.numScreens); -} - -/************************************************************************/ - -Bool __glXCoreType(void) -{ - return __glXExt->type; -} - -/************************************************************************/ - -void GlxSetVisualConfigs(int nconfigs, - __GLXvisualConfig *configs, void **privates) -{ - (*__glXExt->setVisualConfigs)(nconfigs, configs, privates); -} - -static miInitVisualsProcPtr saveInitVisualsProc; - -Bool GlxInitVisuals(VisualPtr *visualp, DepthPtr *depthp, - int *nvisualp, int *ndepthp, - int *rootDepthp, VisualID *defaultVisp, - unsigned long sizes, int bitsPerRGB, - int preferredVis) -{ - Bool ret; - - if (saveInitVisualsProc) { - ret = saveInitVisualsProc(visualp, depthp, nvisualp, ndepthp, - rootDepthp, defaultVisp, sizes, bitsPerRGB, - preferredVis); - if (!ret) - return False; - } - (*__glXExt->initVisuals)(visualp, depthp, nvisualp, ndepthp, rootDepthp, - defaultVisp, sizes, bitsPerRGB); - return True; -} - -void -GlxWrapInitVisuals(miInitVisualsProcPtr *initVisProc) -{ - saveInitVisualsProc = *initVisProc; - *initVisProc = GlxInitVisuals; - /* HACK: this shouldn't be done here but it's the earliest time */ - __glXExt = __glXglDDXExtensionInfo(); /* from GLcore */ -} - -/************************************************************************/ - -void __glXFlushContextCache(void) -{ - __glXLastContext = 0; -} - -/* -** Make a context the current one for the GL (in this implementation, there -** is only one instance of the GL, and we use it to serve all GL clients by -** switching it between different contexts). While we are at it, look up -** a context by its tag and return its (__GLXcontext *). -*/ -__GLXcontext *__glXForceCurrent(__GLXclientState *cl, GLXContextTag tag, - int *error) -{ - __GLXcontext *cx; - - /* - ** See if the context tag is legal; it is managed by the extension, - ** so if it's invalid, we have an implementation error. - */ - cx = (__GLXcontext *) __glXLookupContextByTag(cl, tag); - if (!cx) { - cl->client->errorValue = tag; - *error = __glXBadContextTag; - return 0; - } - - if (!cx->isDirect) { - if (cx->drawPriv == NULL) { - /* - ** The drawable has vanished. It must be a window, because only - ** windows can be destroyed from under us; GLX pixmaps are - ** refcounted and don't go away until no one is using them. - */ - *error = __glXBadCurrentWindow; - return 0; - } - } - - if (cx == __glXLastContext) { - /* No need to re-bind */ - return cx; - } - - /* Make this context the current one for the GL. */ - if (!cx->isDirect) { - if (!(*cx->gc->exports.forceCurrent)((__GLcontext *)cx->gc)) { - /* Bind failed, and set the error code. Bummer */ - cl->client->errorValue = cx->id; - *error = __glXBadContextState; - return 0; - } - } - __glXLastContext = cx; - return cx; -} - -/************************************************************************/ - -/* -** Top level dispatcher; all commands are executed from here down. -*/ -static int __glXDispatch(ClientPtr client) -{ - int result; - - REQUEST(xGLXSingleReq); - CARD8 opcode; - int (*proc)(__GLXclientState *cl, GLbyte *pc); - __GLXclientState *cl; - - opcode = stuff->glxCode; - cl = __glXClients[client->index]; - if (!cl) { - cl = (__GLXclientState *) __glXMalloc(sizeof(__GLXclientState)); - __glXClients[client->index] = cl; - if (!cl) { - return BadAlloc; - } - __glXMemset(cl, 0, sizeof(__GLXclientState)); - } - - if (!cl->inUse) { - /* - ** This is first request from this client. Associate a resource - ** with the client so we will be notified when the client dies. - */ - XID xid = FakeClientID(client->index); - if (!AddResource( xid, __glXClientRes, (pointer)(long)client->index)) { - return BadAlloc; - } - ResetClientState(client->index); - cl->inUse = GL_TRUE; - cl->client = client; - } - - /* - ** Check for valid opcode. - */ - if (opcode >= __GLX_SINGLE_TABLE_SIZE) { - return BadRequest; - } - - /* - ** If we're expecting a glXRenderLarge request, this better be one. - */ - if ((cl->largeCmdRequestsSoFar != 0) && (opcode != X_GLXRenderLarge)) { - client->errorValue = stuff->glxCode; - return __glXBadLargeRequest; - } - - /* - ** Use the opcode to index into the procedure table. - */ - proc = __glXSingleTable[opcode]; - - /* - * Report upstream that we are - * dispatching a GLX operation. - */ - - nxagentGlxTrap = 1; - - #ifdef TEST - fprintf(stderr, "__glXDispatch: Going to dispatch GLX operation [%d] for client [%d].\n", - opcode, client -> index); - #endif - - result = (*proc)(cl, (GLbyte *) stuff); - - nxagentGlxTrap = 0; - - #ifdef TEST - fprintf(stderr, "__glXDispatch: Dispatched GLX operation [%d] for client [%d].\n", - opcode, client -> index); - #endif - - return result; -} - -static int __glXSwapDispatch(ClientPtr client) -{ - int result; - - REQUEST(xGLXSingleReq); - CARD8 opcode; - int (*proc)(__GLXclientState *cl, GLbyte *pc); - __GLXclientState *cl; - - opcode = stuff->glxCode; - cl = __glXClients[client->index]; - if (!cl) { - cl = (__GLXclientState *) __glXMalloc(sizeof(__GLXclientState)); - __glXClients[client->index] = cl; - if (!cl) { - return BadAlloc; - } - __glXMemset(cl, 0, sizeof(__GLXclientState)); - } - - if (!cl->inUse) { - /* - ** This is first request from this client. Associate a resource - ** with the client so we will be notified when the client dies. - */ - XID xid = FakeClientID(client->index); - if (!AddResource( xid, __glXClientRes, (pointer)(long)client->index)) { - return BadAlloc; - } - ResetClientState(client->index); - cl->inUse = GL_TRUE; - cl->client = client; - } - - /* - ** Check for valid opcode. - */ - if (opcode >= __GLX_SINGLE_TABLE_SIZE) { - return BadRequest; - } - - /* - ** Use the opcode to index into the procedure table. - */ - proc = __glXSwapSingleTable[opcode]; - - /* - * Report upstream that we are - * dispatching a GLX operation. - */ - - nxagentGlxTrap = 1; - - #ifdef TEST - fprintf(stderr, "__glXDispatch: Going to dispatch GLX operation [%d] for client [%d].\n", - opcode, client -> index); - #endif - - result = (*proc)(cl, (GLbyte *) stuff); - - nxagentGlxTrap = 0; - - #ifdef TEST - fprintf(stderr, "__glXDispatch: Dispatched GLX operation [%d] for client [%d].\n", - opcode, client -> index); - #endif - - return result; -} - -int __glXNoSuchSingleOpcode(__GLXclientState *cl, GLbyte *pc) -{ - return BadRequest; -} - -void __glXNoSuchRenderOpcode(GLbyte *pc) -{ - return; -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c deleted file mode 100644 index cd65fdc..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c +++ /dev/null @@ -1,581 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* - * $XFree86: xc/programs/Xserver/render/glyph.c,v 1.5 2001/01/30 07:01:22 keithp Exp $ - * - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "misc.h" -#include "scrnintstr.h" -#include "os.h" -#include "regionstr.h" -#include "validate.h" -#include "windowstr.h" -#include "input.h" -#include "resource.h" -#include "colormapst.h" -#include "cursorstr.h" -#include "dixstruct.h" -#include "gcstruct.h" -#include "servermd.h" - -#ifdef NXAGENT_SERVER - -#include "NXpicturestr.h" -#include "NXglyphstr.h" -#include "Render.h" - -#define PANIC -#define WARNING -#undef DEBUG -#undef TEST - -#else - -#include "picturestr.h" -#include "glyphstr.h" - -#endif - -#if HAVE_STDINT_H -#include <stdint.h> -#elif !defined(UINT32_MAX) -#define UINT32_MAX 0xffffffffU -#endif - -/* - * From Knuth -- a good choice for hash/rehash values is p, p-2 where - * p and p-2 are both prime. These tables are sized to have an extra 10% - * free to avoid exponential performance degradation as the hash table fills - */ -static GlyphHashSetRec glyphHashSets[] = { - { 32, 43, 41 }, - { 64, 73, 71 }, - { 128, 151, 149 }, - { 256, 283, 281 }, - { 512, 571, 569 }, - { 1024, 1153, 1151 }, - { 2048, 2269, 2267 }, - { 4096, 4519, 4517 }, - { 8192, 9013, 9011 }, - { 16384, 18043, 18041 }, - { 32768, 36109, 36107 }, - { 65536, 72091, 72089 }, - { 131072, 144409, 144407 }, - { 262144, 288361, 288359 }, - { 524288, 576883, 576881 }, - { 1048576, 1153459, 1153457 }, - { 2097152, 2307163, 2307161 }, - { 4194304, 4613893, 4613891 }, - { 8388608, 9227641, 9227639 }, - { 16777216, 18455029, 18455027 }, - { 33554432, 36911011, 36911009 }, - { 67108864, 73819861, 73819859 }, - { 134217728, 147639589, 147639587 }, - { 268435456, 295279081, 295279079 }, - { 536870912, 590559793, 590559791 } -}; - -#define NGLYPHHASHSETS (sizeof(glyphHashSets)/sizeof(glyphHashSets[0])) - -const CARD8 glyphDepths[GlyphFormatNum] = { 1, 4, 8, 16, 32 }; - -GlyphHashRec globalGlyphs[GlyphFormatNum]; - -GlyphHashSetPtr -FindGlyphHashSet (CARD32 filled) -{ - int i; - - for (i = 0; i < NGLYPHHASHSETS; i++) - if (glyphHashSets[i].entries >= filled) - return &glyphHashSets[i]; - return 0; -} - -static int _GlyphSetPrivateAllocateIndex = 0; - -int -AllocateGlyphSetPrivateIndex (void) -{ - return _GlyphSetPrivateAllocateIndex++; -} - -void -ResetGlyphSetPrivateIndex (void) -{ - _GlyphSetPrivateAllocateIndex = 0; -} - -Bool -_GlyphSetSetNewPrivate (GlyphSetPtr glyphSet, int n, pointer ptr) -{ - pointer *new; - - if (n > glyphSet->maxPrivate) { - if (glyphSet->devPrivates && - glyphSet->devPrivates != (pointer)(&glyphSet[1])) { - new = (pointer *) xrealloc (glyphSet->devPrivates, - (n + 1) * sizeof (pointer)); - if (!new) - return FALSE; - } else { - new = (pointer *) xalloc ((n + 1) * sizeof (pointer)); - if (!new) - return FALSE; - if (glyphSet->devPrivates) - memcpy (new, - glyphSet->devPrivates, - (glyphSet->maxPrivate + 1) * sizeof (pointer)); - } - glyphSet->devPrivates = new; - /* Zero out new, uninitialize privates */ - while (++glyphSet->maxPrivate < n) - glyphSet->devPrivates[glyphSet->maxPrivate] = (pointer)0; - } - glyphSet->devPrivates[n] = ptr; - return TRUE; -} - -Bool -GlyphInit (ScreenPtr pScreen) -{ - return TRUE; -} - -GlyphRefPtr -FindGlyphRef (GlyphHashPtr hash, CARD32 signature, Bool match, GlyphPtr compare) -{ - CARD32 elt, step, s; - GlyphPtr glyph; - GlyphRefPtr table, gr, del; - CARD32 tableSize = hash->hashSet->size; - - table = hash->table; - elt = signature % tableSize; - step = 0; - del = 0; - for (;;) - { - gr = &table[elt]; - s = gr->signature; - glyph = gr->glyph; - if (!glyph) - { - if (del) - gr = del; - break; - } - if (glyph == DeletedGlyph) - { - if (!del) - del = gr; - else if (gr == del) - break; - } - else if (s == signature && - (!match || - memcmp (&compare->info, &glyph->info, compare->size) == 0)) - { - break; - } - if (!step) - { - step = signature % hash->hashSet->rehash; - if (!step) - step = 1; - } - elt += step; - if (elt >= tableSize) - elt -= tableSize; - } - return gr; -} - -CARD32 -HashGlyph (GlyphPtr glyph) -{ - CARD32 *bits = (CARD32 *) &(glyph->info); - CARD32 hash; - int n = glyph->size / sizeof (CARD32); - - hash = 0; - while (n--) - hash ^= *bits++; - return hash; -} - -#ifdef CHECK_DUPLICATES -void -DuplicateRef (GlyphPtr glyph, char *where) -{ - ErrorF ("Duplicate Glyph 0x%x from %s\n", glyph, where); -} - -void -CheckDuplicates (GlyphHashPtr hash, char *where) -{ - GlyphPtr g; - int i, j; - - for (i = 0; i < hash->hashSet->size; i++) - { - g = hash->table[i].glyph; - if (!g || g == DeletedGlyph) - continue; - for (j = i + 1; j < hash->hashSet->size; j++) - if (hash->table[j].glyph == g) - DuplicateRef (g, where); - } -} -#else -#define CheckDuplicates(a,b) -#define DuplicateRef(a,b) -#endif - -void -FreeGlyph (GlyphPtr glyph, int format) -{ - CheckDuplicates (&globalGlyphs[format], "FreeGlyph"); - if (--glyph->refcnt == 0) - { - GlyphRefPtr gr; - int i; - int first; - - first = -1; - for (i = 0; i < globalGlyphs[format].hashSet->size; i++) - if (globalGlyphs[format].table[i].glyph == glyph) - { - if (first != -1) - DuplicateRef (glyph, "FreeGlyph check"); - first = i; - } - - gr = FindGlyphRef (&globalGlyphs[format], - HashGlyph (glyph), TRUE, glyph); - if (gr - globalGlyphs[format].table != first) - DuplicateRef (glyph, "Found wrong one"); - if (gr->glyph && gr->glyph != DeletedGlyph) - { - gr->glyph = DeletedGlyph; - gr->signature = 0; - globalGlyphs[format].tableEntries--; - } - xfree (glyph); - } -} - -void -AddGlyph (GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id) -{ - GlyphRefPtr gr; - CARD32 hash; - - CheckDuplicates (&globalGlyphs[glyphSet->fdepth], "AddGlyph top global"); - /* Locate existing matching glyph */ - hash = HashGlyph (glyph); - gr = FindGlyphRef (&globalGlyphs[glyphSet->fdepth], hash, TRUE, glyph); - if (gr->glyph && gr->glyph != DeletedGlyph) - { - xfree (glyph); - glyph = gr->glyph; - } - else - { - gr->glyph = glyph; - gr->signature = hash; - globalGlyphs[glyphSet->fdepth].tableEntries++; - } - - /* Insert/replace glyphset value */ - gr = FindGlyphRef (&glyphSet->hash, id, FALSE, 0); - ++glyph->refcnt; - if (gr->glyph && gr->glyph != DeletedGlyph) - FreeGlyph (gr->glyph, glyphSet->fdepth); - else - glyphSet->hash.tableEntries++; - gr->glyph = glyph; - gr->signature = id; - - #ifdef NXAGENT_SERVER - - gr -> corruptedGlyph = 1; - - #endif - - CheckDuplicates (&globalGlyphs[glyphSet->fdepth], "AddGlyph bottom"); -} - -Bool -DeleteGlyph (GlyphSetPtr glyphSet, Glyph id) -{ - GlyphRefPtr gr; - GlyphPtr glyph; - - gr = FindGlyphRef (&glyphSet->hash, id, FALSE, 0); - glyph = gr->glyph; - if (glyph && glyph != DeletedGlyph) - { - gr->glyph = DeletedGlyph; - glyphSet->hash.tableEntries--; - FreeGlyph (glyph, glyphSet->fdepth); - return TRUE; - } - return FALSE; -} - -#ifdef NXAGENT_SERVER - -GlyphPtr FindGlyph (GlyphSetPtr glyphSet, Glyph id) -{ - GlyphRefPtr gr; - GlyphPtr glyph; - - gr = FindGlyphRef (&glyphSet->hash, id, FALSE, 0); - glyph = gr -> glyph; - - if (glyph == DeletedGlyph) - { - glyph = 0; - } - else if (gr -> corruptedGlyph == 1) - { - #ifdef DEBUG - fprintf(stderr, "FindGlyphRef: Going to synchronize the glyph [%p] for glyphset [%p].\n", - (void *) glyph, (void *) glyphSet); - #endif - - nxagentAddGlyphs(glyphSet, &id, &(glyph -> info), 1, - (CARD8*)(glyph + 1), glyph -> size - sizeof(xGlyphInfo)); - } - - return glyph; -} - -#else - -GlyphPtr -FindGlyph (GlyphSetPtr glyphSet, Glyph id) -{ - GlyphPtr glyph; - - glyph = FindGlyphRef (&glyphSet->hash, id, FALSE, 0)->glyph; - if (glyph == DeletedGlyph) - glyph = 0; - return glyph; -} - -#endif - -GlyphPtr -AllocateGlyph (xGlyphInfo *gi, int fdepth) -{ - int size; - GlyphPtr glyph; - size_t padded_width; - - padded_width = PixmapBytePad (gi->width, glyphDepths[fdepth]); - if (gi->height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi->height) - return 0; - size = gi->height * padded_width; - glyph = (GlyphPtr) xalloc (size + sizeof (GlyphRec)); - if (!glyph) - return 0; - glyph->refcnt = 0; - glyph->size = size + sizeof (xGlyphInfo); - glyph->info = *gi; - return glyph; -} - -Bool -AllocateGlyphHash (GlyphHashPtr hash, GlyphHashSetPtr hashSet) -{ - hash->table = (GlyphRefPtr) xalloc (hashSet->size * sizeof (GlyphRefRec)); - if (!hash->table) - return FALSE; - memset (hash->table, 0, hashSet->size * sizeof (GlyphRefRec)); - hash->hashSet = hashSet; - hash->tableEntries = 0; - return TRUE; -} - -Bool -ResizeGlyphHash (GlyphHashPtr hash, CARD32 change, Bool global) -{ - CARD32 tableEntries; - GlyphHashSetPtr hashSet; - GlyphHashRec newHash; - GlyphRefPtr gr; - GlyphPtr glyph; - int i; - int oldSize; - CARD32 s; - - #ifdef NXAGENT_SERVER - - CARD32 c; - - #endif - - tableEntries = hash->tableEntries + change; - hashSet = FindGlyphHashSet (tableEntries); - if (hashSet == hash->hashSet) - return TRUE; - if (global) - CheckDuplicates (hash, "ResizeGlyphHash top"); - if (!AllocateGlyphHash (&newHash, hashSet)) - return FALSE; - if (hash->table) - { - oldSize = hash->hashSet->size; - for (i = 0; i < oldSize; i++) - { - glyph = hash->table[i].glyph; - if (glyph && glyph != DeletedGlyph) - { - s = hash->table[i].signature; - - #ifdef NXAGENT_SERVER - - c = hash->table[i].corruptedGlyph; - - #endif - - gr = FindGlyphRef (&newHash, s, global, glyph); - gr->signature = s; - gr->glyph = glyph; - - #ifdef NXAGENT_SERVER - - gr -> corruptedGlyph = c; - - #endif - - ++newHash.tableEntries; - } - } - xfree (hash->table); - } - *hash = newHash; - if (global) - CheckDuplicates (hash, "ResizeGlyphHash bottom"); - return TRUE; -} - -Bool -ResizeGlyphSet (GlyphSetPtr glyphSet, CARD32 change) -{ - return (ResizeGlyphHash (&glyphSet->hash, change, FALSE) && - ResizeGlyphHash (&globalGlyphs[glyphSet->fdepth], change, TRUE)); -} - -GlyphSetPtr -AllocateGlyphSet (int fdepth, PictFormatPtr format) -{ - GlyphSetPtr glyphSet; - int size; - - if (!globalGlyphs[fdepth].hashSet) - { - if (!AllocateGlyphHash (&globalGlyphs[fdepth], &glyphHashSets[0])) - return FALSE; - } - - size = (sizeof (GlyphSetRec) + - (sizeof (pointer) * _GlyphSetPrivateAllocateIndex)); - glyphSet = xalloc (size); - if (!glyphSet) - return FALSE; - bzero((char *)glyphSet, size); - glyphSet->maxPrivate = _GlyphSetPrivateAllocateIndex - 1; - if (_GlyphSetPrivateAllocateIndex) - glyphSet->devPrivates = (pointer)(&glyphSet[1]); - - if (!AllocateGlyphHash (&glyphSet->hash, &glyphHashSets[0])) - { - xfree (glyphSet); - return FALSE; - } - glyphSet->refcnt = 1; - glyphSet->fdepth = fdepth; - glyphSet->format = format; - return glyphSet; -} - -int -FreeGlyphSet (pointer value, - XID gid) -{ - GlyphSetPtr glyphSet = (GlyphSetPtr) value; - - if (--glyphSet->refcnt == 0) - { - CARD32 i, tableSize = glyphSet->hash.hashSet->size; - GlyphRefPtr table = glyphSet->hash.table; - GlyphPtr glyph; - - for (i = 0; i < tableSize; i++) - { - glyph = table[i].glyph; - if (glyph && glyph != DeletedGlyph) - FreeGlyph (glyph, glyphSet->fdepth); - } - if (!globalGlyphs[glyphSet->fdepth].tableEntries) - { - xfree (globalGlyphs[glyphSet->fdepth].table); - globalGlyphs[glyphSet->fdepth].table = 0; - globalGlyphs[glyphSet->fdepth].hashSet = 0; - } - else - ResizeGlyphHash (&globalGlyphs[glyphSet->fdepth], 0, TRUE); - xfree (table); - - if (glyphSet->devPrivates && - glyphSet->devPrivates != (pointer)(&glyphSet[1])) - xfree(glyphSet->devPrivates); - - xfree (glyphSet); - } - return Success; -} - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c deleted file mode 100644 index 7a1d813..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c +++ /dev/null @@ -1,241 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/************************************************************************ - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -************************************************************************/ - -/* $Xorg: glyphcurs.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "misc.h" -#include <X11/fonts/fontstruct.h> -#include "dixfontstr.h" -#include "scrnintstr.h" -#include "gcstruct.h" -#include "resource.h" -#include "dix.h" -#include "cursorstr.h" -#include "opaque.h" -#include "servermd.h" - -#include "../../fb/fb.h" -#include "Pixmaps.h" - -#ifndef True -#define True 1 -#endif - -/* - get the bits out of the font in a portable way. to avoid -dealing with padding and such-like, we draw the glyph into -a bitmap, then read the bits out with GetImage, which -uses server-natural format. - since all screens return the same bitmap format, we'll just use -the first one we find. - the character origin lines up with the hotspot in the -cursor metrics. -*/ - -int -ServerBitsFromGlyph(FontPtr pfont, unsigned ch, register CursorMetricPtr cm, unsigned char **ppbits) -{ - register ScreenPtr pScreen; - register GCPtr pGC; - xRectangle rect; - PixmapPtr ppix; - long nby; - char *pbits; - ChangeGCVal gcval[3]; - unsigned char char2b[2]; - - /* turn glyph index into a protocol-format char2b */ - char2b[0] = (unsigned char)(ch >> 8); - char2b[1] = (unsigned char)(ch & 0xff); - - pScreen = screenInfo.screens[0]; - nby = BitmapBytePad(cm->width) * (long)cm->height; - pbits = (char *)xalloc(nby); - if (!pbits) - return BadAlloc; - /* zeroing the (pad) bits seems to help some ddx cursor handling */ - bzero(pbits, nby); - - ppix = fbCreatePixmap(pScreen, cm->width, cm->height, 1); - pGC = GetScratchGC(1, pScreen); - if (!ppix || !pGC) - { - if (ppix) - fbDestroyPixmap(ppix); - if (pGC) - FreeScratchGC(pGC); - xfree(pbits); - return BadAlloc; - } - - #ifdef TEST - fprintf(stderr, "ServerBitsFromGlyph: Created virtual pixmap at [%p] with width [%d] height [%d] depth [%d].\n", - (void *) ppix, cm->width, cm->height, 1); - #endif - - nxagentPixmapPriv(ppix) -> id = 0; - nxagentPixmapPriv(ppix) -> mid = 0; - nxagentPixmapPriv(ppix) -> isVirtual = True; - nxagentPixmapPriv(ppix) -> pRealPixmap = NULL; - nxagentPixmapPriv(ppix) -> pVirtualPixmap = NULL; - - rect.x = 0; - rect.y = 0; - rect.width = cm->width; - rect.height = cm->height; - - pGC->stateChanges |= GCFunction | GCForeground | GCFont; - pGC->alu = GXcopy; - - pGC->fgPixel = 0; - - pfont->refcnt++; - - if (pGC->font) - CloseFont(pGC->font, (Font)0); - - pGC->font = pfont; - - ValidateGC((DrawablePtr)ppix, pGC); - fbPolyFillRect((DrawablePtr)ppix, pGC, 1, &rect); - - /* draw the glyph */ - gcval[0].val = 1; - pGC->fgPixel = 1; - - pGC->stateChanges |= GCForeground; - - ValidateGC((DrawablePtr)ppix, pGC); - miPolyText16((DrawablePtr)ppix, pGC, (int)cm->xhot, (int)cm->yhot, (int)1, (unsigned short*)char2b); - fbGetImage((DrawablePtr)ppix, 0, 0, cm->width, cm->height, - XYPixmap, 1, pbits); - *ppbits = (unsigned char *)pbits; - FreeScratchGC(pGC); - fbDestroyPixmap(ppix); - - #ifdef TEST - fprintf(stderr, "ServerBitsFromGlyph: Destroyed virtual pixmap at [%p].\n", - (void *) ppix); - #endif - - return Success; -} - - -Bool -CursorMetricsFromGlyph(register FontPtr pfont, unsigned ch, register CursorMetricPtr cm) -{ - CharInfoPtr pci; - unsigned long nglyphs; - CARD8 chs[2]; - FontEncoding encoding; - - chs[0] = ch >> 8; - chs[1] = ch; - encoding = (FONTLASTROW(pfont) == 0) ? Linear16Bit : TwoD16Bit; - if (encoding == Linear16Bit) - { - if (ch < pfont->info.firstCol || pfont->info.lastCol < ch) - return FALSE; - } - else - { - if (chs[0] < pfont->info.firstRow || pfont->info.lastRow < chs[0]) - return FALSE; - if (chs[1] < pfont->info.firstCol || pfont->info.lastCol < chs[1]) - return FALSE; - } - (*pfont->get_glyphs) (pfont, 1, chs, encoding, &nglyphs, &pci); - if (nglyphs == 0) - return FALSE; - cm->width = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing; - cm->height = pci->metrics.descent + pci->metrics.ascent; - if (pci->metrics.leftSideBearing > 0) - { - cm->width += pci->metrics.leftSideBearing; - cm->xhot = 0; - } - else - { - cm->xhot = -pci->metrics.leftSideBearing; - if (pci->metrics.rightSideBearing < 0) - cm->width -= pci->metrics.rightSideBearing; - } - if (pci->metrics.ascent < 0) - { - cm->height -= pci->metrics.ascent; - cm->yhot = 0; - } - else - { - cm->yhot = pci->metrics.ascent; - if (pci->metrics.descent < 0) - cm->height -= pci->metrics.descent; - } - return TRUE; -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h deleted file mode 100644 index fa6b5fb..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h +++ /dev/null @@ -1,174 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* - * $XFree86: xc/programs/Xserver/render/glyphstr.h,v 1.3 2000/11/20 07:13:13 keithp Exp $ - * - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -/* - * This must keep the same symbol as the original glyphstr.h - * or symbols will be redefined. The code here adds a field - * to _GlyphSet. This should be done by defining a new type - * and casting when appropriate. - */ - -#ifndef _GLYPHSTR_H_ -#define _GLYPHSTR_H_ - -#include <X11/extensions/renderproto.h> -#include "../../render/picture.h" -#include "screenint.h" - -#define GlyphFormat1 0 -#define GlyphFormat4 1 -#define GlyphFormat8 2 -#define GlyphFormat16 3 -#define GlyphFormat32 4 -#define GlyphFormatNum 5 - -typedef struct _Glyph { - CARD32 refcnt; - CARD32 size; /* info + bitmap */ - xGlyphInfo info; - /* bits follow */ -} GlyphRec, *GlyphPtr; - -typedef struct _GlyphRef { - CARD32 signature; - GlyphPtr glyph; - CARD16 corruptedGlyph; -} GlyphRefRec, *GlyphRefPtr; - -#define DeletedGlyph ((GlyphPtr) 1) - -typedef struct _GlyphHashSet { - CARD32 entries; - CARD32 size; - CARD32 rehash; -} GlyphHashSetRec, *GlyphHashSetPtr; - -typedef struct _GlyphHash { - GlyphRefPtr table; - GlyphHashSetPtr hashSet; - CARD32 tableEntries; -} GlyphHashRec, *GlyphHashPtr; - -typedef struct _GlyphSet { - CARD32 refcnt; - PictFormatPtr format; - int fdepth; - GlyphHashRec hash; - int maxPrivate; - pointer *devPrivates; - CARD32 remoteID; -} GlyphSetRec, *GlyphSetPtr; - -#define GlyphSetGetPrivate(pGlyphSet,n) \ - ((n) > (pGlyphSet)->maxPrivate ? \ - (pointer) 0 : \ - (pGlyphSet)->devPrivates[n]) - -#define GlyphSetSetPrivate(pGlyphSet,n,ptr) \ - ((n) > (pGlyphSet)->maxPrivate ? \ - _GlyphSetSetNewPrivate(pGlyphSet, n, ptr) : \ - ((((pGlyphSet)->devPrivates[n] = (ptr)) != 0) || TRUE)) - -typedef struct _GlyphList { - INT16 xOff; - INT16 yOff; - CARD8 len; - PictFormatPtr format; -} GlyphListRec, *GlyphListPtr; - -extern GlyphHashRec globalGlyphs[GlyphFormatNum]; - -GlyphHashSetPtr -FindGlyphHashSet (CARD32 filled); - -int -AllocateGlyphSetPrivateIndex (void); - -void -ResetGlyphSetPrivateIndex (void); - -Bool -_GlyphSetSetNewPrivate (GlyphSetPtr glyphSet, int n, pointer ptr); - -Bool -GlyphInit (ScreenPtr pScreen); - -GlyphRefPtr -FindGlyphRef (GlyphHashPtr hash, CARD32 signature, Bool match, GlyphPtr compare); - -CARD32 -HashGlyph (GlyphPtr glyph); - -void -FreeGlyph (GlyphPtr glyph, int format); - -void -AddGlyph (GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id); - -Bool -DeleteGlyph (GlyphSetPtr glyphSet, Glyph id); - -GlyphPtr -FindGlyph (GlyphSetPtr glyphSet, Glyph id); - -GlyphPtr -AllocateGlyph (xGlyphInfo *gi, int format); - -Bool -AllocateGlyphHash (GlyphHashPtr hash, GlyphHashSetPtr hashSet); - -Bool -ResizeGlyphHash (GlyphHashPtr hash, CARD32 change, Bool global); - -Bool -ResizeGlyphSet (GlyphSetPtr glyphSet, CARD32 change); - -GlyphSetPtr -AllocateGlyphSet (int fdepth, PictFormatPtr format); - -int -FreeGlyphSet (pointer value, - XID gid); - - - -#endif /* _GLYPHSTR_H_ */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c deleted file mode 100644 index 3fc73cf..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c +++ /dev/null @@ -1,979 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XdotOrg: xc/programs/Xserver/mi/miexpose.c,v 1.6 2005/07/03 08:53:51 daniels Exp $ */ -/* $XFree86: xc/programs/Xserver/mi/miexpose.c,v 3.9tsi Exp $ */ -/*********************************************************** - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/***************************************************************** - -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. - -******************************************************************/ - -/* $Xorg: miexpose.c,v 1.4 2001/02/09 02:05:20 xorgcvs Exp $ */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#define NEED_EVENTS -#include <X11/Xproto.h> -#include <X11/Xprotostr.h> - -#include "misc.h" -#include "regionstr.h" -#include "scrnintstr.h" -#include "gcstruct.h" -#include "windowstr.h" -#include "pixmap.h" -#include "input.h" - -#include "dixstruct.h" -#include "mi.h" -#include <X11/Xmd.h> - -#include "globals.h" - -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" -#endif - -/* - machine-independent graphics exposure code. any device that uses -the region package can call this. -*/ - -#ifdef NXAGENT_SERVER - -#include "Windows.h" - -#endif - -#ifndef RECTLIMIT -#define RECTLIMIT 25 /* pick a number, any number > 8 */ -#endif - -/* miHandleExposures - generate a region for exposures for areas that were copied from obscured or -non-existent areas to non-obscured areas of the destination. Paint the -background for the region, if the destination is a window. - -NOTE: - this should generally be called, even if graphicsExposures is false, -because this is where bits get recovered from backing store. - -NOTE: - added argument 'plane' is used to indicate how exposures from backing -store should be accomplished. If plane is 0 (i.e. no bit plane), CopyArea -should be used, else a CopyPlane of the indicated plane will be used. The -exposing is done by the backing store's GraphicsExpose function, of course. - -*/ - -RegionPtr -miHandleExposures(pSrcDrawable, pDstDrawable, - pGC, srcx, srcy, width, height, dstx, dsty, plane) - register DrawablePtr pSrcDrawable; - register DrawablePtr pDstDrawable; - GCPtr pGC; - int srcx, srcy; - int width, height; - int dstx, dsty; - unsigned long plane; -{ - register ScreenPtr pscr; - RegionPtr prgnSrcClip; /* drawable-relative source clip */ - RegionRec rgnSrcRec; - RegionPtr prgnDstClip; /* drawable-relative dest clip */ - RegionRec rgnDstRec; - BoxRec srcBox; /* unclipped source */ - RegionRec rgnExposed; /* exposed region, calculated source- - relative, made dst relative to - intersect with visible parts of - dest and send events to client, - and then screen relative to paint - the window background - */ - WindowPtr pSrcWin; - BoxRec expBox; - Bool extents; - -#ifdef NXAGENT_SERVER - - /* - * Set the elements reported by the compiler - * as uninitialized. - */ - - expBox.x1 = 0; - expBox.y1 = 0; - expBox.x2 = 0; - expBox.y2 = 0; - -#endif - - /* This prevents warning about pscr not being used. */ - pGC->pScreen = pscr = pGC->pScreen; - - /* avoid work if we can */ - if (!pGC->graphicsExposures && - (pDstDrawable->type == DRAWABLE_PIXMAP) && - ((pSrcDrawable->type == DRAWABLE_PIXMAP) || - (((WindowPtr)pSrcDrawable)->backStorage == NULL))) - return NULL; - - srcBox.x1 = srcx; - srcBox.y1 = srcy; - srcBox.x2 = srcx+width; - srcBox.y2 = srcy+height; - - if (pSrcDrawable->type != DRAWABLE_PIXMAP) - { - BoxRec TsrcBox; - - TsrcBox.x1 = srcx + pSrcDrawable->x; - TsrcBox.y1 = srcy + pSrcDrawable->y; - TsrcBox.x2 = TsrcBox.x1 + width; - TsrcBox.y2 = TsrcBox.y1 + height; - pSrcWin = (WindowPtr) pSrcDrawable; - if (pGC->subWindowMode == IncludeInferiors) - { - prgnSrcClip = NotClippedByChildren (pSrcWin); - if ((RECT_IN_REGION(pscr, prgnSrcClip, &TsrcBox)) == rgnIN) - { - REGION_DESTROY(pscr, prgnSrcClip); - return NULL; - } - } - else - { - if ((RECT_IN_REGION(pscr, &pSrcWin->clipList, &TsrcBox)) == rgnIN) - return NULL; - prgnSrcClip = &rgnSrcRec; - REGION_NULL(pscr, prgnSrcClip); - REGION_COPY(pscr, prgnSrcClip, &pSrcWin->clipList); - } - REGION_TRANSLATE(pscr, prgnSrcClip, - -pSrcDrawable->x, -pSrcDrawable->y); - } - else - { - BoxRec box; - - if ((srcBox.x1 >= 0) && (srcBox.y1 >= 0) && - (srcBox.x2 <= pSrcDrawable->width) && - (srcBox.y2 <= pSrcDrawable->height)) - return NULL; - - box.x1 = 0; - box.y1 = 0; - box.x2 = pSrcDrawable->width; - box.y2 = pSrcDrawable->height; - prgnSrcClip = &rgnSrcRec; - REGION_INIT(pscr, prgnSrcClip, &box, 1); - pSrcWin = (WindowPtr)NULL; - } - - if (pDstDrawable == pSrcDrawable) - { - prgnDstClip = prgnSrcClip; - } - else if (pDstDrawable->type != DRAWABLE_PIXMAP) - { - if (pGC->subWindowMode == IncludeInferiors) - { - prgnDstClip = NotClippedByChildren((WindowPtr)pDstDrawable); - } - else - { - prgnDstClip = &rgnDstRec; - REGION_NULL(pscr, prgnDstClip); - REGION_COPY(pscr, prgnDstClip, - &((WindowPtr)pDstDrawable)->clipList); - } - REGION_TRANSLATE(pscr, prgnDstClip, - -pDstDrawable->x, -pDstDrawable->y); - } - else - { - BoxRec box; - - box.x1 = 0; - box.y1 = 0; - box.x2 = pDstDrawable->width; - box.y2 = pDstDrawable->height; - prgnDstClip = &rgnDstRec; - REGION_INIT(pscr, prgnDstClip, &box, 1); - } - - /* drawable-relative source region */ - REGION_INIT(pscr, &rgnExposed, &srcBox, 1); - - /* now get the hidden parts of the source box*/ - REGION_SUBTRACT(pscr, &rgnExposed, &rgnExposed, prgnSrcClip); - - if (pSrcWin && pSrcWin->backStorage) - { - /* - * Copy any areas from the source backing store. Modifies - * rgnExposed. - */ - (* pSrcWin->drawable.pScreen->ExposeCopy) ((WindowPtr)pSrcDrawable, - pDstDrawable, - pGC, - &rgnExposed, - srcx, srcy, - dstx, dsty, - plane); - } - - /* move them over the destination */ - REGION_TRANSLATE(pscr, &rgnExposed, dstx-srcx, dsty-srcy); - - /* intersect with visible areas of dest */ - REGION_INTERSECT(pscr, &rgnExposed, &rgnExposed, prgnDstClip); - - /* - * If we have LOTS of rectangles, we decide to take the extents - * and force an exposure on that. This should require much less - * work overall, on both client and server. This is cheating, but - * isn't prohibited by the protocol ("spontaneous combustion" :-) - * for windows. - */ - extents = pGC->graphicsExposures && - (REGION_NUM_RECTS(&rgnExposed) > RECTLIMIT) && - (pDstDrawable->type != DRAWABLE_PIXMAP); -#ifdef SHAPE - if (pSrcWin) - { - RegionPtr region; - if (!(region = wClipShape (pSrcWin))) - region = wBoundingShape (pSrcWin); - /* - * If you try to CopyArea the extents of a shaped window, compacting the - * exposed region will undo all our work! - */ - if (extents && pSrcWin && region && - (RECT_IN_REGION(pscr, region, &srcBox) != rgnIN)) - extents = FALSE; - } -#endif - if (extents) - { - WindowPtr pWin = (WindowPtr)pDstDrawable; - - expBox = *REGION_EXTENTS(pscr, &rgnExposed); - REGION_RESET(pscr, &rgnExposed, &expBox); - /* need to clear out new areas of backing store */ - if (pWin->backStorage) - (void) (* pWin->drawable.pScreen->ClearBackingStore)( - pWin, - expBox.x1, - expBox.y1, - expBox.x2 - expBox.x1, - expBox.y2 - expBox.y1, - FALSE); - } - if ((pDstDrawable->type != DRAWABLE_PIXMAP) && - (((WindowPtr)pDstDrawable)->backgroundState != None)) - { - WindowPtr pWin = (WindowPtr)pDstDrawable; - - /* make the exposed area screen-relative */ - REGION_TRANSLATE(pscr, &rgnExposed, - pDstDrawable->x, pDstDrawable->y); - - if (extents) - { - /* PaintWindowBackground doesn't clip, so we have to */ - REGION_INTERSECT(pscr, &rgnExposed, &rgnExposed, &pWin->clipList); - } - (*pWin->drawable.pScreen->PaintWindowBackground)( - (WindowPtr)pDstDrawable, &rgnExposed, PW_BACKGROUND); - - if (extents) - { - REGION_RESET(pscr, &rgnExposed, &expBox); - } - else - REGION_TRANSLATE(pscr, &rgnExposed, - -pDstDrawable->x, -pDstDrawable->y); - } - if (prgnDstClip == &rgnDstRec) - { - REGION_UNINIT(pscr, prgnDstClip); - } - else if (prgnDstClip != prgnSrcClip) - { - REGION_DESTROY(pscr, prgnDstClip); - } - - if (prgnSrcClip == &rgnSrcRec) - { - REGION_UNINIT(pscr, prgnSrcClip); - } - else - { - REGION_DESTROY(pscr, prgnSrcClip); - } - - if (pGC->graphicsExposures) - { - /* don't look */ - RegionPtr exposed = REGION_CREATE(pscr, NullBox, 0); - *exposed = rgnExposed; - return exposed; - } - else - { - REGION_UNINIT(pscr, &rgnExposed); - return NULL; - } -} - -/* send GraphicsExpose events, or a NoExpose event, based on the region */ - -void -miSendGraphicsExpose (client, pRgn, drawable, major, minor) - ClientPtr client; - RegionPtr pRgn; - XID drawable; - int major; - int minor; -{ - if (pRgn && !REGION_NIL(pRgn)) - { - xEvent *pEvent; - register xEvent *pe; - register BoxPtr pBox; - register int i; - int numRects; - - numRects = REGION_NUM_RECTS(pRgn); - pBox = REGION_RECTS(pRgn); - if(!(pEvent = (xEvent *)ALLOCATE_LOCAL(numRects * sizeof(xEvent)))) - return; - pe = pEvent; - - for (i=1; i<=numRects; i++, pe++, pBox++) - { - pe->u.u.type = GraphicsExpose; - pe->u.graphicsExposure.drawable = drawable; - pe->u.graphicsExposure.x = pBox->x1; - pe->u.graphicsExposure.y = pBox->y1; - pe->u.graphicsExposure.width = pBox->x2 - pBox->x1; - pe->u.graphicsExposure.height = pBox->y2 - pBox->y1; - pe->u.graphicsExposure.count = numRects - i; - pe->u.graphicsExposure.majorEvent = major; - pe->u.graphicsExposure.minorEvent = minor; - } - TryClientEvents(client, pEvent, numRects, - (Mask)0, NoEventMask, NullGrab); - DEALLOCATE_LOCAL(pEvent); - } - else - { - xEvent event; - event.u.u.type = NoExpose; - event.u.noExposure.drawable = drawable; - event.u.noExposure.majorEvent = major; - event.u.noExposure.minorEvent = minor; - TryClientEvents(client, &event, 1, - (Mask)0, NoEventMask, NullGrab); - } -} - - -void -miSendExposures(pWin, pRgn, dx, dy) - WindowPtr pWin; - RegionPtr pRgn; - register int dx, dy; -{ - register BoxPtr pBox; - int numRects; - register xEvent *pEvent, *pe; - register int i; - - pBox = REGION_RECTS(pRgn); - numRects = REGION_NUM_RECTS(pRgn); - if(!(pEvent = (xEvent *) ALLOCATE_LOCAL(numRects * sizeof(xEvent)))) - return; - - for (i=numRects, pe = pEvent; --i >= 0; pe++, pBox++) - { - pe->u.u.type = Expose; - pe->u.expose.window = pWin->drawable.id; - pe->u.expose.x = pBox->x1 - dx; - pe->u.expose.y = pBox->y1 - dy; - pe->u.expose.width = pBox->x2 - pBox->x1; - pe->u.expose.height = pBox->y2 - pBox->y1; - pe->u.expose.count = i; - } - -#ifdef PANORAMIX - if(!noPanoramiXExtension) { - int scrnum = pWin->drawable.pScreen->myNum; - int x = 0, y = 0; - XID realWin = 0; - - if(!pWin->parent) { - x = panoramiXdataPtr[scrnum].x; - y = panoramiXdataPtr[scrnum].y; - pWin = WindowTable[0]; - realWin = pWin->drawable.id; - } else if (scrnum) { - PanoramiXRes *win; - win = PanoramiXFindIDByScrnum(XRT_WINDOW, - pWin->drawable.id, scrnum); - if(!win) { - DEALLOCATE_LOCAL(pEvent); - return; - } - realWin = win->info[0].id; - pWin = LookupIDByType(realWin, RT_WINDOW); - } - if(x || y || scrnum) - for (i = 0; i < numRects; i++) { - pEvent[i].u.expose.window = realWin; - pEvent[i].u.expose.x += x; - pEvent[i].u.expose.y += y; - } - } -#endif - - DeliverEvents(pWin, pEvent, numRects, NullWindow); - - DEALLOCATE_LOCAL(pEvent); -} - -void -miWindowExposures(pWin, prgn, other_exposed) - WindowPtr pWin; - register RegionPtr prgn, other_exposed; -{ -#ifdef NXAGENT_SERVER - - int total; - -#endif - RegionPtr exposures = prgn; - if (pWin->backStorage && prgn) - /* - * in some cases, backing store will cause a different - * region to be exposed than needs to be repainted - * (like when a window is mapped). RestoreAreas is - * allowed to return a region other than prgn, - * in which case this routine will free the resultant - * region. If exposures is null, then no events will - * be sent to the client; if prgn is empty - * no areas will be repainted. - */ - exposures = (*pWin->drawable.pScreen->RestoreAreas)(pWin, prgn); - if ((prgn && !REGION_NIL(prgn)) || - (exposures && !REGION_NIL(exposures)) || other_exposed) - { - RegionRec expRec; - int clientInterested; - - /* - * Restore from backing-store FIRST. - */ - clientInterested = (pWin->eventMask|wOtherEventMasks(pWin)) & ExposureMask; - if (other_exposed) - { - if (exposures) - { - REGION_UNION(pWin->drawable.pScreen, other_exposed, - exposures, - other_exposed); - if (exposures != prgn) - REGION_DESTROY(pWin->drawable.pScreen, exposures); - } - exposures = other_exposed; - } -#ifdef NXAGENT_SERVER - - /* - * If the number of rectangles is greater - * than 4, let the function decide. - */ - - total = REGION_NUM_RECTS(exposures); - - if (clientInterested && exposures && (total > RECTLIMIT || - (total > 4 && nxagentExtentsPredicate(total) == 1))) -#else - if (clientInterested && exposures && (REGION_NUM_RECTS(exposures) > RECTLIMIT)) -#endif - { - /* - * If we have LOTS of rectangles, we decide to take the extents - * and force an exposure on that. This should require much less - * work overall, on both client and server. This is cheating, but - * isn't prohibited by the protocol ("spontaneous combustion" :-). - */ - BoxRec box; - - box = *REGION_EXTENTS( pWin->drawable.pScreen, exposures); - if (exposures == prgn) { - exposures = &expRec; - REGION_INIT( pWin->drawable.pScreen, exposures, &box, 1); - REGION_RESET( pWin->drawable.pScreen, prgn, &box); - } else { - REGION_RESET( pWin->drawable.pScreen, exposures, &box); - REGION_UNION( pWin->drawable.pScreen, prgn, prgn, exposures); - } - /* PaintWindowBackground doesn't clip, so we have to */ - REGION_INTERSECT( pWin->drawable.pScreen, prgn, prgn, &pWin->clipList); - /* need to clear out new areas of backing store, too */ - if (pWin->backStorage) - (void) (* pWin->drawable.pScreen->ClearBackingStore)( - pWin, - box.x1 - pWin->drawable.x, - box.y1 - pWin->drawable.y, - box.x2 - box.x1, - box.y2 - box.y1, - FALSE); - } - if (prgn && !REGION_NIL(prgn)) - (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, prgn, PW_BACKGROUND); - if (clientInterested && exposures && !REGION_NIL(exposures)) - miSendExposures(pWin, exposures, - pWin->drawable.x, pWin->drawable.y); - if (exposures == &expRec) - { - REGION_UNINIT( pWin->drawable.pScreen, exposures); - } - else if (exposures && exposures != prgn && exposures != other_exposed) - REGION_DESTROY( pWin->drawable.pScreen, exposures); - if (prgn) - REGION_EMPTY( pWin->drawable.pScreen, prgn); - } - else if (exposures && exposures != prgn) - REGION_DESTROY( pWin->drawable.pScreen, exposures); -} - - -/* - this code is highly unlikely. it is not haile selassie. - - there is some hair here. we can't just use the window's -clip region as it is, because if we are painting the border, -the border is not in the client area and so we will be excluded -when we validate the GC, and if we are painting a parent-relative -background, the area we want to paint is in some other window. -since we trust the code calling us to tell us to paint only areas -that are really ours, we will temporarily give the window a -clipList the size of the whole screen and an origin at (0,0). -this more or less assumes that ddX code will do translation -based on the window's absolute position, and that ValidateGC will -look at clipList, and that no other fields from the -window will be used. it's not possible to just draw -in the root because it may be a different depth. - -to get the tile to align correctly we set the GC's tile origin to -be the (x,y) of the window's upper left corner, after which we -get the right bits when drawing into the root. - -because the clip_mask is being set to None, we may call DoChangeGC with -fPointer set true, thus we no longer need to install the background or -border tile in the resource table. -*/ - -static RESTYPE ResType = 0; -static int numGCs = 0; -static GCPtr screenContext[MAXSCREENS]; - -/*ARGSUSED*/ -static int -tossGC ( - pointer value, - XID id) -{ - GCPtr pGC = (GCPtr)value; - screenContext[pGC->pScreen->myNum] = (GCPtr)NULL; - FreeGC (pGC, id); - numGCs--; - if (!numGCs) - ResType = 0; - - return 0; -} - - -void -miPaintWindow(pWin, prgn, what) -register WindowPtr pWin; -RegionPtr prgn; -int what; -{ - int status; - - Bool usingScratchGC = FALSE; - WindowPtr pRoot; - -#define FUNCTION 0 -#define FOREGROUND 1 -#define TILE 2 -#define FILLSTYLE 3 -#define ABSX 4 -#define ABSY 5 -#define CLIPMASK 6 -#define SUBWINDOW 7 -#define COUNT_BITS 8 - - ChangeGCVal gcval[7]; - ChangeGCVal newValues [COUNT_BITS]; - - BITS32 gcmask, index, mask; - RegionRec prgnWin; - DDXPointRec oldCorner; - BoxRec box; - WindowPtr pBgWin; - GCPtr pGC; - register int i; - register BoxPtr pbox; - register ScreenPtr pScreen = pWin->drawable.pScreen; - register xRectangle *prect; - int numRects; - -#ifdef NXAGENT_SERVER - - /* - * Set the elements reported by the compiler - * as uninitialized. - */ - - prgnWin.extents.x1 = 0; - prgnWin.extents.y1 = 0; - prgnWin.extents.x2 = 0; - prgnWin.extents.y2 = 0; - - prgnWin.data = NULL; - - oldCorner.x = 0; - oldCorner.y = 0; - -#endif - - gcmask = 0; - - if (what == PW_BACKGROUND) - { - switch (pWin->backgroundState) { - case None: - return; - case ParentRelative: - (*pWin->parent->drawable.pScreen->PaintWindowBackground)(pWin->parent, prgn, what); - return; - case BackgroundPixel: - newValues[FOREGROUND].val = pWin->background.pixel; - newValues[FILLSTYLE].val = FillSolid; - gcmask |= GCForeground | GCFillStyle; - break; - case BackgroundPixmap: - newValues[TILE].ptr = (pointer)pWin->background.pixmap; - newValues[FILLSTYLE].val = FillTiled; - gcmask |= GCTile | GCFillStyle | GCTileStipXOrigin | GCTileStipYOrigin; - break; - } - } - else - { - if (pWin->borderIsPixel) - { - newValues[FOREGROUND].val = pWin->border.pixel; - newValues[FILLSTYLE].val = FillSolid; - gcmask |= GCForeground | GCFillStyle; - } - else - { - newValues[TILE].ptr = (pointer)pWin->border.pixmap; - newValues[FILLSTYLE].val = FillTiled; - gcmask |= GCTile | GCFillStyle | GCTileStipXOrigin | GCTileStipYOrigin; - } - } - - prect = (xRectangle *)ALLOCATE_LOCAL(REGION_NUM_RECTS(prgn) * - sizeof(xRectangle)); - if (!prect) - return; - - newValues[FUNCTION].val = GXcopy; - gcmask |= GCFunction | GCClipMask; - - i = pScreen->myNum; - pRoot = WindowTable[i]; - - pBgWin = pWin; - if (what == PW_BORDER) - { - while (pBgWin->backgroundState == ParentRelative) - pBgWin = pBgWin->parent; - } - - if ((pWin->drawable.depth != pRoot->drawable.depth) || - (pWin->drawable.bitsPerPixel != pRoot->drawable.bitsPerPixel)) - { - usingScratchGC = TRUE; - pGC = GetScratchGC(pWin->drawable.depth, pWin->drawable.pScreen); - if (!pGC) - { - DEALLOCATE_LOCAL(prect); - return; - } - /* - * mash the clip list so we can paint the border by - * mangling the window in place, pretending it - * spans the entire screen - */ - if (what == PW_BORDER) - { - prgnWin = pWin->clipList; - oldCorner.x = pWin->drawable.x; - oldCorner.y = pWin->drawable.y; - pWin->drawable.x = pWin->drawable.y = 0; - box.x1 = 0; - box.y1 = 0; - box.x2 = pScreen->width; - box.y2 = pScreen->height; - REGION_INIT(pScreen, &pWin->clipList, &box, 1); - pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER; - newValues[ABSX].val = pBgWin->drawable.x; - newValues[ABSY].val = pBgWin->drawable.y; - } - else - { - newValues[ABSX].val = 0; - newValues[ABSY].val = 0; - } - } else { - /* - * draw the background to the root window - */ - if (screenContext[i] == (GCPtr)NULL) - { - if (!ResType && !(ResType = CreateNewResourceType(tossGC))) - return; - screenContext[i] = CreateGC((DrawablePtr)pWin, (BITS32) 0, - (XID *)NULL, &status); - if (!screenContext[i]) - return; - numGCs++; - if (!AddResource(FakeClientID(0), ResType, - (pointer)screenContext[i])) - return; - } - pGC = screenContext[i]; - newValues[SUBWINDOW].val = IncludeInferiors; - newValues[ABSX].val = pBgWin->drawable.x; - newValues[ABSY].val = pBgWin->drawable.y; - gcmask |= GCSubwindowMode; - pWin = pRoot; - } - - if (pWin->backStorage) - (*pWin->drawable.pScreen->DrawGuarantee) (pWin, pGC, GuaranteeVisBack); - - mask = gcmask; - gcmask = 0; - i = 0; - while (mask) { - index = lowbit (mask); - mask &= ~index; - switch (index) { - case GCFunction: - if (pGC->alu != newValues[FUNCTION].val) { - gcmask |= index; - gcval[i++].val = newValues[FUNCTION].val; - } - break; - case GCTileStipXOrigin: - if ( pGC->patOrg.x != newValues[ABSX].val) { - gcmask |= index; - gcval[i++].val = newValues[ABSX].val; - } - break; - case GCTileStipYOrigin: - if ( pGC->patOrg.y != newValues[ABSY].val) { - gcmask |= index; - gcval[i++].val = newValues[ABSY].val; - } - break; - case GCClipMask: - if ( pGC->clientClipType != CT_NONE) { - gcmask |= index; - gcval[i++].val = CT_NONE; - } - break; - case GCSubwindowMode: - if ( pGC->subWindowMode != newValues[SUBWINDOW].val) { - gcmask |= index; - gcval[i++].val = newValues[SUBWINDOW].val; - } - break; - case GCTile: - if (pGC->tileIsPixel || pGC->tile.pixmap != newValues[TILE].ptr) - { - gcmask |= index; - gcval[i++].ptr = newValues[TILE].ptr; - } - break; - case GCFillStyle: - if ( pGC->fillStyle != newValues[FILLSTYLE].val) { - gcmask |= index; - gcval[i++].val = newValues[FILLSTYLE].val; - } - break; - case GCForeground: - if ( pGC->fgPixel != newValues[FOREGROUND].val) { - gcmask |= index; - gcval[i++].val = newValues[FOREGROUND].val; - } - break; - } - } - - if (gcmask) - dixChangeGC(NullClient, pGC, gcmask, NULL, gcval); - - if (pWin->drawable.serialNumber != pGC->serialNumber) - ValidateGC((DrawablePtr)pWin, pGC); - - numRects = REGION_NUM_RECTS(prgn); - pbox = REGION_RECTS(prgn); - for (i= numRects; --i >= 0; pbox++, prect++) - { - prect->x = pbox->x1 - pWin->drawable.x; - prect->y = pbox->y1 - pWin->drawable.y; - prect->width = pbox->x2 - pbox->x1; - prect->height = pbox->y2 - pbox->y1; - } - prect -= numRects; - (*pGC->ops->PolyFillRect)((DrawablePtr)pWin, pGC, numRects, prect); - DEALLOCATE_LOCAL(prect); - - if (pWin->backStorage) - (*pWin->drawable.pScreen->DrawGuarantee) (pWin, pGC, GuaranteeNothing); - - if (usingScratchGC) - { - if (what == PW_BORDER) - { - REGION_UNINIT(pScreen, &pWin->clipList); - pWin->clipList = prgnWin; - pWin->drawable.x = oldCorner.x; - pWin->drawable.y = oldCorner.y; - pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER; - } - FreeScratchGC(pGC); - } -} - - -/* MICLEARDRAWABLE -- sets the entire drawable to the background color of - * the GC. Useful when we have a scratch drawable and need to initialize - * it. */ -void -miClearDrawable(pDraw, pGC) - DrawablePtr pDraw; - GCPtr pGC; -{ - XID fg = pGC->fgPixel; - XID bg = pGC->bgPixel; - xRectangle rect; - - rect.x = 0; - rect.y = 0; - rect.width = pDraw->width; - rect.height = pDraw->height; - DoChangeGC(pGC, GCForeground, &bg, 0); - ValidateGC(pDraw, pGC); - (*pGC->ops->PolyFillRect)(pDraw, pGC, 1, &rect); - DoChangeGC(pGC, GCForeground, &fg, 0); - ValidateGC(pDraw, pGC); -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c deleted file mode 100644 index 5f32334..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c +++ /dev/null @@ -1,318 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* - * $XFree86: xc/programs/Xserver/render/miglyph.c,v 1.4 2000/11/20 07:13:13 keithp Exp $ - * - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "scrnintstr.h" -#include "gcstruct.h" -#include "pixmapstr.h" -#include "windowstr.h" -#include "mi.h" -#include "picturestr.h" -#include "mipict.h" - -#ifdef NXAGENT_SERVER - -#include "Render.h" - -#endif - -void -miGlyphExtents (int nlist, - GlyphListPtr list, - GlyphPtr *glyphs, - BoxPtr extents) -{ - int x1, x2, y1, y2; - int n; - GlyphPtr glyph; - int x, y; - - x = 0; - y = 0; - extents->x1 = MAXSHORT; - extents->x2 = MINSHORT; - extents->y1 = MAXSHORT; - extents->y2 = MINSHORT; - while (nlist--) - { - x += list->xOff; - y += list->yOff; - n = list->len; - list++; - while (n--) - { - glyph = *glyphs++; - x1 = x - glyph->info.x; - if (x1 < MINSHORT) - x1 = MINSHORT; - y1 = y - glyph->info.y; - if (y1 < MINSHORT) - y1 = MINSHORT; - x2 = x1 + glyph->info.width; - if (x2 > MAXSHORT) - x2 = MAXSHORT; - y2 = y1 + glyph->info.height; - if (y2 > MAXSHORT) - y2 = MAXSHORT; - if (x1 < extents->x1) - extents->x1 = x1; - if (x2 > extents->x2) - extents->x2 = x2; - if (y1 < extents->y1) - extents->y1 = y1; - if (y2 > extents->y2) - extents->y2 = y2; - x += glyph->info.xOff; - y += glyph->info.yOff; - } - } -} - -#define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0) - -void -miGlyphs (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int nlist, - GlyphListPtr list, - GlyphPtr *glyphs) -{ - PixmapPtr pPixmap = 0; - PicturePtr pPicture; - PixmapPtr pMaskPixmap = 0; - PicturePtr pMask; - ScreenPtr pScreen = pDst->pDrawable->pScreen; - int width = 0, height = 0; - int x, y; - int xDst = list->xOff, yDst = list->yOff; - int n; - GlyphPtr glyph; - int error; - BoxRec extents; - CARD32 component_alpha; - - #ifdef NXAGENT_SERVER - - /* - * Get rid of the warning. - */ - - extents.x1 = 0; - extents.y1 = 0; - - #endif - - if (maskFormat) - { - GCPtr pGC; - xRectangle rect; - - #ifdef NXAGENT_SERVER - - if (nxagentGlyphsExtents != NullBox) - { - memcpy(&extents, nxagentGlyphsExtents, sizeof(BoxRec)); - } - else - { - nxagentGlyphsExtents = (BoxPtr) xalloc(sizeof(BoxRec)); - - miGlyphExtents (nlist, list, glyphs, &extents); - - memcpy(nxagentGlyphsExtents, &extents, sizeof(BoxRec)); - } - - #else - - miGlyphExtents (nlist, list, glyphs, &extents); - - #endif - - if (extents.x2 <= extents.x1 || extents.y2 <= extents.y1) - return; - width = extents.x2 - extents.x1; - height = extents.y2 - extents.y1; - pMaskPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, maskFormat->depth); - - if (!pMaskPixmap) - return; - - component_alpha = NeedsComponent(maskFormat->format); - pMask = CreatePicture (0, &pMaskPixmap->drawable, - maskFormat, CPComponentAlpha, &component_alpha, - serverClient, &error); - - if (!pMask) - { - (*pScreen->DestroyPixmap) (pMaskPixmap); - return; - } - pGC = GetScratchGC (pMaskPixmap->drawable.depth, pScreen); - ValidateGC (&pMaskPixmap->drawable, pGC); - rect.x = 0; - rect.y = 0; - rect.width = width; - rect.height = height; - (*pGC->ops->PolyFillRect) (&pMaskPixmap->drawable, pGC, 1, &rect); - FreeScratchGC (pGC); - x = -extents.x1; - y = -extents.y1; - } - else - { - pMask = pDst; - x = 0; - y = 0; - } - pPicture = 0; - while (nlist--) - { - x += list->xOff; - y += list->yOff; - n = list->len; - - while (n--) - { - glyph = *glyphs++; - if (!pPicture) - { - pPixmap = GetScratchPixmapHeader (pScreen, glyph->info.width, glyph->info.height, - list->format->depth, - list->format->depth, - 0, (pointer) (glyph + 1)); - if (!pPixmap) - return; - component_alpha = NeedsComponent(list->format->format); - pPicture = CreatePicture (0, &pPixmap->drawable, list->format, - CPComponentAlpha, &component_alpha, - serverClient, &error); - if (!pPicture) - { - FreeScratchPixmapHeader (pPixmap); - return; - } - } - (*pScreen->ModifyPixmapHeader) (pPixmap, - glyph->info.width, glyph->info.height, - 0, 0, -1, (pointer) (glyph + 1)); - - #ifdef NXAGENT_SERVER - - /* - * The following line fixes a problem with glyphs that appeared - * as clipped. It was a side effect due the validate function - * "ValidatePicture" that makes a check on the Drawable serial - * number instead of the picture serial number, failing thus - * the clip mask update. - */ - - pPicture->pDrawable->serialNumber = NEXT_SERIAL_NUMBER; - - #endif - - pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER; - if (maskFormat) - { - CompositePicture (PictOpAdd, - pPicture, - None, - pMask, - 0, 0, - 0, 0, - x - glyph->info.x, - y - glyph->info.y, - glyph->info.width, - glyph->info.height); - } - else - { - CompositePicture (op, - pSrc, - pPicture, - pDst, - xSrc + (x - glyph->info.x) - xDst, - ySrc + (y - glyph->info.y) - yDst, - 0, 0, - x - glyph->info.x, - y - glyph->info.y, - glyph->info.width, - glyph->info.height); - } - x += glyph->info.xOff; - y += glyph->info.yOff; - } - - list++; - if (pPicture) - { - FreeScratchPixmapHeader (pPixmap); - FreePicture ((pointer) pPicture, 0); - pPicture = 0; - pPixmap = 0; - } - } - if (maskFormat) - { - x = extents.x1; - y = extents.y1; - CompositePicture (op, - pSrc, - pMask, - pDst, - xSrc + x - xDst, - ySrc + y - yDst, - 0, 0, - x, y, - width, height); - - FreePicture ((pointer) pMask, (XID) 0); - (*pScreen->DestroyPixmap) (pMaskPixmap); - } - -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c deleted file mode 100644 index f418654..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c +++ /dev/null @@ -1,233 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* - * $XFree86: xc/programs/Xserver/render/mitrap.c,v 1.8 2002/09/03 19:28:28 keithp Exp $ - * - * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "scrnintstr.h" -#include "gcstruct.h" -#include "pixmapstr.h" -#include "windowstr.h" -#include "servermd.h" -#include "mi.h" -#include "picturestr.h" -#include "mipict.h" - -#ifdef NXAGENT_SERVER - -#include "Render.h" - -#endif - -PicturePtr -miCreateAlphaPicture (ScreenPtr pScreen, - PicturePtr pDst, - PictFormatPtr pPictFormat, - CARD16 width, - CARD16 height) -{ - PixmapPtr pPixmap; - PicturePtr pPicture; - GCPtr pGC; - int error; - xRectangle rect; - - if (width > 32767 || height > 32767) - return 0; - - if (!pPictFormat) - { - if (pDst->polyEdge == PolyEdgeSharp) - pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1); - else - pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8); - if (!pPictFormat) - return 0; - } - - pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, - pPictFormat->depth); - if (!pPixmap) - return 0; - pGC = GetScratchGC (pPixmap->drawable.depth, pScreen); - if (!pGC) - { - (*pScreen->DestroyPixmap) (pPixmap); - return 0; - } - ValidateGC (&pPixmap->drawable, pGC); - rect.x = 0; - rect.y = 0; - rect.width = width; - rect.height = height; - (*pGC->ops->PolyFillRect)(&pPixmap->drawable, pGC, 1, &rect); - FreeScratchGC (pGC); - pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat, - 0, 0, serverClient, &error); - (*pScreen->DestroyPixmap) (pPixmap); - return pPicture; -} - -static xFixed -miLineFixedX (xLineFixed *l, xFixed y, Bool ceil) -{ - xFixed dx = l->p2.x - l->p1.x; - xFixed_32_32 ex = (xFixed_32_32) (y - l->p1.y) * dx; - xFixed dy = l->p2.y - l->p1.y; - if (ceil) - ex += (dy - 1); - return l->p1.x + (xFixed) (ex / dy); -} - -void -miTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box) -{ - box->y1 = MAXSHORT; - box->y2 = MINSHORT; - box->x1 = MAXSHORT; - box->x2 = MINSHORT; - for (; ntrap; ntrap--, traps++) - { - INT16 x1, y1, x2, y2; - - if (!xTrapezoidValid(traps)) - continue; - y1 = xFixedToInt (traps->top); - if (y1 < box->y1) - box->y1 = y1; - - y2 = xFixedToInt (xFixedCeil (traps->bottom)); - if (y2 > box->y2) - box->y2 = y2; - - x1 = xFixedToInt (min (miLineFixedX (&traps->left, traps->top, FALSE), - miLineFixedX (&traps->left, traps->bottom, FALSE))); - if (x1 < box->x1) - box->x1 = x1; - - x2 = xFixedToInt (xFixedCeil (max (miLineFixedX (&traps->right, traps->top, TRUE), - miLineFixedX (&traps->right, traps->bottom, TRUE)))); - if (x2 > box->x2) - box->x2 = x2; - } -} - -void -miTrapezoids (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int ntrap, - xTrapezoid *traps) -{ - ScreenPtr pScreen = pDst->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - - /* - * Check for solid alpha add - */ - if (op == PictOpAdd && miIsSolidAlpha (pSrc)) - { - for (; ntrap; ntrap--, traps++) - (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0); - } - else if (maskFormat) - { - PicturePtr pPicture; - BoxRec bounds; - INT16 xDst, yDst; - INT16 xRel, yRel; - - xDst = traps[0].left.p1.x >> 16; - yDst = traps[0].left.p1.y >> 16; - - #ifdef NXAGENT_SERVER - - if (nxagentTrapezoidExtents != NullBox) - { - memcpy(&bounds, nxagentTrapezoidExtents, sizeof(BoxRec)); - } - else - { - nxagentTrapezoidExtents = (BoxPtr) xalloc(sizeof(BoxRec)); - - miTrapezoidBounds (ntrap, traps, &bounds); - - memcpy(nxagentTrapezoidExtents, &bounds, sizeof(BoxRec)); - } - - #else - - miTrapezoidBounds (ntrap, traps, &bounds); - - #endif - - if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2) - return; - pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat, - bounds.x2 - bounds.x1, - bounds.y2 - bounds.y1); - if (!pPicture) - return; - for (; ntrap; ntrap--, traps++) - (*ps->RasterizeTrapezoid) (pPicture, traps, - -bounds.x1, -bounds.y1); - xRel = bounds.x1 + xSrc - xDst; - yRel = bounds.y1 + ySrc - yDst; - CompositePicture (op, pSrc, pPicture, pDst, - xRel, yRel, 0, 0, bounds.x1, bounds.y1, - bounds.x2 - bounds.x1, - bounds.y2 - bounds.y1); - FreePicture (pPicture, 0); - } - else - { - if (pDst->polyEdge == PolyEdgeSharp) - maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1); - else - maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8); - for (; ntrap; ntrap--, traps++) - miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps); - } -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c deleted file mode 100644 index 1902949..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c +++ /dev/null @@ -1,1222 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XFree86: xc/programs/Xserver/mi/miwindow.c,v 1.9tsi Exp $ */ -/*********************************************************** - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* $Xorg: miwindow.c,v 1.4 2001/02/09 02:05:22 xorgcvs Exp $ */ -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include "regionstr.h" -#include "region.h" -#include "mi.h" -#include "windowstr.h" -#include "scrnintstr.h" -#include "pixmapstr.h" -#include "mivalidate.h" - -void -miClearToBackground(pWin, x, y, w, h, generateExposures) - WindowPtr pWin; - int x,y; - int w,h; - Bool generateExposures; -{ - BoxRec box; - RegionRec reg; - RegionPtr pBSReg = NullRegion; - ScreenPtr pScreen; - BoxPtr extents; - int x1, y1, x2, y2; - - /* compute everything using ints to avoid overflow */ - - x1 = pWin->drawable.x + x; - y1 = pWin->drawable.y + y; - if (w) - x2 = x1 + (int) w; - else - x2 = x1 + (int) pWin->drawable.width - (int) x; - if (h) - y2 = y1 + h; - else - y2 = y1 + (int) pWin->drawable.height - (int) y; - - extents = &pWin->clipList.extents; - - /* clip the resulting rectangle to the window clipList extents. This - * makes sure that the result will fit in a box, given that the - * screen is < 32768 on a side. - */ - - if (x1 < extents->x1) - x1 = extents->x1; - if (x2 > extents->x2) - x2 = extents->x2; - if (y1 < extents->y1) - y1 = extents->y1; - if (y2 > extents->y2) - y2 = extents->y2; - - if (x2 <= x1 || y2 <= y1) - { - x2 = x1 = 0; - y2 = y1 = 0; - } - - box.x1 = x1; - box.x2 = x2; - box.y1 = y1; - box.y2 = y2; - - pScreen = pWin->drawable.pScreen; - REGION_INIT(pScreen, ®, &box, 1); - if (pWin->backStorage) - { - /* - * If the window has backing-store on, call through the - * ClearToBackground vector to handle the special semantics - * (i.e. things backing store is to be cleared out and - * an Expose event is to be generated for those areas in backing - * store if generateExposures is TRUE). - */ - pBSReg = (* pScreen->ClearBackingStore)(pWin, x, y, w, h, - generateExposures); - } - - REGION_INTERSECT(pScreen, ®, ®, &pWin->clipList); - if (generateExposures) - (*pScreen->WindowExposures)(pWin, ®, pBSReg); - else if (pWin->backgroundState != None) - (*pScreen->PaintWindowBackground)(pWin, ®, PW_BACKGROUND); - REGION_UNINIT(pScreen, ®); - if (pBSReg) - REGION_DESTROY(pScreen, pBSReg); -} - -/* - * For SaveUnders using backing-store. The idea is that when a window is mapped - * with saveUnder set TRUE, any windows it obscures will have its backing - * store turned on setting the DIXsaveUnder bit, - * The backing-store code must be written to allow for this - */ - -/*- - *----------------------------------------------------------------------- - * miCheckSubSaveUnder -- - * Check all the inferiors of a window for coverage by saveUnder - * windows. Called from ChangeSaveUnder and CheckSaveUnder. - * This code is very inefficient. - * - * Results: - * TRUE if any windows need to have backing-store removed. - * - * Side Effects: - * Windows may have backing-store turned on or off. - * - *----------------------------------------------------------------------- - */ -static Bool -miCheckSubSaveUnder( - register WindowPtr pParent, /* Parent to check */ - WindowPtr pFirst, /* first reconfigured window */ - RegionPtr pRegion) /* Initial area obscured by saveUnder */ -{ - register WindowPtr pChild; /* Current child */ - register ScreenPtr pScreen; /* Screen to use */ - RegionRec SubRegion; /* Area of children obscured */ - Bool res = FALSE; /* result */ - Bool subInited=FALSE;/* SubRegion initialized */ - - pScreen = pParent->drawable.pScreen; - if ( (pChild = pParent->firstChild) ) - { - /* - * build region above first changed window - */ - - for (; pChild != pFirst; pChild = pChild->nextSib) - if (pChild->viewable && pChild->saveUnder) - REGION_UNION(pScreen, pRegion, pRegion, &pChild->borderSize); - - /* - * check region below and including first changed window - */ - - for (; pChild; pChild = pChild->nextSib) - { - if (pChild->viewable) - { - /* - * don't save under nephew/niece windows; - * use a separate region - */ - - if (pChild->firstChild) - { - if (!subInited) - { - REGION_NULL(pScreen, &SubRegion); - subInited = TRUE; - } - REGION_COPY(pScreen, &SubRegion, pRegion); - res |= miCheckSubSaveUnder(pChild, pChild->firstChild, - &SubRegion); - } - else - { - res |= miCheckSubSaveUnder(pChild, pChild->firstChild, - pRegion); - } - - if (pChild->saveUnder) - REGION_UNION(pScreen, pRegion, pRegion, &pChild->borderSize); - } - } - - if (subInited) - REGION_UNINIT(pScreen, &SubRegion); - } - - /* - * Check the state of this window. DIX save unders are - * enabled for viewable windows with some client expressing - * exposure interest and which intersect the save under region - */ - - if (pParent->viewable && - ((pParent->eventMask | wOtherEventMasks(pParent)) & ExposureMask) && - REGION_NOTEMPTY(pScreen, &pParent->borderSize) && - RECT_IN_REGION(pScreen, pRegion, REGION_EXTENTS(pScreen, - &pParent->borderSize)) != rgnOUT) - { - if (!pParent->DIXsaveUnder) - { - pParent->DIXsaveUnder = TRUE; - (*pScreen->ChangeWindowAttributes) (pParent, CWBackingStore); - } - } - else - { - if (pParent->DIXsaveUnder) - { - res = TRUE; - pParent->DIXsaveUnder = FALSE; - } - } - return res; -} - - -/*- - *----------------------------------------------------------------------- - * miChangeSaveUnder -- - * Change the save-under state of a tree of windows. Called when - * a window with saveUnder TRUE is mapped/unmapped/reconfigured. - * - * Results: - * TRUE if any windows need to have backing-store removed (which - * means that PostChangeSaveUnder needs to be called later to - * finish the job). - * - * Side Effects: - * Windows may have backing-store turned on or off. - * - *----------------------------------------------------------------------- - */ -Bool -miChangeSaveUnder(pWin, first) - register WindowPtr pWin; - WindowPtr first; /* First window to check. - * Used when pWin was restacked */ -{ - RegionRec rgn; /* Area obscured by saveUnder windows */ - register ScreenPtr pScreen; - Bool res; - - if (!deltaSaveUndersViewable && !numSaveUndersViewable) - return FALSE; - numSaveUndersViewable += deltaSaveUndersViewable; - deltaSaveUndersViewable = 0; - pScreen = pWin->drawable.pScreen; - REGION_NULL(pScreen, &rgn); - res = miCheckSubSaveUnder (pWin->parent, - pWin->saveUnder ? first : pWin->nextSib, - &rgn); - REGION_UNINIT(pScreen, &rgn); - return res; -} - -/*- - *----------------------------------------------------------------------- - * miPostChangeSaveUnder -- - * Actually turn backing-store off for those windows that no longer - * need to have it on. - * - * Results: - * None. - * - * Side Effects: - * Backing-store and SAVE_UNDER_CHANGE_BIT are turned off for those - * windows affected. - * - *----------------------------------------------------------------------- - */ -void -miPostChangeSaveUnder(pWin, pFirst) - WindowPtr pWin; - WindowPtr pFirst; -{ - register WindowPtr pParent, pChild; - ChangeWindowAttributesProcPtr ChangeWindowAttributes; - - if (!(pParent = pWin->parent)) - return; - ChangeWindowAttributes = pParent->drawable.pScreen->ChangeWindowAttributes; - if (!pParent->DIXsaveUnder && - (pParent->backingStore == NotUseful) && pParent->backStorage) - (*ChangeWindowAttributes)(pParent, CWBackingStore); - if (!(pChild = pFirst)) - return; - while (1) - { - if (!pChild->DIXsaveUnder && - (pChild->backingStore == NotUseful) && pChild->backStorage) - (*ChangeWindowAttributes)(pChild, CWBackingStore); - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - while (!pChild->nextSib) - { - pChild = pChild->parent; - if (pChild == pParent) - return; - } - pChild = pChild->nextSib; - } -} - -void -miMarkWindow(pWin) - register WindowPtr pWin; -{ - register ValidatePtr val; - - if (pWin->valdata) - return; - val = (ValidatePtr)xnfalloc(sizeof(ValidateRec)); - val->before.oldAbsCorner.x = pWin->drawable.x; - val->before.oldAbsCorner.y = pWin->drawable.y; - val->before.borderVisible = NullRegion; - val->before.resized = FALSE; - pWin->valdata = val; -} - -Bool -miMarkOverlappedWindows(pWin, pFirst, ppLayerWin) - WindowPtr pWin; - WindowPtr pFirst; - WindowPtr *ppLayerWin; -{ - register BoxPtr box; - register WindowPtr pChild, pLast; - Bool anyMarked = FALSE; - MarkWindowProcPtr MarkWindow = pWin->drawable.pScreen->MarkWindow; - ScreenPtr pScreen; - - pScreen = pWin->drawable.pScreen; - - /* single layered systems are easy */ - if (ppLayerWin) *ppLayerWin = pWin; - - if (pWin == pFirst) - { - /* Blindly mark pWin and all of its inferiors. This is a slight - * overkill if there are mapped windows that outside pWin's border, - * but it's better than wasting time on RectIn checks. - */ - pChild = pWin; - while (1) - { - if (pChild->viewable) - { - if (REGION_BROKEN (pScreen, &pChild->winSize)) - SetWinSize (pChild); - if (REGION_BROKEN (pScreen, &pChild->borderSize)) - SetBorderSize (pChild); - (* MarkWindow)(pChild); - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - } - while (!pChild->nextSib && (pChild != pWin)) - pChild = pChild->parent; - if (pChild == pWin) - break; - pChild = pChild->nextSib; - } - anyMarked = TRUE; - pFirst = pFirst->nextSib; - } - if ( (pChild = pFirst) ) - { - box = REGION_EXTENTS(pChild->drawable.pScreen, &pWin->borderSize); - pLast = pChild->parent->lastChild; - while (1) - { - if (pChild->viewable) - { - if (REGION_BROKEN (pScreen, &pChild->winSize)) - SetWinSize (pChild); - if (REGION_BROKEN (pScreen, &pChild->borderSize)) - SetBorderSize (pChild); - if (RECT_IN_REGION(pScreen, &pChild->borderSize, box)) - { - (* MarkWindow)(pChild); - anyMarked = TRUE; - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - } - } - while (!pChild->nextSib && (pChild != pLast)) - pChild = pChild->parent; - if (pChild == pLast) - break; - pChild = pChild->nextSib; - } - } - if (anyMarked) - (* MarkWindow)(pWin->parent); - return anyMarked; -} - -/***** - * miHandleValidateExposures(pWin) - * starting at pWin, draw background in any windows that have exposure - * regions, translate the regions, restore any backing store, - * and then send any regions still exposed to the client - *****/ -void -miHandleValidateExposures(pWin) - WindowPtr pWin; -{ - register WindowPtr pChild; - register ValidatePtr val; - ScreenPtr pScreen; - WindowExposuresProcPtr WindowExposures; - - pScreen = pWin->drawable.pScreen; - - pChild = pWin; - WindowExposures = pChild->drawable.pScreen->WindowExposures; - while (1) - { - if ( (val = pChild->valdata) ) - { - if (REGION_NOTEMPTY(pScreen, &val->after.borderExposed)) - (*pChild->drawable.pScreen->PaintWindowBorder)(pChild, - &val->after.borderExposed, - PW_BORDER); - REGION_UNINIT(pScreen, &val->after.borderExposed); - (*WindowExposures)(pChild, &val->after.exposed, NullRegion); - REGION_UNINIT(pScreen, &val->after.exposed); - xfree(val); - pChild->valdata = (ValidatePtr)NULL; - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - } - while (!pChild->nextSib && (pChild != pWin)) - pChild = pChild->parent; - if (pChild == pWin) - break; - pChild = pChild->nextSib; - } -} - -void -miMoveWindow(pWin, x, y, pNextSib, kind) - register WindowPtr pWin; - int x,y; - WindowPtr pNextSib; - VTKind kind; -{ - WindowPtr pParent; - Bool WasViewable = (Bool)(pWin->viewable); - short bw; - RegionPtr oldRegion = NULL; - DDXPointRec oldpt; - Bool anyMarked = FALSE; - register ScreenPtr pScreen; - WindowPtr windowToValidate; -#ifdef DO_SAVE_UNDERS - Bool dosave = FALSE; -#endif - WindowPtr pLayerWin; - - /* if this is a root window, can't be moved */ - if (!(pParent = pWin->parent)) - return ; - pScreen = pWin->drawable.pScreen; - bw = wBorderWidth (pWin); - - oldpt.x = pWin->drawable.x; - oldpt.y = pWin->drawable.y; - if (WasViewable) - { - oldRegion = REGION_CREATE(pScreen, NullBox, 1); - REGION_COPY(pScreen, oldRegion, &pWin->borderClip); - anyMarked = (*pScreen->MarkOverlappedWindows)(pWin, pWin, &pLayerWin); - } - pWin->origin.x = x + (int)bw; - pWin->origin.y = y + (int)bw; - x = pWin->drawable.x = pParent->drawable.x + x + (int)bw; - y = pWin->drawable.y = pParent->drawable.y + y + (int)bw; - - SetWinSize (pWin); - SetBorderSize (pWin); - - (*pScreen->PositionWindow)(pWin, x, y); - - windowToValidate = MoveWindowInStack(pWin, pNextSib); - - ResizeChildrenWinSize(pWin, x - oldpt.x, y - oldpt.y, 0, 0); - - if (WasViewable) - { - if (pLayerWin == pWin) - anyMarked |= (*pScreen->MarkOverlappedWindows) - (pWin, windowToValidate, (WindowPtr *)NULL); - else - anyMarked |= (*pScreen->MarkOverlappedWindows) - (pWin, pLayerWin, (WindowPtr *)NULL); - -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, windowToValidate); - } -#endif /* DO_SAVE_UNDERS */ - - if (anyMarked) - { - (*pScreen->ValidateTree)(pLayerWin->parent, NullWindow, kind); - (* pWin->drawable.pScreen->CopyWindow)(pWin, oldpt, oldRegion); - REGION_DESTROY(pScreen, oldRegion); - /* XXX need to retile border if ParentRelative origin */ - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (dosave) - (*pScreen->PostChangeSaveUnder)(pLayerWin, windowToValidate); -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, NullWindow, kind); - } - if (pWin->realized) - WindowsRestructured (); -} - - -/* - * pValid is a region of the screen which has been - * successfully copied -- recomputed exposed regions for affected windows - */ - -static int -miRecomputeExposures ( - register WindowPtr pWin, - pointer value) /* must conform to VisitWindowProcPtr */ -{ - register ScreenPtr pScreen; - RegionPtr pValid = (RegionPtr)value; - - if (pWin->valdata) - { - pScreen = pWin->drawable.pScreen; - /* - * compute exposed regions of this window - */ - REGION_SUBTRACT(pScreen, &pWin->valdata->after.exposed, - &pWin->clipList, pValid); - /* - * compute exposed regions of the border - */ - REGION_SUBTRACT(pScreen, &pWin->valdata->after.borderExposed, - &pWin->borderClip, &pWin->winSize); - REGION_SUBTRACT(pScreen, &pWin->valdata->after.borderExposed, - &pWin->valdata->after.borderExposed, pValid); - return WT_WALKCHILDREN; - } - return WT_NOMATCH; -} - -void -miSlideAndSizeWindow(pWin, x, y, w, h, pSib) - register WindowPtr pWin; - int x,y; - unsigned int w, h; - WindowPtr pSib; -{ - WindowPtr pParent; - Bool WasViewable = (Bool)(pWin->viewable); - unsigned short width = pWin->drawable.width, - height = pWin->drawable.height; - short oldx = pWin->drawable.x, - oldy = pWin->drawable.y; - int bw = wBorderWidth (pWin); - short dw, dh; - DDXPointRec oldpt; - RegionPtr oldRegion = NULL; - Bool anyMarked = FALSE; - register ScreenPtr pScreen; - WindowPtr pFirstChange; - register WindowPtr pChild; - RegionPtr gravitate[StaticGravity + 1]; - register unsigned g; - int nx, ny; /* destination x,y */ - int newx, newy; /* new inner window position */ - RegionPtr pRegion = NULL; - RegionPtr destClip; /* portions of destination already written */ - RegionPtr oldWinClip = NULL; /* old clip list for window */ - RegionPtr borderVisible = NullRegion; /* visible area of the border */ - RegionPtr bsExposed = NullRegion; /* backing store exposures */ - Bool shrunk = FALSE; /* shrunk in an inner dimension */ - Bool moved = FALSE; /* window position changed */ -#ifdef DO_SAVE_UNDERS - Bool dosave = FALSE; -#endif - WindowPtr pLayerWin; - - /* if this is a root window, can't be resized */ - if (!(pParent = pWin->parent)) - return ; - - pScreen = pWin->drawable.pScreen; - newx = pParent->drawable.x + x + bw; - newy = pParent->drawable.y + y + bw; - if (WasViewable) - { - anyMarked = FALSE; - /* - * save the visible region of the window - */ - oldRegion = REGION_CREATE(pScreen, NullBox, 1); - REGION_COPY(pScreen, oldRegion, &pWin->winSize); - - /* - * categorize child windows into regions to be moved - */ - for (g = 0; g <= StaticGravity; g++) - gravitate[g] = (RegionPtr) NULL; - for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib) - { - g = pChild->winGravity; - if (g != UnmapGravity) - { - if (!gravitate[g]) - gravitate[g] = REGION_CREATE(pScreen, NullBox, 1); - REGION_UNION(pScreen, gravitate[g], - gravitate[g], &pChild->borderClip); - } - else - { - UnmapWindow(pChild, TRUE); - anyMarked = TRUE; - } - } - anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin, pWin, - &pLayerWin); - - oldWinClip = NULL; - if (pWin->bitGravity != ForgetGravity) - { - oldWinClip = REGION_CREATE(pScreen, NullBox, 1); - REGION_COPY(pScreen, oldWinClip, &pWin->clipList); - } - /* - * if the window is changing size, borderExposed - * can't be computed correctly without some help. - */ - if (pWin->drawable.height > h || pWin->drawable.width > w) - shrunk = TRUE; - - if (newx != oldx || newy != oldy) - moved = TRUE; - - if ((pWin->drawable.height != h || pWin->drawable.width != w) && - HasBorder (pWin)) - { - borderVisible = REGION_CREATE(pScreen, NullBox, 1); - /* for tiled borders, we punt and draw the whole thing */ - if (pWin->borderIsPixel || !moved) - { - if (shrunk || moved) - REGION_SUBTRACT(pScreen, borderVisible, - &pWin->borderClip, - &pWin->winSize); - else - REGION_COPY(pScreen, borderVisible, - &pWin->borderClip); - } - } - } - pWin->origin.x = x + bw; - pWin->origin.y = y + bw; - pWin->drawable.height = h; - pWin->drawable.width = w; - - x = pWin->drawable.x = newx; - y = pWin->drawable.y = newy; - - SetWinSize (pWin); - SetBorderSize (pWin); - - dw = (int)w - (int)width; - dh = (int)h - (int)height; - ResizeChildrenWinSize(pWin, x - oldx, y - oldy, dw, dh); - - /* let the hardware adjust background and border pixmaps, if any */ - (*pScreen->PositionWindow)(pWin, x, y); - - pFirstChange = MoveWindowInStack(pWin, pSib); - - if (WasViewable) - { - pRegion = REGION_CREATE(pScreen, NullBox, 1); - if (pWin->backStorage) - REGION_COPY(pScreen, pRegion, &pWin->clipList); - - if (pLayerWin == pWin) - anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin, pFirstChange, - (WindowPtr *)NULL); - else - anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin, pLayerWin, - (WindowPtr *)NULL); - - if (pWin->valdata) - { - pWin->valdata->before.resized = TRUE; - pWin->valdata->before.borderVisible = borderVisible; - } - -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, pFirstChange); - } -#endif /* DO_SAVE_UNDERS */ - - if (anyMarked) - (*pScreen->ValidateTree)(pLayerWin->parent, pFirstChange, VTOther); - /* - * the entire window is trashed unless bitGravity - * recovers portions of it - */ - REGION_COPY(pScreen, &pWin->valdata->after.exposed, &pWin->clipList); - } - - GravityTranslate (x, y, oldx, oldy, dw, dh, pWin->bitGravity, &nx, &ny); - - if (pWin->backStorage && - ((pWin->backingStore == Always) || WasViewable)) - { - if (!WasViewable) - pRegion = &pWin->clipList; /* a convenient empty region */ - if (pWin->bitGravity == ForgetGravity) - bsExposed = (*pScreen->TranslateBackingStore) - (pWin, 0, 0, NullRegion, oldx, oldy); - else - { - bsExposed = (*pScreen->TranslateBackingStore) - (pWin, nx - x, ny - y, pRegion, oldx, oldy); - } - } - - if (WasViewable) - { - /* avoid the border */ - if (HasBorder (pWin)) - { - int offx, offy, dx, dy; - - /* kruft to avoid double translates for each gravity */ - offx = 0; - offy = 0; - for (g = 0; g <= StaticGravity; g++) - { - if (!gravitate[g]) - continue; - - /* align winSize to gravitate[g]. - * winSize is in new coordinates, - * gravitate[g] is still in old coordinates */ - GravityTranslate (x, y, oldx, oldy, dw, dh, g, &nx, &ny); - - dx = (oldx - nx) - offx; - dy = (oldy - ny) - offy; - if (dx || dy) - { - REGION_TRANSLATE(pScreen, &pWin->winSize, dx, dy); - offx += dx; - offy += dy; - } - REGION_INTERSECT(pScreen, gravitate[g], gravitate[g], - &pWin->winSize); - } - /* get winSize back where it belongs */ - if (offx || offy) - REGION_TRANSLATE(pScreen, &pWin->winSize, -offx, -offy); - } - /* - * add screen bits to the appropriate bucket - */ - - if (oldWinClip) - { - /* - * clip to new clipList - */ - REGION_COPY(pScreen, pRegion, oldWinClip); - REGION_TRANSLATE(pScreen, pRegion, nx - oldx, ny - oldy); - REGION_INTERSECT(pScreen, oldWinClip, pRegion, &pWin->clipList); - /* - * don't step on any gravity bits which will be copied after this - * region. Note -- this assumes that the regions will be copied - * in gravity order. - */ - for (g = pWin->bitGravity + 1; g <= StaticGravity; g++) - { - if (gravitate[g]) - REGION_SUBTRACT(pScreen, oldWinClip, oldWinClip, - gravitate[g]); - } - REGION_TRANSLATE(pScreen, oldWinClip, oldx - nx, oldy - ny); - g = pWin->bitGravity; - if (!gravitate[g]) - gravitate[g] = oldWinClip; - else - { - REGION_UNION(pScreen, gravitate[g], gravitate[g], oldWinClip); - REGION_DESTROY(pScreen, oldWinClip); - } - } - - /* - * move the bits on the screen - */ - - destClip = NULL; - - for (g = 0; g <= StaticGravity; g++) - { - if (!gravitate[g]) - continue; - - GravityTranslate (x, y, oldx, oldy, dw, dh, g, &nx, &ny); - - oldpt.x = oldx + (x - nx); - oldpt.y = oldy + (y - ny); - - /* Note that gravitate[g] is *translated* by CopyWindow */ - - /* only copy the remaining useful bits */ - - REGION_INTERSECT(pScreen, gravitate[g], gravitate[g], oldRegion); - - /* clip to not overwrite already copied areas */ - - if (destClip) { - REGION_TRANSLATE(pScreen, destClip, oldpt.x - x, oldpt.y - y); - REGION_SUBTRACT(pScreen, gravitate[g], gravitate[g], destClip); - REGION_TRANSLATE(pScreen, destClip, x - oldpt.x, y - oldpt.y); - } - - /* and move those bits */ - - if (oldpt.x != x || oldpt.y != y -#ifdef COMPOSITE - || pWin->redirectDraw -#endif - ) - { - (*pWin->drawable.pScreen->CopyWindow)(pWin, oldpt, gravitate[g]); - } - - /* remove any overwritten bits from the remaining useful bits */ - - REGION_SUBTRACT(pScreen, oldRegion, oldRegion, gravitate[g]); - - /* - * recompute exposed regions of child windows - */ - - for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib) - { - if (pChild->winGravity != g) - continue; - REGION_INTERSECT(pScreen, pRegion, - &pChild->borderClip, gravitate[g]); - TraverseTree (pChild, miRecomputeExposures, (pointer)pRegion); - } - - /* - * remove the successfully copied regions of the - * window from its exposed region - */ - - if (g == pWin->bitGravity) - REGION_SUBTRACT(pScreen, &pWin->valdata->after.exposed, - &pWin->valdata->after.exposed, gravitate[g]); - if (!destClip) - destClip = gravitate[g]; - else - { - REGION_UNION(pScreen, destClip, destClip, gravitate[g]); - REGION_DESTROY(pScreen, gravitate[g]); - } - } - - REGION_DESTROY(pScreen, oldRegion); - REGION_DESTROY(pScreen, pRegion); - if (destClip) - REGION_DESTROY(pScreen, destClip); - if (bsExposed) - { - RegionPtr valExposed = NullRegion; - - if (pWin->valdata) - valExposed = &pWin->valdata->after.exposed; - (*pScreen->WindowExposures) (pWin, valExposed, bsExposed); - if (valExposed) - REGION_EMPTY(pScreen, valExposed); - REGION_DESTROY(pScreen, bsExposed); - } - if (anyMarked) - (*pScreen->HandleExposures)(pLayerWin->parent); -#ifdef DO_SAVE_UNDERS - if (dosave) - { - (*pScreen->PostChangeSaveUnder)(pLayerWin, pFirstChange); - } -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pFirstChange, - VTOther); - } - else if (bsExposed) - { - (*pScreen->WindowExposures) (pWin, NullRegion, bsExposed); - REGION_DESTROY(pScreen, bsExposed); - } - if (pWin->realized) - WindowsRestructured (); -} - -WindowPtr -miGetLayerWindow(pWin) - WindowPtr pWin; -{ - return pWin->firstChild; -} - -#ifdef SHAPE -/****** - * - * miSetShape - * The border/window shape has changed. Recompute winSize/borderSize - * and send appropriate exposure events - */ - -void -miSetShape(pWin) - register WindowPtr pWin; -{ - Bool WasViewable = (Bool)(pWin->viewable); - register ScreenPtr pScreen = pWin->drawable.pScreen; - Bool anyMarked = FALSE; - RegionPtr pOldClip = NULL, bsExposed; -#ifdef DO_SAVE_UNDERS - Bool dosave = FALSE; -#endif - WindowPtr pLayerWin; - - if (WasViewable) - { - anyMarked = (*pScreen->MarkOverlappedWindows)(pWin, pWin, - &pLayerWin); - if (pWin->valdata) - { - if (HasBorder (pWin)) - { - RegionPtr borderVisible; - - borderVisible = REGION_CREATE(pScreen, NullBox, 1); - REGION_SUBTRACT(pScreen, borderVisible, - &pWin->borderClip, &pWin->winSize); - pWin->valdata->before.borderVisible = borderVisible; - } - pWin->valdata->before.resized = TRUE; - } - } - - SetWinSize (pWin); - SetBorderSize (pWin); - - ResizeChildrenWinSize(pWin, 0, 0, 0, 0); - - if (WasViewable) - { - if (pWin->backStorage) - { - pOldClip = REGION_CREATE(pScreen, NullBox, 1); - REGION_COPY(pScreen, pOldClip, &pWin->clipList); - } - - anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin, pWin, - (WindowPtr *)NULL); - -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, pLayerWin); - } -#endif /* DO_SAVE_UNDERS */ - - if (anyMarked) - (*pScreen->ValidateTree)(pLayerWin->parent, NullWindow, VTOther); - } - - if (pWin->backStorage && - ((pWin->backingStore == Always) || WasViewable)) - { - if (!WasViewable) - pOldClip = &pWin->clipList; /* a convenient empty region */ - bsExposed = (*pScreen->TranslateBackingStore) - (pWin, 0, 0, pOldClip, - pWin->drawable.x, pWin->drawable.y); -#ifdef NXAGENT_SERVER - - /* - * We got a few, rare, segfaults here after having - * started using the backing store. It may be a - * different bug but miChangeSaveUnder() calls mi- - * CheckSubSaveUnder() that, in turn, can change - * the backing store attribute of the window. This - * means that we may try to destroy the region - * even if it was not created at the beginning of - * this function as, at the time, the backing store - * was off. miCheckSubSaveUnder() appear to get a - * pointer to the parent, so maybe doesn't change - * the attribute of the window itself. This is to - * be better investigated. - */ - - if (WasViewable && pOldClip) - REGION_DESTROY(pScreen, pOldClip); -#else - if (WasViewable) - REGION_DESTROY(pScreen, pOldClip); -#endif - if (bsExposed) - { - RegionPtr valExposed = NullRegion; - - if (pWin->valdata) - valExposed = &pWin->valdata->after.exposed; - (*pScreen->WindowExposures) (pWin, valExposed, bsExposed); - if (valExposed) - REGION_EMPTY(pScreen, valExposed); - REGION_DESTROY(pScreen, bsExposed); - } - } - if (WasViewable) - { - if (anyMarked) - (*pScreen->HandleExposures)(pLayerWin->parent); -#ifdef DO_SAVE_UNDERS - if (dosave) - (*pScreen->PostChangeSaveUnder)(pLayerWin, pLayerWin); -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, NullWindow, VTOther); - } - if (pWin->realized) - WindowsRestructured (); - CheckCursorConfinement(pWin); -} -#endif - -/* Keeps the same inside(!) origin */ - -void -miChangeBorderWidth(pWin, width) - register WindowPtr pWin; - unsigned int width; -{ - int oldwidth; - Bool anyMarked = FALSE; - register ScreenPtr pScreen; - Bool WasViewable = (Bool)(pWin->viewable); - Bool HadBorder; -#ifdef DO_SAVE_UNDERS - Bool dosave = FALSE; -#endif - WindowPtr pLayerWin; - - oldwidth = wBorderWidth (pWin); - if (oldwidth == width) - return; - HadBorder = HasBorder(pWin); - pScreen = pWin->drawable.pScreen; - if (WasViewable && width < oldwidth) - anyMarked = (*pScreen->MarkOverlappedWindows)(pWin, pWin, &pLayerWin); - - pWin->borderWidth = width; - SetBorderSize (pWin); - - if (WasViewable) - { - if (width > oldwidth) - { - anyMarked = (*pScreen->MarkOverlappedWindows)(pWin, pWin, - &pLayerWin); - /* - * save the old border visible region to correctly compute - * borderExposed. - */ - if (pWin->valdata && HadBorder) - { - RegionPtr borderVisible; - borderVisible = REGION_CREATE(pScreen, NULL, 1); - REGION_SUBTRACT(pScreen, borderVisible, - &pWin->borderClip, &pWin->winSize); - pWin->valdata->before.borderVisible = borderVisible; - } - } -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, pWin->nextSib); - } -#endif /* DO_SAVE_UNDERS */ - - if (anyMarked) - { - (*pScreen->ValidateTree)(pLayerWin->parent, pLayerWin, VTOther); - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (dosave) - (*pScreen->PostChangeSaveUnder)(pLayerWin, pWin->nextSib); -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pLayerWin, - VTOther); - } - if (pWin->realized) - WindowsRestructured (); -} - -void -miMarkUnrealizedWindow(pChild, pWin, fromConfigure) - WindowPtr pChild; - WindowPtr pWin; - Bool fromConfigure; -{ - if ((pChild != pWin) || fromConfigure) - { - REGION_EMPTY(pChild->drawable.pScreen, &pChild->clipList); - if (pChild->drawable.pScreen->ClipNotify) - (* pChild->drawable.pScreen->ClipNotify)(pChild, 0, 0); - REGION_EMPTY(pChild->drawable.pScreen, &pChild->borderClip); - } -} - -void -miSegregateChildren(WindowPtr pWin, RegionPtr pReg, int depth) -{ - ScreenPtr pScreen; - WindowPtr pChild; - - pScreen = pWin->drawable.pScreen; - - for (pChild = pWin->firstChild; pChild; pChild = pChild->nextSib) - { - if (pChild->drawable.depth == depth) - REGION_UNION(pScreen, pReg, pReg, &pChild->borderClip); - - if (pChild->firstChild) - miSegregateChildren(pChild, pReg, depth); - } -} diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c deleted file mode 100644 index 4b342eb..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c +++ /dev/null @@ -1,2274 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* - * $XFree86: xc/programs/Xserver/render/picture.c,v 1.29 2002/11/23 02:38:15 keithp Exp $ - * - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "misc.h" -#include "scrnintstr.h" -#include "os.h" -#include "regionstr.h" -#include "validate.h" -#include "windowstr.h" -#include "input.h" -#include "resource.h" -#include "colormapst.h" -#include "cursorstr.h" -#include "dixstruct.h" -#include "gcstruct.h" -#include "servermd.h" -#include "NXpicturestr.h" - -#include "Screen.h" -#include "Pixmaps.h" -#include "Drawable.h" -#include "Render.h" - -#define PANIC -#define WARNING -#undef TEST -#undef DEBUG - -void *nxagentVisualFromID(ScreenPtr pScreen, VisualID visual); - -void *nxagentMatchingFormats(PictFormatPtr pForm); - -int PictureScreenPrivateIndex = -1; -int PictureWindowPrivateIndex; -int PictureGeneration; -RESTYPE PictureType; -RESTYPE PictFormatType; -RESTYPE GlyphSetType; -int PictureCmapPolicy = PictureCmapPolicyDefault; - -typedef struct _formatInit { - CARD32 format; - CARD8 depth; -} FormatInitRec, *FormatInitPtr; - -void nxagentPictureCreateDefaultFormats(ScreenPtr pScreen, FormatInitRec *formats, int *nformats); - -/* Picture Private machinery */ - -static int picturePrivateCount; - -void -ResetPicturePrivateIndex (void) -{ - picturePrivateCount = 0; -} - -int -AllocatePicturePrivateIndex (void) -{ - return picturePrivateCount++; -} - -Bool -AllocatePicturePrivate (ScreenPtr pScreen, int index2, unsigned int amount) -{ - PictureScreenPtr ps = GetPictureScreen(pScreen); - unsigned int oldamount; - - /* Round up sizes for proper alignment */ - amount = ((amount + (sizeof(long) - 1)) / sizeof(long)) * sizeof(long); - - if (index2 >= ps->PicturePrivateLen) - { - unsigned int *nsizes; - - nsizes = (unsigned int *)xrealloc(ps->PicturePrivateSizes, - (index2 + 1) * sizeof(unsigned int)); - if (!nsizes) - return FALSE; - while (ps->PicturePrivateLen <= index2) - { - nsizes[ps->PicturePrivateLen++] = 0; - ps->totalPictureSize += sizeof(DevUnion); - } - ps->PicturePrivateSizes = nsizes; - } - oldamount = ps->PicturePrivateSizes[index2]; - if (amount > oldamount) - { - ps->PicturePrivateSizes[index2] = amount; - ps->totalPictureSize += (amount - oldamount); - } - - return TRUE; -} - - -Bool -PictureDestroyWindow (WindowPtr pWindow) -{ - ScreenPtr pScreen = pWindow->drawable.pScreen; - PicturePtr pPicture; - PictureScreenPtr ps = GetPictureScreen(pScreen); - Bool ret; - - while ((pPicture = GetPictureWindow(pWindow))) - { - SetPictureWindow(pWindow, pPicture->pNext); - if (pPicture->id) - FreeResource (pPicture->id, PictureType); - FreePicture ((pointer) pPicture, pPicture->id); - } - pScreen->DestroyWindow = ps->DestroyWindow; - ret = (*pScreen->DestroyWindow) (pWindow); - ps->DestroyWindow = pScreen->DestroyWindow; - pScreen->DestroyWindow = PictureDestroyWindow; - return ret; -} - -Bool -PictureCloseScreen (int index, ScreenPtr pScreen) -{ - PictureScreenPtr ps = GetPictureScreen(pScreen); - Bool ret; - int n; - - pScreen->CloseScreen = ps->CloseScreen; - ret = (*pScreen->CloseScreen) (index, pScreen); - PictureResetFilters (pScreen); - for (n = 0; n < ps->nformats; n++) - if (ps->formats[n].type == PictTypeIndexed) - (*ps->CloseIndexed) (pScreen, &ps->formats[n]); - SetPictureScreen(pScreen, 0); - if (ps->PicturePrivateSizes) - xfree (ps->PicturePrivateSizes); - xfree (ps->formats); - xfree (ps); - return ret; -} - -void -PictureStoreColors (ColormapPtr pColormap, int ndef, xColorItem *pdef) -{ - ScreenPtr pScreen = pColormap->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - - pScreen->StoreColors = ps->StoreColors; - (*pScreen->StoreColors) (pColormap, ndef, pdef); - ps->StoreColors = pScreen->StoreColors; - pScreen->StoreColors = PictureStoreColors; - - if (pColormap->class == PseudoColor || pColormap->class == GrayScale) - { - PictFormatPtr format = ps->formats; - int nformats = ps->nformats; - - while (nformats--) - { - if (format->type == PictTypeIndexed && - format->index.pColormap == pColormap) - { - (*ps->UpdateIndexed) (pScreen, format, ndef, pdef); - break; - } - format++; - } - } -} - -static int -visualDepth (ScreenPtr pScreen, VisualPtr pVisual) -{ - int d, v; - DepthPtr pDepth; - - for (d = 0; d < pScreen->numDepths; d++) - { - pDepth = &pScreen->allowedDepths[d]; - for (v = 0; v < pDepth->numVids; v++) - if (pDepth->vids[v] == pVisual->vid) - return pDepth->depth; - } - return 0; -} - -static int -addFormat (FormatInitRec formats[256], - int nformat, - CARD32 format, - CARD8 depth) -{ - int n; - - for (n = 0; n < nformat; n++) - if (formats[n].format == format && formats[n].depth == depth) - return nformat; - formats[nformat].format = format; - formats[nformat].depth = depth; - - #ifdef DEBUG - fprintf(stderr, "addFormat: Added format [%lu] depth [%d].\n", format, depth); - #endif - - return ++nformat; -} - -#define Mask(n) ((n) == 32 ? 0xffffffff : ((1 << (n))-1)) - -PictFormatPtr -PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp) -{ - int nformats, f; - PictFormatPtr pFormats; - FormatInitRec formats[1024]; - CARD32 format; - -#ifndef NXAGENT_SERVER - - CARD8 depth; - VisualPtr pVisual; - int v; - int bpp; - int type; - int r, g, b; - int d; - DepthPtr pDepth; - -#endif - - nformats = 0; - -#ifdef NXAGENT_SERVER - - nxagentPictureCreateDefaultFormats(pScreen, formats, &nformats); - -#else - - /* formats required by protocol */ - formats[nformats].format = PICT_a1; - formats[nformats].depth = 1; - nformats++; - formats[nformats].format = PICT_a8; - formats[nformats].depth = 8; - nformats++; - formats[nformats].format = PICT_a4; - formats[nformats].depth = 4; - nformats++; - formats[nformats].format = PICT_a8r8g8b8; - formats[nformats].depth = 32; - nformats++; - formats[nformats].format = PICT_x8r8g8b8; - formats[nformats].depth = 32; - nformats++; - - /* now look through the depths and visuals adding other formats */ - for (v = 0; v < pScreen->numVisuals; v++) - { - pVisual = &pScreen->visuals[v]; - depth = visualDepth (pScreen, pVisual); - if (!depth) - continue; - bpp = BitsPerPixel (depth); - - switch (pVisual->class) { - case DirectColor: - case TrueColor: - r = Ones (pVisual->redMask); - g = Ones (pVisual->greenMask); - b = Ones (pVisual->blueMask); - type = PICT_TYPE_OTHER; - /* - * Current rendering code supports only two direct formats, - * fields must be packed together at the bottom of the pixel - * and must be either RGB or BGR - */ - if (pVisual->offsetBlue == 0 && - pVisual->offsetGreen == b && - pVisual->offsetRed == b + g) - { - type = PICT_TYPE_ARGB; - } - else if (pVisual->offsetRed == 0 && - pVisual->offsetGreen == r && - pVisual->offsetBlue == r + g) - { - type = PICT_TYPE_ABGR; - } - if (type != PICT_TYPE_OTHER) - { - format = PICT_FORMAT(bpp, type, 0, r, g, b); - nformats = addFormat (formats, nformats, format, depth); - } - break; - case StaticColor: - case PseudoColor: - format = PICT_VISFORMAT (bpp, PICT_TYPE_COLOR, v); - nformats = addFormat (formats, nformats, format, depth); - break; - case StaticGray: - case GrayScale: - format = PICT_VISFORMAT (bpp, PICT_TYPE_GRAY, v); - nformats = addFormat (formats, nformats, format, depth); - break; - } - } - - /* - * Walk supported depths and add useful Direct formats - */ - for (d = 0; d < pScreen->numDepths; d++) - { - pDepth = &pScreen->allowedDepths[d]; - bpp = BitsPerPixel (pDepth->depth); - format = 0; - - switch (bpp) { - case 16: - /* depth 12 formats */ - if (pDepth->depth >= 12) - { - nformats = addFormat (formats, nformats, - PICT_x4r4g4b4, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_x4b4g4r4, pDepth->depth); - } - - /* depth 15 formats */ - if (pDepth->depth >= 15) - { - nformats = addFormat (formats, nformats, - PICT_x1r5g5b5, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_x1b5g5r5, pDepth->depth); - } - /* depth 16 formats */ - if (pDepth->depth >= 16) - { - nformats = addFormat (formats, nformats, - PICT_a1r5g5b5, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_a1b5g5r5, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_r5g6b5, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_b5g6r5, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_a4r4g4b4, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_a4b4g4r4, pDepth->depth); - } - break; - case 24: - if (pDepth->depth >= 24) - { - nformats = addFormat (formats, nformats, - PICT_r8g8b8, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_b8g8r8, pDepth->depth); - } - break; - case 32: - if (pDepth->depth >= 24) - { - nformats = addFormat (formats, nformats, - PICT_x8r8g8b8, pDepth->depth); - nformats = addFormat (formats, nformats, - PICT_x8b8g8r8, pDepth->depth); - } - break; - } - } - -#endif - - pFormats = (PictFormatPtr) xalloc (nformats * sizeof (PictFormatRec)); - if (!pFormats) - return 0; - memset (pFormats, '\0', nformats * sizeof (PictFormatRec)); - for (f = 0; f < nformats; f++) - { - pFormats[f].id = FakeClientID (0); - pFormats[f].depth = formats[f].depth; - format = formats[f].format; - pFormats[f].format = format; - switch (PICT_FORMAT_TYPE(format)) { - case PICT_TYPE_ARGB: - pFormats[f].type = PictTypeDirect; - - pFormats[f].direct.alphaMask = Mask(PICT_FORMAT_A(format)); - if (pFormats[f].direct.alphaMask) - pFormats[f].direct.alpha = (PICT_FORMAT_R(format) + - PICT_FORMAT_G(format) + - PICT_FORMAT_B(format)); - - pFormats[f].direct.redMask = Mask(PICT_FORMAT_R(format)); - pFormats[f].direct.red = (PICT_FORMAT_G(format) + - PICT_FORMAT_B(format)); - - pFormats[f].direct.greenMask = Mask(PICT_FORMAT_G(format)); - pFormats[f].direct.green = PICT_FORMAT_B(format); - - pFormats[f].direct.blueMask = Mask(PICT_FORMAT_B(format)); - pFormats[f].direct.blue = 0; - break; - - case PICT_TYPE_ABGR: - pFormats[f].type = PictTypeDirect; - - pFormats[f].direct.alphaMask = Mask(PICT_FORMAT_A(format)); - if (pFormats[f].direct.alphaMask) - pFormats[f].direct.alpha = (PICT_FORMAT_B(format) + - PICT_FORMAT_G(format) + - PICT_FORMAT_R(format)); - - pFormats[f].direct.blueMask = Mask(PICT_FORMAT_B(format)); - pFormats[f].direct.blue = (PICT_FORMAT_G(format) + - PICT_FORMAT_R(format)); - - pFormats[f].direct.greenMask = Mask(PICT_FORMAT_G(format)); - pFormats[f].direct.green = PICT_FORMAT_R(format); - - pFormats[f].direct.redMask = Mask(PICT_FORMAT_R(format)); - pFormats[f].direct.red = 0; - break; - - case PICT_TYPE_A: - pFormats[f].type = PictTypeDirect; - - pFormats[f].direct.alpha = 0; - pFormats[f].direct.alphaMask = Mask(PICT_FORMAT_A(format)); - - /* remaining fields already set to zero */ - break; - - case PICT_TYPE_COLOR: - case PICT_TYPE_GRAY: - pFormats[f].type = PictTypeIndexed; - pFormats[f].index.vid = pScreen->visuals[PICT_FORMAT_VIS(format)].vid; - break; - } - -#ifdef NXAGENT_SERVER - if (nxagentMatchingFormats(&pFormats[f]) != NULL) - { - #ifdef DEBUG - fprintf(stderr, "PictureCreateDefaultFormats: Format with type [%d] depth [%d] rgb [%d,%d,%d] " - "mask rgb [%d,%d,%d] alpha [%d] alpha mask [%d] matches.\n", - pFormats[f].type, pFormats[f].depth, pFormats[f].direct.red, pFormats[f].direct.green, - pFormats[f].direct.blue, pFormats[f].direct.redMask, pFormats[f].direct.greenMask, - pFormats[f].direct.blueMask, pFormats[f].direct.alpha, pFormats[f].direct.alphaMask); - #endif - } - else - { - #ifdef DEBUG - fprintf(stderr, "PictureCreateDefaultFormats: Format with type [%d] depth [%d] rgb [%d,%d,%d] " - "mask rgb [%d,%d,%d] alpha [%d] alpha mask [%d] doesn't match.\n", - pFormats[f].type, pFormats[f].depth, pFormats[f].direct.red, pFormats[f].direct.green, - pFormats[f].direct.blue, pFormats[f].direct.redMask, pFormats[f].direct.greenMask, - pFormats[f].direct.blueMask, pFormats[f].direct.alpha, pFormats[f].direct.alphaMask); - #endif - } -#endif - } - *nformatp = nformats; - return pFormats; -} - -static VisualPtr -PictureFindVisual (ScreenPtr pScreen, VisualID visual) -{ - int i; - VisualPtr pVisual; - for (i = 0, pVisual = pScreen->visuals; - i < pScreen->numVisuals; - i++, pVisual++) - { - if (pVisual->vid == visual) - return pVisual; - } - return 0; -} - -Bool -PictureInitIndexedFormats (ScreenPtr pScreen) -{ - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); - PictFormatPtr format; - int nformat; - - if (!ps) - return FALSE; - format = ps->formats; - nformat = ps->nformats; - while (nformat--) - { - if (format->type == PictTypeIndexed && !format->index.pColormap) - { - if (format->index.vid == pScreen->rootVisual) - format->index.pColormap = (ColormapPtr) LookupIDByType(pScreen->defColormap, - RT_COLORMAP); - else - { - VisualPtr pVisual; - - pVisual = PictureFindVisual (pScreen, format->index.vid); - if (CreateColormap (FakeClientID (0), pScreen, - pVisual, - &format->index.pColormap, AllocNone, - 0) != Success) - { - return FALSE; - } - } - if (!(*ps->InitIndexed) (pScreen, format)) - return FALSE; - } - format++; - } - return TRUE; -} - -Bool -PictureFinishInit (void) -{ - int s; - - for (s = 0; s < screenInfo.numScreens; s++) - { - if (!PictureInitIndexedFormats (screenInfo.screens[s])) - return FALSE; - (void) AnimCurInit (screenInfo.screens[s]); - } - - return TRUE; -} - -Bool -PictureSetSubpixelOrder (ScreenPtr pScreen, int subpixel) -{ - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); - - if (!ps) - return FALSE; - ps->subpixel = subpixel; - return TRUE; - -} - -int -PictureGetSubpixelOrder (ScreenPtr pScreen) -{ - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); - - if (!ps) - return SubPixelUnknown; - return ps->subpixel; -} - -PictFormatPtr -PictureMatchVisual (ScreenPtr pScreen, int depth, VisualPtr pVisual) -{ - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); - PictFormatPtr format; - int nformat; - int type; - - if (!ps) - return 0; - format = ps->formats; - nformat = ps->nformats; - switch (pVisual->class) { - case StaticGray: - case GrayScale: - case StaticColor: - case PseudoColor: - type = PictTypeIndexed; - break; - case TrueColor: - case DirectColor: - type = PictTypeDirect; - break; - default: - return 0; - } - while (nformat--) - { - if (format->depth == depth && format->type == type) - { - if (type == PictTypeIndexed) - { - if (format->index.vid == pVisual->vid) - return format; - } - else - { - if (format->direct.redMask << format->direct.red == - pVisual->redMask && - format->direct.greenMask << format->direct.green == - pVisual->greenMask && - format->direct.blueMask << format->direct.blue == - pVisual->blueMask) - { - return format; - } - } - } - format++; - } - return 0; -} - -PictFormatPtr -PictureMatchFormat (ScreenPtr pScreen, int depth, CARD32 f) -{ - PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); - PictFormatPtr format; - int nformat; - - if (!ps) - return 0; - format = ps->formats; - nformat = ps->nformats; - while (nformat--) - { - if (format->depth == depth && format->format == (f & 0xffffff)) - return format; - format++; - } - return 0; -} - -int -PictureParseCmapPolicy (const char *name) -{ - if ( strcmp (name, "default" ) == 0) - return PictureCmapPolicyDefault; - else if ( strcmp (name, "mono" ) == 0) - return PictureCmapPolicyMono; - else if ( strcmp (name, "gray" ) == 0) - return PictureCmapPolicyGray; - else if ( strcmp (name, "color" ) == 0) - return PictureCmapPolicyColor; - else if ( strcmp (name, "all" ) == 0) - return PictureCmapPolicyAll; - else - return PictureCmapPolicyInvalid; -} - -Bool -PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats) -{ - PictureScreenPtr ps; - int n; - CARD32 type, a, r, g, b; - - if (PictureGeneration != serverGeneration) - { - PictureType = CreateNewResourceType (FreePicture); - if (!PictureType) - return FALSE; - PictFormatType = CreateNewResourceType (FreePictFormat); - if (!PictFormatType) - return FALSE; - GlyphSetType = CreateNewResourceType (FreeGlyphSet); - if (!GlyphSetType) - return FALSE; - PictureScreenPrivateIndex = AllocateScreenPrivateIndex(); - if (PictureScreenPrivateIndex < 0) - return FALSE; - PictureWindowPrivateIndex = AllocateWindowPrivateIndex(); - PictureGeneration = serverGeneration; -#ifdef XResExtension - RegisterResourceName (PictureType, "PICTURE"); - RegisterResourceName (PictFormatType, "PICTFORMAT"); - RegisterResourceName (GlyphSetType, "GLYPHSET"); -#endif - } - if (!AllocateWindowPrivate (pScreen, PictureWindowPrivateIndex, 0)) - return FALSE; - - if (!formats) - { - formats = PictureCreateDefaultFormats (pScreen, &nformats); - if (!formats) - return FALSE; - } - for (n = 0; n < nformats; n++) - { - if (!AddResource (formats[n].id, PictFormatType, (pointer) (formats+n))) - { - xfree (formats); - return FALSE; - } - if (formats[n].type == PictTypeIndexed) - { - VisualPtr pVisual = PictureFindVisual (pScreen, formats[n].index.vid); - if ((pVisual->class | DynamicClass) == PseudoColor) - type = PICT_TYPE_COLOR; - else - type = PICT_TYPE_GRAY; - a = r = g = b = 0; - } - else - { - if ((formats[n].direct.redMask| - formats[n].direct.blueMask| - formats[n].direct.greenMask) == 0) - type = PICT_TYPE_A; - else if (formats[n].direct.red > formats[n].direct.blue) - type = PICT_TYPE_ARGB; - else - type = PICT_TYPE_ABGR; - a = Ones (formats[n].direct.alphaMask); - r = Ones (formats[n].direct.redMask); - g = Ones (formats[n].direct.greenMask); - b = Ones (formats[n].direct.blueMask); - } - formats[n].format = PICT_FORMAT(0,type,a,r,g,b); - } - ps = (PictureScreenPtr) xalloc (sizeof (PictureScreenRec)); - if (!ps) - { - xfree (formats); - return FALSE; - } - SetPictureScreen(pScreen, ps); - if (!GlyphInit (pScreen)) - { - SetPictureScreen(pScreen, 0); - xfree (formats); - xfree (ps); - return FALSE; - } - - ps->totalPictureSize = sizeof (PictureRec); - ps->PicturePrivateSizes = 0; - ps->PicturePrivateLen = 0; - - ps->formats = formats; - ps->fallback = formats; - ps->nformats = nformats; - - ps->filters = 0; - ps->nfilters = 0; - ps->filterAliases = 0; - ps->nfilterAliases = 0; - - ps->subpixel = SubPixelUnknown; - - ps->CloseScreen = pScreen->CloseScreen; - ps->DestroyWindow = pScreen->DestroyWindow; - ps->StoreColors = pScreen->StoreColors; - pScreen->DestroyWindow = PictureDestroyWindow; - pScreen->CloseScreen = PictureCloseScreen; - pScreen->StoreColors = PictureStoreColors; - - if (!PictureSetDefaultFilters (pScreen)) - { - PictureResetFilters (pScreen); - SetPictureScreen(pScreen, 0); - xfree (formats); - xfree (ps); - return FALSE; - } - - return TRUE; -} - -void -SetPictureToDefaults (PicturePtr pPicture) -{ - pPicture->refcnt = 1; - pPicture->repeat = 0; - pPicture->graphicsExposures = FALSE; - pPicture->subWindowMode = ClipByChildren; - pPicture->polyEdge = PolyEdgeSharp; - pPicture->polyMode = PolyModePrecise; - pPicture->freeCompClip = FALSE; - pPicture->clientClipType = CT_NONE; - pPicture->componentAlpha = FALSE; - pPicture->repeatType = RepeatNone; - - pPicture->alphaMap = 0; - pPicture->alphaOrigin.x = 0; - pPicture->alphaOrigin.y = 0; - - pPicture->clipOrigin.x = 0; - pPicture->clipOrigin.y = 0; - pPicture->clientClip = 0; - - pPicture->transform = 0; - - pPicture->dither = None; - pPicture->filter = PictureGetFilterId (FilterNearest, -1, TRUE); - pPicture->filter_params = 0; - pPicture->filter_nparams = 0; - - pPicture->serialNumber = GC_CHANGE_SERIAL_BIT; - pPicture->stateChanges = (1 << (CPLastBit+1)) - 1; - pPicture->pSourcePict = 0; -} - -PicturePtr -AllocatePicture (ScreenPtr pScreen) -{ - PictureScreenPtr ps = GetPictureScreen(pScreen); - PicturePtr pPicture; - char *ptr; - DevUnion *ppriv; - unsigned int *sizes; - unsigned int size; - int i; - - pPicture = (PicturePtr) xalloc (ps->totalPictureSize); - if (!pPicture) - return 0; - ppriv = (DevUnion *)(pPicture + 1); - pPicture->devPrivates = ppriv; - sizes = ps->PicturePrivateSizes; - ptr = (char *)(ppriv + ps->PicturePrivateLen); - for (i = ps->PicturePrivateLen; --i >= 0; ppriv++, sizes++) - { - if ( (size = *sizes) ) - { - ppriv->ptr = (pointer)ptr; - ptr += size; - } - else - ppriv->ptr = (pointer)NULL; - } - - nxagentPicturePriv(pPicture) -> picture = 0; - - return pPicture; -} - -/* - * Let picture always point to the virtual pixmap. - * For sure this is not the best way to deal with - * the virtual frame-buffer. - */ - -#define NXAGENT_PICTURE_ALWAYS_POINTS_TO_VIRTUAL - -PicturePtr -CreatePicture (Picture pid, - DrawablePtr pDrawable, - PictFormatPtr pFormat, - Mask vmask, - XID *vlist, - ClientPtr client, - int *error) -{ - PicturePtr pPicture; - PictureScreenPtr ps = GetPictureScreen(pDrawable->pScreen); - - pPicture = AllocatePicture (pDrawable->pScreen); - if (!pPicture) - { - *error = BadAlloc; - return 0; - } - - pPicture->id = pid; - pPicture->pDrawable = pDrawable; - pPicture->pFormat = pFormat; - pPicture->format = pFormat->format | (pDrawable->bitsPerPixel << 24); - if (pDrawable->type == DRAWABLE_PIXMAP) - { - #ifdef NXAGENT_PICTURE_ALWAYS_POINTS_TO_VIRTUAL - - pPicture->pDrawable = nxagentVirtualDrawable(pDrawable); - - #endif - - ++((PixmapPtr)pDrawable)->refcnt; - pPicture->pNext = 0; - } - else - { - pPicture->pNext = GetPictureWindow(((WindowPtr) pDrawable)); - SetPictureWindow(((WindowPtr) pDrawable), pPicture); - } - - SetPictureToDefaults (pPicture); - - if (vmask) - *error = ChangePicture (pPicture, vmask, vlist, 0, client); - else - *error = Success; - if (*error == Success) - *error = (*ps->CreatePicture) (pPicture); - if (*error != Success) - { - FreePicture (pPicture, (XID) 0); - pPicture = 0; - } - return pPicture; -} - -static CARD32 xRenderColorToCard32(xRenderColor c) -{ - return - (c.alpha >> 8 << 24) | - (c.red >> 8 << 16) | - (c.green & 0xff00) | - (c.blue >> 8); -} - -static unsigned int premultiply(unsigned int x) -{ - unsigned int a = x >> 24; - unsigned int t = (x & 0xff00ff) * a; - t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8; - t &= 0xff00ff; - - x = ((x >> 8) & 0xff) * a; - x = (x + ((x >> 8) & 0xff) + 0x80); - x &= 0xff00; - x |= t | (a << 24); - return x; -} - -static unsigned int INTERPOLATE_PIXEL_256(unsigned int x, unsigned int a, - unsigned int y, unsigned int b) -{ - CARD32 t = (x & 0xff00ff) * a + (y & 0xff00ff) * b; - t >>= 8; - t &= 0xff00ff; - - x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b; - x &= 0xff00ff00; - x |= t; - return x; -} - -static void initGradientColorTable(SourcePictPtr pGradient, int *error) -{ - int begin_pos, end_pos; - xFixed incr, dpos; - int pos, current_stop; - PictGradientStopPtr stops = pGradient->linear.stops; - int nstops = pGradient->linear.nstops; - - /* The position where the gradient begins and ends */ - begin_pos = (stops[0].x * PICT_GRADIENT_STOPTABLE_SIZE) >> 16; - end_pos = (stops[nstops - 1].x * PICT_GRADIENT_STOPTABLE_SIZE) >> 16; - - pos = 0; /* The position in the color table. */ - - /* Up to first point */ - while (pos <= begin_pos) { - pGradient->linear.colorTable[pos] = xRenderColorToCard32(stops[0].color); - ++pos; - } - - incr = (1<<16)/ PICT_GRADIENT_STOPTABLE_SIZE; /* the double increment. */ - dpos = incr * pos; /* The position in terms of 0-1. */ - - current_stop = 0; /* We always interpolate between current and current + 1. */ - - /* Gradient area */ - while (pos < end_pos) { - unsigned int current_color = xRenderColorToCard32(stops[current_stop].color); - unsigned int next_color = xRenderColorToCard32(stops[current_stop + 1].color); - - int dist = (int)(256*(dpos - stops[current_stop].x) - / (stops[current_stop+1].x - stops[current_stop].x)); - int idist = 256 - dist; - - pGradient->linear.colorTable[pos] = premultiply(INTERPOLATE_PIXEL_256(current_color, idist, next_color, dist)); - - ++pos; - dpos += incr; - - if (dpos > stops[current_stop + 1].x) - ++current_stop; - } - - /* After last point */ - while (pos < PICT_GRADIENT_STOPTABLE_SIZE) { - pGradient->linear.colorTable[pos] = xRenderColorToCard32(stops[nstops - 1].color); - ++pos; - } -} - -static void initGradient(SourcePictPtr pGradient, int stopCount, - xFixed *stopPoints, xRenderColor *stopColors, int *error) -{ - int i; - xFixed dpos; - - if (stopCount <= 0) { - *error = BadValue; - return; - } - - dpos = -1; - for (i = 0; i < stopCount; ++i) { - if (stopPoints[i] <= dpos || stopPoints[i] > (1<<16)) { - *error = BadValue; - return; - } - dpos = stopPoints[i]; - } - - pGradient->linear.stops = xalloc(stopCount*sizeof(PictGradientStop)); - if (!pGradient->linear.stops) { - *error = BadAlloc; - return; - } - - pGradient->linear.nstops = stopCount; - - for (i = 0; i < stopCount; ++i) { - pGradient->linear.stops[i].x = stopPoints[i]; - pGradient->linear.stops[i].color = stopColors[i]; - } - initGradientColorTable(pGradient, error); -} - -static PicturePtr createSourcePicture(void) -{ - PicturePtr pPicture; - - extern int nxagentPicturePrivateIndex; - - unsigned int totalPictureSize; - - DevUnion *ppriv; - - char *privPictureRecAddr; - - int i; - - /* - * Compute size of entire PictureRect, plus privates. - */ - - totalPictureSize = sizeof(PictureRec) + - picturePrivateCount * sizeof(DevUnion) + - sizeof(nxagentPrivPictureRec); - - pPicture = (PicturePtr) xalloc(totalPictureSize); - - if (pPicture != NULL) - { - ppriv = (DevUnion *) (pPicture + 1); - - for (i = 0; i < picturePrivateCount; ++i) - { - /* - * Other privates are inaccessible. - */ - - ppriv[i].ptr = NULL; - } - - privPictureRecAddr = (char *) &ppriv[picturePrivateCount]; - - ppriv[nxagentPicturePrivateIndex].ptr = (pointer) privPictureRecAddr; - - pPicture -> devPrivates = ppriv; - - nxagentPicturePriv(pPicture) -> picture = 0; - } - - pPicture->pDrawable = 0; - pPicture->pFormat = 0; - pPicture->pNext = 0; - - SetPictureToDefaults(pPicture); - return pPicture; -} - -PicturePtr -CreateSolidPicture (Picture pid, xRenderColor *color, int *error) -{ - PicturePtr pPicture; - pPicture = createSourcePicture(); - if (!pPicture) { - *error = BadAlloc; - return 0; - } - - pPicture->id = pid; - pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictSolidFill)); - if (!pPicture->pSourcePict) { - *error = BadAlloc; - xfree(pPicture); - return 0; - } - pPicture->pSourcePict->type = SourcePictTypeSolidFill; - pPicture->pSourcePict->solidFill.color = xRenderColorToCard32(*color); - pPicture->pSourcePict->solidFill.fullColor.alpha=color->alpha; - pPicture->pSourcePict->solidFill.fullColor.red=color->red; - pPicture->pSourcePict->solidFill.fullColor.green=color->green; - pPicture->pSourcePict->solidFill.fullColor.blue=color->blue; - return pPicture; -} - -PicturePtr -CreateLinearGradientPicture (Picture pid, xPointFixed *p1, xPointFixed *p2, - int nStops, xFixed *stops, xRenderColor *colors, int *error) -{ - PicturePtr pPicture; - - if (nStops < 2) { - *error = BadValue; - return 0; - } - - pPicture = createSourcePicture(); - if (!pPicture) { - *error = BadAlloc; - return 0; - } - if (p1->x == p2->x && p1->y == p2->y) { - *error = BadValue; - return 0; - } - - pPicture->id = pid; - pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictLinearGradient)); - if (!pPicture->pSourcePict) { - *error = BadAlloc; - xfree(pPicture); - return 0; - } - - pPicture->pSourcePict->linear.type = SourcePictTypeLinear; - pPicture->pSourcePict->linear.p1 = *p1; - pPicture->pSourcePict->linear.p2 = *p2; - - initGradient(pPicture->pSourcePict, nStops, stops, colors, error); - if (*error) { - xfree(pPicture); - return 0; - } - return pPicture; -} - -#define FixedToDouble(x) ((x)/65536.) - -PicturePtr -CreateRadialGradientPicture (Picture pid, xPointFixed *inner, xPointFixed *outer, - xFixed innerRadius, xFixed outerRadius, - int nStops, xFixed *stops, xRenderColor *colors, int *error) -{ - PicturePtr pPicture; - PictRadialGradient *radial; - - if (nStops < 2) { - *error = BadValue; - return 0; - } - - pPicture = createSourcePicture(); - if (!pPicture) { - *error = BadAlloc; - return 0; - } - { - double dx = (double)(inner->x - outer->x); - double dy = (double)(inner->y - outer->y); - if (sqrt(dx*dx + dy*dy) + (double)(innerRadius) > (double)(outerRadius)) { - *error = BadValue; - return 0; - } - } - - pPicture->id = pid; - pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictRadialGradient)); - if (!pPicture->pSourcePict) { - *error = BadAlloc; - xfree(pPicture); - return 0; - } - radial = &pPicture->pSourcePict->radial; - - radial->type = SourcePictTypeRadial; - { - double x = (double)innerRadius / (double)outerRadius; - radial->dx = (outer->x - inner->x); - radial->dy = (outer->y - inner->y); - radial->fx = (inner->x) - x*radial->dx; - radial->fy = (inner->y) - x*radial->dy; - radial->m = 1./(1+x); - radial->b = -x*radial->m; - radial->dx /= 65536.; - radial->dy /= 65536.; - radial->fx /= 65536.; - radial->fy /= 65536.; - x = outerRadius/65536.; - radial->a = x*x - radial->dx*radial->dx - radial->dy*radial->dy; - } - - initGradient(pPicture->pSourcePict, nStops, stops, colors, error); - if (*error) { - xfree(pPicture); - return 0; - } - return pPicture; -} - -PicturePtr -CreateConicalGradientPicture (Picture pid, xPointFixed *center, xFixed angle, - int nStops, xFixed *stops, xRenderColor *colors, int *error) -{ - PicturePtr pPicture; - - if (nStops < 2) { - *error = BadValue; - return 0; - } - - pPicture = createSourcePicture(); - if (!pPicture) { - *error = BadAlloc; - return 0; - } - - pPicture->id = pid; - pPicture->pSourcePict = (SourcePictPtr) xalloc(sizeof(PictConicalGradient)); - if (!pPicture->pSourcePict) { - *error = BadAlloc; - xfree(pPicture); - return 0; - } - - pPicture->pSourcePict->conical.type = SourcePictTypeConical; - pPicture->pSourcePict->conical.center = *center; - pPicture->pSourcePict->conical.angle = angle; - - initGradient(pPicture->pSourcePict, nStops, stops, colors, error); - if (*error) { - xfree(pPicture); - return 0; - } - return pPicture; -} - -#define NEXT_VAL(_type) (vlist ? (_type) *vlist++ : (_type) ulist++->val) - -#define NEXT_PTR(_type) ((_type) ulist++->ptr) - -int -ChangePicture (PicturePtr pPicture, - Mask vmask, - XID *vlist, - DevUnion *ulist, - ClientPtr client) -{ - ScreenPtr pScreen = pPicture->pDrawable ? pPicture->pDrawable->pScreen : 0; - PictureScreenPtr ps = pScreen ? GetPictureScreen(pScreen) : 0; - BITS32 index2; - int error = 0; - BITS32 maskQ; - - pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; - maskQ = vmask; - while (vmask && !error) - { - index2 = (BITS32) lowbit (vmask); - vmask &= ~index2; - pPicture->stateChanges |= index2; - switch (index2) - { - case CPRepeat: - { - unsigned int newr; - newr = NEXT_VAL(unsigned int); - if (newr <= RepeatReflect) - { - pPicture->repeat = (newr != RepeatNone); - pPicture->repeatType = newr; - } - else - { - client->errorValue = newr; - error = BadValue; - } - } - break; - case CPAlphaMap: - { - PicturePtr pAlpha; - - if (vlist) - { - Picture pid = NEXT_VAL(Picture); - - if (pid == None) - pAlpha = 0; - else - { - pAlpha = (PicturePtr) SecurityLookupIDByType(client, - pid, - PictureType, - SecurityWriteAccess|SecurityReadAccess); - if (!pAlpha) - { - client->errorValue = pid; - error = BadPixmap; - break; - } - if (pAlpha->pDrawable->type != DRAWABLE_PIXMAP) - { - client->errorValue = pid; - error = BadMatch; - break; - } - } - } - else - pAlpha = NEXT_PTR(PicturePtr); - if (!error) - { - if (pAlpha && pAlpha->pDrawable->type == DRAWABLE_PIXMAP) - pAlpha->refcnt++; - if (pPicture->alphaMap) - FreePicture ((pointer) pPicture->alphaMap, (XID) 0); - pPicture->alphaMap = pAlpha; - } - } - break; - case CPAlphaXOrigin: - pPicture->alphaOrigin.x = NEXT_VAL(INT16); - break; - case CPAlphaYOrigin: - pPicture->alphaOrigin.y = NEXT_VAL(INT16); - break; - case CPClipXOrigin: - pPicture->clipOrigin.x = NEXT_VAL(INT16); - break; - case CPClipYOrigin: - pPicture->clipOrigin.y = NEXT_VAL(INT16); - break; - case CPClipMask: - { - Pixmap pid; - PixmapPtr pPixmap; - int clipType; - if (!pScreen) - return BadDrawable; - - if (vlist) - { - pid = NEXT_VAL(Pixmap); - if (pid == None) - { - clipType = CT_NONE; - pPixmap = NullPixmap; - } - else - { - clipType = CT_PIXMAP; - pPixmap = (PixmapPtr)SecurityLookupIDByType(client, - pid, - RT_PIXMAP, - SecurityReadAccess); - if (!pPixmap) - { - client->errorValue = pid; - error = BadPixmap; - break; - } - } - } - else - { - pPixmap = NEXT_PTR(PixmapPtr); - if (pPixmap) - clipType = CT_PIXMAP; - else - clipType = CT_NONE; - } - - if (pPixmap) - { - if ((pPixmap->drawable.depth != 1) || - (pPixmap->drawable.pScreen != pScreen)) - { - error = BadMatch; - break; - } - else - { - clipType = CT_PIXMAP; - pPixmap->refcnt++; - } - } - - #ifdef DEBUG - fprintf(stderr, "ChangePicture: Going to call ChangePictureClip with clipType [%d] pPixmap [%p].\n", - clipType, (void *) pPixmap); - #endif - - error = (*ps->ChangePictureClip)(pPicture, clipType, - (pointer)pPixmap, 0); - break; - } - case CPGraphicsExposure: - { - unsigned int newe; - newe = NEXT_VAL(unsigned int); - if (newe <= xTrue) - pPicture->graphicsExposures = newe; - else - { - client->errorValue = newe; - error = BadValue; - } - } - break; - case CPSubwindowMode: - { - unsigned int news; - news = NEXT_VAL(unsigned int); - if (news == ClipByChildren || news == IncludeInferiors) - pPicture->subWindowMode = news; - else - { - client->errorValue = news; - error = BadValue; - } - } - break; - case CPPolyEdge: - { - unsigned int newe; - newe = NEXT_VAL(unsigned int); - if (newe == PolyEdgeSharp || newe == PolyEdgeSmooth) - pPicture->polyEdge = newe; - else - { - client->errorValue = newe; - error = BadValue; - } - } - break; - case CPPolyMode: - { - unsigned int newm; - newm = NEXT_VAL(unsigned int); - if (newm == PolyModePrecise || newm == PolyModeImprecise) - pPicture->polyMode = newm; - else - { - client->errorValue = newm; - error = BadValue; - } - } - break; - case CPDither: - pPicture->dither = NEXT_VAL(Atom); - break; - case CPComponentAlpha: - { - unsigned int newca; - - newca = NEXT_VAL (unsigned int); - if (newca <= xTrue) - pPicture->componentAlpha = newca; - else - { - client->errorValue = newca; - error = BadValue; - } - } - break; - default: - client->errorValue = maskQ; - error = BadValue; - break; - } - } - if (ps) - (*ps->ChangePicture) (pPicture, maskQ); - return error; -} - -int -SetPictureClipRects (PicturePtr pPicture, - int xOrigin, - int yOrigin, - int nRect, - xRectangle *rects) -{ - ScreenPtr pScreen = pPicture->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - RegionPtr clientClip; - int result; - - clientClip = RECTS_TO_REGION(pScreen, - nRect, rects, CT_UNSORTED); - if (!clientClip) - return BadAlloc; - result =(*ps->ChangePictureClip) (pPicture, CT_REGION, - (pointer) clientClip, 0); - if (result == Success) - { - pPicture->clipOrigin.x = xOrigin; - pPicture->clipOrigin.y = yOrigin; - pPicture->stateChanges |= CPClipXOrigin|CPClipYOrigin|CPClipMask; - pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; - } - return result; -} - -int -SetPictureClipRegion (PicturePtr pPicture, - int xOrigin, - int yOrigin, - RegionPtr pRegion) -{ - ScreenPtr pScreen = pPicture->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - RegionPtr clientClip; - int result; - int type; - - if (pRegion) - { - type = CT_REGION; - clientClip = REGION_CREATE (pScreen, - REGION_EXTENTS(pScreen, pRegion), - REGION_NUM_RECTS(pRegion)); - if (!clientClip) - return BadAlloc; - if (!REGION_COPY (pSCreen, clientClip, pRegion)) - { - REGION_DESTROY (pScreen, clientClip); - return BadAlloc; - } - } - else - { - type = CT_NONE; - clientClip = 0; - } - - result =(*ps->ChangePictureClip) (pPicture, type, - (pointer) clientClip, 0); - if (result == Success) - { - pPicture->clipOrigin.x = xOrigin; - pPicture->clipOrigin.y = yOrigin; - pPicture->stateChanges |= CPClipXOrigin|CPClipYOrigin|CPClipMask; - pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; - } - return result; -} - - -int -SetPictureTransform (PicturePtr pPicture, - PictTransform *transform) -{ - static const PictTransform identity = { { - { xFixed1, 0x00000, 0x00000 }, - { 0x00000, xFixed1, 0x00000 }, - { 0x00000, 0x00000, xFixed1 }, - } }; - - if (transform && memcmp (transform, &identity, sizeof (PictTransform)) == 0) - transform = 0; - - if (transform) - { - if (!pPicture->transform) - { - pPicture->transform = (PictTransform *) xalloc (sizeof (PictTransform)); - if (!pPicture->transform) - return BadAlloc; - } - *pPicture->transform = *transform; - } - else - { - if (pPicture->transform) - { - xfree (pPicture->transform); - pPicture->transform = 0; - } - } - pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; - - return Success; -} - -void -CopyPicture (PicturePtr pSrc, - Mask mask, - PicturePtr pDst) -{ - PictureScreenPtr ps = GetPictureScreen(pSrc->pDrawable->pScreen); - Mask origMask = mask; - - pDst->serialNumber |= GC_CHANGE_SERIAL_BIT; - pDst->stateChanges |= mask; - - while (mask) { - Mask bit = lowbit(mask); - - switch (bit) - { - case CPRepeat: - pDst->repeat = pSrc->repeat; - pDst->repeatType = pSrc->repeatType; - break; - case CPAlphaMap: - if (pSrc->alphaMap && pSrc->alphaMap->pDrawable->type == DRAWABLE_PIXMAP) - pSrc->alphaMap->refcnt++; - if (pDst->alphaMap) - FreePicture ((pointer) pDst->alphaMap, (XID) 0); - pDst->alphaMap = pSrc->alphaMap; - break; - case CPAlphaXOrigin: - pDst->alphaOrigin.x = pSrc->alphaOrigin.x; - break; - case CPAlphaYOrigin: - pDst->alphaOrigin.y = pSrc->alphaOrigin.y; - break; - case CPClipXOrigin: - pDst->clipOrigin.x = pSrc->clipOrigin.x; - break; - case CPClipYOrigin: - pDst->clipOrigin.y = pSrc->clipOrigin.y; - break; - case CPClipMask: - switch (pSrc->clientClipType) { - case CT_NONE: - (*ps->ChangePictureClip)(pDst, CT_NONE, NULL, 0); - break; - case CT_REGION: - if (!pSrc->clientClip) { - (*ps->ChangePictureClip)(pDst, CT_NONE, NULL, 0); - } else { - RegionPtr clientClip; - RegionPtr srcClientClip = (RegionPtr)pSrc->clientClip; - - clientClip = REGION_CREATE(pSrc->pDrawable->pScreen, - REGION_EXTENTS(pSrc->pDrawable->pScreen, srcClientClip), - REGION_NUM_RECTS(srcClientClip)); - (*ps->ChangePictureClip)(pDst, CT_REGION, clientClip, 0); - } - break; - default: - /* XXX: CT_PIXMAP unimplemented */ - break; - } - break; - case CPGraphicsExposure: - pDst->graphicsExposures = pSrc->graphicsExposures; - break; - case CPPolyEdge: - pDst->polyEdge = pSrc->polyEdge; - break; - case CPPolyMode: - pDst->polyMode = pSrc->polyMode; - break; - case CPDither: - pDst->dither = pSrc->dither; - break; - case CPComponentAlpha: - pDst->componentAlpha = pSrc->componentAlpha; - break; - } - mask &= ~bit; - } - - (*ps->ChangePicture)(pDst, origMask); -} - -static void -ValidateOnePicture (PicturePtr pPicture) -{ - if (pPicture->pDrawable && pPicture->serialNumber != pPicture->pDrawable->serialNumber) - { - PictureScreenPtr ps = GetPictureScreen(pPicture->pDrawable->pScreen); - - (*ps->ValidatePicture) (pPicture, pPicture->stateChanges); - pPicture->stateChanges = 0; - pPicture->serialNumber = pPicture->pDrawable->serialNumber; - } -} - -void -ValidatePicture(PicturePtr pPicture) -{ - ValidateOnePicture (pPicture); - if (pPicture->alphaMap) - ValidateOnePicture (pPicture->alphaMap); -} - -int -FreePicture (pointer value, - XID pid) -{ - PicturePtr pPicture = (PicturePtr) value; - - if (--pPicture->refcnt == 0) - { -#ifdef NXAGENT_SERVER - nxagentDestroyPicture(pPicture); -#endif - - if (pPicture->transform) - xfree (pPicture->transform); - if (!pPicture->pDrawable) { - if (pPicture->pSourcePict) { - if (pPicture->pSourcePict->type != SourcePictTypeSolidFill) - xfree(pPicture->pSourcePict->linear.stops); - xfree(pPicture->pSourcePict); - } - } else { - ScreenPtr pScreen = pPicture->pDrawable->pScreen; - PictureScreenPtr ps = GetPictureScreen(pScreen); - - if (pPicture->alphaMap) - FreePicture ((pointer) pPicture->alphaMap, (XID) 0); - (*ps->DestroyPicture) (pPicture); - (*ps->DestroyPictureClip) (pPicture); - if (pPicture->pDrawable->type == DRAWABLE_WINDOW) - { - WindowPtr pWindow = (WindowPtr) pPicture->pDrawable; - PicturePtr *pPrev; - - for (pPrev = (PicturePtr *) &((pWindow)->devPrivates[PictureWindowPrivateIndex].ptr); - *pPrev; - pPrev = &(*pPrev)->pNext) - { - if (*pPrev == pPicture) - { - *pPrev = pPicture->pNext; - break; - } - } - } - else if (pPicture->pDrawable->type == DRAWABLE_PIXMAP) - { - (*pScreen->DestroyPixmap) ((PixmapPtr)pPicture->pDrawable); - } - } - xfree (pPicture); - } - return Success; -} - -int -FreePictFormat (pointer pPictFormat, - XID pid) -{ - return Success; -} - -void -CompositePicture (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height) -{ - PictureScreenPtr ps = GetPictureScreen(pDst->pDrawable->pScreen); - - ValidatePicture (pSrc); - if (pMask) - ValidatePicture (pMask); - ValidatePicture (pDst); - (*ps->Composite) (op, - pSrc, - pMask, - pDst, - xSrc, - ySrc, - xMask, - yMask, - xDst, - yDst, - width, - height); -} - -void -CompositeGlyphs (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int nlist, - GlyphListPtr lists, - GlyphPtr *glyphs) -{ - PictureScreenPtr ps = GetPictureScreen(pDst->pDrawable->pScreen); - - ValidatePicture (pSrc); - ValidatePicture (pDst); - - #ifdef TEST - fprintf(stderr, "CompositeGlyphs: Going to composite glyphs with " - "source at [%p] and destination at [%p].\n", - (void *) pSrc, (void *) pDst); - #endif - - (*ps->Glyphs) (op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, lists, glyphs); -} - -void -CompositeRects (CARD8 op, - PicturePtr pDst, - xRenderColor *color, - int nRect, - xRectangle *rects) -{ - PictureScreenPtr ps = GetPictureScreen(pDst->pDrawable->pScreen); - - ValidatePicture (pDst); - (*ps->CompositeRects) (op, pDst, color, nRect, rects); -} - -void -CompositeTrapezoids (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int ntrap, - xTrapezoid *traps) -{ - PictureScreenPtr ps = GetPictureScreen(pDst->pDrawable->pScreen); - - ValidatePicture (pSrc); - ValidatePicture (pDst); - (*ps->Trapezoids) (op, pSrc, pDst, maskFormat, xSrc, ySrc, ntrap, traps); -} - -void -CompositeTriangles (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int ntriangles, - xTriangle *triangles) -{ - PictureScreenPtr ps = GetPictureScreen(pDst->pDrawable->pScreen); - - ValidatePicture (pSrc); - ValidatePicture (pDst); - (*ps->Triangles) (op, pSrc, pDst, maskFormat, xSrc, ySrc, ntriangles, triangles); -} - -void -CompositeTriStrip (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int npoints, - xPointFixed *points) -{ - PictureScreenPtr ps = GetPictureScreen(pDst->pDrawable->pScreen); - - ValidatePicture (pSrc); - ValidatePicture (pDst); - (*ps->TriStrip) (op, pSrc, pDst, maskFormat, xSrc, ySrc, npoints, points); -} - -void -CompositeTriFan (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int npoints, - xPointFixed *points) -{ - PictureScreenPtr ps = GetPictureScreen(pDst->pDrawable->pScreen); - - ValidatePicture (pSrc); - ValidatePicture (pDst); - (*ps->TriFan) (op, pSrc, pDst, maskFormat, xSrc, ySrc, npoints, points); -} - -void -AddTraps (PicturePtr pPicture, - INT16 xOff, - INT16 yOff, - int ntrap, - xTrap *traps) -{ - PictureScreenPtr ps = GetPictureScreen(pPicture->pDrawable->pScreen); - - ValidatePicture (pPicture); - (*ps->AddTraps) (pPicture, xOff, yOff, ntrap, traps); -} - -#define MAX_FIXED_48_16 ((xFixed_48_16) 0x7fffffff) -#define MIN_FIXED_48_16 (-((xFixed_48_16) 1 << 31)) - -Bool -PictureTransformPoint3d (PictTransformPtr transform, - PictVectorPtr vector) -{ - PictVector result; - int i, j; - xFixed_32_32 partial; - xFixed_48_16 v; - - for (j = 0; j < 3; j++) - { - v = 0; - for (i = 0; i < 3; i++) - { - partial = ((xFixed_48_16) transform->matrix[j][i] * - (xFixed_48_16) vector->vector[i]); - v += partial >> 16; - } - if (v > MAX_FIXED_48_16 || v < MIN_FIXED_48_16) - return FALSE; - result.vector[j] = (xFixed) v; - } - if (!result.vector[2]) - return FALSE; - *vector = result; - return TRUE; -} - - -Bool -PictureTransformPoint (PictTransformPtr transform, - PictVectorPtr vector) -{ - PictVector result; - int i, j; - xFixed_32_32 partial; - xFixed_48_16 v; - - for (j = 0; j < 3; j++) - { - v = 0; - for (i = 0; i < 3; i++) - { - partial = ((xFixed_48_16) transform->matrix[j][i] * - (xFixed_48_16) vector->vector[i]); - v += partial >> 16; - } - if (v > MAX_FIXED_48_16 || v < MIN_FIXED_48_16) - return FALSE; - result.vector[j] = (xFixed) v; - } - if (!result.vector[2]) - return FALSE; - for (j = 0; j < 2; j++) - { - partial = (xFixed_48_16) result.vector[j] << 16; - v = partial / result.vector[2]; - if (v > MAX_FIXED_48_16 || v < MIN_FIXED_48_16) - return FALSE; - vector->vector[j] = (xFixed) v; - } - vector->vector[2] = xFixed1; - return TRUE; -} - -#ifndef True -# define True 1 -#endif - -#ifndef False -# define False 0 -#endif - -void nxagentReconnectPictFormat(void*, XID, void*); - -Bool nxagentReconnectAllPictFormat(void *p) -{ - PictFormatPtr formats_old, formats; - int nformats, nformats_old; - VisualPtr pVisual; - Bool success = True; - Bool matched; - int i, n; - CARD32 type, a, r, g, b; - - #if defined(NXAGENT_RECONNECT_DEBUG) || defined(NXAGENT_RECONNECT_PICTFORMAT_DEBUG) - fprintf(stderr, "nxagentReconnectAllPictFormat\n"); - #endif - - formats_old = GetPictureScreen(nxagentDefaultScreen) -> formats; - nformats_old = GetPictureScreen(nxagentDefaultScreen) -> nformats; - - /* - * TODO: We could copy PictureCreateDefaultFormats, - * in order not to waste ID with FakeClientID(). - */ - formats = PictureCreateDefaultFormats (nxagentDefaultScreen, &nformats); - - if (!formats) - return False; - - for (n = 0; n < nformats; n++) - { - if (formats[n].type == PictTypeIndexed) - { - pVisual = nxagentVisualFromID(nxagentDefaultScreen, formats[n].index.vid); - - if ((pVisual->class | DynamicClass) == PseudoColor) - type = PICT_TYPE_COLOR; - else - type = PICT_TYPE_GRAY; - a = r = g = b = 0; - } - else - { - if ((formats[n].direct.redMask| - formats[n].direct.blueMask| - formats[n].direct.greenMask) == 0) - type = PICT_TYPE_A; - else if (formats[n].direct.red > formats[n].direct.blue) - type = PICT_TYPE_ARGB; - else - type = PICT_TYPE_ABGR; - a = Ones (formats[n].direct.alphaMask); - r = Ones (formats[n].direct.redMask); - g = Ones (formats[n].direct.greenMask); - b = Ones (formats[n].direct.blueMask); - } - formats[n].format = PICT_FORMAT(0,type,a,r,g,b); - } - - for (n = 0; n < nformats_old; n++) - { - for (i = 0, matched = False; (!matched) && (i < nformats); i++) - { - if (formats_old[n].format == formats[i].format && - formats_old[n].type == formats[i].type && - formats_old[n].direct.red == formats[i].direct.red && - formats_old[n].direct.green == formats[i].direct.green && - formats_old[n].direct.blue == formats[i].direct.blue && - formats_old[n].direct.redMask == formats[i].direct.redMask && - formats_old[n].direct.greenMask == formats[i].direct.greenMask && - formats_old[n].direct.blueMask == formats[i].direct.blueMask && - formats_old[n].direct.alpha == formats[i].direct.alpha && - formats_old[n].direct.alphaMask == formats[i].direct.alphaMask) - { - /* - * Regard depth 16 and 15 as were the same, if all other values match. - */ - - if ((formats_old[n].depth == formats[i].depth) || - ((formats_old[n].depth == 15 || formats_old[n].depth == 16) && - (formats[i].depth == 15 || formats[i].depth == 16))) - { - matched = True; - } - } - } - - if (!matched) - { - return False; - } - } - - xfree(formats); - - /* TODO: Perhaps do i have to do PictureFinishInit ?. */ - /* TODO: We have to check for new Render protocol version. */ - - for (i = 0; (i < MAXCLIENTS) && (success); i++) - { - if (clients[i]) - { - FindClientResourcesByType(clients[i], PictFormatType, nxagentReconnectPictFormat, &success); - } - } - - return success; -} - -/* - * It seem we don't have nothing - * to do for reconnect PictureFormat. - */ - -void nxagentReconnectPictFormat(void *p0, XID x1, void *p2) -{ - PictFormatPtr pFormat; - Bool *pBool; - - pFormat = (PictFormatPtr)p0; - pBool = (Bool*)p2; - - #if defined(NXAGENT_RECONNECT_DEBUG) || defined(NXAGENT_RECONNECT_PICTFORMAT_DEBUG) - fprintf(stderr, "nxagentReconnectPictFormat.\n"); - #endif -} - -/* - * The set of picture formats may change considerably - * between different X servers. This poses a problem - * while migrating NX sessions, because a requisite to - * successfully reconnect the session is that all pic- - * ture formats have to be available on the new X server. - * To reduce such problems, we use a limited set of - * pictures available on the most X servers. - */ - -void nxagentPictureCreateDefaultFormats(ScreenPtr pScreen, FormatInitRec *formats, int *nformats) -{ - DepthPtr pDepth; - VisualPtr pVisual; - - CARD32 format; - CARD8 depth; - - int r, g, b; - int bpp; - int d; - int v; - - - formats[*nformats].format = PICT_a1; - formats[*nformats].depth = 1; - *nformats += 1; - formats[*nformats].format = PICT_a4; - formats[*nformats].depth = 4; - *nformats += 1; - formats[*nformats].format = PICT_a8; - formats[*nformats].depth = 8; - *nformats += 1; - formats[*nformats].format = PICT_a8r8g8b8; - formats[*nformats].depth = 32; - *nformats += 1; - - /* - * This format should be required by the - * protocol, but it's not used by Xgl. - * - * formats[*nformats].format = PICT_x8r8g8b8; - * formats[*nformats].depth = 32; - * *nformats += 1; - */ - - /* now look through the depths and visuals adding other formats */ - for (v = 0; v < pScreen->numVisuals; v++) - { - pVisual = &pScreen->visuals[v]; - depth = visualDepth (pScreen, pVisual); - if (!depth) - continue; - - bpp = BitsPerPixel (depth); - - switch (pVisual->class) - { - case DirectColor: - case TrueColor: - r = Ones (pVisual->redMask); - g = Ones (pVisual->greenMask); - b = Ones (pVisual->blueMask); - - if (pVisual->offsetBlue == 0 && - pVisual->offsetGreen == b && - pVisual->offsetRed == b + g) - { - format = PICT_FORMAT(bpp, PICT_TYPE_ARGB, 0, r, g, b); - *nformats = addFormat (formats, *nformats, format, depth); - } - break; - case StaticColor: - case PseudoColor: - case StaticGray: - case GrayScale: - break; - } - } - - for (d = 0; d < pScreen -> numDepths; d++) - { - pDepth = &pScreen -> allowedDepths[d]; - bpp = BitsPerPixel(pDepth -> depth); - - switch (bpp) { - case 16: - if (pDepth->depth == 15) - { - *nformats = addFormat (formats, *nformats, - PICT_x1r5g5b5, pDepth->depth); - } - - if (pDepth->depth == 16) - { - *nformats = addFormat (formats, *nformats, - PICT_r5g6b5, pDepth->depth); - } - break; - case 24: - if (pDepth->depth == 24) - { - *nformats = addFormat (formats, *nformats, - PICT_r8g8b8, pDepth->depth); - } - break; - case 32: - if (pDepth->depth == 24) - { - *nformats = addFormat (formats, *nformats, - PICT_x8r8g8b8, pDepth->depth); - } - break; - } - } -} - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h b/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h deleted file mode 100644 index b267925..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h +++ /dev/null @@ -1,679 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* - * $Id: picturestr.h,v 1.15 2005/12/09 18:35:21 ajax Exp $ - * - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -/* - * This must keep the same symbol as the original - * picturestr.h or symbols will be redefined. We - * should define a new types and cast when appro- - * priate. - */ - -#ifndef _PICTURESTR_H_ -#define _PICTURESTR_H_ - -#include "NXglyphstr.h" -#include "scrnintstr.h" -#include "resource.h" - -typedef struct _DirectFormat { - CARD16 red, redMask; - CARD16 green, greenMask; - CARD16 blue, blueMask; - CARD16 alpha, alphaMask; -} DirectFormatRec; - -typedef struct _IndexFormat { - VisualID vid; - ColormapPtr pColormap; - int nvalues; - xIndexValue *pValues; - void *devPrivate; -} IndexFormatRec; - -typedef struct _PictFormat { - CARD32 id; - CARD32 format; /* except bpp */ - unsigned char type; - unsigned char depth; - DirectFormatRec direct; - IndexFormatRec index; -} PictFormatRec; - -typedef struct _PictVector { - xFixed vector[3]; -} PictVector, *PictVectorPtr; - -typedef struct _PictTransform { - xFixed matrix[3][3]; -} PictTransform, *PictTransformPtr; - -#define PICT_GRADIENT_STOPTABLE_SIZE 1024 -#define SourcePictTypeSolidFill 0 -#define SourcePictTypeLinear 1 -#define SourcePictTypeRadial 2 -#define SourcePictTypeConical 3 - -typedef struct _PictSolidFill { - unsigned int type; - CARD32 color; - xRenderColor fullColor; -} PictSolidFill, *PictSolidFillPtr; - -typedef struct _PictGradientStop { - xFixed x; - xRenderColor color; -} PictGradientStop, *PictGradientStopPtr; - -typedef struct _PictGradient { - unsigned int type; - int nstops; - PictGradientStopPtr stops; - CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; -} PictGradient, *PictGradientPtr; - -typedef struct _PictLinearGradient { - unsigned int type; - int nstops; - PictGradientStopPtr stops; - CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; - xPointFixed p1; - xPointFixed p2; -} PictLinearGradient, *PictLinearGradientPtr; - -typedef struct _PictRadialGradient { - unsigned int type; - int nstops; - PictGradientStopPtr stops; - CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; - double fx; - double fy; - double dx; - double dy; - double a; - double m; - double b; -} PictRadialGradient, *PictRadialGradientPtr; - -typedef struct _PictConicalGradient { - unsigned int type; - int nstops; - PictGradientStopPtr stops; - CARD32 colorTable[PICT_GRADIENT_STOPTABLE_SIZE]; - xPointFixed center; - xFixed angle; -} PictConicalGradient, *PictConicalGradientPtr; - -typedef union _SourcePict { - unsigned int type; - PictSolidFill solidFill; - PictGradient gradient; - PictLinearGradient linear; - PictRadialGradient radial; - PictConicalGradient conical; -} SourcePict, *SourcePictPtr; - -typedef struct _Picture { - DrawablePtr pDrawable; - PictFormatPtr pFormat; - CARD32 format; /* PICT_FORMAT */ - int refcnt; - CARD32 id; - PicturePtr pNext; /* chain on same drawable */ - - unsigned int repeat : 1; - unsigned int graphicsExposures : 1; - unsigned int subWindowMode : 1; - unsigned int polyEdge : 1; - unsigned int polyMode : 1; - unsigned int freeCompClip : 1; - unsigned int clientClipType : 2; - unsigned int componentAlpha : 1; - unsigned int repeatType : 2; - unsigned int unused : 21; - - PicturePtr alphaMap; - DDXPointRec alphaOrigin; - - DDXPointRec clipOrigin; - pointer clientClip; - - Atom dither; - - unsigned long stateChanges; - unsigned long serialNumber; - - RegionPtr pCompositeClip; - - DevUnion *devPrivates; - - PictTransform *transform; - - int filter; - xFixed *filter_params; - int filter_nparams; - SourcePictPtr pSourcePict; -} PictureRec; - -typedef Bool (*PictFilterValidateParamsProcPtr) (PicturePtr pPicture, int id, - xFixed *params, int nparams); -typedef struct { - char *name; - int id; - PictFilterValidateParamsProcPtr ValidateParams; -} PictFilterRec, *PictFilterPtr; - -#define PictFilterNearest 0 -#define PictFilterBilinear 1 - -#define PictFilterFast 2 -#define PictFilterGood 3 -#define PictFilterBest 4 - -#define PictFilterConvolution 5 - -typedef struct { - char *alias; - int alias_id; - int filter_id; -} PictFilterAliasRec, *PictFilterAliasPtr; - -typedef int (*CreatePictureProcPtr) (PicturePtr pPicture); -typedef void (*DestroyPictureProcPtr) (PicturePtr pPicture); -typedef int (*ChangePictureClipProcPtr) (PicturePtr pPicture, - int clipType, - pointer value, - int n); -typedef void (*DestroyPictureClipProcPtr)(PicturePtr pPicture); - -typedef int (*ChangePictureTransformProcPtr) (PicturePtr pPicture, - PictTransform *transform); - -typedef int (*ChangePictureFilterProcPtr) (PicturePtr pPicture, - int filter, - xFixed *params, - int nparams); - -typedef void (*DestroyPictureFilterProcPtr) (PicturePtr pPicture); - -typedef void (*ChangePictureProcPtr) (PicturePtr pPicture, - Mask mask); -typedef void (*ValidatePictureProcPtr) (PicturePtr pPicture, - Mask mask); -typedef void (*CompositeProcPtr) (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height); - -typedef void (*GlyphsProcPtr) (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int nlists, - GlyphListPtr lists, - GlyphPtr *glyphs); - -typedef void (*CompositeRectsProcPtr) (CARD8 op, - PicturePtr pDst, - xRenderColor *color, - int nRect, - xRectangle *rects); - -typedef void (*RasterizeTrapezoidProcPtr)(PicturePtr pMask, - xTrapezoid *trap, - int x_off, - int y_off); - -typedef void (*TrapezoidsProcPtr) (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int ntrap, - xTrapezoid *traps); - -typedef void (*TrianglesProcPtr) (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int ntri, - xTriangle *tris); - -typedef void (*TriStripProcPtr) (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int npoint, - xPointFixed *points); - -typedef void (*TriFanProcPtr) (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int npoint, - xPointFixed *points); - -typedef Bool (*InitIndexedProcPtr) (ScreenPtr pScreen, - PictFormatPtr pFormat); - -typedef void (*CloseIndexedProcPtr) (ScreenPtr pScreen, - PictFormatPtr pFormat); - -typedef void (*UpdateIndexedProcPtr) (ScreenPtr pScreen, - PictFormatPtr pFormat, - int ndef, - xColorItem *pdef); - -typedef void (*AddTrapsProcPtr) (PicturePtr pPicture, - INT16 xOff, - INT16 yOff, - int ntrap, - xTrap *traps); - -typedef void (*AddTrianglesProcPtr) (PicturePtr pPicture, - INT16 xOff, - INT16 yOff, - int ntri, - xTriangle *tris); - -typedef struct _PictureScreen { - int totalPictureSize; - unsigned int *PicturePrivateSizes; - int PicturePrivateLen; - - PictFormatPtr formats; - PictFormatPtr fallback; - int nformats; - - CreatePictureProcPtr CreatePicture; - DestroyPictureProcPtr DestroyPicture; - ChangePictureClipProcPtr ChangePictureClip; - DestroyPictureClipProcPtr DestroyPictureClip; - - ChangePictureProcPtr ChangePicture; - ValidatePictureProcPtr ValidatePicture; - - CompositeProcPtr Composite; - GlyphsProcPtr Glyphs; - CompositeRectsProcPtr CompositeRects; - - DestroyWindowProcPtr DestroyWindow; - CloseScreenProcPtr CloseScreen; - - StoreColorsProcPtr StoreColors; - - InitIndexedProcPtr InitIndexed; - CloseIndexedProcPtr CloseIndexed; - UpdateIndexedProcPtr UpdateIndexed; - - int subpixel; - - PictFilterPtr filters; - int nfilters; - PictFilterAliasPtr filterAliases; - int nfilterAliases; - - ChangePictureTransformProcPtr ChangePictureTransform; - ChangePictureFilterProcPtr ChangePictureFilter; - DestroyPictureFilterProcPtr DestroyPictureFilter; - - TrapezoidsProcPtr Trapezoids; - TrianglesProcPtr Triangles; - TriStripProcPtr TriStrip; - TriFanProcPtr TriFan; - - RasterizeTrapezoidProcPtr RasterizeTrapezoid; - - AddTrianglesProcPtr AddTriangles; - - AddTrapsProcPtr AddTraps; - -} PictureScreenRec, *PictureScreenPtr; - -extern int PictureScreenPrivateIndex; -extern int PictureWindowPrivateIndex; -extern RESTYPE PictureType; -extern RESTYPE PictFormatType; -extern RESTYPE GlyphSetType; - -#define GetPictureScreen(s) ((PictureScreenPtr) ((s)->devPrivates[PictureScreenPrivateIndex].ptr)) -#define GetPictureScreenIfSet(s) ((PictureScreenPrivateIndex != -1) ? GetPictureScreen(s) : NULL) -#define SetPictureScreen(s,p) ((s)->devPrivates[PictureScreenPrivateIndex].ptr = (pointer) (p)) -#define GetPictureWindow(w) ((PicturePtr) ((w)->devPrivates[PictureWindowPrivateIndex].ptr)) -#define SetPictureWindow(w,p) ((w)->devPrivates[PictureWindowPrivateIndex].ptr = (pointer) (p)) - -#define VERIFY_PICTURE(pPicture, pid, client, mode, err) {\ - pPicture = SecurityLookupIDByType(client, pid, PictureType, mode);\ - if (!pPicture) { \ - client->errorValue = pid; \ - return err; \ - } \ -} - -#define VERIFY_ALPHA(pPicture, pid, client, mode, err) {\ - if (pid == None) \ - pPicture = 0; \ - else { \ - VERIFY_PICTURE(pPicture, pid, client, mode, err); \ - } \ -} \ - -void -ResetPicturePrivateIndex (void); - -int -AllocatePicturePrivateIndex (void); - -Bool -AllocatePicturePrivate (ScreenPtr pScreen, int index2, unsigned int amount); - -Bool -PictureDestroyWindow (WindowPtr pWindow); - -Bool -PictureCloseScreen (int Index, ScreenPtr pScreen); - -void -PictureStoreColors (ColormapPtr pColormap, int ndef, xColorItem *pdef); - -Bool -PictureInitIndexedFormats (ScreenPtr pScreen); - -Bool -PictureSetSubpixelOrder (ScreenPtr pScreen, int subpixel); - -int -PictureGetSubpixelOrder (ScreenPtr pScreen); - -PictFormatPtr -PictureCreateDefaultFormats (ScreenPtr pScreen, int *nformatp); - -PictFormatPtr -PictureMatchVisual (ScreenPtr pScreen, int depth, VisualPtr pVisual); - -PictFormatPtr -PictureMatchFormat (ScreenPtr pScreen, int depth, CARD32 format); - -Bool -PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats); - -int -PictureGetFilterId (char *filter, int len, Bool makeit); - -char * -PictureGetFilterName (int id); - -int -PictureAddFilter (ScreenPtr pScreen, - char *filter, - PictFilterValidateParamsProcPtr ValidateParams); - -Bool -PictureSetFilterAlias (ScreenPtr pScreen, char *filter, char *alias); - -Bool -PictureSetDefaultFilters (ScreenPtr pScreen); - -void -PictureResetFilters (ScreenPtr pScreen); - -PictFilterPtr -PictureFindFilter (ScreenPtr pScreen, char *name, int len); - -int -SetPictureFilter (PicturePtr pPicture, char *name, int len, xFixed *params, int nparams); - -Bool -PictureFinishInit (void); - -void -SetPictureToDefaults (PicturePtr pPicture); - -PicturePtr -AllocatePicture (ScreenPtr pScreen); - -#if 0 -Bool -miPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats); -#endif - - -PicturePtr -CreatePicture (Picture pid, - DrawablePtr pDrawable, - PictFormatPtr pFormat, - Mask mask, - XID *list, - ClientPtr client, - int *error); - -int -ChangePicture (PicturePtr pPicture, - Mask vmask, - XID *vlist, - DevUnion *ulist, - ClientPtr client); - -int -SetPictureClipRects (PicturePtr pPicture, - int xOrigin, - int yOrigin, - int nRect, - xRectangle *rects); - -int -SetPictureClipRegion (PicturePtr pPicture, - int xOrigin, - int yOrigin, - RegionPtr pRegion); - -int -SetPictureTransform (PicturePtr pPicture, - PictTransform *transform); - -void -CopyPicture (PicturePtr pSrc, - Mask mask, - PicturePtr pDst); - -void -ValidatePicture(PicturePtr pPicture); - -int -FreePicture (pointer pPicture, - XID pid); - -int -FreePictFormat (pointer pPictFormat, - XID pid); - -void -CompositePicture (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height); - -void -CompositeGlyphs (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int nlist, - GlyphListPtr lists, - GlyphPtr *glyphs); - -void -CompositeRects (CARD8 op, - PicturePtr pDst, - xRenderColor *color, - int nRect, - xRectangle *rects); - -void -CompositeTrapezoids (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int ntrap, - xTrapezoid *traps); - -void -CompositeTriangles (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int ntriangles, - xTriangle *triangles); - -void -CompositeTriStrip (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int npoints, - xPointFixed *points); - -void -CompositeTriFan (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int npoints, - xPointFixed *points); - -Bool -PictureTransformPoint (PictTransformPtr transform, - PictVectorPtr vector); - -Bool -PictureTransformPoint3d (PictTransformPtr transform, - PictVectorPtr vector); - -void RenderExtensionInit (void); - -Bool -AnimCurInit (ScreenPtr pScreen); - -int -AnimCursorCreate (CursorPtr *cursors, CARD32 *deltas, int ncursor, CursorPtr *ppCursor); - -void -AddTraps (PicturePtr pPicture, - INT16 xOff, - INT16 yOff, - int ntraps, - xTrap *traps); - -PicturePtr -CreateSolidPicture (Picture pid, - xRenderColor *color, - int *error); - -PicturePtr -CreateLinearGradientPicture (Picture pid, - xPointFixed *p1, - xPointFixed *p2, - int nStops, - xFixed *stops, - xRenderColor *colors, - int *error); - -PicturePtr -CreateRadialGradientPicture (Picture pid, - xPointFixed *inner, - xPointFixed *outer, - xFixed innerRadius, - xFixed outerRadius, - int nStops, - xFixed *stops, - xRenderColor *colors, - int *error); - -PicturePtr -CreateConicalGradientPicture (Picture pid, - xPointFixed *center, - xFixed angle, - int nStops, - xFixed *stops, - xRenderColor *colors, - int *error); - -#ifdef PANORAMIX -void PanoramiXRenderInit (void); -void PanoramiXRenderReset (void); -#endif - -#endif /* _PICTURESTR_H_ */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c deleted file mode 100644 index cd1ec6d..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c +++ /dev/null @@ -1,992 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XFree86: xc/programs/Xserver/dix/property.c,v 3.12 2002/02/19 11:09:22 alanh Exp $ */ -/*********************************************************** - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* $Xorg: property.c,v 1.4 2001/02/09 02:04:40 xorgcvs Exp $ */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#define NEED_REPLIES -#define NEED_EVENTS -#include <X11/Xproto.h> -#include "windowstr.h" -#include "propertyst.h" -#include "dixstruct.h" -#include "../../dix/dispatch.h" -#include "swaprep.h" -#ifdef XCSECURITY -#define _SECURITY_SERVER -#include <X11/extensions/security.h> -#endif -#ifdef LBX -#include "lbxserve.h" -#include "lbxtags.h" -#endif - -#include "Options.h" -#include "Rootless.h" -#include "Client.h" -#include "Windows.h" - -#if defined(LBX) || defined(LBX_COMPAT) -#if 0 /* no header in X11 environment, not used in X11 environment */ -int fWriteToClient(ClientPtr client, int len, char *buf) -{ - return WriteToClient(client, len, buf); -} -#endif -#endif - -extern Atom clientCutProperty; - -#ifdef NXAGENT_SERVER -typedef struct -{ - CARD32 state; - Window icon; -} -nxagentWMStateRec; -#endif - -/***************************************************************** - * Property Stuff - * - * ChangeProperty, DeleteProperty, GetProperties, - * ListProperties - * - * Properties below to windows. A allocate slots each time - * a property is added. No fancy searching done. - * - *****************************************************************/ - -#ifdef notdef -static void -PrintPropertys(WindowPtr pWin) -{ - PropertyPtr pProp; - register int j; - - pProp = pWin->userProps; - while (pProp) - { - ErrorF( "%x %x\n", pProp->propertyName, pProp->type); - ErrorF("property format: %d\n", pProp->format); - ErrorF("property data: \n"); - for (j=0; j<(pProp->format/8)*pProp->size; j++) - ErrorF("%c\n", pProp->data[j]); - pProp = pProp->next; - } -} -#endif - -int -ProcRotateProperties(ClientPtr client) -{ - int i, j, delta; - REQUEST(xRotatePropertiesReq); - WindowPtr pWin; - register Atom * atoms; - PropertyPtr * props; /* array of pointer */ - PropertyPtr pProp; - xEvent event; - - REQUEST_FIXED_SIZE(xRotatePropertiesReq, stuff->nAtoms << 2); - UpdateCurrentTime(); - pWin = (WindowPtr) SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - if (!stuff->nAtoms) - return(Success); - atoms = (Atom *) & stuff[1]; - props = (PropertyPtr *)ALLOCATE_LOCAL(stuff->nAtoms * sizeof(PropertyPtr)); - if (!props) - return(BadAlloc); - for (i = 0; i < stuff->nAtoms; i++) - { -#ifdef XCSECURITY - char action = SecurityCheckPropertyAccess(client, pWin, atoms[i], - SecurityReadAccess|SecurityWriteAccess); -#endif - if (!ValidAtom(atoms[i]) -#ifdef XCSECURITY - || (SecurityErrorOperation == action) -#endif - ) - { - DEALLOCATE_LOCAL(props); - client->errorValue = atoms[i]; - return BadAtom; - } -#ifdef XCSECURITY - if (SecurityIgnoreOperation == action) - { - DEALLOCATE_LOCAL(props); - return Success; - } -#endif - for (j = i + 1; j < stuff->nAtoms; j++) - if (atoms[j] == atoms[i]) - { - DEALLOCATE_LOCAL(props); - return BadMatch; - } - pProp = wUserProps (pWin); - while (pProp) - { - if (pProp->propertyName == atoms[i]) - goto found; - pProp = pProp->next; - } - DEALLOCATE_LOCAL(props); - return BadMatch; -found: - props[i] = pProp; - } - delta = stuff->nPositions; - - /* If the rotation is a complete 360 degrees, then moving the properties - around and generating PropertyNotify events should be skipped. */ - - if ( (stuff->nAtoms != 0) && (abs(delta) % stuff->nAtoms) != 0 ) - { - while (delta < 0) /* faster if abs value is small */ - delta += stuff->nAtoms; - for (i = 0; i < stuff->nAtoms; i++) - { - /* Generate a PropertyNotify event for each property whose value - is changed in the order in which they appear in the request. */ - - event.u.u.type = PropertyNotify; - event.u.property.window = pWin->drawable.id; - event.u.property.state = PropertyNewValue; - event.u.property.atom = props[i]->propertyName; - event.u.property.time = currentTime.milliseconds; - DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); - - props[i]->propertyName = atoms[(i + delta) % stuff->nAtoms]; - } - } - DEALLOCATE_LOCAL(props); - return Success; -} - -int -ProcChangeProperty(ClientPtr client) -{ - WindowPtr pWin; - char format, mode; - unsigned long len; - int sizeInBytes; - int totalSize; - int err; - REQUEST(xChangePropertyReq); - - REQUEST_AT_LEAST_SIZE(xChangePropertyReq); - UpdateCurrentTime(); - format = stuff->format; - mode = stuff->mode; - if ((mode != PropModeReplace) && (mode != PropModeAppend) && - (mode != PropModePrepend)) - { - client->errorValue = mode; - return BadValue; - } - if ((format != 8) && (format != 16) && (format != 32)) - { - client->errorValue = format; - return BadValue; - } - len = stuff->nUnits; - if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2)) - return BadLength; - sizeInBytes = format>>3; - totalSize = len * sizeInBytes; - REQUEST_FIXED_SIZE(xChangePropertyReq, totalSize); - -#ifdef NXAGENT_CLIPBOARD - { - extern WindowPtr nxagentGetClipboardWindow(Atom, WindowPtr); - - pWin = nxagentGetClipboardWindow(stuff->property, NULL); - } - - if (pWin == NULL) -#endif - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - if (!ValidAtom(stuff->property)) - { - client->errorValue = stuff->property; - return(BadAtom); - } - if (!ValidAtom(stuff->type)) - { - client->errorValue = stuff->type; - return(BadAtom); - } - -#ifdef XCSECURITY - switch (SecurityCheckPropertyAccess(client, pWin, stuff->property, - SecurityWriteAccess)) - { - case SecurityErrorOperation: - client->errorValue = stuff->property; - return BadAtom; - case SecurityIgnoreOperation: - return Success; - } -#endif - -#ifdef NXAGENT_ARTSD - { - /* Do not process MCOPGLOBALS property changes, - they are already set reflecting the server side settings. - Just return success. - */ - extern Atom mcop_local_atom; - if (stuff->property == mcop_local_atom) - return client->noClientException; - } -#endif - -#ifdef LBX - err = LbxChangeWindowProperty(client, pWin, stuff->property, stuff->type, - (int)format, (int)mode, len, TRUE, (pointer)&stuff[1], TRUE, NULL); -#else - err = ChangeWindowProperty(pWin, stuff->property, stuff->type, (int)format, - (int)mode, len, (pointer)&stuff[1], TRUE); -#endif - if (err != Success) - return err; - else - { - if (nxagentOption(Rootless) == 1) - { - nxagentExportProperty(pWin, stuff->property, stuff->type, (int) format, - (int) mode, len, (pointer) &stuff[1]); - } - - nxagentGuessClientHint(client, stuff->property, (char *) &stuff[1]); - - nxagentGuessShadowHint(client, stuff->property); - - #ifdef NX_DEBUG_INPUT - nxagentGuessDumpInputInfo(client, stuff->property, (char *) &stuff[1]); - #endif - - return client->noClientException; - } -} - -int -ChangeWindowProperty(WindowPtr pWin, Atom property, Atom type, int format, - int mode, unsigned long len, pointer value, - Bool sendevent) -{ -#ifdef LBX - return LbxChangeWindowProperty(NULL, pWin, property, type, - format, mode, len, TRUE, value, - sendevent, NULL); -#else - PropertyPtr pProp; - xEvent event; - int sizeInBytes; - int totalSize; - pointer data; - int copySize; - - sizeInBytes = format>>3; - totalSize = len * sizeInBytes; - - copySize = nxagentOption(CopyBufferSize); - - if (copySize != COPY_UNLIMITED && property == clientCutProperty) - { - if (totalSize > copySize) - { - totalSize = copySize; - totalSize = totalSize - (totalSize % sizeInBytes); - len = totalSize / sizeInBytes; - } - } - - /* first see if property already exists */ - - pProp = wUserProps (pWin); - while (pProp) - { - if (pProp->propertyName == property) - break; - pProp = pProp->next; - } - if (!pProp) /* just add to list */ - { - if (!pWin->optional && !MakeWindowOptional (pWin)) - return(BadAlloc); - pProp = (PropertyPtr)xalloc(sizeof(PropertyRec)); - if (!pProp) - return(BadAlloc); - data = (pointer)xalloc(totalSize); - if (!data && len) - { - xfree(pProp); - return(BadAlloc); - } - pProp->propertyName = property; - pProp->type = type; - pProp->format = format; - pProp->data = data; - if (len) - memmove((char *)data, (char *)value, totalSize); - pProp->size = len; - pProp->next = pWin->optional->userProps; - pWin->optional->userProps = pProp; - } - else - { - /* To append or prepend to a property the request format and type - must match those of the already defined property. The - existing format and type are irrelevant when using the mode - "PropModeReplace" since they will be written over. */ - - if ((format != pProp->format) && (mode != PropModeReplace)) - return(BadMatch); - if ((pProp->type != type) && (mode != PropModeReplace)) - return(BadMatch); - if (mode == PropModeReplace) - { - if (totalSize != pProp->size * (pProp->format >> 3)) - { - data = (pointer)xrealloc(pProp->data, totalSize); - if (!data && len) - return(BadAlloc); - pProp->data = data; - } - if (len) - memmove((char *)pProp->data, (char *)value, totalSize); - pProp->size = len; - pProp->type = type; - pProp->format = format; - } - else if (len == 0) - { - /* do nothing */ - } - else if (mode == PropModeAppend) - { - data = (pointer)xrealloc(pProp->data, - sizeInBytes * (len + pProp->size)); - if (!data) - return(BadAlloc); - pProp->data = data; - memmove(&((char *)data)[pProp->size * sizeInBytes], - (char *)value, - totalSize); - pProp->size += len; - } - else if (mode == PropModePrepend) - { - data = (pointer)xalloc(sizeInBytes * (len + pProp->size)); - if (!data) - return(BadAlloc); - memmove(&((char *)data)[totalSize], (char *)pProp->data, - (int)(pProp->size * sizeInBytes)); - memmove((char *)data, (char *)value, totalSize); - xfree(pProp->data); - pProp->data = data; - pProp->size += len; - } - } - if (sendevent) - { - event.u.u.type = PropertyNotify; - event.u.property.window = pWin->drawable.id; - event.u.property.state = PropertyNewValue; - event.u.property.atom = pProp->propertyName; - event.u.property.time = currentTime.milliseconds; - DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); - } - return(Success); -#endif -} - -int -DeleteProperty(WindowPtr pWin, Atom propName) -{ - PropertyPtr pProp, prevProp; - xEvent event; - - if (!(pProp = wUserProps (pWin))) - return(Success); - prevProp = (PropertyPtr)NULL; - while (pProp) - { - if (pProp->propertyName == propName) - break; - prevProp = pProp; - pProp = pProp->next; - } - if (pProp) - { - if (prevProp == (PropertyPtr)NULL) /* takes care of head */ - { - if (!(pWin->optional->userProps = pProp->next)) - CheckWindowOptionalNeed (pWin); - } - else - { - prevProp->next = pProp->next; - } -#ifdef LBX - if (pProp->tag_id) - TagDeleteTag(pProp->tag_id); -#endif - event.u.u.type = PropertyNotify; - event.u.property.window = pWin->drawable.id; - event.u.property.state = PropertyDelete; - event.u.property.atom = pProp->propertyName; - event.u.property.time = currentTime.milliseconds; - DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); - xfree(pProp->data); - xfree(pProp); - } - return(Success); -} - -void -DeleteAllWindowProperties(WindowPtr pWin) -{ - PropertyPtr pProp, pNextProp; - xEvent event; - - pProp = wUserProps (pWin); - while (pProp) - { -#ifdef LBX - if (pProp->tag_id) - TagDeleteTag(pProp->tag_id); -#endif - event.u.u.type = PropertyNotify; - event.u.property.window = pWin->drawable.id; - event.u.property.state = PropertyDelete; - event.u.property.atom = pProp->propertyName; - event.u.property.time = currentTime.milliseconds; - DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); - pNextProp = pProp->next; - xfree(pProp->data); - xfree(pProp); - pProp = pNextProp; - } -} - -static int -NullPropertyReply( - ClientPtr client, - ATOM propertyType, - int format, - xGetPropertyReply *reply) -{ - reply->nItems = 0; - reply->length = 0; - reply->bytesAfter = 0; - reply->propertyType = propertyType; - reply->format = format; - WriteReplyToClient(client, sizeof(xGenericReply), reply); - return(client->noClientException); -} - -/***************** - * GetProperty - * If type Any is specified, returns the property from the specified - * window regardless of its type. If a type is specified, returns the - * property only if its type equals the specified type. - * If delete is True and a property is returned, the property is also - * deleted from the window and a PropertyNotify event is generated on the - * window. - *****************/ - -int -ProcGetProperty(ClientPtr client) -{ - #ifdef NXAGENT_SERVER - nxagentWMStateRec wmState; - nxagentWMStateRec *wmsP = &wmState; - #endif - - PropertyPtr pProp, prevProp; - unsigned long n, len, ind; - WindowPtr pWin; - xGetPropertyReply reply; - REQUEST(xGetPropertyReq); - - REQUEST_SIZE_MATCH(xGetPropertyReq); - - if (stuff->delete) - UpdateCurrentTime(); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityReadAccess); - if (!pWin) - return BadWindow; - - if (!ValidAtom(stuff->property)) - { - client->errorValue = stuff->property; - return(BadAtom); - } - if ((stuff->delete != xTrue) && (stuff->delete != xFalse)) - { - client->errorValue = stuff->delete; - return(BadValue); - } - if ((stuff->type != AnyPropertyType) && !ValidAtom(stuff->type)) - { - client->errorValue = stuff->type; - return(BadAtom); - } - - pProp = wUserProps (pWin); - prevProp = (PropertyPtr)NULL; - while (pProp) - { - if (pProp->propertyName == stuff->property) - break; - prevProp = pProp; - pProp = pProp->next; - } - - reply.type = X_Reply; - reply.sequenceNumber = client->sequence; - - #ifdef NXAGENT_SERVER - - /* - * Creating a reply for WM_STATE property if it doesn't exist. - * This is intended to allow drag & drop work in JAva 1.6 when - * the agent is connected to NXWin in multiwindow mode. - */ - - if (nxagentOption(Rootless) && - nxagentWindowTopLevel(pWin) && - (!pProp) && - strcmp(NameForAtom(stuff->property), "WM_STATE") == 0) - { - wmState.state = 1; - wmState.icon = None; - - if (ChangeWindowProperty(pWin, stuff->property, stuff->property, 32, 0, 2, &wmState, 1) == Success) - { - nxagentExportProperty(pWin, stuff->property, stuff->property, 32, 0, 2, &wmState); - } - - n = 8; - ind = stuff->longOffset << 2; - - if (n < ind) - { - client->errorValue = stuff->longOffset; - return BadValue; - } - - len = min(n - ind, 4 * stuff->longLength); - - reply.bytesAfter = n - (ind + len); - reply.length = (len + 3) >> 2; - - reply.format = 32; - reply.nItems = len / 4; - reply.propertyType = stuff->property; - - WriteReplyToClient(client, sizeof(xGenericReply), &reply); - - if (len) - { - client->pSwapReplyFunc = (ReplySwapPtr)CopySwap32Write; - - WriteSwappedDataToClient(client, len, (char *)wmsP + ind); - } - - return(client->noClientException); - } - #endif - - if (!pProp) - return NullPropertyReply(client, None, 0, &reply); - -#ifdef XCSECURITY - { - Mask access_mode = SecurityReadAccess; - - if (stuff->delete) - access_mode |= SecurityDestroyAccess; - switch(SecurityCheckPropertyAccess(client, pWin, stuff->property, - access_mode)) - { - case SecurityErrorOperation: - client->errorValue = stuff->property; - return BadAtom;; - case SecurityIgnoreOperation: - return NullPropertyReply(client, pProp->type, pProp->format, - &reply); - } - } -#endif - /* If the request type and actual type don't match. Return the - property information, but not the data. */ - - if (((stuff->type != pProp->type) && - (stuff->type != AnyPropertyType)) - ) - { - reply.bytesAfter = pProp->size; - reply.format = pProp->format; - reply.length = 0; - reply.nItems = 0; - reply.propertyType = pProp->type; - WriteReplyToClient(client, sizeof(xGenericReply), &reply); - return(Success); - } -#ifdef LBX - /* make sure we have the current value */ - if (pProp->tag_id && pProp->owner_pid) { - LbxStallPropRequest(client, pProp); - return client->noClientException; - } -#endif - -/* - * Return type, format, value to client - */ - n = (pProp->format/8) * pProp->size; /* size (bytes) of prop */ - ind = stuff->longOffset << 2; - - /* If longOffset is invalid such that it causes "len" to - be negative, it's a value error. */ - - if (n < ind) - { - client->errorValue = stuff->longOffset; - return BadValue; - } - - len = min(n - ind, 4 * stuff->longLength); - - reply.bytesAfter = n - (ind + len); - reply.format = pProp->format; - reply.length = (len + 3) >> 2; - reply.nItems = len / (pProp->format / 8 ); - reply.propertyType = pProp->type; - - if (stuff->delete && (reply.bytesAfter == 0)) - { /* send the event */ - xEvent event; - - event.u.u.type = PropertyNotify; - event.u.property.window = pWin->drawable.id; - event.u.property.state = PropertyDelete; - event.u.property.atom = pProp->propertyName; - event.u.property.time = currentTime.milliseconds; - DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); - } - - WriteReplyToClient(client, sizeof(xGenericReply), &reply); - if (len) - { - switch (reply.format) { - case 32: client->pSwapReplyFunc = (ReplySwapPtr)CopySwap32Write; break; - case 16: client->pSwapReplyFunc = (ReplySwapPtr)CopySwap16Write; break; - default: client->pSwapReplyFunc = (ReplySwapPtr)WriteToClient; break; - } - WriteSwappedDataToClient(client, len, - (char *)pProp->data + ind); - } - - if (stuff->delete && (reply.bytesAfter == 0)) - { /* delete the Property */ -#ifdef LBX - if (pProp->tag_id) - TagDeleteTag(pProp->tag_id); -#endif - if (prevProp == (PropertyPtr)NULL) /* takes care of head */ - { - if (!(pWin->optional->userProps = pProp->next)) - CheckWindowOptionalNeed (pWin); - } - else - prevProp->next = pProp->next; - xfree(pProp->data); - xfree(pProp); - } - return(client->noClientException); -} - -#ifdef NXAGENT_CLIPBOARD -/* GetWindowProperty clipboard use only */ -int -GetWindowProperty(pWin, property, longOffset, longLength, delete, - type, actualType, format, nItems, bytesAfter, propData ) - WindowPtr pWin; - Atom property; - long longOffset; - long longLength; - Bool delete; - Atom type; - Atom *actualType; - int *format; - unsigned long *nItems; - unsigned long *bytesAfter; - unsigned char **propData; -{ - PropertyPtr pProp, prevProp; - unsigned long n, len, ind; - - if (!pWin) - return BadWindow; - - - if (!ValidAtom(property)) - { - return(BadAtom); - } - if ((type != AnyPropertyType) && !ValidAtom(type)) - { - return(BadAtom); - } - - pProp = wUserProps (pWin); - prevProp = (PropertyPtr)NULL; - - while (pProp) - { - if (pProp->propertyName == property) - break; - prevProp = pProp; - pProp = pProp->next; - } - - - if (!pProp) - return (BadAtom); - - /* If the request type and actual type don't match. Return the - property information, but not the data. */ - - if (((type != pProp->type) && - (type != AnyPropertyType)) - ) - { - *bytesAfter = pProp->size; - *format = pProp->format; - *nItems = 0; - *actualType = pProp->type; - return(Success); - } - -/* - * Return type, format, value to client - */ - n = (pProp->format/8) * pProp->size; /* size (bytes) of prop */ - ind = longOffset << 2; - - /* If longOffset is invalid such that it causes "len" to - be negative, it's a value error. */ - - if (n < ind) - { - return BadValue; - } - - len = min(n - ind, 4 * longLength); - - *bytesAfter = n - (ind + len); - *format = pProp->format; - *nItems = len / (pProp->format / 8 ); - *actualType = pProp->type; - - if (delete && (*bytesAfter == 0)) - { /* send the event */ - xEvent event; - - event.u.u.type = PropertyNotify; - event.u.property.window = pWin->drawable.id; - event.u.property.state = PropertyDelete; - event.u.property.atom = pProp->propertyName; - event.u.property.time = currentTime.milliseconds; - DeliverEvents(pWin, &event, 1, (WindowPtr)NULL); - } - - if (len) - { - *propData = (unsigned char *)(pProp->data) + ind; - } - - if (delete && (*bytesAfter == 0)) - { /* delete the Property */ -#ifdef LBX - if (pProp->tag_id) - TagDeleteTag(pProp->tag_id); -#endif - if (prevProp == (PropertyPtr)NULL) /* takes care of head */ - { - if (!(pWin->optional->userProps = pProp->next)) - CheckWindowOptionalNeed (pWin); - } - else - prevProp->next = pProp->next; - xfree(pProp->data); - xfree(pProp); - } - return(Success); -} -#endif - -int -ProcListProperties(ClientPtr client) -{ - Atom *pAtoms = NULL, *temppAtoms; - xListPropertiesReply xlpr; - int numProps = 0; - WindowPtr pWin; - PropertyPtr pProp; - REQUEST(xResourceReq); - - REQUEST_SIZE_MATCH(xResourceReq); - pWin = (WindowPtr)SecurityLookupWindow(stuff->id, client, - SecurityReadAccess); - if (!pWin) - return(BadWindow); - - pProp = wUserProps (pWin); - while (pProp) - { - pProp = pProp->next; - numProps++; - } - if (numProps) - if(!(pAtoms = (Atom *)ALLOCATE_LOCAL(numProps * sizeof(Atom)))) - return(BadAlloc); - - xlpr.type = X_Reply; - xlpr.nProperties = numProps; - xlpr.length = (numProps * sizeof(Atom)) >> 2; - xlpr.sequenceNumber = client->sequence; - pProp = wUserProps (pWin); - temppAtoms = pAtoms; - while (pProp) - { - *temppAtoms++ = pProp->propertyName; - pProp = pProp->next; - } - WriteReplyToClient(client, sizeof(xGenericReply), &xlpr); - if (numProps) - { - client->pSwapReplyFunc = (ReplySwapPtr)Swap32Write; - WriteSwappedDataToClient(client, numProps * sizeof(Atom), pAtoms); - DEALLOCATE_LOCAL(pAtoms); - } - return(client->noClientException); -} - -int -ProcDeleteProperty(register ClientPtr client) -{ - WindowPtr pWin; - REQUEST(xDeletePropertyReq); - int result; - - REQUEST_SIZE_MATCH(xDeletePropertyReq); - UpdateCurrentTime(); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess); - if (!pWin) - return(BadWindow); - if (!ValidAtom(stuff->property)) - { - client->errorValue = stuff->property; - return (BadAtom); - } - -#ifdef XCSECURITY - switch(SecurityCheckPropertyAccess(client, pWin, stuff->property, - SecurityDestroyAccess)) - { - case SecurityErrorOperation: - client->errorValue = stuff->property; - return BadAtom;; - case SecurityIgnoreOperation: - return Success; - } -#endif - - result = DeleteProperty(pWin, stuff->property); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); -} - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c deleted file mode 100644 index 89e7901..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c +++ /dev/null @@ -1,3861 +0,0 @@ -/* $XdotOrg: xc/programs/Xserver/render/render.c,v 1.12 2005/08/28 19:47:39 ajax Exp $ */ -/* - * $XFree86: xc/programs/Xserver/render/render.c,v 1.27tsi Exp $ - * - * Copyright © 2000 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ - -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -#define NEED_REPLIES -#define NEED_EVENTS -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "misc.h" -#include "os.h" -#include "dixstruct.h" -#include "resource.h" -#include "scrnintstr.h" -#include "windowstr.h" -#include "pixmapstr.h" -#include "colormapst.h" -#include "extnsionst.h" -#include "servermd.h" -#include <X11/extensions/render.h> -#include <X11/extensions/renderproto.h> -#include <X11/Xfuncproto.h> -#include "cursorstr.h" -#ifdef EXTMODULE -#include "xf86_ansic.h" -#endif - -#if !defined(UINT32_MAX) -#define UINT32_MAX 0xffffffffU -#endif - -#include "NXpicturestr.h" -#include "NXglyphstr.h" - -#include "Trap.h" - -#include "Render.h" -#include "Pixmaps.h" -#include "Options.h" -#include "Screen.h" -#include "Cursor.h" - -/* - * Set here the required log level. - */ - -#define PANIC -#define WARNING -#undef TEST -#undef DEBUG - -#ifdef TEST -#include "Literals.h" -#endif - -/* - * From NXmiglyph.c. - */ - -void miGlyphExtents(int nlist, GlyphListPtr list, - GlyphPtr *glyphs, BoxPtr extents); - -/* - * From NXmitrap.c. - */ - -void miTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box); - -/* - * Functions from Render.c. - */ - -int nxagentCursorSaveRenderInfo(ScreenPtr, CursorPtr); -void nxagentCursorPostSaveRenderInfo(CursorPtr, ScreenPtr, PicturePtr, int, int); -int nxagentRenderRealizeCursor(ScreenPtr, CursorPtr); -int nxagentCreatePicture(PicturePtr, Mask); -void nxagentChangePicture(PicturePtr, Mask); -int nxagentChangePictureClip(PicturePtr, int, int, xRectangle *, int, int); -void nxagentComposite(CARD8, PicturePtr, PicturePtr, PicturePtr, INT16, INT16, - INT16, INT16, INT16, INT16, CARD16, CARD16); -void nxagentCompositeRects(CARD8, PicturePtr, xRenderColor *, int, xRectangle *); -void nxagentCreateGlyphSet(GlyphSetPtr glyphSet); -void nxagentReferenceGlyphSet(GlyphSetPtr glyphSet); -void nxagentFreeGlyphs(GlyphSetPtr glyphSet, CARD32 *gids, int nglyph); -void nxagentFreeGlyphSet(GlyphSetPtr glyphSet); -void nxagentSetPictureTransform(PicturePtr pPicture, pointer transform); -void nxagentSetPictureFilter(PicturePtr pPicture, char *filter, int name_size, - pointer params, int nparams); -void nxagentTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst, PictFormatPtr maskFormat, - INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid *traps); - -void nxagentRenderCreateSolidFill(PicturePtr pPicture, xRenderColor *color); - -void nxagentRenderCreateLinearGradient(PicturePtr pPicture, xPointFixed *p1, - xPointFixed *p2, int nStops, - xFixed *stops, - xRenderColor *colors); - -void nxagentRenderCreateRadialGradient(PicturePtr pPicture, xPointFixed *inner, - xPointFixed *outer, - xFixed innerRadius, - xFixed outerRadius, - int nStops, - xFixed *stops, - xRenderColor *colors); - -void nxagentRenderCreateConicalGradient(PicturePtr pPicture, - xPointFixed *center, - xFixed angle, int nStops, - xFixed *stops, - xRenderColor *colors); - - -/* - * The void pointer is actually a XGlyphElt8. - */ - -void nxagentGlyphs(CARD8, PicturePtr, PicturePtr, PictFormatPtr, - INT16, INT16, int, void *, int, GlyphPtr *); - -static int ProcRenderQueryVersion (ClientPtr pClient); -static int ProcRenderQueryPictFormats (ClientPtr pClient); -static int ProcRenderQueryPictIndexValues (ClientPtr pClient); -static int ProcRenderQueryDithers (ClientPtr pClient); -static int ProcRenderCreatePicture (ClientPtr pClient); -static int ProcRenderChangePicture (ClientPtr pClient); -static int ProcRenderSetPictureClipRectangles (ClientPtr pClient); -static int ProcRenderFreePicture (ClientPtr pClient); -static int ProcRenderComposite (ClientPtr pClient); -static int ProcRenderScale (ClientPtr pClient); -static int ProcRenderTrapezoids (ClientPtr pClient); -static int ProcRenderTriangles (ClientPtr pClient); -static int ProcRenderTriStrip (ClientPtr pClient); -static int ProcRenderTriFan (ClientPtr pClient); -static int ProcRenderColorTrapezoids (ClientPtr pClient); -static int ProcRenderColorTriangles (ClientPtr pClient); -static int ProcRenderTransform (ClientPtr pClient); -static int ProcRenderCreateGlyphSet (ClientPtr pClient); -static int ProcRenderReferenceGlyphSet (ClientPtr pClient); -static int ProcRenderFreeGlyphSet (ClientPtr pClient); -static int ProcRenderAddGlyphs (ClientPtr pClient); -static int ProcRenderAddGlyphsFromPicture (ClientPtr pClient); -static int ProcRenderFreeGlyphs (ClientPtr pClient); -static int ProcRenderCompositeGlyphs (ClientPtr pClient); -static int ProcRenderFillRectangles (ClientPtr pClient); -static int ProcRenderCreateCursor (ClientPtr pClient); -static int ProcRenderSetPictureTransform (ClientPtr pClient); -static int ProcRenderQueryFilters (ClientPtr pClient); -static int ProcRenderSetPictureFilter (ClientPtr pClient); -static int ProcRenderCreateAnimCursor (ClientPtr pClient); -static int ProcRenderAddTraps (ClientPtr pClient); -static int ProcRenderCreateSolidFill (ClientPtr pClient); -static int ProcRenderCreateLinearGradient (ClientPtr pClient); -static int ProcRenderCreateRadialGradient (ClientPtr pClient); -static int ProcRenderCreateConicalGradient (ClientPtr pClient); - -static int ProcRenderDispatch (ClientPtr pClient); - -static int SProcRenderQueryVersion (ClientPtr pClient); -static int SProcRenderQueryPictFormats (ClientPtr pClient); -static int SProcRenderQueryPictIndexValues (ClientPtr pClient); -static int SProcRenderQueryDithers (ClientPtr pClient); -static int SProcRenderCreatePicture (ClientPtr pClient); -static int SProcRenderChangePicture (ClientPtr pClient); -static int SProcRenderSetPictureClipRectangles (ClientPtr pClient); -static int SProcRenderFreePicture (ClientPtr pClient); -static int SProcRenderComposite (ClientPtr pClient); -static int SProcRenderScale (ClientPtr pClient); -static int SProcRenderTrapezoids (ClientPtr pClient); -static int SProcRenderTriangles (ClientPtr pClient); -static int SProcRenderTriStrip (ClientPtr pClient); -static int SProcRenderTriFan (ClientPtr pClient); -static int SProcRenderColorTrapezoids (ClientPtr pClient); -static int SProcRenderColorTriangles (ClientPtr pClient); -static int SProcRenderTransform (ClientPtr pClient); -static int SProcRenderCreateGlyphSet (ClientPtr pClient); -static int SProcRenderReferenceGlyphSet (ClientPtr pClient); -static int SProcRenderFreeGlyphSet (ClientPtr pClient); -static int SProcRenderAddGlyphs (ClientPtr pClient); -static int SProcRenderAddGlyphsFromPicture (ClientPtr pClient); -static int SProcRenderFreeGlyphs (ClientPtr pClient); -static int SProcRenderCompositeGlyphs (ClientPtr pClient); -static int SProcRenderFillRectangles (ClientPtr pClient); -static int SProcRenderCreateCursor (ClientPtr pClient); -static int SProcRenderSetPictureTransform (ClientPtr pClient); -static int SProcRenderQueryFilters (ClientPtr pClient); -static int SProcRenderSetPictureFilter (ClientPtr pClient); -static int SProcRenderCreateAnimCursor (ClientPtr pClient); -static int SProcRenderAddTraps (ClientPtr pClient); -static int SProcRenderCreateSolidFill (ClientPtr pClient); -static int SProcRenderCreateLinearGradient (ClientPtr pClient); -static int SProcRenderCreateRadialGradient (ClientPtr pClient); -static int SProcRenderCreateConicalGradient (ClientPtr pClient); - -static int SProcRenderDispatch (ClientPtr pClient); - -int (*ProcRenderVector[RenderNumberRequests])(ClientPtr) = { - ProcRenderQueryVersion, - ProcRenderQueryPictFormats, - ProcRenderQueryPictIndexValues, - ProcRenderQueryDithers, - ProcRenderCreatePicture, - ProcRenderChangePicture, - ProcRenderSetPictureClipRectangles, - ProcRenderFreePicture, - ProcRenderComposite, - ProcRenderScale, - ProcRenderTrapezoids, - ProcRenderTriangles, - ProcRenderTriStrip, - ProcRenderTriFan, - ProcRenderColorTrapezoids, - ProcRenderColorTriangles, - ProcRenderTransform, - ProcRenderCreateGlyphSet, - ProcRenderReferenceGlyphSet, - ProcRenderFreeGlyphSet, - ProcRenderAddGlyphs, - ProcRenderAddGlyphsFromPicture, - ProcRenderFreeGlyphs, - ProcRenderCompositeGlyphs, - ProcRenderCompositeGlyphs, - ProcRenderCompositeGlyphs, - ProcRenderFillRectangles, - ProcRenderCreateCursor, - ProcRenderSetPictureTransform, - ProcRenderQueryFilters, - ProcRenderSetPictureFilter, - ProcRenderCreateAnimCursor, - ProcRenderAddTraps, - ProcRenderCreateSolidFill, - ProcRenderCreateLinearGradient, - ProcRenderCreateRadialGradient, - ProcRenderCreateConicalGradient -}; - -int (*SProcRenderVector[RenderNumberRequests])(ClientPtr) = { - SProcRenderQueryVersion, - SProcRenderQueryPictFormats, - SProcRenderQueryPictIndexValues, - SProcRenderQueryDithers, - SProcRenderCreatePicture, - SProcRenderChangePicture, - SProcRenderSetPictureClipRectangles, - SProcRenderFreePicture, - SProcRenderComposite, - SProcRenderScale, - SProcRenderTrapezoids, - SProcRenderTriangles, - SProcRenderTriStrip, - SProcRenderTriFan, - SProcRenderColorTrapezoids, - SProcRenderColorTriangles, - SProcRenderTransform, - SProcRenderCreateGlyphSet, - SProcRenderReferenceGlyphSet, - SProcRenderFreeGlyphSet, - SProcRenderAddGlyphs, - SProcRenderAddGlyphsFromPicture, - SProcRenderFreeGlyphs, - SProcRenderCompositeGlyphs, - SProcRenderCompositeGlyphs, - SProcRenderCompositeGlyphs, - SProcRenderFillRectangles, - SProcRenderCreateCursor, - SProcRenderSetPictureTransform, - SProcRenderQueryFilters, - SProcRenderSetPictureFilter, - SProcRenderCreateAnimCursor, - SProcRenderAddTraps, - SProcRenderCreateSolidFill, - SProcRenderCreateLinearGradient, - SProcRenderCreateRadialGradient, - SProcRenderCreateConicalGradient -}; - -static void -RenderResetProc (ExtensionEntry *extEntry); - -#if 0 -static CARD8 RenderReqCode; -#endif -int RenderErrBase; -int RenderClientPrivateIndex; - -typedef struct _RenderClient { - int major_version; - int minor_version; -} RenderClientRec, *RenderClientPtr; - -#define GetRenderClient(pClient) ((RenderClientPtr) (pClient)->devPrivates[RenderClientPrivateIndex].ptr) - -static void -RenderClientCallback (CallbackListPtr *list, - pointer closure, - pointer data) -{ - NewClientInfoRec *clientinfo = (NewClientInfoRec *) data; - ClientPtr pClient = clientinfo->client; - RenderClientPtr pRenderClient = GetRenderClient (pClient); - - pRenderClient->major_version = 0; - pRenderClient->minor_version = 0; -} - -void -RenderExtensionInit (void) -{ - ExtensionEntry *extEntry; - - if (!PictureType) - return; - if (!PictureFinishInit ()) - return; - RenderClientPrivateIndex = AllocateClientPrivateIndex (); - if (!AllocateClientPrivate (RenderClientPrivateIndex, - sizeof (RenderClientRec))) - return; - if (!AddCallback (&ClientStateCallback, RenderClientCallback, 0)) - return; - - extEntry = AddExtension (RENDER_NAME, 0, RenderNumberErrors, - ProcRenderDispatch, SProcRenderDispatch, - RenderResetProc, StandardMinorOpcode); - if (!extEntry) - return; -#if 0 - RenderReqCode = (CARD8) extEntry->base; -#endif - RenderErrBase = extEntry->errorBase; -} - -static void -RenderResetProc (ExtensionEntry *extEntry) -{ - ResetPicturePrivateIndex(); - ResetGlyphSetPrivateIndex(); -} - -static int -ProcRenderQueryVersion (ClientPtr client) -{ - RenderClientPtr pRenderClient = GetRenderClient (client); - xRenderQueryVersionReply rep; - register int n; - REQUEST(xRenderQueryVersionReq); - - pRenderClient->major_version = stuff->majorVersion; - pRenderClient->minor_version = stuff->minorVersion; - - REQUEST_SIZE_MATCH(xRenderQueryVersionReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - rep.majorVersion = nxagentRenderVersionMajor; - rep.minorVersion = nxagentRenderVersionMinor; - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.majorVersion, n); - swapl(&rep.minorVersion, n); - } - WriteToClient(client, sizeof(xRenderQueryVersionReply), (char *)&rep); - return (client->noClientException); -} - -#if 0 -static int -VisualDepth (ScreenPtr pScreen, VisualPtr pVisual) -{ - DepthPtr pDepth; - int d, v; - - for (d = 0; d < pScreen->numDepths; d++) - { - pDepth = pScreen->allowedDepths + d; - for (v = 0; v < pDepth->numVids; v++) - { - if (pDepth->vids[v] == pVisual->vid) - return pDepth->depth; - } - } - return 0; -} -#endif - -static VisualPtr -findVisual (ScreenPtr pScreen, VisualID vid) -{ - VisualPtr pVisual; - int v; - - for (v = 0; v < pScreen->numVisuals; v++) - { - pVisual = pScreen->visuals + v; - if (pVisual->vid == vid) - return pVisual; - } - return 0; -} - -extern char *ConnectionInfo; - -static int -ProcRenderQueryPictFormats (ClientPtr client) -{ - RenderClientPtr pRenderClient = GetRenderClient (client); - xRenderQueryPictFormatsReply *reply; - xPictScreen *pictScreen; - xPictDepth *pictDepth; - xPictVisual *pictVisual; - xPictFormInfo *pictForm; - CARD32 *pictSubpixel; - ScreenPtr pScreen; - VisualPtr pVisual; - DepthPtr pDepth; - int v, d; - PictureScreenPtr ps; - PictFormatPtr pFormat; - int nformat; - int ndepth; - int nvisual; - int rlength; - int s; - int n; - int numScreens; - int numSubpixel; - - extern int nxagentAlphaEnabled; -/* REQUEST(xRenderQueryPictFormatsReq); */ - - REQUEST_SIZE_MATCH(xRenderQueryPictFormatsReq); - -#ifdef PANORAMIX - if (noPanoramiXExtension) - numScreens = screenInfo.numScreens; - else - numScreens = ((xConnSetup *)ConnectionInfo)->numRoots; -#else - numScreens = screenInfo.numScreens; -#endif - ndepth = nformat = nvisual = 0; - for (s = 0; s < numScreens; s++) - { - pScreen = screenInfo.screens[s]; - for (d = 0; d < pScreen->numDepths; d++) - { - pDepth = pScreen->allowedDepths + d; - ++ndepth; - - for (v = 0; v < pDepth->numVids; v++) - { - pVisual = findVisual (pScreen, pDepth->vids[v]); - if (pVisual && PictureMatchVisual (pScreen, pDepth->depth, pVisual)) - ++nvisual; - } - } - ps = GetPictureScreenIfSet(pScreen); - if (ps) - nformat += ps->nformats; - } - if (pRenderClient->major_version == 0 && pRenderClient->minor_version < 6) - numSubpixel = 0; - else - numSubpixel = numScreens; - - rlength = (sizeof (xRenderQueryPictFormatsReply) + - nformat * sizeof (xPictFormInfo) + - numScreens * sizeof (xPictScreen) + - ndepth * sizeof (xPictDepth) + - nvisual * sizeof (xPictVisual) + - numSubpixel * sizeof (CARD32)); - reply = (xRenderQueryPictFormatsReply *) xalloc (rlength); - if (!reply) - return BadAlloc; - reply->type = X_Reply; - reply->sequenceNumber = client->sequence; - reply->length = (rlength - sizeof(xGenericReply)) >> 2; - reply->numFormats = nformat; - reply->numScreens = numScreens; - reply->numDepths = ndepth; - reply->numVisuals = nvisual; - reply->numSubpixel = numSubpixel; - - pictForm = (xPictFormInfo *) (reply + 1); - - for (s = 0; s < numScreens; s++) - { - pScreen = screenInfo.screens[s]; - ps = GetPictureScreenIfSet(pScreen); - if (ps) - { - for (nformat = 0, pFormat = ps->formats; - nformat < ps->nformats; - nformat++, pFormat++) - { - pictForm->id = pFormat->id; - pictForm->type = pFormat->type; - pictForm->depth = pFormat->depth; - pictForm->direct.red = pFormat->direct.red; - pictForm->direct.redMask = pFormat->direct.redMask; - pictForm->direct.green = pFormat->direct.green; - pictForm->direct.greenMask = pFormat->direct.greenMask; - pictForm->direct.blue = pFormat->direct.blue; - pictForm->direct.blueMask = pFormat->direct.blueMask; - pictForm->direct.alpha = nxagentAlphaEnabled ? pFormat->direct.alpha : 0; - pictForm->direct.alphaMask = pFormat->direct.alphaMask; - if (pFormat->type == PictTypeIndexed && pFormat->index.pColormap) - pictForm->colormap = pFormat->index.pColormap->mid; - else - pictForm->colormap = None; - if (client->swapped) - { - swapl (&pictForm->id, n); - swaps (&pictForm->direct.red, n); - swaps (&pictForm->direct.redMask, n); - swaps (&pictForm->direct.green, n); - swaps (&pictForm->direct.greenMask, n); - swaps (&pictForm->direct.blue, n); - swaps (&pictForm->direct.blueMask, n); - swaps (&pictForm->direct.alpha, n); - swaps (&pictForm->direct.alphaMask, n); - swapl (&pictForm->colormap, n); - } - pictForm++; - } - } - } - - pictScreen = (xPictScreen *) pictForm; - for (s = 0; s < numScreens; s++) - { - pScreen = screenInfo.screens[s]; - pictDepth = (xPictDepth *) (pictScreen + 1); - ndepth = 0; - for (d = 0; d < pScreen->numDepths; d++) - { - pictVisual = (xPictVisual *) (pictDepth + 1); - pDepth = pScreen->allowedDepths + d; - - nvisual = 0; - for (v = 0; v < pDepth->numVids; v++) - { - pVisual = findVisual (pScreen, pDepth->vids[v]); - if (pVisual && (pFormat = PictureMatchVisual (pScreen, - pDepth->depth, - pVisual))) - { - pictVisual->visual = pVisual->vid; - pictVisual->format = pFormat->id; - if (client->swapped) - { - swapl (&pictVisual->visual, n); - swapl (&pictVisual->format, n); - } - pictVisual++; - nvisual++; - } - } - pictDepth->depth = pDepth->depth; - pictDepth->nPictVisuals = nvisual; - if (client->swapped) - { - swaps (&pictDepth->nPictVisuals, n); - } - ndepth++; - pictDepth = (xPictDepth *) pictVisual; - } - pictScreen->nDepth = ndepth; - ps = GetPictureScreenIfSet(pScreen); - if (ps) - pictScreen->fallback = ps->fallback->id; - else - pictScreen->fallback = 0; - if (client->swapped) - { - swapl (&pictScreen->nDepth, n); - swapl (&pictScreen->fallback, n); - } - pictScreen = (xPictScreen *) pictDepth; - } - pictSubpixel = (CARD32 *) pictScreen; - - for (s = 0; s < numSubpixel; s++) - { - pScreen = screenInfo.screens[s]; - ps = GetPictureScreenIfSet(pScreen); - if (ps) - *pictSubpixel = ps->subpixel; - else - *pictSubpixel = SubPixelUnknown; - if (client->swapped) - { - swapl (pictSubpixel, n); - } - ++pictSubpixel; - } - - if (client->swapped) - { - swaps (&reply->sequenceNumber, n); - swapl (&reply->length, n); - swapl (&reply->numFormats, n); - swapl (&reply->numScreens, n); - swapl (&reply->numDepths, n); - swapl (&reply->numVisuals, n); - swapl (&reply->numSubpixel, n); - } - WriteToClient(client, rlength, (char *) reply); - xfree (reply); - return client->noClientException; -} - -static int -ProcRenderQueryPictIndexValues (ClientPtr client) -{ - PictFormatPtr pFormat; - int num; - int rlength; - int i, n; - REQUEST(xRenderQueryPictIndexValuesReq); - xRenderQueryPictIndexValuesReply *reply; - xIndexValue *values; - - REQUEST_AT_LEAST_SIZE(xRenderQueryPictIndexValuesReq); - - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->format, - PictFormatType, - SecurityReadAccess); - - if (!pFormat) - { - client->errorValue = stuff->format; - return RenderErrBase + BadPictFormat; - } - if (pFormat->type != PictTypeIndexed) - { - client->errorValue = stuff->format; - return BadMatch; - } - num = pFormat->index.nvalues; - rlength = (sizeof (xRenderQueryPictIndexValuesReply) + - num * sizeof(xIndexValue)); - reply = (xRenderQueryPictIndexValuesReply *) xalloc (rlength); - if (!reply) - return BadAlloc; - - reply->type = X_Reply; - reply->sequenceNumber = client->sequence; - reply->length = (rlength - sizeof(xGenericReply)) >> 2; - reply->numIndexValues = num; - - values = (xIndexValue *) (reply + 1); - - memcpy (reply + 1, pFormat->index.pValues, num * sizeof (xIndexValue)); - - if (client->swapped) - { - for (i = 0; i < num; i++) - { - swapl (&values[i].pixel, n); - swaps (&values[i].red, n); - swaps (&values[i].green, n); - swaps (&values[i].blue, n); - swaps (&values[i].alpha, n); - } - swaps (&reply->sequenceNumber, n); - swapl (&reply->length, n); - swapl (&reply->numIndexValues, n); - } - - WriteToClient(client, rlength, (char *) reply); - xfree(reply); - return (client->noClientException); -} - -static int -ProcRenderQueryDithers (ClientPtr client) -{ - return BadImplementation; -} - -static int -ProcRenderCreatePicture (ClientPtr client) -{ - PicturePtr pPicture; - DrawablePtr pDrawable; - PictFormatPtr pFormat; - int len; - int error; - REQUEST(xRenderCreatePictureReq); - - REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq); - - LEGAL_NEW_RESOURCE(stuff->pid, client); - SECURITY_VERIFY_DRAWABLE(pDrawable, stuff->drawable, client, - SecurityWriteAccess); - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->format, - PictFormatType, - SecurityReadAccess); - if (!pFormat) - { - client->errorValue = stuff->format; - return RenderErrBase + BadPictFormat; - } - if (pFormat->depth != pDrawable->depth) - return BadMatch; - len = client->req_len - (sizeof(xRenderCreatePictureReq) >> 2); - if (Ones(stuff->mask) != len) - return BadLength; - - pPicture = CreatePicture (stuff->pid, - pDrawable, - pFormat, - stuff->mask, - (XID *) (stuff + 1), - client, - &error); - if (!pPicture) - return error; - nxagentCreatePicture(pPicture, stuff -> mask); - - if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) - return BadAlloc; - return Success; -} - -static int -ProcRenderChangePicture (ClientPtr client) -{ - PicturePtr pPicture; - REQUEST(xRenderChangePictureReq); - int len; - int error; - - REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq); - VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - len = client->req_len - (sizeof(xRenderChangePictureReq) >> 2); - if (Ones(stuff->mask) != len) - return BadLength; - - error = ChangePicture (pPicture, stuff->mask, (XID *) (stuff + 1), - (DevUnion *) 0, client); - - nxagentChangePicture(pPicture, stuff->mask); - - return error; -} - -static int -ProcRenderSetPictureClipRectangles (ClientPtr client) -{ - REQUEST(xRenderSetPictureClipRectanglesReq); - PicturePtr pPicture; - int nr; - int result; - - REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq); - VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pPicture->pDrawable) - return BadDrawable; - - /* - * The original code used sizeof(xRenderChangePictureReq). - * This was harmless, as both structures have the same size. - * - * nr = (client->req_len << 2) - sizeof(xRenderChangePictureReq); - */ - nr = (client->req_len << 2) - sizeof(xRenderSetPictureClipRectanglesReq); - if (nr & 4) - return BadLength; - nr >>= 3; - result = SetPictureClipRects (pPicture, - stuff->xOrigin, stuff->yOrigin, - nr, (xRectangle *) &stuff[1]); - nxagentChangePictureClip (pPicture, - CT_NONE, - nr, - (xRectangle *) &stuff[1], - (int)stuff -> xOrigin, - (int)stuff -> yOrigin); - - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); -} - -static int -ProcRenderFreePicture (ClientPtr client) -{ - PicturePtr pPicture; - REQUEST(xRenderFreePictureReq); - - REQUEST_SIZE_MATCH(xRenderFreePictureReq); - - VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityDestroyAccess, - RenderErrBase + BadPicture); - - FreeResource (stuff->picture, RT_NONE); - return(client->noClientException); -} - -static Bool -PictOpValid (CARD8 op) -{ - if (/*PictOpMinimum <= op && */ op <= PictOpMaximum) - return TRUE; - if (PictOpDisjointMinimum <= op && op <= PictOpDisjointMaximum) - return TRUE; - if (PictOpConjointMinimum <= op && op <= PictOpConjointMaximum) - return TRUE; - return FALSE; -} - -/* - * Check if both pictures have drawables which are - * virtual pixmaps. See the corresponding define - * in NXpicture.c - */ - -#define NXAGENT_PICTURE_ALWAYS_POINTS_TO_VIRTUAL - -#ifdef NXAGENT_PICTURE_ALWAYS_POINTS_TO_VIRTUAL - -#define nxagentCompositePredicate(pSrc, pDst) TRUE - -#else - -/* - * This is still under development. The final - * goal is to let pictures point to the real - * pixmaps instead of pointing to virtuals. - */ - -int nxagentCompositePredicate(PicturePtr pSrc, PicturePtr pDst) -{ - PixmapPtr pPixmap1; - PixmapPtr pPixmap2; - - pPixmap1 = (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP ? - ((PixmapPtr) pSrc -> pDrawable) : NULL); - - pPixmap2 = (pDst -> pDrawable -> type == DRAWABLE_PIXMAP ? - ((PixmapPtr) pDst -> pDrawable) : NULL); - - if (pPixmap1 == NULL || pPixmap2 == NULL) - { - #ifdef TEST - fprintf(stderr, "nxagentCompositePredicate: Case 0.\n"); - #endif - - return FALSE; - } - else - { - #ifdef TEST - fprintf(stderr, "nxagentCompositePredicate: Case 1.\n"); - #endif - - if (nxagentPixmapIsVirtual(pPixmap1) == 1 && - nxagentPixmapIsVirtual(pPixmap2) == 1) - { - #ifdef TEST - fprintf(stderr, "nxagentCompositePredicate: Case 2.\n"); - #endif - - return TRUE; - } - } - - #ifdef TEST - fprintf(stderr, "nxagentCompositePredicate: Case 3.\n"); - #endif - - return FALSE; -} - -#endif - -static int -ProcRenderComposite (ClientPtr client) -{ - PicturePtr pSrc, pMask, pDst; - REQUEST(xRenderCompositeReq); - - REQUEST_SIZE_MATCH(xRenderCompositeReq); - if (!PictOpValid (stuff->op)) - { - client->errorValue = stuff->op; - return BadValue; - } - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pDst->pDrawable) - return BadDrawable; - VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_ALPHA (pMask, stuff->mask, client, SecurityReadAccess, - RenderErrBase + BadPicture); -/* -FIXME: Imported change from newest version of Xorg. Changed pSrc to pDst. - - if ((pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) || - (pMask && pMask->pDrawable && pSrc->pDrawable->pScreen != pMask->pDrawable->pScreen)) - return BadMatch; -*/ - if ((pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) || - (pMask && pMask->pDrawable && pDst->pDrawable->pScreen != pMask->pDrawable->pScreen)) - return BadMatch; - - ValidatePicture (pSrc); - if (pMask) - ValidatePicture (pMask); - ValidatePicture (pDst); - - #ifdef NXAGENT_PICTURE_ALWAYS_POINTS_TO_VIRTUAL - - if (nxagentCompositePredicate(pSrc, pDst)) - { - #ifdef TEST - fprintf(stderr, "ProcRenderComposite: Going to composite with " - "source at [%p] mask at [%p] and destination at [%p].\n", - (void *) pSrc, (void *) pMask, (void *) pDst); - #endif - - CompositePicture (stuff->op, - pSrc, - pMask, - pDst, - stuff->xSrc, - stuff->ySrc, - stuff->xMask, - stuff->yMask, - stuff->xDst, - stuff->yDst, - stuff->width, - stuff->height); - } - - #else - - if (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP && - pDst -> pDrawable -> type == DRAWABLE_PIXMAP && - (!pMask || pMask -> pDrawable -> type == DRAWABLE_PIXMAP)) - { - PixmapPtr pVirtualPixmapSrc; - PixmapPtr pVirtualPixmapDst; - PixmapPtr pVirtualPixmapMask; - - PicturePtr pVirtualPictureSrc; - PicturePtr pVirtualPictureDst; - PicturePtr pVirtualPictureMask; - - pVirtualPixmapSrc = (PixmapPtr) pSrc -> pDrawable; - pVirtualPictureSrc = nxagentPixmapPriv(pVirtualPixmapSrc) -> pPicture; - - pVirtualPixmapDst = (PixmapPtr) pDst -> pDrawable; - pVirtualPictureDst = nxagentPixmapPriv(pVirtualPixmapDst) -> pPicture; - - if (pMask) - { - pVirtualPixmapMask = (PixmapPtr) pMask -> pDrawable; - pVirtualPictureMask = nxagentPixmapPriv(pVirtualPixmapMask) -> pPicture; - } - else - { - pVirtualPixmapMask = NULL; - pVirtualPictureMask = NULL; - } - - if (pVirtualPictureSrc && pVirtualPictureDst) - { - #ifdef TEST - fprintf(stderr, "ProcRenderComposite: Going to composite with " - "source at [%p] mask at [%p] and destination at [%p].\n", - (void *) pVirtualPixmapSrc, (void *) pVirtualPixmapMask, - (void *) pVirtualPixmapDst); - #endif - - CompositePicture (stuff->op, - pVirtualPictureSrc, - pVirtualPictureMask, - pVirtualPictureDst, - stuff->xSrc, - stuff->ySrc, - stuff->xMask, - stuff->yMask, - stuff->xDst, - stuff->yDst, - stuff->width, - stuff->height); - } - } - - #endif - - nxagentComposite (stuff -> op, - pSrc, - pMask, - pDst, - stuff -> xSrc, - stuff -> ySrc, - stuff -> xMask, - stuff -> yMask, - stuff -> xDst, - stuff -> yDst, - stuff -> width, - stuff -> height); - - return Success; -} - -static int -ProcRenderScale (ClientPtr client) -{ - return BadImplementation; -} - -static int -ProcRenderTrapezoids (ClientPtr client) -{ - int ntraps; - PicturePtr pSrc, pDst; - PictFormatPtr pFormat; - REQUEST(xRenderTrapezoidsReq); - - REQUEST_AT_LEAST_SIZE(xRenderTrapezoidsReq); - if (!PictOpValid (stuff->op)) - { - client->errorValue = stuff->op; - return BadValue; - } - VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pDst->pDrawable) - return BadDrawable; - if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) - return BadMatch; - if (stuff->maskFormat) - { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - SecurityReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } - } - else - pFormat = 0; - ntraps = (client->req_len << 2) - sizeof (xRenderTrapezoidsReq); - if (ntraps % sizeof (xTrapezoid)) - return BadLength; - ntraps /= sizeof (xTrapezoid); - if (ntraps) - { - if (pFormat != NULL) - { - nxagentTrapezoidExtents = (BoxPtr) xalloc(sizeof(BoxRec)); - - miTrapezoidBounds (ntraps, (xTrapezoid *) &stuff[1], nxagentTrapezoidExtents); - } - - if (nxagentCompositePredicate(pSrc, pDst) == 1) - { - CompositeTrapezoids (stuff->op, pSrc, pDst, pFormat, - stuff->xSrc, stuff->ySrc, - ntraps, (xTrapezoid *) &stuff[1]); - } - - nxagentTrapezoids (stuff->op, pSrc, pDst, pFormat, - stuff->xSrc, stuff->ySrc, - ntraps, (xTrapezoid *) &stuff[1]); - - if (nxagentTrapezoidExtents != NullBox) - { - xfree(nxagentTrapezoidExtents); - - nxagentTrapezoidExtents = NullBox; - } - } - - return client->noClientException; -} - -static int -ProcRenderTriangles (ClientPtr client) -{ - int ntris; - PicturePtr pSrc, pDst; - PictFormatPtr pFormat; - REQUEST(xRenderTrianglesReq); - - REQUEST_AT_LEAST_SIZE(xRenderTrianglesReq); - if (!PictOpValid (stuff->op)) - { - client->errorValue = stuff->op; - return BadValue; - } - VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pDst->pDrawable) - return BadDrawable; - if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) - return BadMatch; - if (stuff->maskFormat) - { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - SecurityReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } - } - else - pFormat = 0; - ntris = (client->req_len << 2) - sizeof (xRenderTrianglesReq); - if (ntris % sizeof (xTriangle)) - return BadLength; - ntris /= sizeof (xTriangle); - if (ntris) - CompositeTriangles (stuff->op, pSrc, pDst, pFormat, - stuff->xSrc, stuff->ySrc, - ntris, (xTriangle *) &stuff[1]); - return client->noClientException; -} - -static int -ProcRenderTriStrip (ClientPtr client) -{ - int npoints; - PicturePtr pSrc, pDst; - PictFormatPtr pFormat; - REQUEST(xRenderTrianglesReq); - - REQUEST_AT_LEAST_SIZE(xRenderTrianglesReq); - if (!PictOpValid (stuff->op)) - { - client->errorValue = stuff->op; - return BadValue; - } - VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pDst->pDrawable) - return BadDrawable; - if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) - return BadMatch; - if (stuff->maskFormat) - { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - SecurityReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } - } - else - pFormat = 0; - npoints = ((client->req_len << 2) - sizeof (xRenderTriStripReq)); - if (npoints & 4) - return(BadLength); - npoints >>= 3; - if (npoints >= 3) - CompositeTriStrip (stuff->op, pSrc, pDst, pFormat, - stuff->xSrc, stuff->ySrc, - npoints, (xPointFixed *) &stuff[1]); - return client->noClientException; -} - -static int -ProcRenderTriFan (ClientPtr client) -{ - int npoints; - PicturePtr pSrc, pDst; - PictFormatPtr pFormat; - REQUEST(xRenderTrianglesReq); - - REQUEST_AT_LEAST_SIZE(xRenderTrianglesReq); - if (!PictOpValid (stuff->op)) - { - client->errorValue = stuff->op; - return BadValue; - } - VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pDst->pDrawable) - return BadDrawable; - if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) - return BadMatch; - if (stuff->maskFormat) - { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - SecurityReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } - } - else - pFormat = 0; - npoints = ((client->req_len << 2) - sizeof (xRenderTriStripReq)); - if (npoints & 4) - return(BadLength); - npoints >>= 3; - if (npoints >= 3) - CompositeTriFan (stuff->op, pSrc, pDst, pFormat, - stuff->xSrc, stuff->ySrc, - npoints, (xPointFixed *) &stuff[1]); - return client->noClientException; -} - -static int -ProcRenderColorTrapezoids (ClientPtr client) -{ - return BadImplementation; -} - -static int -ProcRenderColorTriangles (ClientPtr client) -{ - return BadImplementation; -} - -static int -ProcRenderTransform (ClientPtr client) -{ - return BadImplementation; -} - -static int -ProcRenderCreateGlyphSet (ClientPtr client) -{ - GlyphSetPtr glyphSet; - PictFormatPtr format; - int f; - REQUEST(xRenderCreateGlyphSetReq); - - REQUEST_SIZE_MATCH(xRenderCreateGlyphSetReq); - - LEGAL_NEW_RESOURCE(stuff->gsid, client); - format = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->format, - PictFormatType, - SecurityReadAccess); - if (!format) - { - client->errorValue = stuff->format; - return RenderErrBase + BadPictFormat; - } - switch (format->depth) { - case 1: - f = GlyphFormat1; - break; - case 4: - f = GlyphFormat4; - break; - case 8: - f = GlyphFormat8; - break; - case 16: - f = GlyphFormat16; - break; - case 32: - f = GlyphFormat32; - break; - default: - return BadMatch; - } - if (format->type != PictTypeDirect) - return BadMatch; - glyphSet = AllocateGlyphSet (f, format); - if (!glyphSet) - return BadAlloc; - if (!AddResource (stuff->gsid, GlyphSetType, (pointer)glyphSet)) - return BadAlloc; - - nxagentCreateGlyphSet(glyphSet); - - return Success; -} - -static int -ProcRenderReferenceGlyphSet (ClientPtr client) -{ - GlyphSetPtr glyphSet; - REQUEST(xRenderReferenceGlyphSetReq); - - REQUEST_SIZE_MATCH(xRenderReferenceGlyphSetReq); - - LEGAL_NEW_RESOURCE(stuff->gsid, client); - - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - stuff->existing, - GlyphSetType, - SecurityWriteAccess); - if (!glyphSet) - { - client->errorValue = stuff->existing; - return RenderErrBase + BadGlyphSet; - } - glyphSet->refcnt++; - - nxagentReferenceGlyphSet(glyphSet); - - if (!AddResource (stuff->gsid, GlyphSetType, (pointer)glyphSet)) - return BadAlloc; - return client->noClientException; -} - -#define NLOCALDELTA 64 -#define NLOCALGLYPH 256 - -static int -ProcRenderFreeGlyphSet (ClientPtr client) -{ - GlyphSetPtr glyphSet; - REQUEST(xRenderFreeGlyphSetReq); - - REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq); - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - stuff->glyphset, - GlyphSetType, - SecurityDestroyAccess); - if (!glyphSet) - { - client->errorValue = stuff->glyphset; - return RenderErrBase + BadGlyphSet; - } - - nxagentFreeGlyphSet(glyphSet); - - FreeResource (stuff->glyphset, RT_NONE); - return client->noClientException; -} - -typedef struct _GlyphNew { - Glyph id; - GlyphPtr glyph; -} GlyphNewRec, *GlyphNewPtr; - -static int -ProcRenderAddGlyphs (ClientPtr client) -{ - GlyphSetPtr glyphSet; - REQUEST(xRenderAddGlyphsReq); - GlyphNewRec glyphsLocal[NLOCALGLYPH]; - GlyphNewPtr glyphsBase, glyphs; - GlyphPtr glyph = NULL; - int remain, nglyphs; - CARD32 *gids; - xGlyphInfo *gi; - CARD8 *bits; - int size; - int err = BadAlloc; - - int totSizeImages; - - REQUEST_AT_LEAST_SIZE(xRenderAddGlyphsReq); - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - stuff->glyphset, - GlyphSetType, - SecurityWriteAccess); - if (!glyphSet) - { - client->errorValue = stuff->glyphset; - return RenderErrBase + BadGlyphSet; - } - - nglyphs = stuff->nglyphs; - if (nglyphs > UINT32_MAX / sizeof(GlyphNewRec)) - return BadAlloc; - - if (nglyphs <= NLOCALGLYPH) - glyphsBase = glyphsLocal; - else - { - glyphsBase = (GlyphNewPtr) Xalloc (nglyphs * sizeof (GlyphNewRec)); - if (!glyphsBase) - return BadAlloc; - } - - remain = (client->req_len << 2) - sizeof (xRenderAddGlyphsReq); - - glyphs = glyphsBase; - - totSizeImages = 0; - gids = (CARD32 *) (stuff + 1); - gi = (xGlyphInfo *) (gids + nglyphs); - bits = (CARD8 *) (gi + nglyphs); - remain -= (sizeof (CARD32) + sizeof (xGlyphInfo)) * nglyphs; - - while (remain >= 0 && nglyphs) - { - glyph = AllocateGlyph (gi, glyphSet->fdepth); - if (!glyph) - { - err = BadAlloc; - goto bail; - } - - glyphs->glyph = glyph; - glyphs->id = *gids; - - size = glyph->size - sizeof (xGlyphInfo); - if (remain < size) - break; - memcpy ((CARD8 *) (glyph + 1), bits, size); - - if (size & 3) - size += 4 - (size & 3); - bits += size; - totSizeImages += size; - remain -= size; - gi++; - gids++; - glyphs++; - nglyphs--; - } - - if (nglyphs || remain) - { - err = BadLength; - goto bail; - } - nglyphs = stuff->nglyphs; - if (!ResizeGlyphSet (glyphSet, nglyphs)) - { - err = BadAlloc; - goto bail; - } - glyphs = glyphsBase; - while (nglyphs--) { - AddGlyph (glyphSet, glyphs->glyph, glyphs->id); - glyphs++; - } - - if (glyphsBase != glyphsLocal) - Xfree (glyphsBase); - return client->noClientException; -bail: - while (glyphs != glyphsBase) - { - --glyphs; - xfree (glyphs->glyph); - } - if (glyphsBase != glyphsLocal) - Xfree (glyphsBase); - return err; -} - -static int -ProcRenderAddGlyphsFromPicture (ClientPtr client) -{ - return BadImplementation; -} - -static int -ProcRenderFreeGlyphs (ClientPtr client) -{ - REQUEST(xRenderFreeGlyphsReq); - GlyphSetPtr glyphSet; - int nglyph; - CARD32 *gids; - CARD32 glyph; - - REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq); - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - stuff->glyphset, - GlyphSetType, - SecurityWriteAccess); - if (!glyphSet) - { - client->errorValue = stuff->glyphset; - return RenderErrBase + BadGlyphSet; - } - nglyph = ((client->req_len << 2) - sizeof (xRenderFreeGlyphsReq)) >> 2; - gids = (CARD32 *) (stuff + 1); - - nxagentFreeGlyphs(glyphSet, gids, nglyph); - - while (nglyph-- > 0) - { - glyph = *gids++; - if (!DeleteGlyph (glyphSet, glyph)) - { - client->errorValue = glyph; - return RenderErrBase + BadGlyph; - } - } - return client->noClientException; -} - -typedef struct XGlyphElt8{ - GlyphSet glyphset; - _Xconst char *chars; - int nchars; - int xOff; - int yOff; -} XGlyphElt8; - -static int -ProcRenderCompositeGlyphs (ClientPtr client) -{ - GlyphSetPtr glyphSet; - GlyphSet gs; - PicturePtr pSrc, pDst; - PictFormatPtr pFormat; - GlyphListRec listsLocal[NLOCALDELTA]; - GlyphListPtr lists, listsBase; - GlyphPtr glyphsLocal[NLOCALGLYPH]; - Glyph glyph; - GlyphPtr *glyphs, *glyphsBase; - xGlyphElt *elt; - CARD8 *buffer, *end; - int nglyph; - int nlist; - int space; - int size; - int n; - - XGlyphElt8 *elements, *elementsBase; - - REQUEST(xRenderCompositeGlyphsReq); - - REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq); - - switch (stuff->renderReqType) { - default: size = 1; break; - case X_RenderCompositeGlyphs16: size = 2; break; - case X_RenderCompositeGlyphs32: size = 4; break; - } - - if (!PictOpValid (stuff->op)) - { - client->errorValue = stuff->op; - return BadValue; - } - VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pDst->pDrawable) - return BadDrawable; - if (pSrc->pDrawable && pSrc->pDrawable->pScreen != pDst->pDrawable->pScreen) - return BadMatch; - if (stuff->maskFormat) - { - pFormat = (PictFormatPtr) SecurityLookupIDByType (client, - stuff->maskFormat, - PictFormatType, - SecurityReadAccess); - if (!pFormat) - { - client->errorValue = stuff->maskFormat; - return RenderErrBase + BadPictFormat; - } - } - else - pFormat = 0; - - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - stuff->glyphset, - GlyphSetType, - SecurityReadAccess); - if (!glyphSet) - { - client->errorValue = stuff->glyphset; - return RenderErrBase + BadGlyphSet; - } - - buffer = (CARD8 *) (stuff + 1); - end = (CARD8 *) stuff + (client->req_len << 2); - nglyph = 0; - nlist = 0; - while (buffer + sizeof (xGlyphElt) < end) - { - elt = (xGlyphElt *) buffer; - buffer += sizeof (xGlyphElt); - - if (elt->len == 0xff) - { - buffer += 4; - } - else - { - nlist++; - nglyph += elt->len; - space = size * elt->len; - if (space & 3) - space += 4 - (space & 3); - buffer += space; - } - } - if (nglyph <= NLOCALGLYPH) - glyphsBase = glyphsLocal; - else - { - glyphsBase = (GlyphPtr *) ALLOCATE_LOCAL (nglyph * sizeof (GlyphPtr)); - if (!glyphsBase) - return BadAlloc; - } - if (nlist <= NLOCALDELTA) - listsBase = listsLocal; - else - { - listsBase = (GlyphListPtr) ALLOCATE_LOCAL (nlist * sizeof (GlyphListRec)); - if (!listsBase) - return BadAlloc; - } - - elementsBase = xalloc(nlist * sizeof(XGlyphElt8)); - if (!elementsBase) - return BadAlloc; - - buffer = (CARD8 *) (stuff + 1); - glyphs = glyphsBase; - lists = listsBase; - elements = elementsBase; - while (buffer + sizeof (xGlyphElt) < end) - { - elt = (xGlyphElt *) buffer; - buffer += sizeof (xGlyphElt); - - if (elt->len == 0xff) - { - #ifdef DEBUG - fprintf(stderr, "ProcRenderCompositeGlyphs: Glyphset change with base size [%d].\n", - size); - #endif - - if (buffer + sizeof (GlyphSet) < end) - { - memcpy(&gs, buffer, sizeof(GlyphSet)); - glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client, - gs, - GlyphSetType, - SecurityReadAccess); - if (!glyphSet) - { - client->errorValue = gs; - if (glyphsBase != glyphsLocal) - DEALLOCATE_LOCAL (glyphsBase); - if (listsBase != listsLocal) - DEALLOCATE_LOCAL (listsBase); - return RenderErrBase + BadGlyphSet; - } - } - buffer += 4; - } - else - { - lists->xOff = elt->deltax; - lists->yOff = elt->deltay; - lists->format = glyphSet->format; - lists->len = 0; - - if (glyphSet -> remoteID == 0) - { - #ifdef TEST - fprintf(stderr, "ProcRenderCompositeGlyphs: Going to reconnect glyphset at [%p].\n", - (void *) glyphSet); - #endif - - nxagentReconnectGlyphSet(glyphSet, (XID) 0, (void*) NULL); - } - - elements -> glyphset = glyphSet -> remoteID; - elements -> chars = (char *) buffer; - elements -> nchars = elt->len; - elements -> xOff = elt->deltax; - elements -> yOff = elt->deltay; - n = elt->len; - while (n--) - { - if (buffer + size <= end) - { - switch (size) { - case 1: - glyph = *((CARD8 *)buffer); break; - case 2: - glyph = *((CARD16 *)buffer); break; - case 4: - default: - glyph = *((CARD32 *)buffer); break; - } - if ((*glyphs = FindGlyph (glyphSet, glyph))) - { - lists->len++; - glyphs++; - } - } - buffer += size; - } - space = size * elt->len; - if (space & 3) - buffer += 4 - (space & 3); - lists++; - elements++; - } - } - if (buffer > end) - return BadLength; - - /* - * We need to know the glyphs extents to synchronize - * the drawables involved in the composite text ope- - * ration. Also we need to synchronize only the back- - * ground of the text we are going to render, so the - * operations on the framebuffer must be executed - * after the X requests. - */ - - nxagentGlyphsExtents = (BoxPtr) xalloc(sizeof(BoxRec)); - - miGlyphExtents(nlist, listsBase, glyphsBase, nxagentGlyphsExtents); - - nxagentGlyphs(stuff -> op, - pSrc, - pDst, - pFormat, - stuff -> xSrc, - stuff -> ySrc, - nlist, - elementsBase, - size, - glyphsBase); - - if (nxagentCompositePredicate(pSrc, pDst) == 1) - { - #ifdef TEST - fprintf(stderr, "ProcRenderCompositeGlyphs: Going to composite glyphs with " - "source at [%p] and destination at [%p].\n", - (void *) pSrc, (void *) pDst); - #endif - - CompositeGlyphs(stuff -> op, - pSrc, - pDst, - pFormat, - stuff -> xSrc, - stuff -> ySrc, - nlist, - listsBase, - glyphsBase); - } - - xfree(nxagentGlyphsExtents); - nxagentGlyphsExtents = NullBox; - - if (glyphsBase != glyphsLocal) - DEALLOCATE_LOCAL (glyphsBase); - if (listsBase != listsLocal) - DEALLOCATE_LOCAL (listsBase); - - xfree(elementsBase); - - return client->noClientException; -} - -static int -ProcRenderFillRectangles (ClientPtr client) -{ - PicturePtr pDst; - int things; - REQUEST(xRenderFillRectanglesReq); - - REQUEST_AT_LEAST_SIZE (xRenderFillRectanglesReq); - if (!PictOpValid (stuff->op)) - { - client->errorValue = stuff->op; - return BadValue; - } - VERIFY_PICTURE (pDst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pDst->pDrawable) - return BadDrawable; - - things = (client->req_len << 2) - sizeof(xRenderFillRectanglesReq); - if (things & 4) - return(BadLength); - things >>= 3; - - CompositeRects (stuff->op, - pDst, - &stuff->color, - things, - (xRectangle *) &stuff[1]); - - ValidatePicture (pDst); - nxagentCompositeRects(stuff -> op, - pDst, - &stuff -> color, - things, - (xRectangle *) &stuff[1]); - - return client->noClientException; -} - -static void -SetBit (unsigned char *line, int x, int bit) -{ - unsigned char mask; - - if (screenInfo.bitmapBitOrder == LSBFirst) - mask = (1 << (x & 7)); - else - mask = (0x80 >> (x & 7)); - /* XXX assumes byte order is host byte order */ - line += (x >> 3); - if (bit) - *line |= mask; - else - *line &= ~mask; -} - -#define DITHER_DIM 2 - -static CARD32 orderedDither[DITHER_DIM][DITHER_DIM] = { - { 1, 3, }, - { 4, 2, }, -}; - -#define DITHER_SIZE ((sizeof orderedDither / sizeof orderedDither[0][0]) + 1) - -static int -ProcRenderCreateCursor (ClientPtr client) -{ - REQUEST(xRenderCreateCursorReq); - PicturePtr pSrc; - ScreenPtr pScreen; - unsigned short width, height; - CARD32 *argbbits, *argb; - unsigned char *srcbits, *srcline; - unsigned char *mskbits, *mskline; - int stride; - int x, y; - int nbytes_mono; - CursorMetricRec cm; - CursorPtr pCursor; - CARD32 twocolor[3]; - int ncolor; - - RealizeCursorProcPtr saveRealizeCursor; - - REQUEST_SIZE_MATCH (xRenderCreateCursorReq); - LEGAL_NEW_RESOURCE(stuff->cid, client); - - VERIFY_PICTURE (pSrc, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - if (!pSrc->pDrawable) - return BadDrawable; - pScreen = pSrc->pDrawable->pScreen; - width = pSrc->pDrawable->width; - height = pSrc->pDrawable->height; - if (height && width > UINT32_MAX/(height*sizeof(CARD32))) - return BadAlloc; - if ( stuff->x > width - || stuff->y > height ) - return (BadMatch); - argbbits = xalloc (width * height * sizeof (CARD32)); - if (!argbbits) - return (BadAlloc); - - stride = BitmapBytePad(width); - nbytes_mono = stride*height; - srcbits = (unsigned char *)xalloc(nbytes_mono); - if (!srcbits) - { - xfree (argbbits); - return (BadAlloc); - } - mskbits = (unsigned char *)xalloc(nbytes_mono); - if (!mskbits) - { - xfree(argbbits); - xfree(srcbits); - return (BadAlloc); - } - bzero ((char *) mskbits, nbytes_mono); - bzero ((char *) srcbits, nbytes_mono); - - if (pSrc->format == PICT_a8r8g8b8) - { - (*pScreen->GetImage) (pSrc->pDrawable, - 0, 0, width, height, ZPixmap, - 0xffffffff, (pointer) argbbits); - } - else - { - PixmapPtr pPixmap; - PicturePtr pPicture; - PictFormatPtr pFormat; - int error; - - pFormat = PictureMatchFormat (pScreen, 32, PICT_a8r8g8b8); - if (!pFormat) - { - xfree (argbbits); - xfree (srcbits); - xfree (mskbits); - return (BadImplementation); - } - pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, 32); - if (!pPixmap) - { - xfree (argbbits); - xfree (srcbits); - xfree (mskbits); - return (BadAlloc); - } - pPicture = CreatePicture (0, &pPixmap->drawable, pFormat, 0, 0, - client, &error); - if (!pPicture) - { - xfree (argbbits); - xfree (srcbits); - xfree (mskbits); - return error; - } - (*pScreen->DestroyPixmap) (pPixmap); - CompositePicture (PictOpSrc, - pSrc, 0, pPicture, - 0, 0, 0, 0, 0, 0, width, height); - (*pScreen->GetImage) (pPicture->pDrawable, - 0, 0, width, height, ZPixmap, - 0xffffffff, (pointer) argbbits); - FreePicture (pPicture, 0); - } - /* - * Check whether the cursor can be directly supported by - * the core cursor code - */ - ncolor = 0; - argb = argbbits; - for (y = 0; ncolor <= 2 && y < height; y++) - { - for (x = 0; ncolor <= 2 && x < width; x++) - { - CARD32 p = *argb++; - CARD32 a = (p >> 24); - - if (a == 0) /* transparent */ - continue; - if (a == 0xff) /* opaque */ - { - int n; - for (n = 0; n < ncolor; n++) - if (p == twocolor[n]) - break; - if (n == ncolor) - twocolor[ncolor++] = p; - } - else - ncolor = 3; - } - } - - /* - * Convert argb image to two plane cursor - */ - srcline = srcbits; - mskline = mskbits; - argb = argbbits; - for (y = 0; y < height; y++) - { - for (x = 0; x < width; x++) - { - CARD32 p = *argb++; - - if (ncolor <= 2) - { - CARD32 a = ((p >> 24)); - - SetBit (mskline, x, a != 0); - SetBit (srcline, x, a != 0 && p == twocolor[0]); - } - else - { - CARD32 a = ((p >> 24) * DITHER_SIZE + 127) / 255; - CARD32 i = ((CvtR8G8B8toY15(p) >> 7) * DITHER_SIZE + 127) / 255; - CARD32 d = orderedDither[y&(DITHER_DIM-1)][x&(DITHER_DIM-1)]; - /* Set mask from dithered alpha value */ - SetBit(mskline, x, a > d); - /* Set src from dithered intensity value */ - SetBit(srcline, x, a > d && i <= d); - } - } - srcline += stride; - mskline += stride; - } - /* - * Dither to white and black if the cursor has more than two colors - */ - if (ncolor > 2) - { - twocolor[0] = 0xff000000; - twocolor[1] = 0xffffffff; - } - else - { - xfree (argbbits); - argbbits = 0; - } - -#define GetByte(p,s) (((p) >> (s)) & 0xff) -#define GetColor(p,s) (GetByte(p,s) | (GetByte(p,s) << 8)) - - cm.width = width; - cm.height = height; - cm.xhot = stuff->x; - cm.yhot = stuff->y; - - /* - * This cursor uses RENDER, so we make sure - * that it is allocated in a way that allows - * the mi and dix layers to handle it but we - * later create it on the server by mirror- - * ing the RENDER operation we got from the - * client. - */ - - saveRealizeCursor = pScreen -> RealizeCursor; - - pScreen -> RealizeCursor = nxagentCursorSaveRenderInfo; - - pCursor = AllocCursorARGB (srcbits, mskbits, argbbits, &cm, - GetColor(twocolor[0], 16), - GetColor(twocolor[0], 8), - GetColor(twocolor[0], 0), - GetColor(twocolor[1], 16), - GetColor(twocolor[1], 8), - GetColor(twocolor[1], 0)); - - pScreen -> RealizeCursor = saveRealizeCursor; - - /* - * Store into the private data members the - * information needed to recreate it at - * reconnection. This is done in two steps - * as in the first step we don't have the - * picture info. - */ - - if (pCursor == NULL) - { - return BadAlloc; - } - - nxagentCursorPostSaveRenderInfo(pCursor, pScreen, pSrc, stuff -> x, stuff -> y); - - nxagentRenderRealizeCursor(pScreen, pCursor); - - if (AddResource(stuff->cid, RT_CURSOR, (pointer)pCursor)) - return (client->noClientException); - return BadAlloc; -} - -static int -ProcRenderSetPictureTransform (ClientPtr client) -{ - REQUEST(xRenderSetPictureTransformReq); - PicturePtr pPicture; - int result; - - REQUEST_SIZE_MATCH(xRenderSetPictureTransformReq); - VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - result = SetPictureTransform (pPicture, (PictTransform *) &stuff->transform); - - nxagentSetPictureTransform(pPicture, &stuff->transform); - - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); -} - -static int -ProcRenderQueryFilters (ClientPtr client) -{ - REQUEST (xRenderQueryFiltersReq); - DrawablePtr pDrawable; - xRenderQueryFiltersReply *reply; - int nbytesName; - int nnames; - ScreenPtr pScreen; - PictureScreenPtr ps; - int i, j; - int len; - int total_bytes; - INT16 *aliases; - char *names; - - REQUEST_SIZE_MATCH(xRenderQueryFiltersReq); - SECURITY_VERIFY_DRAWABLE(pDrawable, stuff->drawable, client, SecurityReadAccess); - - pScreen = pDrawable->pScreen; - nbytesName = 0; - nnames = 0; - ps = GetPictureScreenIfSet(pScreen); - if (ps) - { - for (i = 0; i < ps->nfilters; i++) - nbytesName += 1 + strlen (ps->filters[i].name); - for (i = 0; i < ps->nfilterAliases; i++) - nbytesName += 1 + strlen (ps->filterAliases[i].alias); - nnames = ps->nfilters + ps->nfilterAliases; - } - len = ((nnames + 1) >> 1) + ((nbytesName + 3) >> 2); - total_bytes = sizeof (xRenderQueryFiltersReply) + (len << 2); - reply = (xRenderQueryFiltersReply *) xalloc (total_bytes); - if (!reply) - return BadAlloc; - aliases = (INT16 *) (reply + 1); - names = (char *) (aliases + ((nnames + 1) & ~1)); - - reply->type = X_Reply; - reply->sequenceNumber = client->sequence; - reply->length = len; - reply->numAliases = nnames; - reply->numFilters = nnames; - if (ps) - { - - /* fill in alias values */ - for (i = 0; i < ps->nfilters; i++) - aliases[i] = FilterAliasNone; - for (i = 0; i < ps->nfilterAliases; i++) - { - for (j = 0; j < ps->nfilters; j++) - if (ps->filterAliases[i].filter_id == ps->filters[j].id) - break; - if (j == ps->nfilters) - { - for (j = 0; j < ps->nfilterAliases; j++) - if (ps->filterAliases[i].filter_id == - ps->filterAliases[j].alias_id) - { - break; - } - if (j == ps->nfilterAliases) - j = FilterAliasNone; - else - j = j + ps->nfilters; - } - aliases[i + ps->nfilters] = j; - } - - /* fill in filter names */ - for (i = 0; i < ps->nfilters; i++) - { - j = strlen (ps->filters[i].name); - *names++ = j; - strncpy (names, ps->filters[i].name, j); - names += j; - } - - /* fill in filter alias names */ - for (i = 0; i < ps->nfilterAliases; i++) - { - j = strlen (ps->filterAliases[i].alias); - *names++ = j; - strncpy (names, ps->filterAliases[i].alias, j); - names += j; - } - } - - if (client->swapped) - { - register int n; - - for (i = 0; i < (int)reply->numAliases; i++) - { - swaps (&aliases[i], n); - } - swaps(&reply->sequenceNumber, n); - swapl(&reply->length, n); - swapl(&reply->numAliases, n); - swapl(&reply->numFilters, n); - } - WriteToClient(client, total_bytes, (char *) reply); - xfree (reply); - - return(client->noClientException); -} - -static int -ProcRenderSetPictureFilter (ClientPtr client) -{ - REQUEST (xRenderSetPictureFilterReq); - PicturePtr pPicture; - int result; - xFixed *params; - int nparams; - char *name; - - REQUEST_AT_LEAST_SIZE (xRenderSetPictureFilterReq); - VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - name = (char *) (stuff + 1); - params = (xFixed *) (name + ((stuff->nbytes + 3) & ~3)); - nparams = ((xFixed *) stuff + client->req_len) - params; - result = SetPictureFilter (pPicture, name, stuff->nbytes, params, nparams); - - nxagentSetPictureFilter(pPicture, name, stuff->nbytes, params, nparams); - - return result; -} - -static int -ProcRenderCreateAnimCursor (ClientPtr client) -{ - REQUEST(xRenderCreateAnimCursorReq); - CursorPtr *cursors; - CARD32 *deltas; - CursorPtr pCursor; - int ncursor; - xAnimCursorElt *elt; - int i; - int ret; - - REQUEST_AT_LEAST_SIZE(xRenderCreateAnimCursorReq); - LEGAL_NEW_RESOURCE(stuff->cid, client); - if (client->req_len & 1) - return BadLength; - ncursor = (client->req_len - (SIZEOF(xRenderCreateAnimCursorReq) >> 2)) >> 1; - cursors = xalloc (ncursor * (sizeof (CursorPtr) + sizeof (CARD32))); - if (!cursors) - return BadAlloc; - deltas = (CARD32 *) (cursors + ncursor); - elt = (xAnimCursorElt *) (stuff + 1); - for (i = 0; i < ncursor; i++) - { - cursors[i] = (CursorPtr)SecurityLookupIDByType(client, elt->cursor, - RT_CURSOR, SecurityReadAccess); - if (!cursors[i]) - { - xfree (cursors); - client->errorValue = elt->cursor; - return BadCursor; - } - deltas[i] = elt->delay; - elt++; - } - ret = AnimCursorCreate (cursors, deltas, ncursor, &pCursor); - xfree (cursors); - if (ret != Success) - return ret; - - nxagentAnimCursorBits = pCursor -> bits; - - for (i = 0; i < MAXSCREENS; i++) - { - pCursor -> devPriv[i] = NULL; - } - - if (AddResource (stuff->cid, RT_CURSOR, (pointer)pCursor)) - return client->noClientException; - return BadAlloc; -} - -static int -ProcRenderAddTraps (ClientPtr client) -{ - int ntraps; - PicturePtr pPicture; - REQUEST(xRenderAddTrapsReq); - - REQUEST_AT_LEAST_SIZE(xRenderAddTrapsReq); - VERIFY_PICTURE (pPicture, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - if (!pPicture->pDrawable) - return BadDrawable; - ntraps = (client->req_len << 2) - sizeof (xRenderAddTrapsReq); - if (ntraps % sizeof (xTrap)) - return BadLength; - ntraps /= sizeof (xTrap); - if (ntraps) - AddTraps (pPicture, - stuff->xOff, stuff->yOff, - ntraps, (xTrap *) &stuff[1]); - return client->noClientException; -} - -static int ProcRenderCreateSolidFill(ClientPtr client) -{ - PicturePtr pPicture; - int error = 0; - REQUEST(xRenderCreateSolidFillReq); - - REQUEST_AT_LEAST_SIZE(xRenderCreateSolidFillReq); - - LEGAL_NEW_RESOURCE(stuff->pid, client); - - pPicture = CreateSolidPicture(stuff->pid, &stuff->color, &error); - if (!pPicture) - return error; - /* AGENT SERVER */ - - nxagentRenderCreateSolidFill(pPicture, &stuff -> color); - - /* AGENT SERVER */ - if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) - return BadAlloc; - return Success; -} - -static int ProcRenderCreateLinearGradient (ClientPtr client) -{ - PicturePtr pPicture; - int len; - int error = 0; - xFixed *stops; - xRenderColor *colors; - REQUEST(xRenderCreateLinearGradientReq); - - REQUEST_AT_LEAST_SIZE(xRenderCreateLinearGradientReq); - - LEGAL_NEW_RESOURCE(stuff->pid, client); - - len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq); - if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - - stops = (xFixed *)(stuff + 1); - colors = (xRenderColor *)(stops + stuff->nStops); - - pPicture = CreateLinearGradientPicture (stuff->pid, &stuff->p1, &stuff->p2, - stuff->nStops, stops, colors, &error); - if (!pPicture) - return error; - /* AGENT SERVER */ - - nxagentRenderCreateLinearGradient(pPicture, &stuff->p1, &stuff->p2, - stuff->nStops, stops, colors); - - /* AGENT SERVER */ - if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) - return BadAlloc; - return Success; -} - -static int ProcRenderCreateRadialGradient (ClientPtr client) -{ - PicturePtr pPicture; - int len; - int error = 0; - xFixed *stops; - xRenderColor *colors; - REQUEST(xRenderCreateRadialGradientReq); - - REQUEST_AT_LEAST_SIZE(xRenderCreateRadialGradientReq); - - LEGAL_NEW_RESOURCE(stuff->pid, client); - - len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq); - if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - - stops = (xFixed *)(stuff + 1); - colors = (xRenderColor *)(stops + stuff->nStops); - - pPicture = CreateRadialGradientPicture (stuff->pid, &stuff->inner, &stuff->outer, - stuff->inner_radius, stuff->outer_radius, - stuff->nStops, stops, colors, &error); - if (!pPicture) - return error; - /* AGENT SERVER */ - - nxagentRenderCreateRadialGradient(pPicture, &stuff->inner, &stuff->outer, - stuff->inner_radius, - stuff->outer_radius, - stuff->nStops, stops, colors); - - /* AGENT SERVER */ - if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) - return BadAlloc; - return Success; -} - -static int ProcRenderCreateConicalGradient (ClientPtr client) -{ - PicturePtr pPicture; - int len; - int error = 0; - xFixed *stops; - xRenderColor *colors; - REQUEST(xRenderCreateConicalGradientReq); - - REQUEST_AT_LEAST_SIZE(xRenderCreateConicalGradientReq); - - LEGAL_NEW_RESOURCE(stuff->pid, client); - - len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq); - if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - - stops = (xFixed *)(stuff + 1); - colors = (xRenderColor *)(stops + stuff->nStops); - - pPicture = CreateConicalGradientPicture (stuff->pid, &stuff->center, stuff->angle, - stuff->nStops, stops, colors, &error); - if (!pPicture) - return error; - /* AGENT SERVER */ - - nxagentRenderCreateConicalGradient(pPicture, &stuff->center, - stuff->angle, stuff->nStops, stops, - colors); - - /* AGENT SERVER */ - if (!AddResource (stuff->pid, PictureType, (pointer)pPicture)) - return BadAlloc; - return Success; -} - - -static int -ProcRenderDispatch (ClientPtr client) -{ - int result; - - REQUEST(xReq); - - /* - * Let the client fail if we are - * hiding the RENDER extension. - */ - - if (nxagentRenderTrap) - { - return BadRequest; - } - - if (stuff->data < RenderNumberRequests) - { - #ifdef TEST - fprintf(stderr, "ProcRenderDispatch: Request [%s] OPCODE#%d.\n", - nxagentRenderRequestLiteral[stuff->data], stuff->data); - #endif - - /* - * Set the nxagentGCTrap flag while - * dispatching a render operation to - * avoid reentrancy in GCOps.c. - */ - - nxagentGCTrap = 1; - - result = (*ProcRenderVector[stuff->data]) (client); - - nxagentGCTrap = 0; - - return result; - } - else - return BadRequest; -} - -static int -SProcRenderQueryVersion (ClientPtr client) -{ - register int n; - REQUEST(xRenderQueryVersionReq); - - swaps(&stuff->length, n); - swapl(&stuff->majorVersion, n); - swapl(&stuff->minorVersion, n); - return (*ProcRenderVector[stuff->renderReqType])(client); -} - -static int -SProcRenderQueryPictFormats (ClientPtr client) -{ - register int n; - REQUEST(xRenderQueryPictFormatsReq); - swaps(&stuff->length, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderQueryPictIndexValues (ClientPtr client) -{ - register int n; - REQUEST(xRenderQueryPictIndexValuesReq); - swaps(&stuff->length, n); - swapl(&stuff->format, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderQueryDithers (ClientPtr client) -{ - return BadImplementation; -} - -static int -SProcRenderCreatePicture (ClientPtr client) -{ - register int n; - REQUEST(xRenderCreatePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->pid, n); - swapl(&stuff->drawable, n); - swapl(&stuff->format, n); - swapl(&stuff->mask, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderChangePicture (ClientPtr client) -{ - register int n; - REQUEST(xRenderChangePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - swapl(&stuff->mask, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderSetPictureClipRectangles (ClientPtr client) -{ - register int n; - REQUEST(xRenderSetPictureClipRectanglesReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - SwapRestS(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderFreePicture (ClientPtr client) -{ - register int n; - REQUEST(xRenderFreePictureReq); - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderComposite (ClientPtr client) -{ - register int n; - REQUEST(xRenderCompositeReq); - swaps(&stuff->length, n); - swapl(&stuff->src, n); - swapl(&stuff->mask, n); - swapl(&stuff->dst, n); - swaps(&stuff->xSrc, n); - swaps(&stuff->ySrc, n); - swaps(&stuff->xMask, n); - swaps(&stuff->yMask, n); - swaps(&stuff->xDst, n); - swaps(&stuff->yDst, n); - swaps(&stuff->width, n); - swaps(&stuff->height, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderScale (ClientPtr client) -{ - register int n; - REQUEST(xRenderScaleReq); - swaps(&stuff->length, n); - swapl(&stuff->src, n); - swapl(&stuff->dst, n); - swapl(&stuff->colorScale, n); - swapl(&stuff->alphaScale, n); - swaps(&stuff->xSrc, n); - swaps(&stuff->ySrc, n); - swaps(&stuff->xDst, n); - swaps(&stuff->yDst, n); - swaps(&stuff->width, n); - swaps(&stuff->height, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderTrapezoids (ClientPtr client) -{ - register int n; - REQUEST(xRenderTrapezoidsReq); - - REQUEST_AT_LEAST_SIZE(xRenderTrapezoidsReq); - swaps (&stuff->length, n); - swapl (&stuff->src, n); - swapl (&stuff->dst, n); - swapl (&stuff->maskFormat, n); - swaps (&stuff->xSrc, n); - swaps (&stuff->ySrc, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderTriangles (ClientPtr client) -{ - register int n; - REQUEST(xRenderTrianglesReq); - - REQUEST_AT_LEAST_SIZE(xRenderTrianglesReq); - swaps (&stuff->length, n); - swapl (&stuff->src, n); - swapl (&stuff->dst, n); - swapl (&stuff->maskFormat, n); - swaps (&stuff->xSrc, n); - swaps (&stuff->ySrc, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderTriStrip (ClientPtr client) -{ - register int n; - REQUEST(xRenderTriStripReq); - - REQUEST_AT_LEAST_SIZE(xRenderTriStripReq); - swaps (&stuff->length, n); - swapl (&stuff->src, n); - swapl (&stuff->dst, n); - swapl (&stuff->maskFormat, n); - swaps (&stuff->xSrc, n); - swaps (&stuff->ySrc, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderTriFan (ClientPtr client) -{ - register int n; - REQUEST(xRenderTriFanReq); - - REQUEST_AT_LEAST_SIZE(xRenderTriFanReq); - swaps (&stuff->length, n); - swapl (&stuff->src, n); - swapl (&stuff->dst, n); - swapl (&stuff->maskFormat, n); - swaps (&stuff->xSrc, n); - swaps (&stuff->ySrc, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderColorTrapezoids (ClientPtr client) -{ - return BadImplementation; -} - -static int -SProcRenderColorTriangles (ClientPtr client) -{ - return BadImplementation; -} - -static int -SProcRenderTransform (ClientPtr client) -{ - return BadImplementation; -} - -static int -SProcRenderCreateGlyphSet (ClientPtr client) -{ - register int n; - REQUEST(xRenderCreateGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->gsid, n); - swapl(&stuff->format, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderReferenceGlyphSet (ClientPtr client) -{ - register int n; - REQUEST(xRenderReferenceGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->gsid, n); - swapl(&stuff->existing, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderFreeGlyphSet (ClientPtr client) -{ - register int n; - REQUEST(xRenderFreeGlyphSetReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderAddGlyphs (ClientPtr client) -{ - register int n; - register unsigned int i; - CARD32 *gids; - void *end; - xGlyphInfo *gi; - REQUEST(xRenderAddGlyphsReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - swapl(&stuff->nglyphs, n); - if (stuff->nglyphs & 0xe0000000) - return BadLength; - end = (CARD8 *) stuff + (client->req_len << 2); - gids = (CARD32 *) (stuff + 1); - gi = (xGlyphInfo *) (gids + stuff->nglyphs); - if ((char *) end - (char *) (gids + stuff->nglyphs) < 0) - return BadLength; - if ((char *) end - (char *) (gi + stuff->nglyphs) < 0) - return BadLength; - for (i = 0; i < stuff->nglyphs; i++) - { - swapl (&gids[i], n); - swaps (&gi[i].width, n); - swaps (&gi[i].height, n); - swaps (&gi[i].x, n); - swaps (&gi[i].y, n); - swaps (&gi[i].xOff, n); - swaps (&gi[i].yOff, n); - } - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderAddGlyphsFromPicture (ClientPtr client) -{ - return BadImplementation; -} - -static int -SProcRenderFreeGlyphs (ClientPtr client) -{ - register int n; - REQUEST(xRenderFreeGlyphsReq); - swaps(&stuff->length, n); - swapl(&stuff->glyphset, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderCompositeGlyphs (ClientPtr client) -{ - register int n; - xGlyphElt *elt; - CARD8 *buffer; - CARD8 *end; - int space; - int i; - int size; - - REQUEST(xRenderCompositeGlyphsReq); - - switch (stuff->renderReqType) { - default: size = 1; break; - case X_RenderCompositeGlyphs16: size = 2; break; - case X_RenderCompositeGlyphs32: size = 4; break; - } - - swaps(&stuff->length, n); - swapl(&stuff->src, n); - swapl(&stuff->dst, n); - swapl(&stuff->maskFormat, n); - swapl(&stuff->glyphset, n); - swaps(&stuff->xSrc, n); - swaps(&stuff->ySrc, n); - buffer = (CARD8 *) (stuff + 1); - end = (CARD8 *) stuff + (client->req_len << 2); - while (buffer + sizeof (xGlyphElt) < end) - { - elt = (xGlyphElt *) buffer; - buffer += sizeof (xGlyphElt); - - swaps (&elt->deltax, n); - swaps (&elt->deltay, n); - - i = elt->len; - if (i == 0xff) - { - swapl (buffer, n); - buffer += 4; - } - else - { - space = size * i; - switch (size) { - case 1: - buffer += i; - break; - case 2: - while (i--) - { - swaps (buffer, n); - buffer += 2; - } - break; - case 4: - while (i--) - { - swapl (buffer, n); - buffer += 4; - } - break; - } - if (space & 3) - buffer += 4 - (space & 3); - } - } - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderFillRectangles (ClientPtr client) -{ - register int n; - REQUEST(xRenderFillRectanglesReq); - - REQUEST_AT_LEAST_SIZE (xRenderFillRectanglesReq); - swaps(&stuff->length, n); - swapl(&stuff->dst, n); - swaps(&stuff->color.red, n); - swaps(&stuff->color.green, n); - swaps(&stuff->color.blue, n); - swaps(&stuff->color.alpha, n); - SwapRestS(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderCreateCursor (ClientPtr client) -{ - register int n; - REQUEST(xRenderCreateCursorReq); - REQUEST_SIZE_MATCH (xRenderCreateCursorReq); - - swaps(&stuff->length, n); - swapl(&stuff->cid, n); - swapl(&stuff->src, n); - swaps(&stuff->x, n); - swaps(&stuff->y, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderSetPictureTransform (ClientPtr client) -{ - register int n; - REQUEST(xRenderSetPictureTransformReq); - REQUEST_SIZE_MATCH(xRenderSetPictureTransformReq); - - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - swapl(&stuff->transform.matrix11, n); - swapl(&stuff->transform.matrix12, n); - swapl(&stuff->transform.matrix13, n); - swapl(&stuff->transform.matrix21, n); - swapl(&stuff->transform.matrix22, n); - swapl(&stuff->transform.matrix23, n); - swapl(&stuff->transform.matrix31, n); - swapl(&stuff->transform.matrix32, n); - swapl(&stuff->transform.matrix33, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderQueryFilters (ClientPtr client) -{ - register int n; - REQUEST (xRenderQueryFiltersReq); - REQUEST_SIZE_MATCH (xRenderQueryFiltersReq); - - swaps(&stuff->length, n); - swapl(&stuff->drawable, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderSetPictureFilter (ClientPtr client) -{ - register int n; - REQUEST (xRenderSetPictureFilterReq); - REQUEST_AT_LEAST_SIZE (xRenderSetPictureFilterReq); - - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - swaps(&stuff->nbytes, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderCreateAnimCursor (ClientPtr client) -{ - register int n; - REQUEST (xRenderCreateAnimCursorReq); - REQUEST_AT_LEAST_SIZE (xRenderCreateAnimCursorReq); - - swaps(&stuff->length, n); - swapl(&stuff->cid, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderAddTraps (ClientPtr client) -{ - register int n; - REQUEST (xRenderAddTrapsReq); - REQUEST_AT_LEAST_SIZE (xRenderAddTrapsReq); - - swaps(&stuff->length, n); - swapl(&stuff->picture, n); - swaps(&stuff->xOff, n); - swaps(&stuff->yOff, n); - SwapRestL(stuff); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderCreateSolidFill(ClientPtr client) -{ - register int n; - REQUEST (xRenderCreateSolidFillReq); - REQUEST_AT_LEAST_SIZE (xRenderCreateSolidFillReq); - - swaps(&stuff->length, n); - swapl(&stuff->pid, n); - swaps(&stuff->color.alpha, n); - swaps(&stuff->color.red, n); - swaps(&stuff->color.green, n); - swaps(&stuff->color.blue, n); - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static void swapStops(void *stuff, int num) -{ - int i, n; - CARD32 *stops; - CARD16 *colors; - stops = (CARD32 *)(stuff); - for (i = 0; i < num; ++i) { - swapl(stops, n); - ++stops; - } - colors = (CARD16 *)(stops); - for (i = 0; i < 4*num; ++i) { - swaps(stops, n); - ++stops; - } -} - -static int -SProcRenderCreateLinearGradient (ClientPtr client) -{ - register int n; - int len; - REQUEST (xRenderCreateLinearGradientReq); - REQUEST_AT_LEAST_SIZE (xRenderCreateLinearGradientReq); - - swaps(&stuff->length, n); - swapl(&stuff->pid, n); - swapl(&stuff->p1.x, n); - swapl(&stuff->p1.y, n); - swapl(&stuff->p2.x, n); - swapl(&stuff->p2.y, n); - swapl(&stuff->nStops, n); - - len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq); - if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - - swapStops(stuff+1, stuff->nStops); - - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderCreateRadialGradient (ClientPtr client) -{ - register int n; - int len; - REQUEST (xRenderCreateRadialGradientReq); - REQUEST_AT_LEAST_SIZE (xRenderCreateRadialGradientReq); - - swaps(&stuff->length, n); - swapl(&stuff->pid, n); - swapl(&stuff->inner.x, n); - swapl(&stuff->inner.y, n); - swapl(&stuff->outer.x, n); - swapl(&stuff->outer.y, n); - swapl(&stuff->inner_radius, n); - swapl(&stuff->outer_radius, n); - swapl(&stuff->nStops, n); - - len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq); - if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - - swapStops(stuff+1, stuff->nStops); - - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderCreateConicalGradient (ClientPtr client) -{ - register int n; - int len; - REQUEST (xRenderCreateConicalGradientReq); - REQUEST_AT_LEAST_SIZE (xRenderCreateConicalGradientReq); - - swaps(&stuff->length, n); - swapl(&stuff->pid, n); - swapl(&stuff->center.x, n); - swapl(&stuff->center.y, n); - swapl(&stuff->angle, n); - swapl(&stuff->nStops, n); - - len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq); - if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor))) - return BadLength; - - swapStops(stuff+1, stuff->nStops); - - return (*ProcRenderVector[stuff->renderReqType]) (client); -} - -static int -SProcRenderDispatch (ClientPtr client) -{ - int result; - - REQUEST(xReq); - - /* - * Let the client fail if we are - * hiding the RENDER extension. - */ - - if (nxagentRenderTrap) - { - return BadRequest; - } - - if (stuff->data < RenderNumberRequests) - { - /* - * Set the nxagentGCTrap flag while - * dispatching a render operation to - * avoid reentrancy in GCOps.c. - */ - - nxagentGCTrap = 1; - - result = (*SProcRenderVector[stuff->data]) (client); - - nxagentGCTrap = 0; - - return result; - } - else - return BadRequest; -} - -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" - -#define VERIFY_XIN_PICTURE(pPicture, pid, client, mode, err) {\ - pPicture = SecurityLookupIDByType(client, pid, XRT_PICTURE, mode);\ - if (!pPicture) { \ - client->errorValue = pid; \ - return err; \ - } \ -} - -#define VERIFY_XIN_ALPHA(pPicture, pid, client, mode, err) {\ - if (pid == None) \ - pPicture = 0; \ - else { \ - VERIFY_XIN_PICTURE(pPicture, pid, client, mode, err); \ - } \ -} \ - -int (*PanoramiXSaveRenderVector[RenderNumberRequests])(ClientPtr); - -unsigned long XRT_PICTURE; - -static int -PanoramiXRenderCreatePicture (ClientPtr client) -{ - REQUEST(xRenderCreatePictureReq); - PanoramiXRes *refDraw, *newPict; - int result = Success, j; - - REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq); - if(!(refDraw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - if(!(newPict = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)))) - return BadAlloc; - newPict->type = XRT_PICTURE; - newPict->info[0].id = stuff->pid; - - if (refDraw->type == XRT_WINDOW && - stuff->drawable == WindowTable[0]->drawable.id) - { - newPict->u.pict.root = TRUE; - } - else - newPict->u.pict.root = FALSE; - - for(j = 1; j < PanoramiXNumScreens; j++) - newPict->info[j].id = FakeClientID(client->index); - - FOR_NSCREENS_BACKWARD(j) { - stuff->pid = newPict->info[j].id; - stuff->drawable = refDraw->info[j].id; - result = (*PanoramiXSaveRenderVector[X_RenderCreatePicture]) (client); - if(result != Success) break; - } - - if (result == Success) - AddResource(newPict->info[0].id, XRT_PICTURE, newPict); - else - xfree(newPict); - - return (result); -} - -static int -PanoramiXRenderChangePicture (ClientPtr client) -{ - PanoramiXRes *pict; - int result = Success, j; - REQUEST(xRenderChangePictureReq); - - REQUEST_AT_LEAST_SIZE(xChangeWindowAttributesReq); - - VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - FOR_NSCREENS_BACKWARD(j) { - stuff->picture = pict->info[j].id; - result = (*PanoramiXSaveRenderVector[X_RenderChangePicture]) (client); - if(result != Success) break; - } - - return (result); -} - -static int -PanoramiXRenderSetPictureClipRectangles (ClientPtr client) -{ - REQUEST(xRenderSetPictureClipRectanglesReq); - int result = Success, j; - PanoramiXRes *pict; - - REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq); - - VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - FOR_NSCREENS_BACKWARD(j) { - stuff->picture = pict->info[j].id; - result = (*PanoramiXSaveRenderVector[X_RenderSetPictureClipRectangles]) (client); - if(result != Success) break; - } - - return (result); -} - -static int -PanoramiXRenderSetPictureTransform (ClientPtr client) -{ - REQUEST(xRenderSetPictureTransformReq); - int result = Success, j; - PanoramiXRes *pict; - - REQUEST_AT_LEAST_SIZE(xRenderSetPictureTransformReq); - - VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - FOR_NSCREENS_BACKWARD(j) { - stuff->picture = pict->info[j].id; - result = (*PanoramiXSaveRenderVector[X_RenderSetPictureTransform]) (client); - if(result != Success) break; - } - - return (result); -} - -static int -PanoramiXRenderSetPictureFilter (ClientPtr client) -{ - REQUEST(xRenderSetPictureFilterReq); - int result = Success, j; - PanoramiXRes *pict; - - REQUEST_AT_LEAST_SIZE(xRenderSetPictureFilterReq); - - VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - FOR_NSCREENS_BACKWARD(j) { - stuff->picture = pict->info[j].id; - result = (*PanoramiXSaveRenderVector[X_RenderSetPictureFilter]) (client); - if(result != Success) break; - } - - return (result); -} - -static int -PanoramiXRenderFreePicture (ClientPtr client) -{ - PanoramiXRes *pict; - int result = Success, j; - REQUEST(xRenderFreePictureReq); - - REQUEST_SIZE_MATCH(xRenderFreePictureReq); - - client->errorValue = stuff->picture; - - VERIFY_XIN_PICTURE(pict, stuff->picture, client, SecurityDestroyAccess, - RenderErrBase + BadPicture); - - - FOR_NSCREENS_BACKWARD(j) { - stuff->picture = pict->info[j].id; - result = (*PanoramiXSaveRenderVector[X_RenderFreePicture]) (client); - if(result != Success) break; - } - - /* Since ProcRenderFreePicture is using FreeResource, it will free - our resource for us on the last pass through the loop above */ - - return (result); -} - -static int -PanoramiXRenderComposite (ClientPtr client) -{ - PanoramiXRes *src, *msk, *dst; - int result = Success, j; - xRenderCompositeReq orig; - REQUEST(xRenderCompositeReq); - - REQUEST_SIZE_MATCH(xRenderCompositeReq); - - VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_XIN_ALPHA (msk, stuff->mask, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - orig = *stuff; - - FOR_NSCREENS_FORWARD(j) { - stuff->src = src->info[j].id; - if (src->u.pict.root) - { - stuff->xSrc = orig.xSrc - panoramiXdataPtr[j].x; - stuff->ySrc = orig.ySrc - panoramiXdataPtr[j].y; - } - stuff->dst = dst->info[j].id; - if (dst->u.pict.root) - { - stuff->xDst = orig.xDst - panoramiXdataPtr[j].x; - stuff->yDst = orig.yDst - panoramiXdataPtr[j].y; - } - if (msk) - { - stuff->mask = msk->info[j].id; - if (msk->u.pict.root) - { - stuff->xMask = orig.xMask - panoramiXdataPtr[j].x; - stuff->yMask = orig.yMask - panoramiXdataPtr[j].y; - } - } - result = (*PanoramiXSaveRenderVector[X_RenderComposite]) (client); - if(result != Success) break; - } - - return result; -} - -static int -PanoramiXRenderCompositeGlyphs (ClientPtr client) -{ - PanoramiXRes *src, *dst; - int result = Success, j; - REQUEST(xRenderCompositeGlyphsReq); - xGlyphElt origElt, *elt; - INT16 xSrc, ySrc; - - REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq); - VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - if (client->req_len << 2 >= (sizeof (xRenderCompositeGlyphsReq) + - sizeof (xGlyphElt))) - { - elt = (xGlyphElt *) (stuff + 1); - origElt = *elt; - xSrc = stuff->xSrc; - ySrc = stuff->ySrc; - FOR_NSCREENS_FORWARD(j) { - stuff->src = src->info[j].id; - if (src->u.pict.root) - { - stuff->xSrc = xSrc - panoramiXdataPtr[j].x; - stuff->ySrc = ySrc - panoramiXdataPtr[j].y; - } - stuff->dst = dst->info[j].id; - if (dst->u.pict.root) - { - elt->deltax = origElt.deltax - panoramiXdataPtr[j].x; - elt->deltay = origElt.deltay - panoramiXdataPtr[j].y; - } - result = (*PanoramiXSaveRenderVector[stuff->renderReqType]) (client); - if(result != Success) break; - } - } - - return result; -} - -static int -PanoramiXRenderFillRectangles (ClientPtr client) -{ - PanoramiXRes *dst; - int result = Success, j; - REQUEST(xRenderFillRectanglesReq); - char *extra; - int extra_len; - - REQUEST_AT_LEAST_SIZE (xRenderFillRectanglesReq); - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - extra_len = (client->req_len << 2) - sizeof (xRenderFillRectanglesReq); - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) - { - memcpy (extra, stuff + 1, extra_len); - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) - { - int x_off = panoramiXdataPtr[j].x; - int y_off = panoramiXdataPtr[j].y; - - if(x_off || y_off) { - xRectangle *rects = (xRectangle *) (stuff + 1); - int i = extra_len / sizeof (xRectangle); - - while (i--) - { - rects->x -= x_off; - rects->y -= y_off; - rects++; - } - } - } - stuff->dst = dst->info[j].id; - result = (*PanoramiXSaveRenderVector[X_RenderFillRectangles]) (client); - if(result != Success) break; - } - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -static int -PanoramiXRenderTrapezoids(ClientPtr client) -{ - PanoramiXRes *src, *dst; - int result = Success, j; - REQUEST(xRenderTrapezoidsReq); - char *extra; - int extra_len; - - REQUEST_AT_LEAST_SIZE (xRenderTrapezoidsReq); - - VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - extra_len = (client->req_len << 2) - sizeof (xRenderTrapezoidsReq); - - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) { - memcpy (extra, stuff + 1, extra_len); - - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = panoramiXdataPtr[j].x; - int y_off = panoramiXdataPtr[j].y; - - if(x_off || y_off) { - xTrapezoid *trap = (xTrapezoid *) (stuff + 1); - int i = extra_len / sizeof (xTrapezoid); - - while (i--) { - trap->top -= y_off; - trap->bottom -= y_off; - trap->left.p1.x -= x_off; - trap->left.p1.y -= y_off; - trap->left.p2.x -= x_off; - trap->left.p2.y -= y_off; - trap->right.p1.x -= x_off; - trap->right.p1.y -= y_off; - trap->right.p2.x -= x_off; - trap->right.p2.y -= y_off; - trap++; - } - } - } - - stuff->src = src->info[j].id; - stuff->dst = dst->info[j].id; - result = - (*PanoramiXSaveRenderVector[X_RenderTrapezoids]) (client); - - if(result != Success) break; - } - - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -static int -PanoramiXRenderTriangles(ClientPtr client) -{ - PanoramiXRes *src, *dst; - int result = Success, j; - REQUEST(xRenderTrianglesReq); - char *extra; - int extra_len; - - REQUEST_AT_LEAST_SIZE (xRenderTrianglesReq); - - VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - extra_len = (client->req_len << 2) - sizeof (xRenderTrianglesReq); - - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) { - memcpy (extra, stuff + 1, extra_len); - - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = panoramiXdataPtr[j].x; - int y_off = panoramiXdataPtr[j].y; - - if(x_off || y_off) { - xTriangle *tri = (xTriangle *) (stuff + 1); - int i = extra_len / sizeof (xTriangle); - - while (i--) { - tri->p1.x -= x_off; - tri->p1.y -= y_off; - tri->p2.x -= x_off; - tri->p2.y -= y_off; - tri->p3.x -= x_off; - tri->p3.y -= y_off; - tri++; - } - } - } - - stuff->src = src->info[j].id; - stuff->dst = dst->info[j].id; - result = - (*PanoramiXSaveRenderVector[X_RenderTriangles]) (client); - - if(result != Success) break; - } - - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -static int -PanoramiXRenderTriStrip(ClientPtr client) -{ - PanoramiXRes *src, *dst; - int result = Success, j; - REQUEST(xRenderTriStripReq); - char *extra; - int extra_len; - - REQUEST_AT_LEAST_SIZE (xRenderTriStripReq); - - VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - extra_len = (client->req_len << 2) - sizeof (xRenderTriStripReq); - - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) { - memcpy (extra, stuff + 1, extra_len); - - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = panoramiXdataPtr[j].x; - int y_off = panoramiXdataPtr[j].y; - - if(x_off || y_off) { - xPointFixed *fixed = (xPointFixed *) (stuff + 1); - int i = extra_len / sizeof (xPointFixed); - - while (i--) { - fixed->x -= x_off; - fixed->y -= y_off; - fixed++; - } - } - } - - stuff->src = src->info[j].id; - stuff->dst = dst->info[j].id; - result = - (*PanoramiXSaveRenderVector[X_RenderTriStrip]) (client); - - if(result != Success) break; - } - - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -static int -PanoramiXRenderTriFan(ClientPtr client) -{ - PanoramiXRes *src, *dst; - int result = Success, j; - REQUEST(xRenderTriFanReq); - char *extra; - int extra_len; - - REQUEST_AT_LEAST_SIZE (xRenderTriFanReq); - - VERIFY_XIN_PICTURE (src, stuff->src, client, SecurityReadAccess, - RenderErrBase + BadPicture); - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - extra_len = (client->req_len << 2) - sizeof (xRenderTriFanReq); - - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) { - memcpy (extra, stuff + 1, extra_len); - - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = panoramiXdataPtr[j].x; - int y_off = panoramiXdataPtr[j].y; - - if(x_off || y_off) { - xPointFixed *fixed = (xPointFixed *) (stuff + 1); - int i = extra_len / sizeof (xPointFixed); - - while (i--) { - fixed->x -= x_off; - fixed->y -= y_off; - fixed++; - } - } - } - - stuff->src = src->info[j].id; - stuff->dst = dst->info[j].id; - result = - (*PanoramiXSaveRenderVector[X_RenderTriFan]) (client); - - if(result != Success) break; - } - - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -#if 0 /* Not implemented yet */ - -static int -PanoramiXRenderColorTrapezoids(ClientPtr client) -{ - PanoramiXRes *src, *dst; - int result = Success, j; - REQUEST(xRenderColorTrapezoidsReq); - char *extra; - int extra_len; - - REQUEST_AT_LEAST_SIZE (xRenderColorTrapezoidsReq); - - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - extra_len = (client->req_len << 2) - sizeof (xRenderColorTrapezoidsReq); - - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) { - memcpy (extra, stuff + 1, extra_len); - - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = panoramiXdataPtr[j].x; - int y_off = panoramiXdataPtr[j].y; - - if(x_off || y_off) { - ....; - } - } - - stuff->dst = dst->info[j].id; - result = - (*PanoramiXSaveRenderVector[X_RenderColorTrapezoids]) (client); - - if(result != Success) break; - } - - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -static int -PanoramiXRenderColorTriangles(ClientPtr client) -{ - PanoramiXRes *src, *dst; - int result = Success, j; - REQUEST(xRenderColorTrianglesReq); - char *extra; - int extra_len; - - REQUEST_AT_LEAST_SIZE (xRenderColorTrianglesReq); - - VERIFY_XIN_PICTURE (dst, stuff->dst, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - - extra_len = (client->req_len << 2) - sizeof (xRenderColorTrianglesReq); - - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) { - memcpy (extra, stuff + 1, extra_len); - - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - if (dst->u.pict.root) { - int x_off = panoramiXdataPtr[j].x; - int y_off = panoramiXdataPtr[j].y; - - if(x_off || y_off) { - ....; - } - } - - stuff->dst = dst->info[j].id; - result = - (*PanoramiXSaveRenderVector[X_RenderColorTriangles]) (client); - - if(result != Success) break; - } - - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -#endif - -static int -PanoramiXRenderAddTraps (ClientPtr client) -{ - PanoramiXRes *picture; - int result = Success, j; - REQUEST(xRenderAddTrapsReq); - char *extra; - int extra_len; - INT16 x_off, y_off; - - REQUEST_AT_LEAST_SIZE (xRenderAddTrapsReq); - VERIFY_XIN_PICTURE (picture, stuff->picture, client, SecurityWriteAccess, - RenderErrBase + BadPicture); - extra_len = (client->req_len << 2) - sizeof (xRenderAddTrapsReq); - if (extra_len && - (extra = (char *) ALLOCATE_LOCAL (extra_len))) - { - memcpy (extra, stuff + 1, extra_len); - x_off = stuff->xOff; - y_off = stuff->yOff; - FOR_NSCREENS_FORWARD(j) { - if (j) memcpy (stuff + 1, extra, extra_len); - stuff->picture = picture->info[j].id; - - if (picture->u.pict.root) - { - stuff->xOff = x_off + panoramiXdataPtr[j].x; - stuff->yOff = y_off + panoramiXdataPtr[j].y; - } - result = (*PanoramiXSaveRenderVector[X_RenderAddTraps]) (client); - if(result != Success) break; - } - DEALLOCATE_LOCAL(extra); - } - - return result; -} - -void -PanoramiXRenderInit (void) -{ - int i; - - XRT_PICTURE = CreateNewResourceType (XineramaDeleteResource); - for (i = 0; i < RenderNumberRequests; i++) - PanoramiXSaveRenderVector[i] = ProcRenderVector[i]; - /* - * Stuff in Xinerama aware request processing hooks - */ - ProcRenderVector[X_RenderCreatePicture] = PanoramiXRenderCreatePicture; - ProcRenderVector[X_RenderChangePicture] = PanoramiXRenderChangePicture; - ProcRenderVector[X_RenderSetPictureTransform] = PanoramiXRenderSetPictureTransform; - ProcRenderVector[X_RenderSetPictureFilter] = PanoramiXRenderSetPictureFilter; - ProcRenderVector[X_RenderSetPictureClipRectangles] = PanoramiXRenderSetPictureClipRectangles; - ProcRenderVector[X_RenderFreePicture] = PanoramiXRenderFreePicture; - ProcRenderVector[X_RenderComposite] = PanoramiXRenderComposite; - ProcRenderVector[X_RenderCompositeGlyphs8] = PanoramiXRenderCompositeGlyphs; - ProcRenderVector[X_RenderCompositeGlyphs16] = PanoramiXRenderCompositeGlyphs; - ProcRenderVector[X_RenderCompositeGlyphs32] = PanoramiXRenderCompositeGlyphs; - ProcRenderVector[X_RenderFillRectangles] = PanoramiXRenderFillRectangles; - - ProcRenderVector[X_RenderTrapezoids] = PanoramiXRenderTrapezoids; - ProcRenderVector[X_RenderTriangles] = PanoramiXRenderTriangles; - ProcRenderVector[X_RenderTriStrip] = PanoramiXRenderTriStrip; - ProcRenderVector[X_RenderTriFan] = PanoramiXRenderTriFan; - ProcRenderVector[X_RenderAddTraps] = PanoramiXRenderAddTraps; -} - -void -PanoramiXRenderReset (void) -{ - int i; - for (i = 0; i < RenderNumberRequests; i++) - ProcRenderVector[i] = PanoramiXSaveRenderVector[i]; -} - -#endif /* PANORAMIX */ - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c deleted file mode 100644 index d1c8325..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c +++ /dev/null @@ -1,1250 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/************************************************************ - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -********************************************************/ -/* The panoramix components contained the following notice */ -/***************************************************************** - -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. - -******************************************************************/ - -/* $Xorg: resource.c,v 1.5 2001/02/09 02:04:40 xorgcvs Exp $ */ -/* $XdotOrg: xc/programs/Xserver/dix/resource.c,v 1.8 2005/07/03 08:53:38 daniels Exp $ */ -/* $TOG: resource.c /main/41 1998/02/09 14:20:31 kaleb $ */ - -/* Routines to manage various kinds of resources: - * - * CreateNewResourceType, CreateNewResourceClass, InitClientResources, - * FakeClientID, AddResource, FreeResource, FreeClientResources, - * FreeAllResources, LookupIDByType, LookupIDByClass, GetXIDRange - */ - -/* - * A resource ID is a 32 bit quantity, the upper 2 bits of which are - * off-limits for client-visible resources. The next 8 bits are - * used as client ID, and the low 22 bits come from the client. - * A resource ID is "hashed" by extracting and xoring subfields - * (varying with the size of the hash table). - * - * It is sometimes necessary for the server to create an ID that looks - * like it belongs to a client. This ID, however, must not be one - * the client actually can create, or we have the potential for conflict. - * The 31st bit of the ID is reserved for the server's use for this - * purpose. By setting CLIENT_ID(id) to the client, the SERVER_BIT to - * 1, and an otherwise arbitrary ID in the low 22 bits, we can create a - * resource "owned" by the client. - */ -/* $XFree86: xc/programs/Xserver/dix/resource.c,v 3.13 2003/09/24 02:43:13 dawes Exp $ */ - -#define NEED_EVENTS -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include "misc.h" -#include "os.h" -#include "resource.h" -#include "dixstruct.h" -#include "opaque.h" -#include "windowstr.h" -#include "dixfont.h" -#include "colormap.h" -#include "inputstr.h" -#include "dixevents.h" -#include "dixgrabs.h" -#include "cursor.h" -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" -#endif -#include <assert.h> - -#ifdef NXAGENT_SERVER - -#include "Agent.h" -#include "Font.h" -#include "Pixmaps.h" -#include "GCs.h" - -#define PANIC -#define WARNING -#undef TEST -#undef DEBUG - -#endif - -static void RebuildTable( - int /*client*/ -); - -#define SERVER_MINID 32 - -#define INITBUCKETS 64 -#define INITHASHSIZE 6 -#define MAXHASHSIZE 11 - -typedef struct _Resource { - struct _Resource *next; - XID id; - RESTYPE type; - pointer value; -} ResourceRec, *ResourcePtr; -#define NullResource ((ResourcePtr)NULL) - -typedef struct _ClientResource { - ResourcePtr *resources; - int elements; - int buckets; - int hashsize; /* log(2)(buckets) */ - XID fakeID; - XID endFakeID; - XID expectID; -} ClientResourceRec; - -RESTYPE lastResourceType; -static RESTYPE lastResourceClass; -RESTYPE TypeMask; - -static DeleteType *DeleteFuncs = (DeleteType *)NULL; - -#ifdef XResExtension - -Atom * ResourceNames = NULL; - -void RegisterResourceName (RESTYPE type, char *name) -{ - ResourceNames[type & TypeMask] = MakeAtom(name, strlen(name), TRUE); -} - -#endif - -#ifdef NXAGENT_SERVER -static int nxagentResChangedFlag = 0; -#endif - -RESTYPE -CreateNewResourceType(DeleteType deleteFunc) -{ - RESTYPE next = lastResourceType + 1; - DeleteType *funcs; - - if (next & lastResourceClass) - return 0; - funcs = (DeleteType *)xrealloc(DeleteFuncs, - (next + 1) * sizeof(DeleteType)); - if (!funcs) - return 0; - -#ifdef XResExtension - { - Atom *newnames; - newnames = xrealloc(ResourceNames, (next + 1) * sizeof(Atom)); - if(!newnames) - return 0; - ResourceNames = newnames; - ResourceNames[next] = 0; - } -#endif - - lastResourceType = next; - DeleteFuncs = funcs; - DeleteFuncs[next] = deleteFunc; - return next; -} - -RESTYPE -CreateNewResourceClass() -{ - RESTYPE next = lastResourceClass >> 1; - - if (next & lastResourceType) - return 0; - lastResourceClass = next; - TypeMask = next - 1; - return next; -} - -ClientResourceRec clientTable[MAXCLIENTS]; - -/***************** - * InitClientResources - * When a new client is created, call this to allocate space - * in resource table - *****************/ - -Bool -InitClientResources(ClientPtr client) -{ - register int i, j; - - if (client == serverClient) - { - lastResourceType = RT_LASTPREDEF; - lastResourceClass = RC_LASTPREDEF; - TypeMask = RC_LASTPREDEF - 1; - if (DeleteFuncs) - xfree(DeleteFuncs); - DeleteFuncs = (DeleteType *)xalloc((lastResourceType + 1) * - sizeof(DeleteType)); - if (!DeleteFuncs) - return FALSE; - DeleteFuncs[RT_NONE & TypeMask] = (DeleteType)NoopDDA; - DeleteFuncs[RT_WINDOW & TypeMask] = DeleteWindow; - DeleteFuncs[RT_PIXMAP & TypeMask] = dixDestroyPixmap; - DeleteFuncs[RT_GC & TypeMask] = FreeGC; - DeleteFuncs[RT_FONT & TypeMask] = CloseFont; - DeleteFuncs[RT_CURSOR & TypeMask] = FreeCursor; - DeleteFuncs[RT_COLORMAP & TypeMask] = FreeColormap; - DeleteFuncs[RT_CMAPENTRY & TypeMask] = FreeClientPixels; - DeleteFuncs[RT_OTHERCLIENT & TypeMask] = OtherClientGone; - DeleteFuncs[RT_PASSIVEGRAB & TypeMask] = DeletePassiveGrab; - -#ifdef XResExtension - if(ResourceNames) - xfree(ResourceNames); - ResourceNames = xalloc((lastResourceType + 1) * sizeof(Atom)); - if(!ResourceNames) - return FALSE; -#endif - } - clientTable[i = client->index].resources = - (ResourcePtr *)xalloc(INITBUCKETS*sizeof(ResourcePtr)); - if (!clientTable[i].resources) - return FALSE; - clientTable[i].buckets = INITBUCKETS; - clientTable[i].elements = 0; - clientTable[i].hashsize = INITHASHSIZE; - /* Many IDs allocated from the server client are visible to clients, - * so we don't use the SERVER_BIT for them, but we have to start - * past the magic value constants used in the protocol. For normal - * clients, we can start from zero, with SERVER_BIT set. - */ - clientTable[i].fakeID = client->clientAsMask | - (client->index ? SERVER_BIT : SERVER_MINID); - clientTable[i].endFakeID = (clientTable[i].fakeID | RESOURCE_ID_MASK) + 1; - clientTable[i].expectID = client->clientAsMask; - for (j=0; j<INITBUCKETS; j++) - { - clientTable[i].resources[j] = NullResource; - } - return TRUE; -} - - -static int -Hash(int client, register XID id) -{ - id &= RESOURCE_ID_MASK; - switch (clientTable[client].hashsize) - { - case 6: - return ((int)(0x03F & (id ^ (id>>6) ^ (id>>12)))); - case 7: - return ((int)(0x07F & (id ^ (id>>7) ^ (id>>13)))); - case 8: - return ((int)(0x0FF & (id ^ (id>>8) ^ (id>>16)))); - case 9: - return ((int)(0x1FF & (id ^ (id>>9)))); - case 10: - return ((int)(0x3FF & (id ^ (id>>10)))); - case 11: - return ((int)(0x7FF & (id ^ (id>>11)))); - } - return -1; -} - -static XID -AvailableID( - register int client, - register XID id, - register XID maxid, - register XID goodid) -{ - register ResourcePtr res; - - if ((goodid >= id) && (goodid <= maxid)) - return goodid; - for (; id <= maxid; id++) - { - res = clientTable[client].resources[Hash(client, id)]; - while (res && (res->id != id)) - res = res->next; - if (!res) - return id; - } - return 0; -} - -void -GetXIDRange(int client, Bool server, XID *minp, XID *maxp) -{ - register XID id, maxid; - register ResourcePtr *resp; - register ResourcePtr res; - register int i; - XID goodid; - - id = (Mask)client << CLIENTOFFSET; - if (server) - id |= client ? SERVER_BIT : SERVER_MINID; - maxid = id | RESOURCE_ID_MASK; - goodid = 0; - for (resp = clientTable[client].resources, i = clientTable[client].buckets; - --i >= 0;) - { - for (res = *resp++; res; res = res->next) - { - if ((res->id < id) || (res->id > maxid)) - continue; - if (((res->id - id) >= (maxid - res->id)) ? - (goodid = AvailableID(client, id, res->id - 1, goodid)) : - !(goodid = AvailableID(client, res->id + 1, maxid, goodid))) - maxid = res->id - 1; - else - id = res->id + 1; - } - } - if (id > maxid) - id = maxid = 0; - *minp = id; - *maxp = maxid; -} - -/** - * GetXIDList is called by the XC-MISC extension's MiscGetXIDList function. - * This function tries to find count unused XIDs for the given client. It - * puts the IDs in the array pids and returns the number found, which should - * almost always be the number requested. - * - * The circumstances that lead to a call to this function are very rare. - * Xlib must run out of IDs while trying to generate a request that wants - * multiple ID's, like the Multi-buffering CreateImageBuffers request. - * - * No rocket science in the implementation; just iterate over all - * possible IDs for the given client and pick the first count IDs - * that aren't in use. A more efficient algorithm could probably be - * invented, but this will be used so rarely that this should suffice. - */ - -unsigned int -GetXIDList(ClientPtr pClient, unsigned count, XID *pids) -{ - unsigned int found = 0; - XID id = pClient->clientAsMask; - XID maxid; - - maxid = id | RESOURCE_ID_MASK; - while ( (found < count) && (id <= maxid) ) - { - if (!LookupIDByClass(id, RC_ANY)) - { - pids[found++] = id; - } - id++; - } - return found; -} - -/* - * Return the next usable fake client ID. - * - * Normally this is just the next one in line, but if we've used the last - * in the range, we need to find a new range of safe IDs to avoid - * over-running another client. - */ - -XID -FakeClientID(register int client) -{ - XID id, maxid; - - id = clientTable[client].fakeID++; - if (id != clientTable[client].endFakeID) - return id; - GetXIDRange(client, TRUE, &id, &maxid); - if (!id) { - if (!client) - FatalError("FakeClientID: server internal ids exhausted\n"); - MarkClientException(clients[client]); - id = ((Mask)client << CLIENTOFFSET) | (SERVER_BIT * 3); - maxid = id | RESOURCE_ID_MASK; - } - clientTable[client].fakeID = id + 1; - clientTable[client].endFakeID = maxid + 1; - return id; -} - -#ifdef NXAGENT_SERVER - -int nxagentFindClientResource(int client, RESTYPE type, pointer value) -{ - ResourcePtr pResource; - ResourcePtr *resources; - - int i; - - for (i = 0; i < clientTable[client].buckets; i++) - { - resources = clientTable[client].resources; - - for (pResource = resources[i]; pResource; pResource = pResource -> next) - { - if (pResource -> type == type && pResource -> value == value) - { - #ifdef TEST - fprintf(stderr, "nxagentFindClientResource: Found resource [%p] type [%lu] " - "for client [%d].\n", (void *) value, - pResource -> type, client); - #endif - - return 1; - } - } - } - - return 0; -} - -int nxagentSwitchResourceType(int client, RESTYPE type, pointer value) -{ - ResourcePtr pResource; - ResourcePtr *resources; - - RESTYPE internalType = 0; - - int i; - - if (type == RT_PIXMAP) - { - internalType = RT_NX_PIXMAP; - } - else if (type == RT_GC) - { - internalType = RT_NX_GC; - } - else if (type == RT_FONT) - { - internalType = RT_NX_FONT; - } - else - { - return 0; - } - - if (client == serverClient -> index) - { - #ifdef TEST - fprintf(stderr, "nxagentSwitchResourceType: Requesting client is [%d]. Skipping the resource switch.\n", - client); - #endif - - return 0; - } - - for (i = 0; i < clientTable[serverClient -> index].buckets; i++) - { - resources = clientTable[serverClient -> index].resources; - - for (pResource = resources[i]; pResource; pResource = pResource -> next) - { - if (pResource -> type == internalType && - pResource -> value == value) - { - #ifdef TEST - fprintf(stderr, "nxagentSwitchResourceType: Changing resource [%p] type from [%lu] to " - "[%lu] for server client [%d].\n", (void *) value, - (unsigned long) pResource -> type, (unsigned long) type, serverClient -> index); - #endif - - FreeResource(pResource -> id, RT_NONE); - - return 1; - } - } - } - - return 0; -} - -#endif - -Bool -AddResource(XID id, RESTYPE type, pointer value) -{ - int client; - register ClientResourceRec *rrec; - register ResourcePtr res, *head; - - client = CLIENT_ID(id); - rrec = &clientTable[client]; - if (!rrec->buckets) - { - ErrorF("AddResource(%lx, %lx, %lx), client=%d \n", - (unsigned long)id, type, (unsigned long)value, client); - FatalError("client not in use\n"); - } - -#ifdef NXAGENT_SERVER - - nxagentSwitchResourceType(client, type, value); - - #ifdef TEST - fprintf(stderr, "AddResource: Adding resource for client [%d] type [%lu] value [%p] id [%lu].\n", - client, (unsigned long) type, (void *) value, (unsigned long) id); - #endif - -#endif - - if ((rrec->elements >= 4*rrec->buckets) && - (rrec->hashsize < MAXHASHSIZE)) - RebuildTable(client); - head = &rrec->resources[Hash(client, id)]; - res = (ResourcePtr)xalloc(sizeof(ResourceRec)); - if (!res) - { - (*DeleteFuncs[type & TypeMask])(value, id); - return FALSE; - } - res->next = *head; - res->id = id; - res->type = type; - res->value = value; - *head = res; - rrec->elements++; - #ifdef NXAGENT_SERVER - nxagentResChangedFlag = 1; - #endif - if (!(id & SERVER_BIT) && (id >= rrec->expectID)) - rrec->expectID = id + 1; - return TRUE; -} - -static void -RebuildTable(int client) -{ - register int j; - register ResourcePtr res, next; - ResourcePtr **tails, *resources; - register ResourcePtr **tptr, *rptr; - - /* - * For now, preserve insertion order, since some ddx layers depend - * on resources being free in the opposite order they are added. - */ - - j = 2 * clientTable[client].buckets; - tails = (ResourcePtr **)ALLOCATE_LOCAL(j * sizeof(ResourcePtr *)); - if (!tails) - return; - resources = (ResourcePtr *)xalloc(j * sizeof(ResourcePtr)); - if (!resources) - { - DEALLOCATE_LOCAL(tails); - return; - } - for (rptr = resources, tptr = tails; --j >= 0; rptr++, tptr++) - { - *rptr = NullResource; - *tptr = rptr; - } - clientTable[client].hashsize++; - for (j = clientTable[client].buckets, - rptr = clientTable[client].resources; - --j >= 0; - rptr++) - { - for (res = *rptr; res; res = next) - { - next = res->next; - res->next = NullResource; - tptr = &tails[Hash(client, res->id)]; - **tptr = res; - *tptr = &res->next; - } - } - DEALLOCATE_LOCAL(tails); - clientTable[client].buckets *= 2; - xfree(clientTable[client].resources); - clientTable[client].resources = resources; -} - -void -FreeResource(XID id, RESTYPE skipDeleteFuncType) -{ - int cid; - register ResourcePtr res; - register ResourcePtr *prev, *head; - register int *eltptr; - int elements; - Bool gotOne = FALSE; - -#ifdef NXAGENT_SERVER - - #ifdef TEST - fprintf(stderr, "FreeResource: Freeing resource id [%lu].\n", (unsigned long) id); - #endif - -#endif - - if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && clientTable[cid].buckets) - { - head = &clientTable[cid].resources[Hash(cid, id)]; - eltptr = &clientTable[cid].elements; - - prev = head; - while ( (res = *prev) ) - { - if (res->id == id) - { - RESTYPE rtype = res->type; - *prev = res->next; - elements = --*eltptr; - #ifdef NXAGENT_SERVER - nxagentResChangedFlag = 1; - #endif - if (rtype & RC_CACHED) - FlushClientCaches(res->id); - if (rtype != skipDeleteFuncType) - (*DeleteFuncs[rtype & TypeMask])(res->value, res->id); - xfree(res); - if (*eltptr != elements) - prev = head; /* prev may no longer be valid */ - gotOne = TRUE; - } - else - prev = &res->next; - } - if(clients[cid] && (id == clients[cid]->lastDrawableID)) - { - clients[cid]->lastDrawable = (DrawablePtr)WindowTable[0]; - clients[cid]->lastDrawableID = WindowTable[0]->drawable.id; - } - } - if (!gotOne) - ErrorF("Freeing resource id=%lX which isn't there.\n", - (unsigned long)id); -} - - -void -FreeResourceByType(XID id, RESTYPE type, Bool skipFree) -{ - int cid; - register ResourcePtr res; - register ResourcePtr *prev, *head; - if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && clientTable[cid].buckets) - { - head = &clientTable[cid].resources[Hash(cid, id)]; - - prev = head; - while ( (res = *prev) ) - { - if (res->id == id && res->type == type) - { - *prev = res->next; - #ifdef NXAGENT_SERVER - nxagentResChangedFlag = 1; - #endif - if (type & RC_CACHED) - FlushClientCaches(res->id); - if (!skipFree) - (*DeleteFuncs[type & TypeMask])(res->value, res->id); - xfree(res); - break; - } - else - prev = &res->next; - } - if(clients[cid] && (id == clients[cid]->lastDrawableID)) - { - clients[cid]->lastDrawable = (DrawablePtr)WindowTable[0]; - clients[cid]->lastDrawableID = WindowTable[0]->drawable.id; - } - } -} - -/* - * Change the value associated with a resource id. Caller - * is responsible for "doing the right thing" with the old - * data - */ - -Bool -ChangeResourceValue (XID id, RESTYPE rtype, pointer value) -{ - int cid; - register ResourcePtr res; - - if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && clientTable[cid].buckets) - { - res = clientTable[cid].resources[Hash(cid, id)]; - - for (; res; res = res->next) - if ((res->id == id) && (res->type == rtype)) - { - if (rtype & RC_CACHED) - FlushClientCaches(res->id); - res->value = value; - return TRUE; - } - } - return FALSE; -} - -/* Note: if func adds or deletes resources, then func can get called - * more than once for some resources. If func adds new resources, - * func might or might not get called for them. func cannot both - * add and delete an equal number of resources! - */ - -void -FindClientResourcesByType( - ClientPtr client, - RESTYPE type, - FindResType func, - pointer cdata -){ - register ResourcePtr *resources; - register ResourcePtr this, next; - int i, elements; - register int *eltptr; - - #ifdef NXAGENT_SERVER - register ResourcePtr **resptr; - #endif - - if (!client) - client = serverClient; - -/* - * If func triggers a resource table - * rebuild then restart the loop. - */ - -#ifdef NXAGENT_SERVER -RestartLoop: -#endif - - resources = clientTable[client->index].resources; - - #ifdef NXAGENT_SERVER - resptr = &clientTable[client->index].resources; - #endif - - eltptr = &clientTable[client->index].elements; - for (i = 0; i < clientTable[client->index].buckets; i++) - { - for (this = resources[i]; this; this = next) - { - next = this->next; - if (!type || this->type == type) { - elements = *eltptr; - - /* - * FIXME: - * It is not safe to let a function change the resource - * table we are reading! - */ - - #ifdef NXAGENT_SERVER - nxagentResChangedFlag = 0; - #endif - (*func)(this->value, this->id, cdata); - - /* - * Avoid that a call to RebuildTable() could invalidate the - * pointer. This is safe enough, because in RebuildTable() - * the new pointer is allocated just before the old one is - * freed, so it can't point to the same address. - */ - - #ifdef NXAGENT_SERVER - if (*resptr != resources) - goto RestartLoop; - #endif - - /* - * It's not enough to check if the number of elements has - * changed, beacause it could happen that the number of - * resources that have been added matches the number of - * the freed ones. - * 'nxagentResChangedFlag' is set if a resource has been - * added or freed. - */ - - #ifdef NXAGENT_SERVER - if (*eltptr != elements || nxagentResChangedFlag) - #else - if (*eltptr != elements) - #endif - next = resources[i]; /* start over */ - } - } - } -} - -void -FindAllClientResources( - ClientPtr client, - FindAllRes func, - pointer cdata -){ - register ResourcePtr *resources; - register ResourcePtr this, next; - int i, elements; - register int *eltptr; - - #ifdef NXAGENT_SERVER - register ResourcePtr **resptr; - #endif - - if (!client) - client = serverClient; - -/* - * If func triggers a resource table - * rebuild then restart the loop. - */ - -#ifdef NXAGENT_SERVER -RestartLoop: -#endif - - resources = clientTable[client->index].resources; - - #ifdef NXAGENT_SERVER - resptr = &clientTable[client->index].resources; - #endif - - eltptr = &clientTable[client->index].elements; - for (i = 0; i < clientTable[client->index].buckets; i++) - { - for (this = resources[i]; this; this = next) - { - next = this->next; - elements = *eltptr; - - /* - * FIXME: - * It is not safe to let a function change the resource - * table we are reading! - */ - - #ifdef NXAGENT_SERVER - nxagentResChangedFlag = 0; - #endif - (*func)(this->value, this->id, this->type, cdata); - - /* - * Avoid that a call to RebuildTable() could invalidate the - * pointer. This is safe enough, because in RebuildTable() - * the new pointer is allocated just before the old one is - * freed, so it can't point to the same address. - */ - - #ifdef NXAGENT_SERVER - if (*resptr != resources) - goto RestartLoop; - #endif - - /* - * It's not enough to check if the number of elements has - * changed, beacause it could happen that the number of - * resources that have been added matches the number of - * the freed ones. - * 'nxagentResChangedFlag' is set if a resource has been - * added or freed. - */ - - #ifdef NXAGENT_SERVER - if (*eltptr != elements || nxagentResChangedFlag) - #else - if (*eltptr != elements) - #endif - next = resources[i]; /* start over */ - } - } -} - - -pointer -LookupClientResourceComplex( - ClientPtr client, - RESTYPE type, - FindComplexResType func, - pointer cdata -){ - ResourcePtr *resources; - ResourcePtr this; - int i; - - #ifdef NXAGENT_SERVER - ResourcePtr **resptr; - Bool res; - #endif - - if (!client) - client = serverClient; - -/* - * If func triggers a resource table - * rebuild then restart the loop. - */ - -#ifdef NXAGENT_SERVER -RestartLoop: -#endif - - resources = clientTable[client->index].resources; - - #ifdef NXAGENT_SERVER - resptr = &clientTable[client->index].resources; - #endif - - for (i = 0; i < clientTable[client->index].buckets; i++) { - for (this = resources[i]; this; this = this->next) { - if (!type || this->type == type) { - #ifdef NXAGENT_SERVER - res = (*func)(this->value, this->id, cdata); - - if (*resptr != resources) - goto RestartLoop; - - if (res) - return this->value; - #else - if((*func)(this->value, this->id, cdata)) - return this->value; - #endif - } - } - } - return NULL; -} - - -void -FreeClientNeverRetainResources(ClientPtr client) -{ - ResourcePtr *resources; - ResourcePtr this; - ResourcePtr *prev; - int j; - - if (!client) - return; - - resources = clientTable[client->index].resources; - for (j=0; j < clientTable[client->index].buckets; j++) - { - prev = &resources[j]; - while ( (this = *prev) ) - { - RESTYPE rtype = this->type; - if (rtype & RC_NEVERRETAIN) - { - *prev = this->next; - if (rtype & RC_CACHED) - FlushClientCaches(this->id); - (*DeleteFuncs[rtype & TypeMask])(this->value, this->id); - xfree(this); - } - else - prev = &this->next; - } - } -} - -void -FreeClientResources(ClientPtr client) -{ - register ResourcePtr *resources; - register ResourcePtr this; - int j; - - /* This routine shouldn't be called with a null client, but just in - case ... */ - - if (!client) - return; - - HandleSaveSet(client); - - resources = clientTable[client->index].resources; - for (j=0; j < clientTable[client->index].buckets; j++) - { - /* It may seem silly to update the head of this resource list as - we delete the members, since the entire list will be deleted any way, - but there are some resource deletion functions "FreeClientPixels" for - one which do a LookupID on another resource id (a Colormap id in this - case), so the resource list must be kept valid up to the point that - it is deleted, so every time we delete a resource, we must update the - head, just like in FreeResource. I hope that this doesn't slow down - mass deletion appreciably. PRH */ - - ResourcePtr *head; - - head = &resources[j]; - - for (this = *head; this; this = *head) - { - RESTYPE rtype = this->type; - *head = this->next; - if (rtype & RC_CACHED) - FlushClientCaches(this->id); - (*DeleteFuncs[rtype & TypeMask])(this->value, this->id); - xfree(this); - } - } - xfree(clientTable[client->index].resources); - clientTable[client->index].resources = NULL; - clientTable[client->index].buckets = 0; -} - -void -FreeAllResources() -{ - int i; - - for (i = currentMaxClients; --i >= 0; ) - { - if (clientTable[i].buckets) - FreeClientResources(clients[i]); - } -} - -Bool -LegalNewID(XID id, register ClientPtr client) -{ - -#ifdef PANORAMIX - XID minid, maxid; - - if (!noPanoramiXExtension) { - minid = client->clientAsMask | (client->index ? - SERVER_BIT : SERVER_MINID); - maxid = (clientTable[client->index].fakeID | RESOURCE_ID_MASK) + 1; - if ((id >= minid) && (id <= maxid)) - return TRUE; - } -#endif /* PANORAMIX */ - return ((client->clientAsMask == (id & ~RESOURCE_ID_MASK)) && - ((clientTable[client->index].expectID <= id) || - !LookupIDByClass(id, RC_ANY))); -} - -#ifdef XCSECURITY - -/* SecurityLookupIDByType and SecurityLookupIDByClass: - * These are the heart of the resource ID security system. They take - * two additional arguments compared to the old LookupID functions: - * the client doing the lookup, and the access mode (see resource.h). - * The resource is returned if it exists and the client is allowed access, - * else NULL is returned. - */ - -pointer -SecurityLookupIDByType(ClientPtr client, XID id, RESTYPE rtype, Mask mode) -{ - int cid; - register ResourcePtr res; - pointer retval = NULL; - - assert(client == NullClient || - (client->index <= currentMaxClients && clients[client->index] == client)); - assert( (rtype & TypeMask) <= lastResourceType); - - if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && - clientTable[cid].buckets) - { - res = clientTable[cid].resources[Hash(cid, id)]; - - for (; res; res = res->next) - if ((res->id == id) && (res->type == rtype)) - { - retval = res->value; - break; - } - } - if (retval && client && client->CheckAccess) - retval = (* client->CheckAccess)(client, id, rtype, mode, retval); - return retval; -} - - -pointer -SecurityLookupIDByClass(ClientPtr client, XID id, RESTYPE classes, Mask mode) -{ - int cid; - register ResourcePtr res = NULL; - pointer retval = NULL; - - assert(client == NullClient || - (client->index <= currentMaxClients && clients[client->index] == client)); - assert (classes >= lastResourceClass); - - if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && - clientTable[cid].buckets) - { - res = clientTable[cid].resources[Hash(cid, id)]; - - for (; res; res = res->next) - if ((res->id == id) && (res->type & classes)) - { - retval = res->value; - break; - } - } - if (retval && client && client->CheckAccess) - retval = (* client->CheckAccess)(client, id, res->type, mode, retval); - return retval; -} - -/* We can't replace the LookupIDByType and LookupIDByClass functions with - * macros because of compatibility with loadable servers. - */ - -pointer -LookupIDByType(XID id, RESTYPE rtype) -{ - return SecurityLookupIDByType(NullClient, id, rtype, - SecurityUnknownAccess); -} - -pointer -LookupIDByClass(XID id, RESTYPE classes) -{ - return SecurityLookupIDByClass(NullClient, id, classes, - SecurityUnknownAccess); -} - -#else /* not XCSECURITY */ - -/* - * LookupIDByType returns the object with the given id and type, else NULL. - */ -pointer -LookupIDByType(XID id, RESTYPE rtype) -{ - int cid; - register ResourcePtr res; - - if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && - clientTable[cid].buckets) - { - res = clientTable[cid].resources[Hash(cid, id)]; - - for (; res; res = res->next) - if ((res->id == id) && (res->type == rtype)) - return res->value; - } - return (pointer)NULL; -} - -/* - * LookupIDByClass returns the object with the given id and any one of the - * given classes, else NULL. - */ -pointer -LookupIDByClass(XID id, RESTYPE classes) -{ - int cid; - register ResourcePtr res; - - if (((cid = CLIENT_ID(id)) < MAXCLIENTS) && - clientTable[cid].buckets) - { - res = clientTable[cid].resources[Hash(cid, id)]; - - for (; res; res = res->next) - if ((res->id == id) && (res->type & classes)) - return res->value; - } - return (pointer)NULL; -} - -#endif /* XCSECURITY */ - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c deleted file mode 100644 index eaaa920..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c +++ /dev/null @@ -1,1498 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XFree86: xc/programs/Xserver/Xext/shm.c,v 3.41 2003/12/17 23:28:56 alanh Exp $ */ -/************************************************************ - -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -********************************************************/ - -/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */ - -/* $Xorg: shm.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $ */ - -#define SHM - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <sys/types.h> -#ifndef Lynx -#include <sys/ipc.h> -#include <sys/shm.h> -#else -#include <ipc.h> -#include <shm.h> -#endif -#include <unistd.h> -#include <sys/stat.h> -#define NEED_REPLIES -#define NEED_EVENTS -#include <X11/X.h> -#include <X11/Xproto.h> -#include "misc.h" -#include "os.h" -#include "dixstruct.h" -#include "resource.h" -#include "scrnintstr.h" -#include "windowstr.h" -#include "pixmapstr.h" -#include "gcstruct.h" -#include "extnsionst.h" -#include "servermd.h" -#define _XSHM_SERVER_ -#include <X11/extensions/shmstr.h> -#include <X11/Xfuncproto.h> -#ifdef EXTMODULE -#include "xf86_ansic.h" -#endif - -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" -#endif - -#include "modinit.h" - -#include "Trap.h" -#include "Agent.h" -#include "Drawable.h" -#include "Pixmaps.h" - -/* - * Set here the required log level. - */ - -#define PANIC -#define WARNING -#undef TEST -#undef DEBUG - -#ifdef TEST -#include "Literals.h" -#endif - -extern void fbGetImage(DrawablePtr pDrw, int x, int y, int w, int h, - unsigned int format, unsigned long planeMask, char *d); - -extern void fbPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth, - int x, int y, int w, int h, int leftPad, int format, - char *pImage); - -typedef struct _ShmDesc { - struct _ShmDesc *next; - int shmid; - int refcnt; - char *addr; - Bool writable; - unsigned long size; -} ShmDescRec, *ShmDescPtr; - -static void miShmPutImage(XSHM_PUT_IMAGE_ARGS); -static void fbShmPutImage(XSHM_PUT_IMAGE_ARGS); -static PixmapPtr fbShmCreatePixmap(XSHM_CREATE_PIXMAP_ARGS); -static int ShmDetachSegment( - pointer /* value */, - XID /* shmseg */ - ); -static void ShmResetProc( - ExtensionEntry * /* extEntry */ - ); -static void SShmCompletionEvent( - xShmCompletionEvent * /* from */, - xShmCompletionEvent * /* to */ - ); - -static Bool ShmDestroyPixmap (PixmapPtr pPixmap); - -static DISPATCH_PROC(ProcShmAttach); -static DISPATCH_PROC(ProcShmCreatePixmap); -static DISPATCH_PROC(ProcShmDetach); -static DISPATCH_PROC(ProcShmDispatch); -static DISPATCH_PROC(ProcShmGetImage); -static DISPATCH_PROC(ProcShmPutImage); -static DISPATCH_PROC(ProcShmQueryVersion); -static DISPATCH_PROC(SProcShmAttach); -static DISPATCH_PROC(SProcShmCreatePixmap); -static DISPATCH_PROC(SProcShmDetach); -static DISPATCH_PROC(SProcShmDispatch); -static DISPATCH_PROC(SProcShmGetImage); -static DISPATCH_PROC(SProcShmPutImage); -static DISPATCH_PROC(SProcShmQueryVersion); - -static unsigned char ShmReqCode; -int ShmCompletionCode; -int BadShmSegCode; -RESTYPE ShmSegType; -static ShmDescPtr Shmsegs; -static Bool sharedPixmaps; -static int pixmapFormat; -static int shmPixFormat[MAXSCREENS]; -static ShmFuncsPtr shmFuncs[MAXSCREENS]; -static DestroyPixmapProcPtr destroyPixmap[MAXSCREENS]; -#ifdef PIXPRIV -static int shmPixmapPrivate; -#endif -static ShmFuncs miFuncs = {NULL, miShmPutImage}; -static ShmFuncs fbFuncs = {fbShmCreatePixmap, fbShmPutImage}; - -#define VERIFY_SHMSEG(shmseg,shmdesc,client) \ -{ \ - shmdesc = (ShmDescPtr)LookupIDByType(shmseg, ShmSegType); \ - if (!shmdesc) \ - { \ - client->errorValue = shmseg; \ - return BadShmSegCode; \ - } \ -} - -#define VERIFY_SHMPTR(shmseg,offset,needwrite,shmdesc,client) \ -{ \ - VERIFY_SHMSEG(shmseg, shmdesc, client); \ - if ((offset & 3) || (offset > shmdesc->size)) \ - { \ - client->errorValue = offset; \ - return BadValue; \ - } \ - if (needwrite && !shmdesc->writable) \ - return BadAccess; \ -} - -#define VERIFY_SHMSIZE(shmdesc,offset,len,client) \ -{ \ - if ((offset + len) > shmdesc->size) \ - { \ - return BadAccess; \ - } \ -} - - -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__CYGWIN__) -#include <sys/signal.h> - -static Bool badSysCall = FALSE; - -static void -SigSysHandler(signo) -int signo; -{ - badSysCall = TRUE; -} - -static Bool CheckForShmSyscall() -{ - void (*oldHandler)(); - int shmid = -1; - - /* If no SHM support in the kernel, the bad syscall will generate SIGSYS */ - oldHandler = signal(SIGSYS, SigSysHandler); - - badSysCall = FALSE; - shmid = shmget(IPC_PRIVATE, 4096, IPC_CREAT); - - if (shmid != -1) - { - /* Successful allocation - clean up */ - shmctl(shmid, IPC_RMID, (struct shmid_ds *)NULL); - } - else - { - /* Allocation failed */ - badSysCall = TRUE; - } - signal(SIGSYS, oldHandler); - return(!badSysCall); -} - -#define MUST_CHECK_FOR_SHM_SYSCALL - -#endif - -void -ShmExtensionInit(INITARGS) -{ - ExtensionEntry *extEntry; - int i; - -#ifdef MUST_CHECK_FOR_SHM_SYSCALL - if (!CheckForShmSyscall()) - { - ErrorF("MIT-SHM extension disabled due to lack of kernel support\n"); - return; - } -#endif - - if (nxagentOption(SharedMemory) == False) - { - return; - } - - sharedPixmaps = xFalse; - pixmapFormat = 0; - { - sharedPixmaps = nxagentOption(SharedPixmaps); - pixmapFormat = shmPixFormat[0]; - for (i = 0; i < screenInfo.numScreens; i++) - { - if (!shmFuncs[i]) - { - #ifdef TEST - fprintf(stderr, "ShmExtensionInit: Registering shmFuncs as miFuncs.\n"); - #endif - shmFuncs[i] = &miFuncs; - } - if (!shmFuncs[i]->CreatePixmap) - sharedPixmaps = xFalse; - if (shmPixFormat[i] && (shmPixFormat[i] != pixmapFormat)) - { - sharedPixmaps = xFalse; - pixmapFormat = 0; - } - } - if (!pixmapFormat) - pixmapFormat = ZPixmap; - if (sharedPixmaps) - { - for (i = 0; i < screenInfo.numScreens; i++) - { - destroyPixmap[i] = screenInfo.screens[i]->DestroyPixmap; - screenInfo.screens[i]->DestroyPixmap = ShmDestroyPixmap; - } -#ifdef PIXPRIV - shmPixmapPrivate = AllocatePixmapPrivateIndex(); - for (i = 0; i < screenInfo.numScreens; i++) - { - if (!AllocatePixmapPrivate(screenInfo.screens[i], - shmPixmapPrivate, 0)) - return; - } -#endif - } - } - ShmSegType = CreateNewResourceType(ShmDetachSegment); - if (ShmSegType && - (extEntry = AddExtension(SHMNAME, ShmNumberEvents, ShmNumberErrors, - ProcShmDispatch, SProcShmDispatch, - ShmResetProc, StandardMinorOpcode))) - { - ShmReqCode = (unsigned char)extEntry->base; - ShmCompletionCode = extEntry->eventBase; - BadShmSegCode = extEntry->errorBase; - EventSwapVector[ShmCompletionCode] = (EventSwapPtr) SShmCompletionEvent; - } -} - -/*ARGSUSED*/ -static void -ShmResetProc (extEntry) -ExtensionEntry *extEntry; -{ - int i; - - for (i = 0; i < MAXSCREENS; i++) - { - shmFuncs[i] = (ShmFuncsPtr)NULL; - shmPixFormat[i] = 0; - } -} - -void -ShmRegisterFuncs( - ScreenPtr pScreen, - ShmFuncsPtr funcs) -{ - shmFuncs[pScreen->myNum] = funcs; -} - -void -ShmSetPixmapFormat( - ScreenPtr pScreen, - int format) -{ - shmPixFormat[pScreen->myNum] = format; -} - -static Bool -ShmDestroyPixmap (PixmapPtr pPixmap) -{ - ScreenPtr pScreen = pPixmap->drawable.pScreen; - Bool ret; - if (pPixmap->refcnt == 1) - { - ShmDescPtr shmdesc; -#ifdef PIXPRIV - shmdesc = (ShmDescPtr) pPixmap->devPrivates[shmPixmapPrivate].ptr; -#else - char *base = (char *) pPixmap->devPrivate.ptr; - - if (base != (pointer) (pPixmap + 1)) - { - for (shmdesc = Shmsegs; shmdesc; shmdesc = shmdesc->next) - { - if (shmdesc->addr <= base && base <= shmdesc->addr + shmdesc->size) - break; - } - } - else - shmdesc = 0; -#endif - if (shmdesc) - ShmDetachSegment ((pointer) shmdesc, pPixmap->drawable.id); - } - - pScreen->DestroyPixmap = destroyPixmap[pScreen->myNum]; - ret = (*pScreen->DestroyPixmap) (pPixmap); - destroyPixmap[pScreen->myNum] = pScreen->DestroyPixmap; - pScreen->DestroyPixmap = ShmDestroyPixmap; - return ret; -} - -void -ShmRegisterFbFuncs(pScreen) - ScreenPtr pScreen; -{ - #ifdef TEST - fprintf(stderr, "ShmRegisterFbFuncs: Registering shmFuncs as fbFuncs.\n"); - #endif - shmFuncs[pScreen->myNum] = &fbFuncs; -} - -static int -ProcShmQueryVersion(client) - register ClientPtr client; -{ - xShmQueryVersionReply rep; - register int n; - - REQUEST_SIZE_MATCH(xShmQueryVersionReq); - rep.type = X_Reply; - rep.length = 0; - rep.sequenceNumber = client->sequence; - rep.sharedPixmaps = sharedPixmaps; - rep.pixmapFormat = pixmapFormat; - rep.majorVersion = SHM_MAJOR_VERSION; - rep.minorVersion = SHM_MINOR_VERSION; - rep.uid = geteuid(); - rep.gid = getegid(); - if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swaps(&rep.majorVersion, n); - swaps(&rep.minorVersion, n); - swaps(&rep.uid, n); - swaps(&rep.gid, n); - } - WriteToClient(client, sizeof(xShmQueryVersionReply), (char *)&rep); - return (client->noClientException); -} - -/* - * Simulate the access() system call for a shared memory segement, - * using the credentials from the client if available - */ -static int -shm_access(ClientPtr client, struct ipc_perm *perm, int readonly) -{ - int uid, gid; - mode_t mask; - - if (LocalClientCred(client, &uid, &gid) != -1) { - - /* User id 0 always gets access */ - if (uid == 0) { - return 0; - } - /* Check the owner */ - if (perm->uid == uid || perm->cuid == uid) { - mask = S_IRUSR; - if (!readonly) { - mask |= S_IWUSR; - } - return (perm->mode & mask) == mask ? 0 : -1; - } - /* Check the group */ - if (perm->gid == gid || perm->cgid == gid) { - mask = S_IRGRP; - if (!readonly) { - mask |= S_IWGRP; - } - return (perm->mode & mask) == mask ? 0 : -1; - } - } - /* Otherwise, check everyone else */ - mask = S_IROTH; - if (!readonly) { - mask |= S_IWOTH; - } - return (perm->mode & mask) == mask ? 0 : -1; -} - -static int -ProcShmAttach(client) - register ClientPtr client; -{ - struct shmid_ds buf; - ShmDescPtr shmdesc; - REQUEST(xShmAttachReq); - - REQUEST_SIZE_MATCH(xShmAttachReq); - LEGAL_NEW_RESOURCE(stuff->shmseg, client); - if ((stuff->readOnly != xTrue) && (stuff->readOnly != xFalse)) - { - client->errorValue = stuff->readOnly; - return(BadValue); - } - for (shmdesc = Shmsegs; - shmdesc && (shmdesc->shmid != stuff->shmid); - shmdesc = shmdesc->next) - ; - if (shmdesc) - { - if (!stuff->readOnly && !shmdesc->writable) - return BadAccess; - shmdesc->refcnt++; - } - else - { - shmdesc = (ShmDescPtr) xalloc(sizeof(ShmDescRec)); - if (!shmdesc) - return BadAlloc; - shmdesc->addr = shmat(stuff->shmid, 0, - stuff->readOnly ? SHM_RDONLY : 0); - if ((shmdesc->addr == ((char *)-1)) || - shmctl(stuff->shmid, IPC_STAT, &buf)) - { - xfree(shmdesc); - return BadAccess; - } - - /* The attach was performed with root privs. We must - * do manual checking of access rights for the credentials - * of the client */ - - if (shm_access(client, &(buf.shm_perm), stuff->readOnly) == -1) { - shmdt(shmdesc->addr); - xfree(shmdesc); - return BadAccess; - } - - shmdesc->shmid = stuff->shmid; - shmdesc->refcnt = 1; - shmdesc->writable = !stuff->readOnly; - shmdesc->size = buf.shm_segsz; - shmdesc->next = Shmsegs; - Shmsegs = shmdesc; - } - if (!AddResource(stuff->shmseg, ShmSegType, (pointer)shmdesc)) - return BadAlloc; - return(client->noClientException); -} - -/*ARGSUSED*/ -static int -ShmDetachSegment(value, shmseg) - pointer value; /* must conform to DeleteType */ - XID shmseg; -{ - ShmDescPtr shmdesc = (ShmDescPtr)value; - ShmDescPtr *prev; - - if (--shmdesc->refcnt) - return TRUE; - shmdt(shmdesc->addr); - for (prev = &Shmsegs; *prev != shmdesc; prev = &(*prev)->next) - ; - *prev = shmdesc->next; - xfree(shmdesc); - return Success; -} - -static int -ProcShmDetach(client) - register ClientPtr client; -{ - ShmDescPtr shmdesc; - REQUEST(xShmDetachReq); - - REQUEST_SIZE_MATCH(xShmDetachReq); - VERIFY_SHMSEG(stuff->shmseg, shmdesc, client); - FreeResource(stuff->shmseg, RT_NONE); - return(client->noClientException); -} - -static void -miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) - DrawablePtr dst; - GCPtr pGC; - int depth, w, h, sx, sy, sw, sh, dx, dy; - unsigned int format; - char *data; -{ - PixmapPtr pmap; - GCPtr putGC; - - nxagentShmTrap = 0; - putGC = GetScratchGC(depth, dst->pScreen); - if (!putGC) - { - nxagentShmTrap = 1; - return; - } - pmap = (*dst->pScreen->CreatePixmap)(dst->pScreen, sw, sh, depth); - if (!pmap) - { - nxagentShmTrap = 1; - FreeScratchGC(putGC); - return; - } - ValidateGC((DrawablePtr)pmap, putGC); - (*putGC->ops->PutImage)((DrawablePtr)pmap, putGC, depth, -sx, -sy, w, h, 0, - (format == XYPixmap) ? XYPixmap : ZPixmap, data); - FreeScratchGC(putGC); - if (format == XYBitmap) - (void)(*pGC->ops->CopyPlane)((DrawablePtr)pmap, dst, pGC, 0, 0, sw, sh, - dx, dy, 1L); - else - (void)(*pGC->ops->CopyArea)((DrawablePtr)pmap, dst, pGC, 0, 0, sw, sh, - dx, dy); - (*pmap->drawable.pScreen->DestroyPixmap)(pmap); - nxagentShmTrap = 1; -} - -static void -fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) - DrawablePtr dst; - GCPtr pGC; - int depth, w, h, sx, sy, sw, sh, dx, dy; - unsigned int format; - char *data; -{ - int length; - char *newdata; - extern int nxagentImageLength(int, int, int, int, int); - - #ifdef TEST - fprintf(stderr, "fbShmPutImage: Called with drawable at [%p] GC at [%p] data at [%p].\n", - (void *) dst, (void *) pGC, (void *) data); - #endif - - if ((format == ZPixmap) || (depth == 1)) - { - PixmapPtr pPixmap; - - pPixmap = GetScratchPixmapHeader(dst->pScreen, w, h, depth, - BitsPerPixel(depth), PixmapBytePad(w, depth), (pointer)data); - if (!pPixmap) - return; - if (format == XYBitmap) - (void)(*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, dst, pGC, - sx, sy, sw, sh, dx, dy, 1L); - else - (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, dst, pGC, - sx, sy, sw, sh, dx, dy); - - /* - * We updated the internal framebuffer, - * now we want to go on the real X. - */ - - #ifdef TEST - fprintf(stderr, "fbShmPutImage: Realizing the PutImage with depth [%d] " - " format [%d] w [%d] h [%d] sx [%d] sy [%d] sw [%d] " - " sh [%d] dx [%d].\n", depth, format, w, h, - sx, sy, sw, sh, dx); - #endif - - length = nxagentImageLength(sw, sh, format, 0, depth); - - if ((newdata = xalloc(length)) != NULL) - { - fbGetImage((DrawablePtr) pPixmap, sx, sy, sw, sh, format, AllPlanes, newdata); - (*pGC->ops->PutImage)(dst, pGC, depth, dx, dy, sw, sh, 0, format, newdata); - - xfree(newdata); - } - else - { - #ifdef WARNING - fprintf(stderr, "fbShmPutImage: WARNING! Data allocation failed.\n"); - #endif - } - - FreeScratchPixmapHeader(pPixmap); - } - else - { - #ifdef TEST - fprintf(stderr, "fbShmPutImage: Calling miShmPutImage().\n"); - #endif - miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, - data); - } -} - - -#ifdef PANORAMIX -static int -ProcPanoramiXShmPutImage(register ClientPtr client) -{ - int j, result = 0, orig_x, orig_y; - PanoramiXRes *draw, *gc; - Bool sendEvent, isRoot; - - REQUEST(xShmPutImageReq); - REQUEST_SIZE_MATCH(xShmPutImageReq); - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, SecurityReadAccess))) - return BadGC; - - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - - orig_x = stuff->dstX; - orig_y = stuff->dstY; - sendEvent = stuff->sendEvent; - stuff->sendEvent = 0; - FOR_NSCREENS(j) { - if(!j) stuff->sendEvent = sendEvent; - stuff->drawable = draw->info[j].id; - stuff->gc = gc->info[j].id; - if (isRoot) { - stuff->dstX = orig_x - panoramiXdataPtr[j].x; - stuff->dstY = orig_y - panoramiXdataPtr[j].y; - } - result = ProcShmPutImage(client); - if(result != client->noClientException) break; - } - return(result); -} - -static int -ProcPanoramiXShmGetImage(ClientPtr client) -{ - PanoramiXRes *draw; - DrawablePtr drawables[MAXSCREENS]; - DrawablePtr pDraw; - xShmGetImageReply xgi; - ShmDescPtr shmdesc; - int i, x, y, w, h, format; - Mask plane = 0, planemask; - long lenPer = 0, length, widthBytesLine; - Bool isRoot; - - REQUEST(xShmGetImageReq); - - REQUEST_SIZE_MATCH(xShmGetImageReq); - - if ((stuff->format != XYPixmap) && (stuff->format != ZPixmap)) { - client->errorValue = stuff->format; - return(BadValue); - } - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - - if (draw->type == XRT_PIXMAP) - return ProcShmGetImage(client); - - VERIFY_DRAWABLE(pDraw, stuff->drawable, client); - - VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client); - - x = stuff->x; - y = stuff->y; - w = stuff->width; - h = stuff->height; - format = stuff->format; - planemask = stuff->planeMask; - - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - - if(isRoot) { - if( /* check for being onscreen */ - x < 0 || x + w > PanoramiXPixWidth || - y < 0 || y + h > PanoramiXPixHeight ) - return(BadMatch); - } else { - if( /* check for being onscreen */ - panoramiXdataPtr[0].x + pDraw->x + x < 0 || - panoramiXdataPtr[0].x + pDraw->x + x + w > PanoramiXPixWidth || - panoramiXdataPtr[0].y + pDraw->y + y < 0 || - panoramiXdataPtr[0].y + pDraw->y + y + h > PanoramiXPixHeight || - /* check for being inside of border */ - x < - wBorderWidth((WindowPtr)pDraw) || - x + w > wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width || - y < -wBorderWidth((WindowPtr)pDraw) || - y + h > wBorderWidth ((WindowPtr)pDraw) + (int)pDraw->height) - return(BadMatch); - } - - drawables[0] = pDraw; - for(i = 1; i < PanoramiXNumScreens; i++) - VERIFY_DRAWABLE(drawables[i], draw->info[i].id, client); - - xgi.visual = wVisual(((WindowPtr)pDraw)); - xgi.type = X_Reply; - xgi.length = 0; - xgi.sequenceNumber = client->sequence; - xgi.depth = pDraw->depth; - - if(format == ZPixmap) { - widthBytesLine = PixmapBytePad(w, pDraw->depth); - length = widthBytesLine * h; - } else { - widthBytesLine = PixmapBytePad(w, 1); - lenPer = widthBytesLine * h; - plane = ((Mask)1) << (pDraw->depth - 1); - length = lenPer * Ones(planemask & (plane | (plane - 1))); - } - - VERIFY_SHMSIZE(shmdesc, stuff->offset, length, client); - xgi.size = length; - - if (length == 0) {/* nothing to do */ } - else if (format == ZPixmap) { - XineramaGetImageData(drawables, x, y, w, h, format, planemask, - shmdesc->addr + stuff->offset, - widthBytesLine, isRoot); - } else { - - length = stuff->offset; - for (; plane; plane >>= 1) { - if (planemask & plane) { - XineramaGetImageData(drawables, x, y, w, h, - format, plane, shmdesc->addr + length, - widthBytesLine, isRoot); - length += lenPer; - } - } - } - - if (client->swapped) { - register int n; - swaps(&xgi.sequenceNumber, n); - swapl(&xgi.length, n); - swapl(&xgi.visual, n); - swapl(&xgi.size, n); - } - WriteToClient(client, sizeof(xShmGetImageReply), (char *)&xgi); - - return(client->noClientException); -} - -static int -ProcPanoramiXShmCreatePixmap( - register ClientPtr client) -{ - ScreenPtr pScreen = NULL; - PixmapPtr pMap = NULL; - DrawablePtr pDraw; - DepthPtr pDepth; - int i, j, result; - ShmDescPtr shmdesc; - REQUEST(xShmCreatePixmapReq); - unsigned int width, height, depth; - unsigned long size; - PanoramiXRes *newPix; - - REQUEST_SIZE_MATCH(xShmCreatePixmapReq); - client->errorValue = stuff->pid; - if (!sharedPixmaps) - return BadImplementation; - LEGAL_NEW_RESOURCE(stuff->pid, client); - VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client); - VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client); - - width = stuff->width; - height = stuff->height; - depth = stuff->depth; - if (!width || !height || !depth) - { - client->errorValue = 0; - return BadValue; - } - if (width > 32767 || height > 32767) - return BadAlloc; - - if (stuff->depth != 1) - { - pDepth = pDraw->pScreen->allowedDepths; - for (i=0; i<pDraw->pScreen->numDepths; i++, pDepth++) - if (pDepth->depth == stuff->depth) - goto CreatePmap; - client->errorValue = stuff->depth; - return BadValue; - } - -CreatePmap: - size = PixmapBytePad(width, depth) * height; - if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) { - if (size < width * height) - return BadAlloc; - /* thankfully, offset is unsigned */ - if (stuff->offset + size < size) - return BadAlloc; - } - - VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client); - - if(!(newPix = (PanoramiXRes *) xalloc(sizeof(PanoramiXRes)))) - return BadAlloc; - - newPix->type = XRT_PIXMAP; - newPix->u.pix.shared = TRUE; - newPix->info[0].id = stuff->pid; - for(j = 1; j < PanoramiXNumScreens; j++) - newPix->info[j].id = FakeClientID(client->index); - - result = (client->noClientException); - - FOR_NSCREENS(j) { - pScreen = screenInfo.screens[j]; - - pMap = (*shmFuncs[j]->CreatePixmap)(pScreen, - stuff->width, stuff->height, stuff->depth, - shmdesc->addr + stuff->offset); - - if (pMap) { -#ifdef PIXPRIV - pMap->devPrivates[shmPixmapPrivate].ptr = (pointer) shmdesc; -#endif - shmdesc->refcnt++; - pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER; - pMap->drawable.id = newPix->info[j].id; - if (!AddResource(newPix->info[j].id, RT_PIXMAP, (pointer)pMap)) { - (*pScreen->DestroyPixmap)(pMap); - result = BadAlloc; - break; - } - } else { - result = BadAlloc; - break; - } - } - - if(result == BadAlloc) { - while(j--) { - (*pScreen->DestroyPixmap)(pMap); - FreeResource(newPix->info[j].id, RT_NONE); - } - xfree(newPix); - } else - AddResource(stuff->pid, XRT_PIXMAP, newPix); - - return result; -} - -#endif - -static int -ProcShmPutImage(client) - register ClientPtr client; -{ - register GCPtr pGC; - register DrawablePtr pDraw; - long length; - ShmDescPtr shmdesc; - REQUEST(xShmPutImageReq); - - REQUEST_SIZE_MATCH(xShmPutImageReq); - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - VERIFY_SHMPTR(stuff->shmseg, stuff->offset, FALSE, shmdesc, client); - if ((stuff->sendEvent != xTrue) && (stuff->sendEvent != xFalse)) - return BadValue; - if (stuff->format == XYBitmap) - { - if (stuff->depth != 1) - return BadMatch; - length = PixmapBytePad(stuff->totalWidth, 1); - } - else if (stuff->format == XYPixmap) - { - if (pDraw->depth != stuff->depth) - return BadMatch; - length = PixmapBytePad(stuff->totalWidth, 1); - length *= stuff->depth; - } - else if (stuff->format == ZPixmap) - { - if (pDraw->depth != stuff->depth) - return BadMatch; - length = PixmapBytePad(stuff->totalWidth, stuff->depth); - } - else - { - client->errorValue = stuff->format; - return BadValue; - } - - /* - * There's a potential integer overflow in this check: - * VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight, - * client); - * the version below ought to avoid it - */ - if (stuff->totalHeight != 0 && - length > (shmdesc->size - stuff->offset)/stuff->totalHeight) { - client->errorValue = stuff->totalWidth; - return BadValue; - } - if (stuff->srcX > stuff->totalWidth) - { - client->errorValue = stuff->srcX; - return BadValue; - } - if (stuff->srcY > stuff->totalHeight) - { - client->errorValue = stuff->srcY; - return BadValue; - } - if ((stuff->srcX + stuff->srcWidth) > stuff->totalWidth) - { - client->errorValue = stuff->srcWidth; - return BadValue; - } - if ((stuff->srcY + stuff->srcHeight) > stuff->totalHeight) - { - client->errorValue = stuff->srcHeight; - return BadValue; - } - - #ifdef TEST - fprintf(stderr, "ProcShmPutImage: Format [%d] srcX [%d] srcY [%d], " - "totalWidth [%d] totalHeight [%d]\n", stuff->format, stuff->srcX, - stuff->srcY, stuff->totalWidth, stuff->totalHeight); - #endif - - #ifdef TEST - fprintf(stderr, "ProcShmPutImage: Calling (*shmFuncs[pDraw->pScreen->myNum]->PutImage)().\n"); - #endif - - (*shmFuncs[pDraw->pScreen->myNum]->PutImage)( - pDraw, pGC, stuff->depth, stuff->format, - stuff->totalWidth, stuff->totalHeight, - stuff->srcX, stuff->srcY, - stuff->srcWidth, stuff->srcHeight, - stuff->dstX, stuff->dstY, - shmdesc->addr + stuff->offset); - - if (stuff->sendEvent) - { - xShmCompletionEvent ev; - - ev.type = ShmCompletionCode; - ev.drawable = stuff->drawable; - ev.sequenceNumber = client->sequence; - ev.minorEvent = X_ShmPutImage; - ev.majorEvent = ShmReqCode; - ev.shmseg = stuff->shmseg; - ev.offset = stuff->offset; - WriteEventsToClient(client, 1, (xEvent *) &ev); - } - - return (client->noClientException); -} - - - -static int -ProcShmGetImage(client) - register ClientPtr client; -{ - register DrawablePtr pDraw; - long lenPer = 0, length; - Mask plane = 0; - xShmGetImageReply xgi; - ShmDescPtr shmdesc; - int n; - - REQUEST(xShmGetImageReq); - - REQUEST_SIZE_MATCH(xShmGetImageReq); - if ((stuff->format != XYPixmap) && (stuff->format != ZPixmap)) - { - client->errorValue = stuff->format; - return(BadValue); - } - VERIFY_DRAWABLE(pDraw, stuff->drawable, client); - VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client); - if (pDraw->type == DRAWABLE_WINDOW) - { - if( /* check for being viewable */ - !((WindowPtr) pDraw)->realized || - /* check for being on screen */ - pDraw->x + stuff->x < 0 || - pDraw->x + stuff->x + (int)stuff->width > pDraw->pScreen->width || - pDraw->y + stuff->y < 0 || - pDraw->y + stuff->y + (int)stuff->height > pDraw->pScreen->height || - /* check for being inside of border */ - stuff->x < - wBorderWidth((WindowPtr)pDraw) || - stuff->x + (int)stuff->width > - wBorderWidth((WindowPtr)pDraw) + (int)pDraw->width || - stuff->y < -wBorderWidth((WindowPtr)pDraw) || - stuff->y + (int)stuff->height > - wBorderWidth((WindowPtr)pDraw) + (int)pDraw->height - ) - return(BadMatch); - xgi.visual = wVisual(((WindowPtr)pDraw)); - } - else - { - if (stuff->x < 0 || - stuff->x+(int)stuff->width > pDraw->width || - stuff->y < 0 || - stuff->y+(int)stuff->height > pDraw->height - ) - return(BadMatch); - xgi.visual = None; - } - xgi.type = X_Reply; - xgi.length = 0; - xgi.sequenceNumber = client->sequence; - xgi.depth = pDraw->depth; - if(stuff->format == ZPixmap) - { - length = PixmapBytePad(stuff->width, pDraw->depth) * stuff->height; - } - else - { - lenPer = PixmapBytePad(stuff->width, 1) * stuff->height; - plane = ((Mask)1) << (pDraw->depth - 1); - /* only planes asked for */ - length = lenPer * Ones(stuff->planeMask & (plane | (plane - 1))); - } - - VERIFY_SHMSIZE(shmdesc, stuff->offset, length, client); - xgi.size = length; - - if (length == 0) - { - /* nothing to do */ - } - else if (stuff->format == ZPixmap) - { - (*pDraw->pScreen->GetImage)(pDraw, stuff->x, stuff->y, - stuff->width, stuff->height, - stuff->format, stuff->planeMask, - shmdesc->addr + stuff->offset); - } - else - { - - length = stuff->offset; - for (; plane; plane >>= 1) - { - if (stuff->planeMask & plane) - { - (*pDraw->pScreen->GetImage)(pDraw, - stuff->x, stuff->y, - stuff->width, stuff->height, - stuff->format, plane, - shmdesc->addr + length); - length += lenPer; - } - } - } - - if (client->swapped) { - swaps(&xgi.sequenceNumber, n); - swapl(&xgi.length, n); - swapl(&xgi.visual, n); - swapl(&xgi.size, n); - } - WriteToClient(client, sizeof(xShmGetImageReply), (char *)&xgi); - - return(client->noClientException); -} - -static PixmapPtr -fbShmCreatePixmap (pScreen, width, height, depth, addr) - ScreenPtr pScreen; - int width; - int height; - int depth; - char *addr; -{ - register PixmapPtr pPixmap; - - nxagentShmPixmapTrap = 1; - - pPixmap = (*pScreen->CreatePixmap)(pScreen, width, height, depth); - - if (!pPixmap) - { - nxagentShmPixmapTrap = 0; - - return NullPixmap; - } - - #ifdef TEST - fprintf(stderr,"fbShmCreatePixmap: Width [%d] Height [%d] Depth [%d]\n", width, height, depth); - #endif - - if (!(*pScreen->ModifyPixmapHeader)(pPixmap, width, height, depth, - BitsPerPixel(depth), PixmapBytePad(width, depth), (pointer)addr)) - { - #ifdef WARNING - fprintf(stderr,"fbShmCreatePixmap: Return Null Pixmap.\n"); - #endif - - (*pScreen->DestroyPixmap)(pPixmap); - - nxagentShmPixmapTrap = 0; - - return NullPixmap; - } - - nxagentShmPixmapTrap = 0; - - return pPixmap; -} - -static int -ProcShmCreatePixmap(client) - register ClientPtr client; -{ - PixmapPtr pMap; - register DrawablePtr pDraw; - DepthPtr pDepth; - register int i; - ShmDescPtr shmdesc; - REQUEST(xShmCreatePixmapReq); - unsigned int width, height, depth; - unsigned long size; - - REQUEST_SIZE_MATCH(xShmCreatePixmapReq); - client->errorValue = stuff->pid; - if (!sharedPixmaps) - return BadImplementation; - LEGAL_NEW_RESOURCE(stuff->pid, client); - VERIFY_GEOMETRABLE(pDraw, stuff->drawable, client); - VERIFY_SHMPTR(stuff->shmseg, stuff->offset, TRUE, shmdesc, client); - - width = stuff->width; - height = stuff->height; - depth = stuff->depth; - if (!width || !height || !depth) - { - client->errorValue = 0; - return BadValue; - } - if (width > 32767 || height > 32767) - return BadAlloc; - - if (stuff->depth != 1) - { - pDepth = pDraw->pScreen->allowedDepths; - for (i=0; i<pDraw->pScreen->numDepths; i++, pDepth++) - if (pDepth->depth == stuff->depth) - goto CreatePmap; - client->errorValue = stuff->depth; - return BadValue; - } - -CreatePmap: - size = PixmapBytePad(width, depth) * height; - if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) { - if (size < width * height) - return BadAlloc; - /* thankfully, offset is unsigned */ - if (stuff->offset + size < size) - return BadAlloc; - } - - VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client); - pMap = (*shmFuncs[pDraw->pScreen->myNum]->CreatePixmap)( - pDraw->pScreen, stuff->width, - stuff->height, stuff->depth, - shmdesc->addr + stuff->offset); - if (pMap) - { -#ifdef PIXPRIV - pMap->devPrivates[shmPixmapPrivate].ptr = (pointer) shmdesc; -#endif - shmdesc->refcnt++; - pMap->drawable.serialNumber = NEXT_SERIAL_NUMBER; - pMap->drawable.id = stuff->pid; - if (AddResource(stuff->pid, RT_PIXMAP, (pointer)pMap)) - { - return(client->noClientException); - } - } - return (BadAlloc); -} - -static int -ProcShmDispatch (client) - register ClientPtr client; -{ - REQUEST(xReq); - - #ifdef TEST - fprintf(stderr, "ProcShmDispatch: Going to execute operation [%d] for client [%d].\n", - stuff -> data, client -> index); - - if (stuff->data <= X_ShmCreatePixmap) - { - fprintf(stderr, "ProcShmDispatch: Request [%s] OPCODE#%d.\n", - nxagentShmRequestLiteral[stuff->data], stuff->data); - } - #endif - - switch (stuff->data) - { - case X_ShmQueryVersion: - return ProcShmQueryVersion(client); - case X_ShmAttach: - return ProcShmAttach(client); - case X_ShmDetach: - return ProcShmDetach(client); - case X_ShmPutImage: - { - int result; - - #ifdef TEST - fprintf(stderr, "ProcShmDispatch: Going to execute ProcShmPutImage() for client [%d].\n", - client -> index); - #endif - - nxagentShmTrap = 1; - -#ifdef PANORAMIX - if ( !noPanoramiXExtension ) - { - result = ProcPanoramiXShmPutImage(client); - - nxagentShmTrap = 0; - - return result; - } -#endif - - result = ProcShmPutImage(client); - - nxagentShmTrap = 0; - - #ifdef TEST - fprintf(stderr, "ProcShmDispatch: Returning from ProcShmPutImage() for client [%d].\n", - client -> index); - #endif - - return result; - } - case X_ShmGetImage: -#ifdef PANORAMIX - if ( !noPanoramiXExtension ) - return ProcPanoramiXShmGetImage(client); -#endif - return ProcShmGetImage(client); - case X_ShmCreatePixmap: -#ifdef PANORAMIX - if ( !noPanoramiXExtension ) - return ProcPanoramiXShmCreatePixmap(client); -#endif - return ProcShmCreatePixmap(client); - default: - return BadRequest; - } -} - -static void -SShmCompletionEvent(from, to) - xShmCompletionEvent *from, *to; -{ - to->type = from->type; - cpswaps(from->sequenceNumber, to->sequenceNumber); - cpswapl(from->drawable, to->drawable); - cpswaps(from->minorEvent, to->minorEvent); - to->majorEvent = from->majorEvent; - cpswapl(from->shmseg, to->shmseg); - cpswapl(from->offset, to->offset); -} - -static int -SProcShmQueryVersion(client) - register ClientPtr client; -{ - register int n; - REQUEST(xShmQueryVersionReq); - - swaps(&stuff->length, n); - return ProcShmQueryVersion(client); -} - -static int -SProcShmAttach(client) - ClientPtr client; -{ - register int n; - REQUEST(xShmAttachReq); - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xShmAttachReq); - swapl(&stuff->shmseg, n); - swapl(&stuff->shmid, n); - return ProcShmAttach(client); -} - -static int -SProcShmDetach(client) - ClientPtr client; -{ - register int n; - REQUEST(xShmDetachReq); - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xShmDetachReq); - swapl(&stuff->shmseg, n); - return ProcShmDetach(client); -} - -static int -SProcShmPutImage(client) - ClientPtr client; -{ - register int n; - REQUEST(xShmPutImageReq); - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xShmPutImageReq); - swapl(&stuff->drawable, n); - swapl(&stuff->gc, n); - swaps(&stuff->totalWidth, n); - swaps(&stuff->totalHeight, n); - swaps(&stuff->srcX, n); - swaps(&stuff->srcY, n); - swaps(&stuff->srcWidth, n); - swaps(&stuff->srcHeight, n); - swaps(&stuff->dstX, n); - swaps(&stuff->dstY, n); - swapl(&stuff->shmseg, n); - swapl(&stuff->offset, n); - return ProcShmPutImage(client); -} - -static int -SProcShmGetImage(client) - ClientPtr client; -{ - register int n; - REQUEST(xShmGetImageReq); - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xShmGetImageReq); - swapl(&stuff->drawable, n); - swaps(&stuff->x, n); - swaps(&stuff->y, n); - swaps(&stuff->width, n); - swaps(&stuff->height, n); - swapl(&stuff->planeMask, n); - swapl(&stuff->shmseg, n); - swapl(&stuff->offset, n); - return ProcShmGetImage(client); -} - -static int -SProcShmCreatePixmap(client) - ClientPtr client; -{ - register int n; - REQUEST(xShmCreatePixmapReq); - swaps(&stuff->length, n); - REQUEST_SIZE_MATCH(xShmCreatePixmapReq); - swapl(&stuff->pid, n); - swapl(&stuff->drawable, n); - swaps(&stuff->width, n); - swaps(&stuff->height, n); - swapl(&stuff->shmseg, n); - swapl(&stuff->offset, n); - return ProcShmCreatePixmap(client); -} - -static int -SProcShmDispatch (client) - register ClientPtr client; -{ - REQUEST(xReq); - - #ifdef TEST - fprintf(stderr, "SProcShmDispatch: Going to execute operation [%d] for client [%d].\n", - stuff -> data, client -> index); - #endif - - switch (stuff->data) - { - case X_ShmQueryVersion: - return SProcShmQueryVersion(client); - case X_ShmAttach: - return SProcShmAttach(client); - case X_ShmDetach: - return SProcShmDetach(client); - case X_ShmPutImage: - { - int result; - - #ifdef TEST - fprintf(stderr, "SProcShmDispatch: Going to execute SProcShmPutImage() for client [%d].\n", - client -> index); - #endif - - nxagentShmTrap = 1; - - result = SProcShmPutImage(client); - - nxagentShmTrap = 0; - - #ifdef TEST - fprintf(stderr, "SProcShmDispatch: Returning from SProcShmPutImage() for client [%d].\n", - client -> index); - #endif - - return result; - } - case X_ShmGetImage: - return SProcShmGetImage(client); - case X_ShmCreatePixmap: - return SProcShmCreatePixmap(client); - default: - return BadRequest; - } -} - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c deleted file mode 100644 index 76e86fd..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c +++ /dev/null @@ -1,4167 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XdotOrg: xc/programs/Xserver/dix/window.c,v 1.12 2005/07/03 08:53:38 daniels Exp $ */ -/* $Xorg: window.c,v 1.4 2001/02/09 02:04:41 xorgcvs Exp $ */ -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - - -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -*/ - -/* The panoramix components contained the following notice */ -/***************************************************************** - -Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, -BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Digital Equipment Corporation -shall not be used in advertising or otherwise to promote the sale, use or other -dealings in this Software without prior written authorization from Digital -Equipment Corporation. - -******************************************************************/ - -/* $XFree86: xc/programs/Xserver/dix/window.c,v 3.36 2003/11/14 23:52:50 torrey Exp $ */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "misc.h" -#include "scrnintstr.h" -#include "os.h" -#include "regionstr.h" -#include "validate.h" -#include "windowstr.h" -#include "input.h" -#include "resource.h" -#include "colormapst.h" -#include "cursorstr.h" -#include "dixstruct.h" -#include "gcstruct.h" -#include "servermd.h" -#include "selection.h" -#ifdef PANORAMIX -#include "../../Xext/panoramiX.h" -#include "../../Xext/panoramiXsrv.h" -#endif -#include "dixevents.h" -#include "globals.h" - -#ifdef XAPPGROUP -#include <X11/extensions/Xagsrv.h> -#endif -#ifdef XCSECURITY -#define _SECURITY_SERVER -#include <X11/extensions/security.h> -#endif - -#include "Screen.h" -#include "Options.h" -#include "Atoms.h" -#include "Clipboard.h" -#include "Splash.h" -#include "Rootless.h" -#include "Composite.h" -#include "Drawable.h" -#include "Colormap.h" - -extern Bool nxagentWMIsRunning; -extern Bool nxagentScreenTrap; - -/****** - * Window stuff for server - * - * CreateRootWindow, CreateWindow, ChangeWindowAttributes, - * GetWindowAttributes, DeleteWindow, DestroySubWindows, - * HandleSaveSet, ReparentWindow, MapWindow, MapSubWindows, - * UnmapWindow, UnmapSubWindows, ConfigureWindow, CirculateWindow, - * - ******/ - -static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11}; -static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88}; - -int screenIsSaved = SCREEN_SAVER_OFF; - -ScreenSaverStuffRec savedScreenInfo[MAXSCREENS]; - -#if 0 -extern void DeleteWindowFromAnyEvents(); -extern Mask EventMaskForClient(); -extern void WindowHasNewCursor(); -extern void RecalculateDeliverableEvents(); -#endif - -static Bool TileScreenSaver(int i, int kind); - - -#define INPUTONLY_LEGAL_MASK (CWWinGravity | CWEventMask | \ - CWDontPropagate | CWOverrideRedirect | CWCursor ) - -#define BOXES_OVERLAP(b1, b2) \ - (!( ((b1)->x2 <= (b2)->x1) || \ - ( ((b1)->x1 >= (b2)->x2)) || \ - ( ((b1)->y2 <= (b2)->y1)) || \ - ( ((b1)->y1 >= (b2)->y2)) ) ) - -#define RedirectSend(pWin) \ - ((pWin->eventMask|wOtherEventMasks(pWin)) & SubstructureRedirectMask) - -#define SubSend(pWin) \ - ((pWin->eventMask|wOtherEventMasks(pWin)) & SubstructureNotifyMask) - -#define StrSend(pWin) \ - ((pWin->eventMask|wOtherEventMasks(pWin)) & StructureNotifyMask) - -#define SubStrSend(pWin,pParent) (StrSend(pWin) || SubSend(pParent)) - - -/* - * Set here the required log level. - */ - -#define PANIC -#define WARNING -#undef TEST -#undef DEBUG - -int numSaveUndersViewable = 0; -int deltaSaveUndersViewable = 0; - -WindowPtr nxagentRootTileWindow; - -/* - * This block used the DEBUG symbol. - */ - -#ifdef WINDOW_TREE_DEBUG -/****** - * PrintWindowTree - * For debugging only - ******/ - -int -PrintChildren(WindowPtr p1, int indent) -{ - WindowPtr p2; - int i; - - while (p1) - { - p2 = p1->firstChild; - for (i=0; i<indent; i++) ErrorF( " "); - ErrorF( "%x\n", p1->drawable.id); - miPrintRegion(&p1->clipList); - PrintChildren(p2, indent+4); - p1 = p1->nextSib; - } -} - -PrintWindowTree() -{ - int i; - WindowPtr pWin, p1; - - for (i=0; i<screenInfo.numScreens; i++) - { - ErrorF( "WINDOW %d\n", i); - pWin = WindowTable[i]; - miPrintRegion(&pWin->clipList); - p1 = pWin->firstChild; - PrintChildren(p1, 4); - } -} -#endif - -int -TraverseTree(register WindowPtr pWin, VisitWindowProcPtr func, pointer data) -{ - register int result; - register WindowPtr pChild; - - if (!(pChild = pWin)) - return(WT_NOMATCH); - while (1) - { - result = (* func)(pChild, data); - if (result == WT_STOPWALKING) - return(WT_STOPWALKING); - if ((result == WT_WALKCHILDREN) && pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - while (!pChild->nextSib && (pChild != pWin)) - pChild = pChild->parent; - if (pChild == pWin) - break; - pChild = pChild->nextSib; - } - return(WT_NOMATCH); -} - -/***** - * WalkTree - * Walk the window tree, for SCREEN, preforming FUNC(pWin, data) on - * each window. If FUNC returns WT_WALKCHILDREN, traverse the children, - * if it returns WT_DONTWALKCHILDREN, dont. If it returns WT_STOPWALKING - * exit WalkTree. Does depth-first traverse. - *****/ - -int -WalkTree(ScreenPtr pScreen, VisitWindowProcPtr func, pointer data) -{ - return(TraverseTree(WindowTable[pScreen->myNum], func, data)); -} - -/* hack for forcing backing store on all windows */ -int defaultBackingStore = NotUseful; -/* hack to force no backing store */ -Bool disableBackingStore = FALSE; -Bool enableBackingStore = FALSE; -/* hack to force no save unders */ -Bool disableSaveUnders = FALSE; - -static void -SetWindowToDefaults(register WindowPtr pWin) -{ - pWin->prevSib = NullWindow; - pWin->firstChild = NullWindow; - pWin->lastChild = NullWindow; - - pWin->valdata = (ValidatePtr)NULL; - pWin->optional = (WindowOptPtr)NULL; - pWin->cursorIsNone = TRUE; - - pWin->backingStore = NotUseful; - pWin->DIXsaveUnder = FALSE; - pWin->backStorage = (pointer) NULL; - - pWin->mapped = FALSE; /* off */ - pWin->realized = FALSE; /* off */ - pWin->viewable = FALSE; - pWin->visibility = VisibilityNotViewable; - pWin->overrideRedirect = FALSE; - pWin->saveUnder = FALSE; - - pWin->bitGravity = ForgetGravity; - pWin->winGravity = NorthWestGravity; - - pWin->eventMask = 0; - pWin->deliverableEvents = 0; - pWin->dontPropagate = 0; - pWin->forcedBS = FALSE; -#ifdef NEED_DBE_BUF_BITS - pWin->srcBuffer = DBE_FRONT_BUFFER; - pWin->dstBuffer = DBE_FRONT_BUFFER; -#endif -#ifdef COMPOSITE - pWin->redirectDraw = 0; -#endif -} - -#ifdef NXAGENT_SERVER - -void nxagentClearSplash(WindowPtr pW) -{ - int w, h; - ScreenPtr pScreen; - - w = pW->drawable.width; - h = pW->drawable.height; - - pScreen = pW->drawable.pScreen; - - if (pW->backgroundState == BackgroundPixmap) - { - (*pScreen->DestroyPixmap)(pW->background.pixmap); - } - - pW->backgroundState = BackgroundPixel; - pW->background.pixel = nxagentLogoBlack; - - (*pScreen->ChangeWindowAttributes)(pW, CWBackPixmap|CWBackPixel); -} - -#endif /* NXAGENT_SERVER */ - -static void -MakeRootTile(WindowPtr pWin) -{ - ScreenPtr pScreen = pWin->drawable.pScreen; - GCPtr pGC; - unsigned char back[128]; - int len = BitmapBytePad(sizeof(long)); - register unsigned char *from, *to; - register int i, j; - - pWin->background.pixmap = (*pScreen->CreatePixmap)(pScreen, 4, 4, - pScreen->rootDepth); - - pWin->backgroundState = BackgroundPixmap; - pGC = GetScratchGC(pScreen->rootDepth, pScreen); - if (!pWin->background.pixmap || !pGC) - FatalError("could not create root tile"); - - { - CARD32 attributes[2]; - - attributes[0] = pScreen->whitePixel; - attributes[1] = pScreen->blackPixel; - - (void)ChangeGC(pGC, GCForeground | GCBackground, attributes); - } - - ValidateGC((DrawablePtr)pWin->background.pixmap, pGC); - - from = (screenInfo.bitmapBitOrder == LSBFirst) ? _back_lsb : _back_msb; - to = back; - - for (i = 4; i > 0; i--, from++) - for (j = len; j > 0; j--) - *to++ = *from; - - if (blackRoot) - bzero(back, sizeof(back)); - - (*pGC->ops->PutImage)((DrawablePtr)pWin->background.pixmap, pGC, 1, - 0, 0, len, 4, 0, XYBitmap, (char *)back); - - FreeScratchGC(pGC); - -#ifdef NXAGENT_SERVER - nxagentRootTileWindow = pWin; -#endif /* NXAGENT_SERVER */ -} - -WindowPtr -AllocateWindow(ScreenPtr pScreen) -{ - WindowPtr pWin; - register char *ptr; - register DevUnion *ppriv; - register unsigned *sizes; - register unsigned size; - register int i; - - pWin = (WindowPtr)xalloc(pScreen->totalWindowSize); - if (pWin) - { - ppriv = (DevUnion *)(pWin + 1); - pWin->devPrivates = ppriv; - sizes = pScreen->WindowPrivateSizes; - ptr = (char *)(ppriv + pScreen->WindowPrivateLen); - for (i = pScreen->WindowPrivateLen; --i >= 0; ppriv++, sizes++) - { - if ( (size = *sizes) ) - { - ppriv->ptr = (pointer)ptr; - ptr += size; - } - else - ppriv->ptr = (pointer)NULL; - } - } - return pWin; -} - -/***** - * CreateRootWindow - * Makes a window at initialization time for specified screen - *****/ - -Bool -CreateRootWindow(ScreenPtr pScreen) -{ - WindowPtr pWin; - BoxRec box; - PixmapFormatRec *format; - - pWin = AllocateWindow(pScreen); - if (!pWin) - return FALSE; - - savedScreenInfo[pScreen->myNum].pWindow = NULL; - savedScreenInfo[pScreen->myNum].wid = FakeClientID(0); - savedScreenInfo[pScreen->myNum].ExternalScreenSaver = NULL; - screenIsSaved = SCREEN_SAVER_OFF; - - WindowTable[pScreen->myNum] = pWin; - - pWin->drawable.pScreen = pScreen; - pWin->drawable.type = DRAWABLE_WINDOW; - - pWin->drawable.depth = pScreen->rootDepth; - for (format = screenInfo.formats; - format->depth != pScreen->rootDepth; - format++) - ; - pWin->drawable.bitsPerPixel = format->bitsPerPixel; - - pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER; - - pWin->parent = NullWindow; - SetWindowToDefaults(pWin); - - pWin->optional = (WindowOptRec *) xalloc (sizeof (WindowOptRec)); - if (!pWin->optional) - return FALSE; - - pWin->optional->dontPropagateMask = 0; - pWin->optional->otherEventMasks = 0; - pWin->optional->otherClients = NULL; - pWin->optional->passiveGrabs = NULL; - pWin->optional->userProps = NULL; - pWin->optional->backingBitPlanes = ~0L; - pWin->optional->backingPixel = 0; -#ifdef SHAPE - pWin->optional->boundingShape = NULL; - pWin->optional->clipShape = NULL; - pWin->optional->inputShape = NULL; -#endif -#ifdef XINPUT - pWin->optional->inputMasks = NULL; -#endif - pWin->optional->colormap = pScreen->defColormap; - pWin->optional->visual = pScreen->rootVisual; - - pWin->nextSib = NullWindow; - - pWin->drawable.id = FakeClientID(0); - - pWin->origin.x = pWin->origin.y = 0; - pWin->drawable.height = pScreen->height; - pWin->drawable.width = pScreen->width; - pWin->drawable.x = pWin->drawable.y = 0; - - box.x1 = 0; - box.y1 = 0; - box.x2 = pScreen->width; - box.y2 = pScreen->height; - REGION_INIT(pScreen, &pWin->clipList, &box, 1); - REGION_INIT(pScreen, &pWin->winSize, &box, 1); - REGION_INIT(pScreen, &pWin->borderSize, &box, 1); - REGION_INIT(pScreen, &pWin->borderClip, &box, 1); - - pWin->drawable.class = InputOutput; - pWin->optional->visual = pScreen->rootVisual; - - pWin->backgroundState = BackgroundPixel; - pWin->background.pixel = pScreen->whitePixel; - - pWin->borderIsPixel = TRUE; - pWin->border.pixel = pScreen->blackPixel; - pWin->borderWidth = 0; - - if (!AddResource(pWin->drawable.id, RT_WINDOW, (pointer)pWin)) - return FALSE; - - if (disableBackingStore) - { - pScreen -> backingStoreSupport = NotUseful; - } - - if (enableBackingStore) - { - pScreen -> backingStoreSupport = Always; - } - - pScreen->saveUnderSupport = False; - -#ifdef DO_SAVE_UNDERS - if ((pScreen->backingStoreSupport != NotUseful) && - (pScreen->saveUnderSupport == NotUseful)) - { - /* - * If the screen has backing-store but no save-unders, let the - * clients know we can support save-unders using backing-store. - */ - pScreen->saveUnderSupport = USE_DIX_SAVE_UNDERS; - } -#endif /* DO_SAVE_UNDERS */ - - if (disableSaveUnders) - pScreen->saveUnderSupport = NotUseful; - - return TRUE; -} - -#ifdef NXAGENT_SERVER - -void -InitRootWindow(WindowPtr pWin) -{ - ScreenPtr pScreen; - - #ifdef TEST - fprintf(stderr, "InitRootWindow: Called for window at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - if (nxagentOption(Rootless)) - { - #ifdef TEST - fprintf(stderr, "InitRootWindow: Assigned agent root to window at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - nxagentRootlessWindow = pWin; - } - - pScreen = pWin->drawable.pScreen; - - /* - * A root window is created for each screen by main - * and the pointer is saved in WindowTable as in the - * following snippet: - * - * for (i = 0; i < screenInfo.numScreens; i++) - * InitRootWindow(WindowTable[i]); - * - * Our root window on the real display was already - * created at the time the screen was opened, so it - * is unclear how this window (or the other window, - * if you prefer) fits in the big picture. - */ - - #ifdef TEST - fprintf(stderr, "InitRootWindow: Going to create window as root at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - if (!(*pScreen->CreateWindow)(pWin)) - return; /* XXX */ - - #ifdef TEST - fprintf(stderr, "InitRootWindow: Created window as root at [%p][%ld] with parent [%p].\n", - (void *) pWin, nxagentWindowPriv(pWin)->window, (void *) pWin -> parent); - #endif - - (*pScreen->PositionWindow)(pWin, 0, 0); - - pWin->cursorIsNone = FALSE; - pWin->optional->cursor = rootCursor; - rootCursor->refcnt++; - pWin->backingStore = defaultBackingStore; - pWin->forcedBS = (defaultBackingStore != NotUseful); - - #ifdef NXAGENT_SPLASH - /* We SHOULD check for an error value here XXX */ - pWin -> background.pixel = pScreen -> blackPixel; - (*pScreen->ChangeWindowAttributes)(pWin, - CWBackPixel|CWBorderPixel|CWCursor|CWBackingStore); - #else - (*pScreen->ChangeWindowAttributes)(pWin, - CWBackPixmap|CWBorderPixel|CWCursor|CWBackingStore); - #endif - - MakeRootTile(pWin); - - /* - * Map both the root and the default agent window. - */ - - #ifdef TEST - fprintf(stderr, "InitRootWindow: Mapping default windows.\n"); - #endif - - nxagentInitAtoms(pWin); - - nxagentInitClipboard(pWin); - - nxagentMapDefaultWindows(); - - nxagentRedirectDefaultWindows(); - - #ifdef NXAGENT_ARTSD - { - char artsd_port[10]; - int nPort; - extern void nxagentPropagateArtsdProperties(ScreenPtr pScreen, char *port); - nPort = atoi(display) + 7000; - sprintf(artsd_port,"%d", nPort); - nxagentPropagateArtsdProperties(pScreen, artsd_port); - } - #endif -} - -#else /* NXAGENT_SERVER */ - -void -InitRootWindow(WindowPtr pWin) -{ - ScreenPtr pScreen = pWin->drawable.pScreen; - - if (!(*pScreen->CreateWindow)(pWin)) - return; /* XXX */ - (*pScreen->PositionWindow)(pWin, 0, 0); - - pWin->cursorIsNone = FALSE; - pWin->optional->cursor = rootCursor; - rootCursor->refcnt++; - MakeRootTile(pWin); - pWin->backingStore = defaultBackingStore; - pWin->forcedBS = (defaultBackingStore != NotUseful); - /* We SHOULD check for an error value here XXX */ - (*pScreen->ChangeWindowAttributes)(pWin, - CWBackPixmap|CWBorderPixel|CWCursor|CWBackingStore); - - MapWindow(pWin, serverClient); -} - -#endif /* NXAGENT_SERVER */ - -/* Set the region to the intersection of the rectangle and the - * window's winSize. The window is typically the parent of the - * window from which the region came. - */ - -void -ClippedRegionFromBox(register WindowPtr pWin, RegionPtr Rgn, - register int x, register int y, - register int w, register int h) -{ -#ifndef NXAGENT_SERVER - ScreenPtr pScreen = pWin->drawable.pScreen; -#endif /* NXAGENT_SERVER */ - BoxRec box; - - box = *(REGION_EXTENTS(pScreen, &pWin->winSize)); - /* we do these calculations to avoid overflows */ - if (x > box.x1) - box.x1 = x; - if (y > box.y1) - box.y1 = y; - x += w; - if (x < box.x2) - box.x2 = x; - y += h; - if (y < box.y2) - box.y2 = y; - if (box.x1 > box.x2) - box.x2 = box.x1; - if (box.y1 > box.y2) - box.y2 = box.y1; - REGION_RESET(pScreen, Rgn, &box); - REGION_INTERSECT(pScreen, Rgn, Rgn, &pWin->winSize); -} - -WindowPtr -RealChildHead(register WindowPtr pWin) -{ - if (!pWin->parent && - (screenIsSaved == SCREEN_SAVER_ON) && - (HasSaverWindow (pWin->drawable.pScreen->myNum))) - return (pWin->firstChild); - else - return (NullWindow); -} - -/***** - * CreateWindow - * Makes a window in response to client request - *****/ - -WindowPtr -CreateWindow(Window wid, register WindowPtr pParent, int x, int y, unsigned w, - unsigned h, unsigned bw, unsigned class, register Mask vmask, XID *vlist, - int depth, ClientPtr client, VisualID visual, int *error) -{ - register WindowPtr pWin; - WindowPtr pHead; - register ScreenPtr pScreen; - xEvent event; - int idepth, ivisual; - Bool fOK; - DepthPtr pDepth; - PixmapFormatRec *format; - register WindowOptPtr ancwopt; - - if (class == CopyFromParent) - class = pParent->drawable.class; - - if ((class != InputOutput) && (class != InputOnly)) - { - *error = BadValue; - client->errorValue = class; - return NullWindow; - } - - if ((class != InputOnly) && (pParent->drawable.class == InputOnly)) - { - *error = BadMatch; - return NullWindow; - } - - if ((class == InputOnly) && ((bw != 0) || (depth != 0))) - { - *error = BadMatch; - return NullWindow; - } - - pScreen = pParent->drawable.pScreen; - if ((class == InputOutput) && (depth == 0)) - depth = pParent->drawable.depth; - ancwopt = pParent->optional; - if (!ancwopt) - ancwopt = FindWindowWithOptional(pParent)->optional; - if (visual == CopyFromParent) { -#ifdef XAPPGROUP - VisualID ag_visual; - - if (client->appgroup && !pParent->parent && - (ag_visual = XagRootVisual (client))) - visual = ag_visual; - else -#endif - visual = ancwopt->visual; - } - - /* Find out if the depth and visual are acceptable for this Screen */ - if ((visual != ancwopt->visual) || (depth != pParent->drawable.depth)) - { - fOK = FALSE; - for(idepth = 0; idepth < pScreen->numDepths; idepth++) - { - pDepth = (DepthPtr) &pScreen->allowedDepths[idepth]; - if ((depth == pDepth->depth) || (depth == 0)) - { - for (ivisual = 0; ivisual < pDepth->numVids; ivisual++) - { - if (visual == pDepth->vids[ivisual]) - { - fOK = TRUE; - break; - } - } - } - } - if (fOK == FALSE) - { - *error = BadMatch; - return NullWindow; - } - } - - if (((vmask & (CWBorderPixmap | CWBorderPixel)) == 0) && - (class != InputOnly) && - (depth != pParent->drawable.depth)) - { - *error = BadMatch; - return NullWindow; - } - - if (((vmask & CWColormap) == 0) && - (class != InputOnly) && - ((visual != ancwopt->visual) || (ancwopt->colormap == None))) - { - *error = BadMatch; - return NullWindow; - } - - pWin = AllocateWindow(pScreen); - if (!pWin) - { - *error = BadAlloc; - return NullWindow; - } - pWin->drawable = pParent->drawable; - pWin->drawable.depth = depth; - if (depth == pParent->drawable.depth) - pWin->drawable.bitsPerPixel = pParent->drawable.bitsPerPixel; - else - { - for (format = screenInfo.formats; format->depth != depth; format++) - ; - pWin->drawable.bitsPerPixel = format->bitsPerPixel; - } - if (class == InputOnly) - pWin->drawable.type = (short) UNDRAWABLE_WINDOW; - pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER; - - pWin->drawable.id = wid; - pWin->drawable.class = class; - - pWin->parent = pParent; - SetWindowToDefaults(pWin); - - if (visual != ancwopt->visual) - { - if (!MakeWindowOptional (pWin)) - { - xfree (pWin); - *error = BadAlloc; - return NullWindow; - } - pWin->optional->visual = visual; - pWin->optional->colormap = None; - } - - pWin->borderWidth = bw; -#ifdef XCSECURITY - /* can't let untrusted clients have background None windows; - * they make it too easy to steal window contents - */ - if (client->trustLevel != XSecurityClientTrusted) - { - pWin->backgroundState = BackgroundPixel; - pWin->background.pixel = 0; - } - else -#endif - pWin->backgroundState = None; - - pWin->borderIsPixel = pParent->borderIsPixel; - pWin->border = pParent->border; - if (pWin->borderIsPixel == FALSE) - pWin->border.pixmap->refcnt++; - - pWin->origin.x = x + (int)bw; - pWin->origin.y = y + (int)bw; - pWin->drawable.width = w; - pWin->drawable.height = h; - pWin->drawable.x = pParent->drawable.x + x + (int)bw; - pWin->drawable.y = pParent->drawable.y + y + (int)bw; - - /* set up clip list correctly for unobscured WindowPtr */ - REGION_NULL(pScreen, &pWin->clipList); - REGION_NULL(pScreen, &pWin->borderClip); - REGION_NULL(pScreen, &pWin->winSize); - REGION_NULL(pScreen, &pWin->borderSize); - - pHead = RealChildHead(pParent); - if (pHead) - { - pWin->nextSib = pHead->nextSib; - if (pHead->nextSib) - pHead->nextSib->prevSib = pWin; - else - pParent->lastChild = pWin; - pHead->nextSib = pWin; - pWin->prevSib = pHead; - } - else - { - pWin->nextSib = pParent->firstChild; - if (pParent->firstChild) - pParent->firstChild->prevSib = pWin; - else - pParent->lastChild = pWin; - pParent->firstChild = pWin; - } - - SetWinSize (pWin); - SetBorderSize (pWin); - - /* We SHOULD check for an error value here XXX */ - if (!(*pScreen->CreateWindow)(pWin)) - { - *error = BadAlloc; - DeleteWindow(pWin, None); - return NullWindow; - } - /* We SHOULD check for an error value here XXX */ - (*pScreen->PositionWindow)(pWin, pWin->drawable.x, pWin->drawable.y); - - if (!(vmask & CWEventMask)) - RecalculateDeliverableEvents(pWin); - - if (vmask) - *error = ChangeWindowAttributes(pWin, vmask, vlist, wClient (pWin)); - else - *error = Success; - - if (*error != Success) - { - DeleteWindow(pWin, None); - return NullWindow; - } - if (!(vmask & CWBackingStore) && (defaultBackingStore != NotUseful)) - { - XID value = defaultBackingStore; - (void)ChangeWindowAttributes(pWin, CWBackingStore, &value, wClient (pWin)); - pWin->forcedBS = TRUE; - } - - if (SubSend(pParent)) - { - event.u.u.type = CreateNotify; - event.u.createNotify.window = wid; - event.u.createNotify.parent = pParent->drawable.id; - event.u.createNotify.x = x; - event.u.createNotify.y = y; - event.u.createNotify.width = w; - event.u.createNotify.height = h; - event.u.createNotify.borderWidth = bw; - event.u.createNotify.override = pWin->overrideRedirect; - DeliverEvents(pParent, &event, 1, NullWindow); - } - return pWin; -} - -static void -FreeWindowResources(register WindowPtr pWin) -{ - register ScreenPtr pScreen = pWin->drawable.pScreen; - - DeleteWindowFromAnySaveSet(pWin); - DeleteWindowFromAnySelections(pWin); - DeleteWindowFromAnyEvents(pWin, TRUE); - REGION_UNINIT(pScreen, &pWin->clipList); - REGION_UNINIT(pScreen, &pWin->winSize); - REGION_UNINIT(pScreen, &pWin->borderClip); - REGION_UNINIT(pScreen, &pWin->borderSize); -#ifdef SHAPE - if (wBoundingShape (pWin)) - REGION_DESTROY(pScreen, wBoundingShape (pWin)); - if (wClipShape (pWin)) - REGION_DESTROY(pScreen, wClipShape (pWin)); - if (wInputShape (pWin)) - REGION_DESTROY(pScreen, wInputShape (pWin)); -#endif - if (pWin->borderIsPixel == FALSE) - (*pScreen->DestroyPixmap)(pWin->border.pixmap); - if (pWin->backgroundState == BackgroundPixmap) - (*pScreen->DestroyPixmap)(pWin->background.pixmap); - - DeleteAllWindowProperties(pWin); - /* We SHOULD check for an error value here XXX */ - (*pScreen->DestroyWindow)(pWin); - DisposeWindowOptional (pWin); -} - -static void -CrushTree(WindowPtr pWin) -{ - register WindowPtr pChild, pSib, pParent; - UnrealizeWindowProcPtr UnrealizeWindow; - xEvent event; - - if (!(pChild = pWin->firstChild)) - return; - UnrealizeWindow = pWin->drawable.pScreen->UnrealizeWindow; - while (1) - { - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - while (1) - { - pParent = pChild->parent; - if (SubStrSend(pChild, pParent)) - { - event.u.u.type = DestroyNotify; - event.u.destroyNotify.window = pChild->drawable.id; - DeliverEvents(pChild, &event, 1, NullWindow); - } - FreeResource(pChild->drawable.id, RT_WINDOW); - pSib = pChild->nextSib; -#ifdef DO_SAVE_UNDERS - if (pChild->saveUnder && pChild->viewable) - deltaSaveUndersViewable--; -#endif - pChild->viewable = FALSE; - if (pChild->realized) - { - pChild->realized = FALSE; - (*UnrealizeWindow)(pChild); - } - FreeWindowResources(pChild); - xfree(pChild); - if ( (pChild = pSib) ) - break; - pChild = pParent; - pChild->firstChild = NullWindow; - pChild->lastChild = NullWindow; - if (pChild == pWin) - return; - } - } -} - -/***** - * DeleteWindow - * Deletes child of window then window itself - * If wid is None, don't send any events - *****/ - -int -DeleteWindow(pointer value, XID wid) - { - register WindowPtr pParent; - register WindowPtr pWin = (WindowPtr)value; - xEvent event; - - UnmapWindow(pWin, FALSE); - - CrushTree(pWin); - - pParent = pWin->parent; - if (wid && pParent && SubStrSend(pWin, pParent)) - { - event.u.u.type = DestroyNotify; - event.u.destroyNotify.window = pWin->drawable.id; - DeliverEvents(pWin, &event, 1, NullWindow); - } - - FreeWindowResources(pWin); - if (pParent) - { - if (pParent->firstChild == pWin) - pParent->firstChild = pWin->nextSib; - if (pParent->lastChild == pWin) - pParent->lastChild = pWin->prevSib; - if (pWin->nextSib) - pWin->nextSib->prevSib = pWin->prevSib; - if (pWin->prevSib) - pWin->prevSib->nextSib = pWin->nextSib; - } - - if (pWin -> optional && - pWin -> optional -> colormap && - pWin -> parent) - { - nxagentSetInstalledColormapWindows(pWin -> drawable.pScreen); - } - - xfree(pWin); - return Success; -} - -void -DestroySubwindows(register WindowPtr pWin, ClientPtr client) -{ - /* XXX - * The protocol is quite clear that each window should be - * destroyed in turn, however, unmapping all of the first - * eliminates most of the calls to ValidateTree. So, - * this implementation is incorrect in that all of the - * UnmapNotifies occur before all of the DestroyNotifies. - * If you care, simply delete the call to UnmapSubwindows. - */ - UnmapSubwindows(pWin); - while (pWin->lastChild) - FreeResource(pWin->lastChild->drawable.id, RT_NONE); -} - -#define DeviceEventMasks (KeyPressMask | KeyReleaseMask | ButtonPressMask | \ - ButtonReleaseMask | PointerMotionMask) - -/***** - * ChangeWindowAttributes - * - * The value-mask specifies which attributes are to be changed; the - * value-list contains one value for each one bit in the mask, from least - * to most significant bit in the mask. - *****/ - -int -ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPtr client) -{ - register Mask index2; - register XID *pVlist; - PixmapPtr pPixmap; - Pixmap pixID; - CursorPtr pCursor, pOldCursor; - Cursor cursorID; - WindowPtr pChild; - Colormap cmap; - ColormapPtr pCmap; - xEvent xE; - int result; - register ScreenPtr pScreen; - Mask vmaskCopy = 0; - register Mask tmask; - unsigned int val; - int error; - Bool checkOptional = FALSE; - Bool borderRelative = FALSE; - WindowPtr pLayerWin; - - if ((pWin->drawable.class == InputOnly) && (vmask & (~INPUTONLY_LEGAL_MASK))) - return BadMatch; - - error = Success; - pScreen = pWin->drawable.pScreen; - pVlist = vlist; - tmask = vmask; - while (tmask) - { - index2 = (Mask) lowbit (tmask); - tmask &= ~index2; - switch (index2) - { - case CWBackPixmap: - pixID = (Pixmap )*pVlist; - pVlist++; - if (pWin->backgroundState == ParentRelative) - borderRelative = TRUE; - if (pixID == None) - { -#ifdef XCSECURITY - /* can't let untrusted clients have background None windows */ - if (client->trustLevel == XSecurityClientTrusted) - { -#endif - if (pWin->backgroundState == BackgroundPixmap) - (*pScreen->DestroyPixmap)(pWin->background.pixmap); - if (!pWin->parent) - MakeRootTile(pWin); - else - pWin->backgroundState = None; -#ifdef XCSECURITY - } - else - { /* didn't change the background to None, so don't tell ddx */ - index2 = 0; - } -#endif - } - else if (pixID == ParentRelative) - { - if (pWin->parent && - pWin->drawable.depth != pWin->parent->drawable.depth) - { - error = BadMatch; - goto PatchUp; - } - if (pWin->backgroundState == BackgroundPixmap) - (*pScreen->DestroyPixmap)(pWin->background.pixmap); - if (!pWin->parent) - MakeRootTile(pWin); - else - pWin->backgroundState = ParentRelative; - borderRelative = TRUE; - /* Note that the parent's backgroundTile's refcnt is NOT - * incremented. */ - } - else - { - pPixmap = (PixmapPtr)SecurityLookupIDByType(client, pixID, - RT_PIXMAP, SecurityReadAccess); - if (pPixmap != (PixmapPtr) NULL) - { - if ((pPixmap->drawable.depth != pWin->drawable.depth) || - (pPixmap->drawable.pScreen != pScreen)) - { - error = BadMatch; - goto PatchUp; - } - if (pWin->backgroundState == BackgroundPixmap) - (*pScreen->DestroyPixmap)(pWin->background.pixmap); - pWin->backgroundState = BackgroundPixmap; - pWin->background.pixmap = pPixmap; - pPixmap->refcnt++; - } - else - { - error = BadPixmap; - client->errorValue = pixID; - goto PatchUp; - } - } - break; - case CWBackPixel: - if (pWin->backgroundState == ParentRelative) - borderRelative = TRUE; - if (pWin->backgroundState == BackgroundPixmap) - (*pScreen->DestroyPixmap)(pWin->background.pixmap); - pWin->backgroundState = BackgroundPixel; - pWin->background.pixel = (CARD32 ) *pVlist; - /* background pixel overrides background pixmap, - so don't let the ddx layer see both bits */ - vmaskCopy &= ~CWBackPixmap; - pVlist++; - break; - case CWBorderPixmap: - pixID = (Pixmap ) *pVlist; - pVlist++; - if (pixID == CopyFromParent) - { - if (!pWin->parent || - (pWin->drawable.depth != pWin->parent->drawable.depth)) - { - error = BadMatch; - goto PatchUp; - } - if (pWin->borderIsPixel == FALSE) - (*pScreen->DestroyPixmap)(pWin->border.pixmap); - pWin->border = pWin->parent->border; - if ((pWin->borderIsPixel = pWin->parent->borderIsPixel) == TRUE) - { - index2 = CWBorderPixel; - } - else - { - pWin->parent->border.pixmap->refcnt++; - } - } - else - { - pPixmap = (PixmapPtr)SecurityLookupIDByType(client, pixID, - RT_PIXMAP, SecurityReadAccess); - if (pPixmap) - { - if ((pPixmap->drawable.depth != pWin->drawable.depth) || - (pPixmap->drawable.pScreen != pScreen)) - { - error = BadMatch; - goto PatchUp; - } - if (pWin->borderIsPixel == FALSE) - (*pScreen->DestroyPixmap)(pWin->border.pixmap); - pWin->borderIsPixel = FALSE; - pWin->border.pixmap = pPixmap; - pPixmap->refcnt++; - } - else - { - error = BadPixmap; - client->errorValue = pixID; - goto PatchUp; - } - } - break; - case CWBorderPixel: - if (pWin->borderIsPixel == FALSE) - (*pScreen->DestroyPixmap)(pWin->border.pixmap); - pWin->borderIsPixel = TRUE; - pWin->border.pixel = (CARD32) *pVlist; - /* border pixel overrides border pixmap, - so don't let the ddx layer see both bits */ - vmaskCopy &= ~CWBorderPixmap; - pVlist++; - break; - case CWBitGravity: - val = (CARD8 )*pVlist; - pVlist++; - if (val > StaticGravity) - { - error = BadValue; - client->errorValue = val; - goto PatchUp; - } - pWin->bitGravity = val; - break; - case CWWinGravity: - val = (CARD8 )*pVlist; - pVlist++; - if (val > StaticGravity) - { - error = BadValue; - client->errorValue = val; - goto PatchUp; - } - pWin->winGravity = val; - break; - case CWBackingStore: - val = (CARD8 )*pVlist; - pVlist++; - if ((val != NotUseful) && (val != WhenMapped) && (val != Always)) - { - error = BadValue; - client->errorValue = val; - goto PatchUp; - } - pWin->backingStore = val; - - #ifdef TEST - fprintf(stderr, "ChangeWindowAttributes: Changed backing store value to %d for window at %p.\n", - val, (void*)pWin); - #endif - - pWin->forcedBS = FALSE; - break; - case CWBackingPlanes: - if (pWin->optional || ((CARD32)*pVlist != (CARD32)~0L)) { - if (!pWin->optional && !MakeWindowOptional (pWin)) - { - error = BadAlloc; - goto PatchUp; - } - pWin->optional->backingBitPlanes = (CARD32) *pVlist; - if ((CARD32)*pVlist == (CARD32)~0L) - checkOptional = TRUE; - } - pVlist++; - break; - case CWBackingPixel: - if (pWin->optional || (CARD32) *pVlist) { - if (!pWin->optional && !MakeWindowOptional (pWin)) - { - error = BadAlloc; - goto PatchUp; - } - pWin->optional->backingPixel = (CARD32) *pVlist; - if (!*pVlist) - checkOptional = TRUE; - } - pVlist++; - break; - case CWSaveUnder: - val = (BOOL) *pVlist; - pVlist++; - if ((val != xTrue) && (val != xFalse)) - { - error = BadValue; - client->errorValue = val; - goto PatchUp; - } -#ifdef DO_SAVE_UNDERS - if (pWin->parent && (pWin->saveUnder != val) && (pWin->viewable) && - DO_SAVE_UNDERS(pWin)) - { - /* - * Re-check all siblings and inferiors for obscurity or - * exposition (hee hee). - */ - if (pWin->saveUnder) - deltaSaveUndersViewable--; - else - deltaSaveUndersViewable++; - pWin->saveUnder = val; - - if (pWin->firstChild) - { - pLayerWin = (*pScreen->GetLayerWindow)(pWin); - if ((*pScreen->ChangeSaveUnder)(pLayerWin->parent, pWin->nextSib)) - (*pScreen->PostChangeSaveUnder)(pLayerWin->parent, - pWin->nextSib); - } - else - { - if ((*pScreen->ChangeSaveUnder)(pWin, pWin->nextSib)) - (*pScreen->PostChangeSaveUnder)(pWin, - pWin->nextSib); - } - } - else - { - /* If we're changing the saveUnder attribute of the root - * window, all we do is set pWin->saveUnder so that - * GetWindowAttributes returns the right value. We don't - * do the "normal" save-under processing (as above). - * Hope that doesn't cause any problems. - */ - pWin->saveUnder = val; - } -#else - pWin->saveUnder = val; -#endif /* DO_SAVE_UNDERS */ - break; - case CWEventMask: - /* - * TODO: Some applications like java bean shell - * don' t work if they cannot monitor the root - * window for Structure Redirect events. However - * this doesn't seem to be the best solution, since - * also an X server with a window manager running, - * doesn't allow to monitor for those events, but - * the java bean shell works flawlessy on this - * server. - * - * if (nxagentCheckIllegalRootMonitoring(pWin, (Mask)*pVlist)) - * { - * return BadAccess; - * } - */ - - result = EventSelectForWindow(pWin, client, (Mask )*pVlist); - if (result) - { - error = result; - goto PatchUp; - } - pVlist++; - break; - case CWDontPropagate: - result = EventSuppressForWindow(pWin, client, (Mask )*pVlist, - &checkOptional); - if (result) - { - error = result; - goto PatchUp; - } - pVlist++; - break; - case CWOverrideRedirect: - val = (BOOL ) *pVlist; - pVlist++; - if ((val != xTrue) && (val != xFalse)) - { - error = BadValue; - client->errorValue = val; - goto PatchUp; - } - pWin->overrideRedirect = val; - break; - case CWColormap: - cmap = (Colormap) *pVlist; - pVlist++; - if (cmap == CopyFromParent) - { -#ifdef XAPPGROUP - Colormap ag_colormap; - ClientPtr win_owner; - - /* - * win_owner == client for CreateWindow, other clients - * can ChangeWindowAttributes - */ - win_owner = clients[CLIENT_ID(pWin->drawable.id)]; - - if ( win_owner && win_owner->appgroup && - !pWin->parent->parent && - (ag_colormap = XagDefaultColormap (win_owner))) - cmap = ag_colormap; - else -#endif - if (pWin->parent && - (!pWin->optional || - pWin->optional->visual == wVisual (pWin->parent))) - { - cmap = wColormap (pWin->parent); - } - else - cmap = None; - } - if (cmap == None) - { - error = BadMatch; - goto PatchUp; - } - pCmap = (ColormapPtr)SecurityLookupIDByType(client, cmap, - RT_COLORMAP, SecurityReadAccess); - if (!pCmap) - { - error = BadColor; - client->errorValue = cmap; - goto PatchUp; - } - if (pCmap->pVisual->vid != wVisual (pWin) || - pCmap->pScreen != pScreen) - { - error = BadMatch; - goto PatchUp; - } - if (cmap != wColormap (pWin)) - { - if (!pWin->optional) - { - if (!MakeWindowOptional (pWin)) - { - error = BadAlloc; - goto PatchUp; - } - } - else if (pWin->parent && cmap == wColormap (pWin->parent)) - checkOptional = TRUE; - - /* - * propagate the original colormap to any children - * inheriting it - */ - - for (pChild = pWin->firstChild; pChild; pChild=pChild->nextSib) - { - if (!pChild->optional && !MakeWindowOptional (pChild)) - { - error = BadAlloc; - goto PatchUp; - } - } - - pWin->optional->colormap = cmap; - - /* - * check on any children now matching the new colormap - */ - - for (pChild = pWin->firstChild; pChild; pChild=pChild->nextSib) - { - if (pChild->optional->colormap == cmap) - CheckWindowOptionalNeed (pChild); - } - - xE.u.u.type = ColormapNotify; - xE.u.colormap.window = pWin->drawable.id; - xE.u.colormap.colormap = cmap; - xE.u.colormap.new = xTrue; - xE.u.colormap.state = IsMapInstalled(cmap, pWin); - DeliverEvents(pWin, &xE, 1, NullWindow); - } - break; - case CWCursor: - cursorID = (Cursor ) *pVlist; - pVlist++; - /* - * install the new - */ - if ( cursorID == None) - { - if (pWin == WindowTable[pWin->drawable.pScreen->myNum]) - pCursor = rootCursor; - else - pCursor = (CursorPtr) None; - } - else - { - pCursor = (CursorPtr)SecurityLookupIDByType(client, cursorID, - RT_CURSOR, SecurityReadAccess); - if (!pCursor) - { - error = BadCursor; - client->errorValue = cursorID; - goto PatchUp; - } - } - - if (pCursor != wCursor (pWin)) - { - /* - * patch up child windows so they don't lose cursors. - */ - - for (pChild = pWin->firstChild; pChild; pChild=pChild->nextSib) - { - if (!pChild->optional && !pChild->cursorIsNone && - !MakeWindowOptional (pChild)) - { - error = BadAlloc; - goto PatchUp; - } - } - - pOldCursor = 0; - if (pCursor == (CursorPtr) None) - { - pWin->cursorIsNone = TRUE; - if (pWin->optional) - { - pOldCursor = pWin->optional->cursor; - pWin->optional->cursor = (CursorPtr) None; - checkOptional = TRUE; - } - } else { - if (!pWin->optional) - { - if (!MakeWindowOptional (pWin)) - { - error = BadAlloc; - goto PatchUp; - } - } - else if (pWin->parent && pCursor == wCursor (pWin->parent)) - checkOptional = TRUE; - pOldCursor = pWin->optional->cursor; - pWin->optional->cursor = pCursor; - pCursor->refcnt++; - pWin->cursorIsNone = FALSE; - /* - * check on any children now matching the new cursor - */ - - for (pChild=pWin->firstChild; pChild; pChild=pChild->nextSib) - { - if (pChild->optional && - (pChild->optional->cursor == pCursor)) - CheckWindowOptionalNeed (pChild); - } - } - - if (pWin->realized) - WindowHasNewCursor( pWin); - - /* Can't free cursor until here - old cursor - * is needed in WindowHasNewCursor - */ - if (pOldCursor) - FreeCursor (pOldCursor, (Cursor)0); - } - break; - default: - error = BadValue; - client->errorValue = vmask; - goto PatchUp; - } - vmaskCopy |= index2; - } -PatchUp: - if (checkOptional) - CheckWindowOptionalNeed (pWin); - - /* We SHOULD check for an error value here XXX */ - (*pScreen->ChangeWindowAttributes)(pWin, vmaskCopy); - - /* - If the border contents have changed, redraw the border. - Note that this has to be done AFTER pScreen->ChangeWindowAttributes - for the tile to be rotated, and the correct function selected. - */ - if (((vmaskCopy & (CWBorderPixel | CWBorderPixmap)) || borderRelative) - && pWin->viewable && HasBorder (pWin)) - { - RegionRec exposed; - - REGION_NULL(pScreen, &exposed); - REGION_SUBTRACT(pScreen, &exposed, &pWin->borderClip, &pWin->winSize); - (*pWin->drawable.pScreen->PaintWindowBorder)(pWin, &exposed, PW_BORDER); - REGION_UNINIT(pScreen, &exposed); - } - return error; -} - - -/***** - * GetWindowAttributes - * Notice that this is different than ChangeWindowAttributes - *****/ - -void -GetWindowAttributes(register WindowPtr pWin, ClientPtr client, xGetWindowAttributesReply *wa) -{ - wa->type = X_Reply; - wa->bitGravity = pWin->bitGravity; - wa->winGravity = pWin->winGravity; - if (pWin->forcedBS && pWin->backingStore != Always) - wa->backingStore = NotUseful; - else - wa->backingStore = pWin->backingStore; - wa->length = (sizeof(xGetWindowAttributesReply) - - sizeof(xGenericReply)) >> 2; - wa->sequenceNumber = client->sequence; - wa->backingBitPlanes = wBackingBitPlanes (pWin); - wa->backingPixel = wBackingPixel (pWin); - wa->saveUnder = (BOOL)pWin->saveUnder; - wa->override = pWin->overrideRedirect; - if (!pWin->mapped) - wa->mapState = IsUnmapped; - else if (pWin->realized) - wa->mapState = IsViewable; - else - wa->mapState = IsUnviewable; - - wa->colormap = wColormap (pWin); - wa->mapInstalled = (wa->colormap == None) ? xFalse - : IsMapInstalled(wa->colormap, pWin); - - wa->yourEventMask = EventMaskForClient(pWin, client); - wa->allEventMasks = pWin->eventMask | wOtherEventMasks (pWin); - wa->doNotPropagateMask = wDontPropagateMask (pWin); - wa->class = pWin->drawable.class; - wa->visualID = wVisual (pWin); -} - - -WindowPtr -MoveWindowInStack(register WindowPtr pWin, register WindowPtr pNextSib) -{ - register WindowPtr pParent = pWin->parent; - WindowPtr pFirstChange = pWin; /* highest window where list changes */ - - if (pWin->nextSib != pNextSib) - { - WindowPtr pOldNextSib = pWin->nextSib; - - if (!pNextSib) /* move to bottom */ - { - if (pParent->firstChild == pWin) - pParent->firstChild = pWin->nextSib; - /* if (pWin->nextSib) */ /* is always True: pNextSib == NULL - * and pWin->nextSib != pNextSib - * therefore pWin->nextSib != NULL */ - pFirstChange = pWin->nextSib; - pWin->nextSib->prevSib = pWin->prevSib; - if (pWin->prevSib) - pWin->prevSib->nextSib = pWin->nextSib; - pParent->lastChild->nextSib = pWin; - pWin->prevSib = pParent->lastChild; - pWin->nextSib = NullWindow; - pParent->lastChild = pWin; - } - else if (pParent->firstChild == pNextSib) /* move to top */ - { - pFirstChange = pWin; - if (pParent->lastChild == pWin) - pParent->lastChild = pWin->prevSib; - if (pWin->nextSib) - pWin->nextSib->prevSib = pWin->prevSib; - if (pWin->prevSib) - pWin->prevSib->nextSib = pWin->nextSib; - pWin->nextSib = pParent->firstChild; - pWin->prevSib = (WindowPtr ) NULL; - pNextSib->prevSib = pWin; - pParent->firstChild = pWin; - } - else /* move in middle of list */ - { - WindowPtr pOldNext = pWin->nextSib; - - pFirstChange = NullWindow; - if (pParent->firstChild == pWin) - pFirstChange = pParent->firstChild = pWin->nextSib; - if (pParent->lastChild == pWin) { - pFirstChange = pWin; - pParent->lastChild = pWin->prevSib; - } - if (pWin->nextSib) - pWin->nextSib->prevSib = pWin->prevSib; - if (pWin->prevSib) - pWin->prevSib->nextSib = pWin->nextSib; - pWin->nextSib = pNextSib; - pWin->prevSib = pNextSib->prevSib; - if (pNextSib->prevSib) - pNextSib->prevSib->nextSib = pWin; - pNextSib->prevSib = pWin; - if (!pFirstChange) { /* do we know it yet? */ - pFirstChange = pParent->firstChild; /* no, search from top */ - while ((pFirstChange != pWin) && (pFirstChange != pOldNext)) - pFirstChange = pFirstChange->nextSib; - } - } - if(pWin->drawable.pScreen->RestackWindow) - (*pWin->drawable.pScreen->RestackWindow)(pWin, pOldNextSib); - } - -#ifdef ROOTLESS - /* - * In rootless mode we can't optimize away window restacks. - * There may be non-X windows around, so even if the window - * is in the correct position from X's point of view, - * the underlying window system may want to reorder it. - */ - else if (pWin->drawable.pScreen->RestackWindow) - (*pWin->drawable.pScreen->RestackWindow)(pWin, pWin->nextSib); -#endif - - return( pFirstChange ); -} - -RegionPtr -CreateUnclippedWinSize (register WindowPtr pWin) -{ - RegionPtr pRgn; - BoxRec box; - - box.x1 = pWin->drawable.x; - box.y1 = pWin->drawable.y; - box.x2 = pWin->drawable.x + (int) pWin->drawable.width; - box.y2 = pWin->drawable.y + (int) pWin->drawable.height; - pRgn = REGION_CREATE(pWin->drawable.pScreen, &box, 1); -#ifdef SHAPE - if (wBoundingShape (pWin) || wClipShape (pWin)) { -#ifndef NXAGENT_SERVER - ScreenPtr pScreen = pWin->drawable.pScreen; -#endif /* NXAGENT_SERVER */ - REGION_TRANSLATE(pScreen, pRgn, - pWin->drawable.x, - - pWin->drawable.y); - if (wBoundingShape (pWin)) - REGION_INTERSECT(pScreen, pRgn, pRgn, wBoundingShape (pWin)); - if (wClipShape (pWin)) - REGION_INTERSECT(pScreen, pRgn, pRgn, wClipShape (pWin)); - REGION_TRANSLATE(pScreen, pRgn, pWin->drawable.x, pWin->drawable.y); - } -#endif - return pRgn; -} - -void -SetWinSize (register WindowPtr pWin) -{ -#ifdef COMPOSITE - if (pWin->redirectDraw) - { - BoxRec box; - - box.x1 = pWin->drawable.x; - box.y1 = pWin->drawable.y; - box.x2 = pWin->drawable.x + pWin->drawable.width; - box.y2 = pWin->drawable.y + pWin->drawable.height; - REGION_RESET (pScreen, &pWin->winSize, &box); - } - else -#endif - ClippedRegionFromBox(pWin->parent, &pWin->winSize, - pWin->drawable.x, pWin->drawable.y, - (int)pWin->drawable.width, - (int)pWin->drawable.height); -#ifdef SHAPE - if (wBoundingShape (pWin) || wClipShape (pWin)) { -#ifndef NXAGENT_SERVER - ScreenPtr pScreen = pWin->drawable.pScreen; -#endif /* NXAGENT_SERVER */ - REGION_TRANSLATE(pScreen, &pWin->winSize, - pWin->drawable.x, - - pWin->drawable.y); - if (wBoundingShape (pWin)) - REGION_INTERSECT(pScreen, &pWin->winSize, &pWin->winSize, - wBoundingShape (pWin)); - if (wClipShape (pWin)) - REGION_INTERSECT(pScreen, &pWin->winSize, &pWin->winSize, - wClipShape (pWin)); - REGION_TRANSLATE(pScreen, &pWin->winSize, pWin->drawable.x, - pWin->drawable.y); - } -#endif -} - -void -SetBorderSize (register WindowPtr pWin) -{ - int bw; - - if (HasBorder (pWin)) { - bw = wBorderWidth (pWin); -#ifdef COMPOSITE - if (pWin->redirectDraw) - { - BoxRec box; - - box.x1 = pWin->drawable.x - bw; - box.y1 = pWin->drawable.y - bw; - box.x2 = pWin->drawable.x + pWin->drawable.width + bw; - box.y2 = pWin->drawable.y + pWin->drawable.height + bw; - REGION_RESET (pScreen, &pWin->borderSize, &box); - } - else -#endif - ClippedRegionFromBox(pWin->parent, &pWin->borderSize, - pWin->drawable.x - bw, pWin->drawable.y - bw, - (int)(pWin->drawable.width + (bw<<1)), - (int)(pWin->drawable.height + (bw<<1))); -#ifdef SHAPE - if (wBoundingShape (pWin)) { -#ifndef NXAGENT_SERVER - ScreenPtr pScreen = pWin->drawable.pScreen; -#endif /* NXAGENT_SERVER */ - REGION_TRANSLATE(pScreen, &pWin->borderSize, - pWin->drawable.x, - - pWin->drawable.y); - REGION_INTERSECT(pScreen, &pWin->borderSize, &pWin->borderSize, - wBoundingShape (pWin)); - REGION_TRANSLATE(pScreen, &pWin->borderSize, pWin->drawable.x, - pWin->drawable.y); - REGION_UNION(pScreen, &pWin->borderSize, &pWin->borderSize, - &pWin->winSize); - } -#endif - } else { - REGION_COPY(pWin->drawable.pScreen, &pWin->borderSize, - &pWin->winSize); - } -} - -/** - * - * \param x,y new window position - * \param oldx,oldy old window position - * \param destx,desty position relative to gravity - */ - -void -GravityTranslate (register int x, register int y, int oldx, int oldy, - int dw, int dh, unsigned gravity, - register int *destx, register int *desty) -{ - switch (gravity) { - case NorthGravity: - *destx = x + dw / 2; - *desty = y; - break; - case NorthEastGravity: - *destx = x + dw; - *desty = y; - break; - case WestGravity: - *destx = x; - *desty = y + dh / 2; - break; - case CenterGravity: - *destx = x + dw / 2; - *desty = y + dh / 2; - break; - case EastGravity: - *destx = x + dw; - *desty = y + dh / 2; - break; - case SouthWestGravity: - *destx = x; - *desty = y + dh; - break; - case SouthGravity: - *destx = x + dw / 2; - *desty = y + dh; - break; - case SouthEastGravity: - *destx = x + dw; - *desty = y + dh; - break; - case StaticGravity: - *destx = oldx; - *desty = oldy; - break; - default: - *destx = x; - *desty = y; - break; - } -} - -/* XXX need to retile border on each window with ParentRelative origin */ -void -ResizeChildrenWinSize(register WindowPtr pWin, int dx, int dy, int dw, int dh) -{ - register ScreenPtr pScreen; - register WindowPtr pSib, pChild; - Bool resized = (dw || dh); - - pScreen = pWin->drawable.pScreen; - - for (pSib = pWin->firstChild; pSib; pSib = pSib->nextSib) - { - if (resized && (pSib->winGravity > NorthWestGravity)) - { - int cwsx, cwsy; - - cwsx = pSib->origin.x; - cwsy = pSib->origin.y; - GravityTranslate (cwsx, cwsy, cwsx - dx, cwsy - dy, dw, dh, - pSib->winGravity, &cwsx, &cwsy); - if (cwsx != pSib->origin.x || cwsy != pSib->origin.y) - { - xEvent event; - - event.u.u.type = GravityNotify; - event.u.gravity.window = pSib->drawable.id; - event.u.gravity.x = cwsx - wBorderWidth (pSib); - event.u.gravity.y = cwsy - wBorderWidth (pSib); - DeliverEvents (pSib, &event, 1, NullWindow); - pSib->origin.x = cwsx; - pSib->origin.y = cwsy; - } - } - pSib->drawable.x = pWin->drawable.x + pSib->origin.x; - pSib->drawable.y = pWin->drawable.y + pSib->origin.y; - SetWinSize (pSib); - SetBorderSize (pSib); - - /* - * Don't force X to move children. It will position them - * according with gravity. - * - * (*pScreen->PositionWindow)(pSib, pSib->drawable.x, pSib->drawable.y); - */ - - /* - * Update pSib privates, as this window is moved by X. - */ - - nxagentAddConfiguredWindow(pSib, CW_Update); - - if ( (pChild = pSib->firstChild) ) - { - while (1) - { - pChild->drawable.x = pChild->parent->drawable.x + - pChild->origin.x; - pChild->drawable.y = pChild->parent->drawable.y + - pChild->origin.y; - SetWinSize (pChild); - SetBorderSize (pChild); - - (*pScreen->PositionWindow)(pChild, pChild->drawable.x, - pChild->drawable.y); - - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - while (!pChild->nextSib && (pChild != pSib)) - pChild = pChild->parent; - if (pChild == pSib) - break; - pChild = pChild->nextSib; - } - } - } -} - -#define GET_INT16(m, f) \ - if (m & mask) \ - { \ - f = (INT16) *pVlist;\ - pVlist++; \ - } -#define GET_CARD16(m, f) \ - if (m & mask) \ - { \ - f = (CARD16) *pVlist;\ - pVlist++;\ - } - -#define GET_CARD8(m, f) \ - if (m & mask) \ - { \ - f = (CARD8) *pVlist;\ - pVlist++;\ - } - -#define ChangeMask ((Mask)(CWX | CWY | CWWidth | CWHeight)) - -#define IllegalInputOnlyConfigureMask (CWBorderWidth) - -/* - * IsSiblingAboveMe - * returns Above if pSib above pMe in stack or Below otherwise - */ - -static int -IsSiblingAboveMe( - register WindowPtr pMe, - register WindowPtr pSib) -{ - register WindowPtr pWin; - - pWin = pMe->parent->firstChild; - while (pWin) - { - if (pWin == pSib) - return(Above); - else if (pWin == pMe) - return(Below); - pWin = pWin->nextSib; - } - return(Below); -} - -static BoxPtr -WindowExtents( - register WindowPtr pWin, - register BoxPtr pBox) -{ - pBox->x1 = pWin->drawable.x - wBorderWidth (pWin); - pBox->y1 = pWin->drawable.y - wBorderWidth (pWin); - pBox->x2 = pWin->drawable.x + (int)pWin->drawable.width - + wBorderWidth (pWin); - pBox->y2 = pWin->drawable.y + (int)pWin->drawable.height - + wBorderWidth (pWin); - return(pBox); -} - -#ifdef SHAPE -#define IS_SHAPED(pWin) (wBoundingShape (pWin) != (RegionPtr) NULL) - -static RegionPtr -MakeBoundingRegion ( - register WindowPtr pWin, - BoxPtr pBox) -{ - RegionPtr pRgn; -#ifndef NXAGENT_SERVER - ScreenPtr pScreen = pWin->drawable.pScreen; -#endif /* NXAGENT_SERVER */ - pRgn = REGION_CREATE(pScreen, pBox, 1); - if (wBoundingShape (pWin)) { - REGION_TRANSLATE(pScreen, pRgn, -pWin->origin.x, - -pWin->origin.y); - REGION_INTERSECT(pScreen, pRgn, pRgn, wBoundingShape (pWin)); - REGION_TRANSLATE(pScreen, pRgn, pWin->origin.x, - pWin->origin.y); - } - return pRgn; -} - -static Bool -ShapeOverlap ( - WindowPtr pWin, - BoxPtr pWinBox, - WindowPtr pSib, - BoxPtr pSibBox) -{ - RegionPtr pWinRgn, pSibRgn; - register ScreenPtr pScreen; - Bool ret; - - if (!IS_SHAPED(pWin) && !IS_SHAPED(pSib)) - return TRUE; - pScreen = pWin->drawable.pScreen; - pWinRgn = MakeBoundingRegion (pWin, pWinBox); - pSibRgn = MakeBoundingRegion (pSib, pSibBox); - REGION_INTERSECT(pScreen, pWinRgn, pWinRgn, pSibRgn); - ret = REGION_NOTEMPTY(pScreen, pWinRgn); - REGION_DESTROY(pScreen, pWinRgn); - REGION_DESTROY(pScreen, pSibRgn); - return ret; -} -#endif - -static Bool -AnyWindowOverlapsMe( - WindowPtr pWin, - WindowPtr pHead, - register BoxPtr box) -{ - register WindowPtr pSib; - BoxRec sboxrec; - register BoxPtr sbox; - - for (pSib = pWin->prevSib; pSib != pHead; pSib = pSib->prevSib) - { - if (pSib->mapped) - { - sbox = WindowExtents(pSib, &sboxrec); - if (BOXES_OVERLAP(sbox, box) -#ifdef SHAPE - && ShapeOverlap (pWin, box, pSib, sbox) -#endif - ) - return(TRUE); - } - } - return(FALSE); -} - -static Bool -IOverlapAnyWindow( - WindowPtr pWin, - register BoxPtr box) -{ - register WindowPtr pSib; - BoxRec sboxrec; - register BoxPtr sbox; - - for (pSib = pWin->nextSib; pSib; pSib = pSib->nextSib) - { - if (pSib->mapped) - { - sbox = WindowExtents(pSib, &sboxrec); - if (BOXES_OVERLAP(sbox, box) -#ifdef SHAPE - && ShapeOverlap (pWin, box, pSib, sbox) -#endif - ) - return(TRUE); - } - } - return(FALSE); -} - -/* - * WhereDoIGoInTheStack() - * Given pWin and pSib and the relationshipe smode, return - * the window that pWin should go ABOVE. - * If a pSib is specified: - * Above: pWin is placed just above pSib - * Below: pWin is placed just below pSib - * TopIf: if pSib occludes pWin, then pWin is placed - * at the top of the stack - * BottomIf: if pWin occludes pSib, then pWin is - * placed at the bottom of the stack - * Opposite: if pSib occludes pWin, then pWin is placed at the - * top of the stack, else if pWin occludes pSib, then - * pWin is placed at the bottom of the stack - * - * If pSib is NULL: - * Above: pWin is placed at the top of the stack - * Below: pWin is placed at the bottom of the stack - * TopIf: if any sibling occludes pWin, then pWin is placed at - * the top of the stack - * BottomIf: if pWin occludes any sibline, then pWin is placed at - * the bottom of the stack - * Opposite: if any sibling occludes pWin, then pWin is placed at - * the top of the stack, else if pWin occludes any - * sibling, then pWin is placed at the bottom of the stack - * - */ - -static WindowPtr -WhereDoIGoInTheStack( - register WindowPtr pWin, - register WindowPtr pSib, - short x, - short y, - unsigned short w, - unsigned short h, - int smode) -{ - BoxRec box; - register ScreenPtr pScreen; - WindowPtr pHead, pFirst; - - if ((pWin == pWin->parent->firstChild) && - (pWin == pWin->parent->lastChild)) - return((WindowPtr ) NULL); - pHead = RealChildHead(pWin->parent); - pFirst = pHead ? pHead->nextSib : pWin->parent->firstChild; - pScreen = pWin->drawable.pScreen; - box.x1 = x; - box.y1 = y; - box.x2 = x + (int)w; - box.y2 = y + (int)h; - switch (smode) - { - case Above: - if (pSib) - return(pSib); - else if (pWin == pFirst) - return(pWin->nextSib); - else - return(pFirst); - case Below: - if (pSib) - if (pSib->nextSib != pWin) - return(pSib->nextSib); - else - return(pWin->nextSib); - else - return NullWindow; - case TopIf: - if ((!pWin->mapped || (pSib && !pSib->mapped)) && !permitOldBugs) - return(pWin->nextSib); - else if (pSib) - { - if ((IsSiblingAboveMe(pWin, pSib) == Above) && - (RECT_IN_REGION(pScreen, &pSib->borderSize, &box) != rgnOUT)) - return(pFirst); - else - return(pWin->nextSib); - } - else if (AnyWindowOverlapsMe(pWin, pHead, &box)) - return(pFirst); - else - return(pWin->nextSib); - case BottomIf: - if ((!pWin->mapped || (pSib && !pSib->mapped)) && !permitOldBugs) - return(pWin->nextSib); - else if (pSib) - { - if ((IsSiblingAboveMe(pWin, pSib) == Below) && - (RECT_IN_REGION(pScreen, &pSib->borderSize, &box) != rgnOUT)) - return NullWindow; - else - return(pWin->nextSib); - } - else if (IOverlapAnyWindow(pWin, &box)) - return NullWindow; - else - return(pWin->nextSib); - case Opposite: - if ((!pWin->mapped || (pSib && !pSib->mapped)) && !permitOldBugs) - return(pWin->nextSib); - else if (pSib) - { - if (RECT_IN_REGION(pScreen, &pSib->borderSize, &box) != rgnOUT) - { - if (IsSiblingAboveMe(pWin, pSib) == Above) - return(pFirst); - else - return NullWindow; - } - else - return(pWin->nextSib); - } - else if (AnyWindowOverlapsMe(pWin, pHead, &box)) - { - /* If I'm occluded, I can't possibly be the first child - * if (pWin == pWin->parent->firstChild) - * return pWin->nextSib; - */ - return(pFirst); - } - else if (IOverlapAnyWindow(pWin, &box)) - return NullWindow; - else - return pWin->nextSib; - default: - { - ErrorF("Internal error in ConfigureWindow, smode == %d\n",smode ); - return pWin->nextSib; - } - } -} - -static void -ReflectStackChange( - register WindowPtr pWin, - register WindowPtr pSib, - VTKind kind) -{ -/* Note that pSib might be NULL */ - - Bool WasViewable = (Bool)pWin->viewable; - Bool anyMarked; - WindowPtr pFirstChange; -#ifdef DO_SAVE_UNDERS - Bool dosave = FALSE; -#endif - WindowPtr pLayerWin; - ScreenPtr pScreen = pWin->drawable.pScreen; - - /* if this is a root window, can't be restacked */ - if (!pWin->parent) - return; - - pFirstChange = MoveWindowInStack(pWin, pSib); - - if (WasViewable) - { - anyMarked = (*pScreen->MarkOverlappedWindows)(pWin, pFirstChange, - &pLayerWin); - if (pLayerWin != pWin) pFirstChange = pLayerWin; -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, pFirstChange); - } -#endif /* DO_SAVE_UNDERS */ - if (anyMarked) - { - (*pScreen->ValidateTree)(pLayerWin->parent, pFirstChange, kind); - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (dosave) - (*pScreen->PostChangeSaveUnder)(pLayerWin, pFirstChange); -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pWin->drawable.pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pFirstChange, kind); - } - if (pWin->realized) - WindowsRestructured (); -} - -/***** - * ConfigureWindow - *****/ - -int -ConfigureWindow(register WindowPtr pWin, register Mask mask, XID *vlist, ClientPtr client) -{ -#define RESTACK_WIN 0 -#define MOVE_WIN 1 -#define RESIZE_WIN 2 -#define REBORDER_WIN 3 - register WindowPtr pSib = NullWindow; - register WindowPtr pParent = pWin->parent; - Window sibwid = 0; - Mask index2, tmask; - register XID *pVlist; - short x, y, beforeX, beforeY; - unsigned short w = pWin->drawable.width, - h = pWin->drawable.height, - bw = pWin->borderWidth; - int action, smode = Above; -#ifdef XAPPGROUP - ClientPtr win_owner; - ClientPtr ag_leader = NULL; -#endif - xEvent event; - - if ((pWin->drawable.class == InputOnly) && (mask & IllegalInputOnlyConfigureMask)) - return(BadMatch); - - if ((mask & CWSibling) && !(mask & CWStackMode)) - return(BadMatch); - - pVlist = vlist; - - if (pParent) - { - x = pWin->drawable.x - pParent->drawable.x - (int)bw; - y = pWin->drawable.y - pParent->drawable.y - (int)bw; - } - else - { - x = pWin->drawable.x; - y = pWin->drawable.y; - } - beforeX = x; - beforeY = y; - action = RESTACK_WIN; - if ((mask & (CWX | CWY)) && (!(mask & (CWHeight | CWWidth)))) - { - GET_INT16(CWX, x); - GET_INT16(CWY, y); - action = MOVE_WIN; - } - /* or should be resized */ - else if (mask & (CWX | CWY | CWWidth | CWHeight)) - { - GET_INT16(CWX, x); - GET_INT16(CWY, y); - GET_CARD16(CWWidth, w); - GET_CARD16 (CWHeight, h); - if (!w || !h) - { - client->errorValue = 0; - return BadValue; - } - action = RESIZE_WIN; - } - tmask = mask & ~ChangeMask; - while (tmask) - { - index2 = (Mask)lowbit (tmask); - tmask &= ~index2; - switch (index2) - { - case CWBorderWidth: - GET_CARD16(CWBorderWidth, bw); - break; - case CWSibling: - sibwid = (Window ) *pVlist; - pVlist++; - pSib = (WindowPtr )SecurityLookupIDByType(client, sibwid, - RT_WINDOW, SecurityReadAccess); - if (!pSib) - { - client->errorValue = sibwid; - return(BadWindow); - } - if (pSib->parent != pParent) - return(BadMatch); - if (pSib == pWin) - return(BadMatch); - break; - case CWStackMode: - GET_CARD8(CWStackMode, smode); - if ((smode != TopIf) && (smode != BottomIf) && - (smode != Opposite) && (smode != Above) && (smode != Below)) - { - client->errorValue = smode; - return(BadValue); - } - break; - default: - client->errorValue = mask; - return(BadValue); - } - } - /* root really can't be reconfigured, so just return */ - if (!pParent) - return Success; - - /* Figure out if the window should be moved. Doesnt - make the changes to the window if event sent */ - - #ifdef TEST - if (nxagentWindowTopLevel(pWin)) - { - - fprintf(stderr, "ConfigureWindow: pWin [%p] mask [%lu] client [%p]\n", - pWin, mask, client); - - fprintf(stderr, "ConfigureWindow: x [%d] y [%d] w [%d] h [%d] CWStackMode [%d] " - "smode [%d] pSib [%p]\n", - x, y, w, h, (mask & CWStackMode) ? 1 : 0, smode, pSib); - } - #endif - - if (nxagentOption(Rootless) && nxagentWindowTopLevel(pWin) && - pWin -> overrideRedirect == 0 && - nxagentScreenTrap == 0) - { - nxagentConfigureRootlessWindow(pWin, x, y, w, h, bw, pSib, smode, mask); - - return Success; - } - - if (mask & CWStackMode) - pSib = WhereDoIGoInTheStack(pWin, pSib, pParent->drawable.x + x, - pParent->drawable.y + y, - w + (bw << 1), h + (bw << 1), smode); - else - pSib = pWin->nextSib; - -#ifdef XAPPGROUP - win_owner = clients[CLIENT_ID(pWin->drawable.id)]; - ag_leader = XagLeader (win_owner); -#endif - - if ((!pWin->overrideRedirect) && - (RedirectSend(pParent) -#ifdef XAPPGROUP - || (win_owner->appgroup && ag_leader && - XagIsControlledRoot (client, pParent)) -#endif - )) - { - event.u.u.type = ConfigureRequest; - event.u.configureRequest.window = pWin->drawable.id; - if (mask & CWSibling) - event.u.configureRequest.sibling = sibwid; - else - event.u.configureRequest.sibling = None; - if (mask & CWStackMode) - event.u.u.detail = smode; - else - event.u.u.detail = Above; - event.u.configureRequest.x = x; - event.u.configureRequest.y = y; -#ifdef PANORAMIX - if(!noPanoramiXExtension && (!pParent || !pParent->parent)) { - event.u.configureRequest.x += panoramiXdataPtr[0].x; - event.u.configureRequest.y += panoramiXdataPtr[0].y; - } -#endif - event.u.configureRequest.width = w; - event.u.configureRequest.height = h; - event.u.configureRequest.borderWidth = bw; - event.u.configureRequest.valueMask = mask; -#ifdef XAPPGROUP - /* make sure if the ag_leader maps the window it goes to the wm */ - if (ag_leader && ag_leader != client && - XagIsControlledRoot (client, pParent)) { - event.u.configureRequest.parent = XagId (win_owner); - (void) TryClientEvents (ag_leader, &event, 1, - NoEventMask, NoEventMask, NullGrab); - return Success; - } -#endif - event.u.configureRequest.parent = pParent->drawable.id; - if (MaybeDeliverEventsToClient(pParent, &event, 1, - SubstructureRedirectMask, client) == 1) - return(Success); - } - if (action == RESIZE_WIN) - { - Bool size_change = (w != pWin->drawable.width) - || (h != pWin->drawable.height); - if (size_change && ((pWin->eventMask|wOtherEventMasks(pWin)) & ResizeRedirectMask)) - { - xEvent eventT; - eventT.u.u.type = ResizeRequest; - eventT.u.resizeRequest.window = pWin->drawable.id; - eventT.u.resizeRequest.width = w; - eventT.u.resizeRequest.height = h; - if (MaybeDeliverEventsToClient(pWin, &eventT, 1, - ResizeRedirectMask, client) == 1) - { - /* if event is delivered, leave the actual size alone. */ - w = pWin->drawable.width; - h = pWin->drawable.height; - size_change = FALSE; - } - } - if (!size_change) - { - if (mask & (CWX | CWY)) - action = MOVE_WIN; - else if (mask & (CWStackMode | CWBorderWidth)) - action = RESTACK_WIN; - else /* really nothing to do */ - return(Success) ; - } - } - - if (action == RESIZE_WIN) - /* we've already checked whether there's really a size change */ - goto ActuallyDoSomething; - if ((mask & CWX) && (x != beforeX)) - goto ActuallyDoSomething; - if ((mask & CWY) && (y != beforeY)) - goto ActuallyDoSomething; - if ((mask & CWBorderWidth) && (bw != wBorderWidth (pWin))) - goto ActuallyDoSomething; - if (mask & CWStackMode) - { -#ifndef ROOTLESS - /* See above for why we always reorder in rootless mode. */ - if (pWin->nextSib != pSib) -#endif - goto ActuallyDoSomething; - } - return(Success); - -ActuallyDoSomething: - if (SubStrSend(pWin, pParent)) - { - event.u.u.type = ConfigureNotify; - event.u.configureNotify.window = pWin->drawable.id; - if (pSib) - event.u.configureNotify.aboveSibling = pSib->drawable.id; - else - event.u.configureNotify.aboveSibling = None; - event.u.configureNotify.x = x; - event.u.configureNotify.y = y; -#ifdef PANORAMIX - if(!noPanoramiXExtension && (!pParent || !pParent->parent)) { - event.u.configureNotify.x += panoramiXdataPtr[0].x; - event.u.configureNotify.y += panoramiXdataPtr[0].y; - } -#endif - event.u.configureNotify.width = w; - event.u.configureNotify.height = h; - event.u.configureNotify.borderWidth = bw; - event.u.configureNotify.override = pWin->overrideRedirect; - DeliverEvents(pWin, &event, 1, NullWindow); - } - if (mask & CWBorderWidth) - { - if (action == RESTACK_WIN) - { - action = MOVE_WIN; - pWin->borderWidth = bw; - } - else if ((action == MOVE_WIN) && - (beforeX + wBorderWidth (pWin) == x + (int)bw) && - (beforeY + wBorderWidth (pWin) == y + (int)bw)) - { - action = REBORDER_WIN; - (*pWin->drawable.pScreen->ChangeBorderWidth)(pWin, bw); - } - else - pWin->borderWidth = bw; - } - if (action == MOVE_WIN) - (*pWin->drawable.pScreen->MoveWindow)(pWin, x, y, pSib, - (mask & CWBorderWidth) ? VTOther : VTMove); - else if (action == RESIZE_WIN) - (*pWin->drawable.pScreen->ResizeWindow)(pWin, x, y, w, h, pSib); - else if (mask & CWStackMode) - ReflectStackChange(pWin, pSib, VTOther); - - if (action != RESTACK_WIN) - CheckCursorConfinement(pWin); - - nxagentFlushConfigureWindow(); - - return(Success); -#undef RESTACK_WIN -#undef MOVE_WIN -#undef RESIZE_WIN -#undef REBORDER_WIN -} - - -/****** - * - * CirculateWindow - * For RaiseLowest, raises the lowest mapped child (if any) that is - * obscured by another child to the top of the stack. For LowerHighest, - * lowers the highest mapped child (if any) that is obscuring another - * child to the bottom of the stack. Exposure processing is performed - * - ******/ - -int -CirculateWindow(WindowPtr pParent, int direction, ClientPtr client) -{ - register WindowPtr pWin, pHead, pFirst; - xEvent event; - BoxRec box; - - #ifdef TEST - fprintf(stderr, "CirculateWindow: pParent [%p] direction [%d] client [%p]\n", - pParent, direction, client); - #endif - - /* - * if (nxagentOption(Rootless) && nxagentWMIsRunning && - * nxagentWindowTopLevel(pWin) && pWin -> overrideRedirect == 0) - * { - * nxagentCirculateRootlessWindows(direction); - * return Success; - * } - */ - - pHead = RealChildHead(pParent); - pFirst = pHead ? pHead->nextSib : pParent->firstChild; - if (direction == RaiseLowest) - { - for (pWin = pParent->lastChild; - (pWin != pHead) && - !(pWin->mapped && - AnyWindowOverlapsMe(pWin, pHead, WindowExtents(pWin, &box))); - pWin = pWin->prevSib) ; - if (pWin == pHead) - return Success; - } - else - { - for (pWin = pFirst; - pWin && - !(pWin->mapped && - IOverlapAnyWindow(pWin, WindowExtents(pWin, &box))); - pWin = pWin->nextSib) ; - if (!pWin) - return Success; - } - - event.u.circulate.window = pWin->drawable.id; - event.u.circulate.parent = pParent->drawable.id; - event.u.circulate.event = pParent->drawable.id; - if (direction == RaiseLowest) - event.u.circulate.place = PlaceOnTop; - else - event.u.circulate.place = PlaceOnBottom; - - if (RedirectSend(pParent)) - { - event.u.u.type = CirculateRequest; - if (MaybeDeliverEventsToClient(pParent, &event, 1, - SubstructureRedirectMask, client) == 1) - return(Success); - } - - event.u.u.type = CirculateNotify; - DeliverEvents(pWin, &event, 1, NullWindow); - ReflectStackChange(pWin, - (direction == RaiseLowest) ? pFirst : NullWindow, - VTStack); - - return(Success); -} - -static int -CompareWIDs( - WindowPtr pWin, - pointer value) /* must conform to VisitWindowProcPtr */ -{ - Window *wid = (Window *)value; - - if (pWin->drawable.id == *wid) - return(WT_STOPWALKING); - else - return(WT_WALKCHILDREN); -} - -/***** - * ReparentWindow - *****/ - -int -ReparentWindow(register WindowPtr pWin, register WindowPtr pParent, - int x, int y, ClientPtr client) -{ - WindowPtr pPrev, pPriorParent; - Bool WasMapped = (Bool)(pWin->mapped); - xEvent event; - int bw = wBorderWidth (pWin); - register ScreenPtr pScreen; - - pScreen = pWin->drawable.pScreen; - if (TraverseTree(pWin, CompareWIDs, (pointer)&pParent->drawable.id) == WT_STOPWALKING) - return(BadMatch); - if (!MakeWindowOptional(pWin)) - return(BadAlloc); - - if (WasMapped) - UnmapWindow(pWin, FALSE); - - event.u.u.type = ReparentNotify; - event.u.reparent.window = pWin->drawable.id; - event.u.reparent.parent = pParent->drawable.id; - event.u.reparent.x = x; - event.u.reparent.y = y; -#ifdef PANORAMIX - if(!noPanoramiXExtension && !pParent->parent) { - event.u.reparent.x += panoramiXdataPtr[0].x; - event.u.reparent.y += panoramiXdataPtr[0].y; - } -#endif - event.u.reparent.override = pWin->overrideRedirect; - DeliverEvents(pWin, &event, 1, pParent); - - /* take out of sibling chain */ - - pPriorParent = pPrev = pWin->parent; - if (pPrev->firstChild == pWin) - pPrev->firstChild = pWin->nextSib; - if (pPrev->lastChild == pWin) - pPrev->lastChild = pWin->prevSib; - - if (pWin->nextSib) - pWin->nextSib->prevSib = pWin->prevSib; - if (pWin->prevSib) - pWin->prevSib->nextSib = pWin->nextSib; - - /* insert at begining of pParent */ - pWin->parent = pParent; - pPrev = RealChildHead(pParent); - - if (pWin->parent == WindowTable[0]) - { - nxagentSetTopLevelEventMask(pWin); - } - - if (pPrev) - { - pWin->nextSib = pPrev->nextSib; - if (pPrev->nextSib) - pPrev->nextSib->prevSib = pWin; - else - pParent->lastChild = pWin; - pPrev->nextSib = pWin; - pWin->prevSib = pPrev; - } - else - { - pWin->nextSib = pParent->firstChild; - pWin->prevSib = NullWindow; - if (pParent->firstChild) - pParent->firstChild->prevSib = pWin; - else - pParent->lastChild = pWin; - pParent->firstChild = pWin; - } - - pWin->origin.x = x + bw; - pWin->origin.y = y + bw; - pWin->drawable.x = x + bw + pParent->drawable.x; - pWin->drawable.y = y + bw + pParent->drawable.y; - - /* clip to parent */ - SetWinSize (pWin); - SetBorderSize (pWin); - - if (pScreen->ReparentWindow) - (*pScreen->ReparentWindow)(pWin, pPriorParent); - - (*pScreen->PositionWindow)(pWin, pWin->drawable.x, pWin->drawable.y); - - ResizeChildrenWinSize(pWin, 0, 0, 0, 0); - - CheckWindowOptionalNeed(pWin); - - if (WasMapped) - MapWindow(pWin, client); - RecalculateDeliverableEvents(pWin); - return(Success); -} - -static void -RealizeTree(WindowPtr pWin) -{ - register WindowPtr pChild; - RealizeWindowProcPtr Realize; - - Realize = pWin->drawable.pScreen->RealizeWindow; - pChild = pWin; - while (1) - { - if (pChild->mapped) - { - pChild->realized = TRUE; -#ifdef DO_SAVE_UNDERS - if (pChild->saveUnder) - deltaSaveUndersViewable++; -#endif - pChild->viewable = (pChild->drawable.class == InputOutput); - (* Realize)(pChild); - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - } - while (!pChild->nextSib && (pChild != pWin)) - pChild = pChild->parent; - if (pChild == pWin) - return; - pChild = pChild->nextSib; - } -} - -/***** - * MapWindow - * If some other client has selected SubStructureReDirect on the parent - * and override-redirect is xFalse, then a MapRequest event is generated, - * but the window remains unmapped. Otherwise, the window is mapped and a - * MapNotify event is generated. - *****/ - -int -MapWindow(register WindowPtr pWin, ClientPtr client) -{ - register ScreenPtr pScreen; - - register WindowPtr pParent; -#ifdef DO_SAVE_UNDERS - Bool dosave = FALSE; -#endif - WindowPtr pLayerWin; - - #ifdef TEST - if (nxagentWindowTopLevel(pWin)) - { - fprintf(stderr, "MapWindow: pWin [%p] client [%p]\n", pWin, client); - } - #endif - - if (pWin->mapped) - return(Success); - -#ifdef XCSECURITY - /* don't let an untrusted client map a child-of-trusted-window, InputOnly - * window; too easy to steal device input - */ - if ( (client->trustLevel != XSecurityClientTrusted) && - (pWin->drawable.class == InputOnly) && - (wClient(pWin->parent)->trustLevel == XSecurityClientTrusted) ) - return Success; -#endif - - pScreen = pWin->drawable.pScreen; - if ( (pParent = pWin->parent) ) - { - xEvent event; - Bool anyMarked; -#ifdef XAPPGROUP - ClientPtr win_owner = clients[CLIENT_ID(pWin->drawable.id)]; - ClientPtr ag_leader = XagLeader (win_owner); -#endif - - if ((!pWin->overrideRedirect) && - (RedirectSend(pParent) -#ifdef XAPPGROUP - || (win_owner->appgroup && ag_leader && - XagIsControlledRoot (client, pParent)) -#endif - )) - { - event.u.u.type = MapRequest; - event.u.mapRequest.window = pWin->drawable.id; -#ifdef XAPPGROUP - /* make sure if the ag_leader maps the window it goes to the wm */ - if (ag_leader && ag_leader != client && - XagIsControlledRoot (client, pParent)) { - event.u.mapRequest.parent = XagId (win_owner); - (void) TryClientEvents (ag_leader, &event, 1, - NoEventMask, NoEventMask, NullGrab); - return Success; - } -#endif - event.u.mapRequest.parent = pParent->drawable.id; - - if (MaybeDeliverEventsToClient(pParent, &event, 1, - SubstructureRedirectMask, client) == 1) - return(Success); - } - - pWin->mapped = TRUE; - if (SubStrSend(pWin, pParent)) - { - event.u.u.type = MapNotify; - event.u.mapNotify.window = pWin->drawable.id; - event.u.mapNotify.override = pWin->overrideRedirect; - DeliverEvents(pWin, &event, 1, NullWindow); - } - - if (!pParent->realized) - return(Success); - RealizeTree(pWin); - if (pWin->viewable) - { - anyMarked = (*pScreen->MarkOverlappedWindows)(pWin, pWin, - &pLayerWin); -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, pWin->nextSib); - } -#endif /* DO_SAVE_UNDERS */ - if (anyMarked) - { - (*pScreen->ValidateTree)(pLayerWin->parent, pLayerWin, VTMap); - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (dosave) - (*pScreen->PostChangeSaveUnder)(pLayerWin, pWin->nextSib); -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pLayerWin, VTMap); - } - WindowsRestructured (); - } - else - { - RegionRec temp; - - pWin->mapped = TRUE; - pWin->realized = TRUE; /* for roots */ - pWin->viewable = pWin->drawable.class == InputOutput; - /* We SHOULD check for an error value here XXX */ - (*pScreen->RealizeWindow)(pWin); - if (pScreen->ClipNotify) - (*pScreen->ClipNotify) (pWin, 0, 0); - if (pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(NullWindow, pWin, VTMap); - REGION_NULL(pScreen, &temp); - REGION_COPY(pScreen, &temp, &pWin->clipList); - (*pScreen->WindowExposures) (pWin, &temp, NullRegion); - REGION_UNINIT(pScreen, &temp); - } - - nxagentFlushConfigureWindow(); - - return(Success); -} - - -/***** - * MapSubwindows - * Performs a MapWindow all unmapped children of the window, in top - * to bottom stacking order. - *****/ - -void -MapSubwindows(register WindowPtr pParent, ClientPtr client) -{ - register WindowPtr pWin; - WindowPtr pFirstMapped = NullWindow; -#ifdef DO_SAVE_UNDERS - WindowPtr pFirstSaveUndered = NullWindow; -#endif - register ScreenPtr pScreen; - register Mask parentRedirect; - register Mask parentNotify; - xEvent event; - Bool anyMarked; -#ifdef DO_SAVE_UNDERS - Bool dosave = FALSE; -#endif - WindowPtr pLayerWin; - - pScreen = pParent->drawable.pScreen; - parentRedirect = RedirectSend(pParent); - parentNotify = SubSend(pParent); - anyMarked = FALSE; - for (pWin = pParent->firstChild; pWin; pWin = pWin->nextSib) - { - if (!pWin->mapped) - { - if (parentRedirect && !pWin->overrideRedirect) - { - event.u.u.type = MapRequest; - event.u.mapRequest.window = pWin->drawable.id; - event.u.mapRequest.parent = pParent->drawable.id; - - if (MaybeDeliverEventsToClient(pParent, &event, 1, - SubstructureRedirectMask, client) == 1) - continue; - } - - pWin->mapped = TRUE; - if (parentNotify || StrSend(pWin)) - { - event.u.u.type = MapNotify; - event.u.mapNotify.window = pWin->drawable.id; - event.u.mapNotify.override = pWin->overrideRedirect; - DeliverEvents(pWin, &event, 1, NullWindow); - } - - if (!pFirstMapped) - pFirstMapped = pWin; - if (pParent->realized) - { - RealizeTree(pWin); - if (pWin->viewable) - { - anyMarked |= (*pScreen->MarkOverlappedWindows)(pWin, pWin, - (WindowPtr *)NULL); -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - dosave = TRUE; - } -#endif /* DO_SAVE_UNDERS */ - } - } - } - } - - if (pFirstMapped) - { - pLayerWin = (*pScreen->GetLayerWindow)(pParent); - if (pLayerWin->parent != pParent) { - anyMarked |= (*pScreen->MarkOverlappedWindows)(pLayerWin, - pLayerWin, - (WindowPtr *)NULL); - pFirstMapped = pLayerWin; - } - if (anyMarked) - { -#ifdef DO_SAVE_UNDERS - if (pLayerWin->parent != pParent) - { - if (dosave || (DO_SAVE_UNDERS(pLayerWin))) - { - dosave = (*pScreen->ChangeSaveUnder)(pLayerWin, - pLayerWin); - } - } - else if (dosave) - { - dosave = FALSE; - for (pWin = pParent->firstChild; pWin; pWin = pWin->nextSib) - { - if (DO_SAVE_UNDERS(pWin)) - { - dosave |= (*pScreen->ChangeSaveUnder)(pWin, - pWin->nextSib); - if (dosave && !pFirstSaveUndered) - pFirstSaveUndered = pWin; - } - } - } -#endif /* DO_SAVE_UNDERS */ - (*pScreen->ValidateTree)(pLayerWin->parent, pFirstMapped, VTMap); - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (dosave) - (*pScreen->PostChangeSaveUnder)(pLayerWin, - pFirstSaveUndered->nextSib); -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pFirstMapped, - VTMap); - WindowsRestructured (); - } -} - -static void -UnrealizeTree( - WindowPtr pWin, - Bool fromConfigure) -{ - register WindowPtr pChild; - UnrealizeWindowProcPtr Unrealize; - MarkUnrealizedWindowProcPtr MarkUnrealizedWindow; - - Unrealize = pWin->drawable.pScreen->UnrealizeWindow; - MarkUnrealizedWindow = pWin->drawable.pScreen->MarkUnrealizedWindow; - pChild = pWin; - while (1) - { - if (pChild->realized) - { - pChild->realized = FALSE; - pChild->visibility = VisibilityNotViewable; -#ifdef PANORAMIX - if(!noPanoramiXExtension && !pChild->drawable.pScreen->myNum) { - PanoramiXRes *win; - win = (PanoramiXRes*)LookupIDByType(pChild->drawable.id, - XRT_WINDOW); - if(win) - win->u.win.visibility = VisibilityNotViewable; - } -#endif - (* Unrealize)(pChild); - DeleteWindowFromAnyEvents(pChild, FALSE); - if (pChild->viewable) - { -#ifdef DO_SAVE_UNDERS - if (pChild->saveUnder) - deltaSaveUndersViewable--; -#endif - pChild->viewable = FALSE; - if (pChild->backStorage) - (*pChild->drawable.pScreen->SaveDoomedAreas)( - pChild, &pChild->clipList, 0, 0); - (* MarkUnrealizedWindow)(pChild, pWin, fromConfigure); - pChild->drawable.serialNumber = NEXT_SERIAL_NUMBER; - } - if (pChild->firstChild) - { - pChild = pChild->firstChild; - continue; - } - } - while (!pChild->nextSib && (pChild != pWin)) - pChild = pChild->parent; - if (pChild == pWin) - return; - pChild = pChild->nextSib; - } -} - -/***** - * UnmapWindow - * If the window is already unmapped, this request has no effect. - * Otherwise, the window is unmapped and an UnMapNotify event is - * generated. Cannot unmap a root window. - *****/ - -int -UnmapWindow(register WindowPtr pWin, Bool fromConfigure) -{ - register WindowPtr pParent; - xEvent event; - Bool wasRealized = (Bool)pWin->realized; - Bool wasViewable = (Bool)pWin->viewable; - ScreenPtr pScreen = pWin->drawable.pScreen; - WindowPtr pLayerWin = pWin; - - #ifdef TEST - if (nxagentWindowTopLevel(pWin)) - { - fprintf(stderr, "UnmapWindow: pWin [%p] fromConfigure [%d]\n", pWin, - fromConfigure); - } - #endif - - if ((!pWin->mapped) || (!(pParent = pWin->parent))) - return(Success); - if (SubStrSend(pWin, pParent)) - { - event.u.u.type = UnmapNotify; - event.u.unmapNotify.window = pWin->drawable.id; - event.u.unmapNotify.fromConfigure = fromConfigure; - DeliverEvents(pWin, &event, 1, NullWindow); - } - if (wasViewable && !fromConfigure) - { - pWin->valdata = UnmapValData; - (*pScreen->MarkOverlappedWindows)(pWin, pWin->nextSib, &pLayerWin); - (*pScreen->MarkWindow)(pLayerWin->parent); - } - pWin->mapped = FALSE; - if (wasRealized) - UnrealizeTree(pWin, fromConfigure); - if (wasViewable) - { - if (!fromConfigure) - { - (*pScreen->ValidateTree)(pLayerWin->parent, pWin, VTUnmap); - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - if ( (*pScreen->ChangeSaveUnder)(pLayerWin, pWin->nextSib) ) - { - (*pScreen->PostChangeSaveUnder)(pLayerWin, pWin->nextSib); - } - } - pWin->DIXsaveUnder = FALSE; -#endif /* DO_SAVE_UNDERS */ - if (!fromConfigure && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pWin, VTUnmap); - } - if (wasRealized && !fromConfigure) - WindowsRestructured (); - return(Success); -} - -/***** - * UnmapSubwindows - * Performs an UnmapWindow request with the specified mode on all mapped - * children of the window, in bottom to top stacking order. - *****/ - -void -UnmapSubwindows(register WindowPtr pWin) -{ - register WindowPtr pChild, pHead; - xEvent event; - Bool wasRealized = (Bool)pWin->realized; - Bool wasViewable = (Bool)pWin->viewable; - Bool anyMarked = FALSE; - Mask parentNotify; - WindowPtr pLayerWin = NULL; - ScreenPtr pScreen = pWin->drawable.pScreen; - - if (!pWin->firstChild) - return; - parentNotify = SubSend(pWin); - pHead = RealChildHead(pWin); - - if (wasViewable) - pLayerWin = (*pScreen->GetLayerWindow)(pWin); - - for (pChild = pWin->lastChild; pChild != pHead; pChild = pChild->prevSib) - { - if (pChild->mapped) - { - if (parentNotify || StrSend(pChild)) - { - event.u.u.type = UnmapNotify; - event.u.unmapNotify.window = pChild->drawable.id; - event.u.unmapNotify.fromConfigure = xFalse; - DeliverEvents(pChild, &event, 1, NullWindow); - } - if (pChild->viewable) - { - pChild->valdata = UnmapValData; - anyMarked = TRUE; - } - pChild->mapped = FALSE; - if (pChild->realized) - UnrealizeTree(pChild, FALSE); - if (wasViewable) - { -#ifdef DO_SAVE_UNDERS - pChild->DIXsaveUnder = FALSE; -#endif /* DO_SAVE_UNDERS */ - if (pChild->backStorage) - (*pScreen->SaveDoomedAreas)( - pChild, &pChild->clipList, 0, 0); - } - } - } - if (wasViewable) - { - if (anyMarked) - { - if (pLayerWin->parent == pWin) - (*pScreen->MarkWindow)(pWin); - else - { - WindowPtr ptmp; - (*pScreen->MarkOverlappedWindows)(pWin, pLayerWin, - (WindowPtr *)NULL); - (*pScreen->MarkWindow)(pLayerWin->parent); - - /* Windows between pWin and pLayerWin may not have been marked */ - ptmp = pWin; - - while (ptmp != pLayerWin->parent) - { - (*pScreen->MarkWindow)(ptmp); - ptmp = ptmp->parent; - } - pHead = pWin->firstChild; - } - (*pScreen->ValidateTree)(pLayerWin->parent, pHead, VTUnmap); - (*pScreen->HandleExposures)(pLayerWin->parent); - } -#ifdef DO_SAVE_UNDERS - if (DO_SAVE_UNDERS(pWin)) - { - if ( (*pScreen->ChangeSaveUnder)(pLayerWin, pLayerWin)) - (*pScreen->PostChangeSaveUnder)(pLayerWin, pLayerWin); - } -#endif /* DO_SAVE_UNDERS */ - if (anyMarked && pScreen->PostValidateTree) - (*pScreen->PostValidateTree)(pLayerWin->parent, pHead, VTUnmap); - } - if (wasRealized) - WindowsRestructured (); -} - - -void -HandleSaveSet(register ClientPtr client) -{ - register WindowPtr pParent, pWin; - register int j; - - for (j=0; j<client->numSaved; j++) - { - pWin = SaveSetWindow(client->saveSet[j]); -#ifdef XFIXES - if (SaveSetToRoot(client->saveSet[j])) - pParent = WindowTable[pWin->drawable.pScreen->myNum]; - else -#endif - { - pParent = pWin->parent; - while (pParent && (wClient (pParent) == client)) - pParent = pParent->parent; - } - if (pParent) - { - if (pParent != pWin->parent) - { - ReparentWindow(pWin, pParent, - pWin->drawable.x - wBorderWidth (pWin) - pParent->drawable.x, - pWin->drawable.y - wBorderWidth (pWin) - pParent->drawable.y, - client); - if(!pWin->realized && pWin->mapped) - pWin->mapped = FALSE; - } -#ifdef XFIXES - if (SaveSetRemap (client->saveSet[j])) -#endif - MapWindow(pWin, client); - } - } - xfree(client->saveSet); - client->numSaved = 0; - client->saveSet = (SaveSetElt *)NULL; -} - -/** - * - * \param x,y in root - * \param box "return" value - */ -Bool -VisibleBoundingBoxFromPoint(register WindowPtr pWin, int x, int y, BoxPtr box) -{ - if (!pWin->realized) - return (FALSE); - if (POINT_IN_REGION(pWin->drawable.pScreen, &pWin->clipList, x, y, box)) - return(TRUE); - return(FALSE); -} - -/** - * - * \param x,y in root - */ -Bool -PointInWindowIsVisible(register WindowPtr pWin, int x, int y) -{ - BoxRec box; - - if (!pWin->realized) - return (FALSE); - if (POINT_IN_REGION(pWin->drawable.pScreen, &pWin->borderClip, - x, y, &box) - && (!wInputShape(pWin) || - POINT_IN_REGION(pWin->drawable.pScreen, - wInputShape(pWin), - x - pWin->drawable.x, - y - pWin->drawable.y, &box))) - return(TRUE); - return(FALSE); -} - - -RegionPtr -NotClippedByChildren(register WindowPtr pWin) -{ - register ScreenPtr pScreen; - RegionPtr pReg; - - pScreen = pWin->drawable.pScreen; - pReg = REGION_CREATE(pScreen, NullBox, 1); - if (pWin->parent || - screenIsSaved != SCREEN_SAVER_ON || - !HasSaverWindow (pWin->drawable.pScreen->myNum)) - { - REGION_INTERSECT(pScreen, pReg, &pWin->borderClip, &pWin->winSize); - } - return(pReg); -} - -void -SendVisibilityNotify(WindowPtr pWin) -{ - xEvent event; -#ifndef NO_XINERAMA_PORT - unsigned int visibility = pWin->visibility; -#endif -#ifdef PANORAMIX - /* This is not quite correct yet, but it's close */ - if(!noPanoramiXExtension) { - PanoramiXRes *win; - WindowPtr pWin2; - int i, Scrnum; - - Scrnum = pWin->drawable.pScreen->myNum; - - win = PanoramiXFindIDByScrnum(XRT_WINDOW, pWin->drawable.id, Scrnum); - - if(!win || (win->u.win.visibility == visibility)) - return; - - switch(visibility) { - case VisibilityUnobscured: - for(i = 0; i < PanoramiXNumScreens; i++) { - if(i == Scrnum) continue; - - pWin2 = (WindowPtr)LookupIDByType(win->info[i].id, RT_WINDOW); - - if (pWin2) { - if(pWin2->visibility == VisibilityPartiallyObscured) - return; - - if(!i) pWin = pWin2; - } - } - break; - case VisibilityPartiallyObscured: - if(Scrnum) { - pWin2 = (WindowPtr)LookupIDByType(win->info[0].id, RT_WINDOW); - if (pWin2) pWin = pWin2; - } - break; - case VisibilityFullyObscured: - for(i = 0; i < PanoramiXNumScreens; i++) { - if(i == Scrnum) continue; - - pWin2 = (WindowPtr)LookupIDByType(win->info[i].id, RT_WINDOW); - - if (pWin2) { - if(pWin2->visibility != VisibilityFullyObscured) - return; - - if(!i) pWin = pWin2; - } - } - break; - } - - win->u.win.visibility = visibility; - } -#endif - - event.u.u.type = VisibilityNotify; - event.u.visibility.window = pWin->drawable.id; - event.u.visibility.state = visibility; - DeliverEvents(pWin, &event, 1, NullWindow); -} - - -#define RANDOM_WIDTH 32 - -#ifndef NOLOGOHACK -static void DrawLogo( - WindowPtr pWin -); -#endif - -void -SaveScreens(int on, int mode) -{ - int i; - int what; - int type; - - if (on == SCREEN_SAVER_FORCER) - { - UpdateCurrentTimeIf(); - lastDeviceEventTime = currentTime; - if (mode == ScreenSaverReset) - what = SCREEN_SAVER_OFF; - else - what = SCREEN_SAVER_ON; - type = what; - } - else - { - what = on; - type = what; - if (what == screenIsSaved) - type = SCREEN_SAVER_CYCLE; - } - for (i = 0; i < screenInfo.numScreens; i++) - { - if (on == SCREEN_SAVER_FORCER) - (* screenInfo.screens[i]->SaveScreen) (screenInfo.screens[i], on); - if (savedScreenInfo[i].ExternalScreenSaver) - { - if (nxagentOption(Timeout) != 0) - { - #ifdef TEST - fprintf(stderr, "SaveScreens: An external screen-saver handler is installed. " - "Ignoring it to let the auto-disconnect feature work.\n"); - #endif - } - else - { - if ((*savedScreenInfo[i].ExternalScreenSaver) - (screenInfo.screens[i], type, on == SCREEN_SAVER_FORCER)) - continue; - } - } - if (type == screenIsSaved) - continue; - switch (type) { - case SCREEN_SAVER_OFF: - if (savedScreenInfo[i].blanked == SCREEN_IS_BLANKED) - { - (* screenInfo.screens[i]->SaveScreen) (screenInfo.screens[i], - what); - } - else if (HasSaverWindow (i)) - { - savedScreenInfo[i].pWindow = NullWindow; - FreeResource(savedScreenInfo[i].wid, RT_NONE); - } - break; - case SCREEN_SAVER_CYCLE: - if (savedScreenInfo[i].blanked == SCREEN_IS_TILED) - { - WindowPtr pWin = savedScreenInfo[i].pWindow; - /* make it look like screen saver is off, so that - * NotClippedByChildren will compute a clip list - * for the root window, so miPaintWindow works - */ - screenIsSaved = SCREEN_SAVER_OFF; -#ifndef NOLOGOHACK - if (logoScreenSaver) - (*pWin->drawable.pScreen->ClearToBackground)(pWin, 0, 0, 0, 0, FALSE); -#endif - (*pWin->drawable.pScreen->MoveWindow)(pWin, - (short)(-(rand() % RANDOM_WIDTH)), - (short)(-(rand() % RANDOM_WIDTH)), - pWin->nextSib, VTMove); -#ifndef NOLOGOHACK - if (logoScreenSaver) - DrawLogo(pWin); -#endif - screenIsSaved = SCREEN_SAVER_ON; - } - /* - * Call the DDX saver in case it wants to do something - * at cycle time - */ - else if (savedScreenInfo[i].blanked == SCREEN_IS_BLANKED) - { - (* screenInfo.screens[i]->SaveScreen) (screenInfo.screens[i], - type); - } - break; - case SCREEN_SAVER_ON: - if (ScreenSaverBlanking != DontPreferBlanking) - { - if ((* screenInfo.screens[i]->SaveScreen) - (screenInfo.screens[i], what)) - { - savedScreenInfo[i].blanked = SCREEN_IS_BLANKED; - continue; - } - if ((ScreenSaverAllowExposures != DontAllowExposures) && - TileScreenSaver(i, SCREEN_IS_BLACK)) - { - savedScreenInfo[i].blanked = SCREEN_IS_BLACK; - continue; - } - } - if ((ScreenSaverAllowExposures != DontAllowExposures) && - TileScreenSaver(i, SCREEN_IS_TILED)) - { - savedScreenInfo[i].blanked = SCREEN_IS_TILED; - } - else - savedScreenInfo[i].blanked = SCREEN_ISNT_SAVED; - break; - } - } - screenIsSaved = what; - if (mode == ScreenSaverReset) - SetScreenSaverTimer(); -} - -static Bool -TileScreenSaver(int i, int kind) -{ - int j; - int result; - XID attributes[3]; - Mask mask; - WindowPtr pWin; - CursorMetricRec cm; - unsigned char *srcbits, *mskbits; - CursorPtr cursor; - XID cursorID = 0; - int attri; - - mask = 0; - attri = 0; - switch (kind) { - case SCREEN_IS_TILED: - switch (WindowTable[i]->backgroundState) { - case BackgroundPixel: - attributes[attri++] = WindowTable[i]->background.pixel; - mask |= CWBackPixel; - break; - case BackgroundPixmap: - attributes[attri++] = None; - mask |= CWBackPixmap; - break; - default: - break; - } - break; - case SCREEN_IS_BLACK: - attributes[attri++] = WindowTable[i]->drawable.pScreen->blackPixel; - mask |= CWBackPixel; - break; - } - mask |= CWOverrideRedirect; - attributes[attri++] = xTrue; - - /* - * create a blank cursor - */ - - cm.width=16; - cm.height=16; - cm.xhot=8; - cm.yhot=8; - srcbits = (unsigned char *)xalloc( BitmapBytePad(32)*16); - mskbits = (unsigned char *)xalloc( BitmapBytePad(32)*16); - if (!srcbits || !mskbits) - { - xfree(srcbits); - xfree(mskbits); - cursor = 0; - } - else - { - for (j=0; j<BitmapBytePad(32)*16; j++) - srcbits[j] = mskbits[j] = 0x0; - cursor = AllocCursor(srcbits, mskbits, &cm, 0, 0, 0, 0, 0, 0); - if (cursor) - { - cursorID = FakeClientID(0); - if (AddResource (cursorID, RT_CURSOR, (pointer) cursor)) - { - attributes[attri] = cursorID; - mask |= CWCursor; - } - else - cursor = 0; - } - else - { - xfree (srcbits); - xfree (mskbits); - } - } - - pWin = savedScreenInfo[i].pWindow = - CreateWindow(savedScreenInfo[i].wid, - WindowTable[i], - -RANDOM_WIDTH, -RANDOM_WIDTH, - (unsigned short)screenInfo.screens[i]->width + RANDOM_WIDTH, - (unsigned short)screenInfo.screens[i]->height + RANDOM_WIDTH, - 0, InputOutput, mask, attributes, 0, serverClient, - wVisual (WindowTable[i]), &result); - - if (cursor) - FreeResource (cursorID, RT_NONE); - - if (!pWin) - return FALSE; - - if (!AddResource(pWin->drawable.id, RT_WINDOW, - (pointer)savedScreenInfo[i].pWindow)) - return FALSE; - - if (mask & CWBackPixmap) - { - MakeRootTile (pWin); - (*pWin->drawable.pScreen->ChangeWindowAttributes)(pWin, CWBackPixmap); - } - MapWindow(pWin, serverClient); -#ifndef NOLOGOHACK - if (kind == SCREEN_IS_TILED && logoScreenSaver) - DrawLogo(pWin); -#endif - return TRUE; -} - -/* - * FindWindowWithOptional - * - * search ancestors of the given window for an entry containing - * a WindowOpt structure. Assumptions: some parent will - * contain the structure. - */ - -WindowPtr -FindWindowWithOptional (register WindowPtr w) -{ - do - w = w->parent; - while (!w->optional); - return w; -} - -/* - * CheckWindowOptionalNeed - * - * check each optional entry in the given window to see if - * the value is satisfied by the default rules. If so, - * release the optional record - */ - -void -CheckWindowOptionalNeed (register WindowPtr w) -{ - register WindowOptPtr optional; - register WindowOptPtr parentOptional; - - if (!w->parent) - return; - optional = w->optional; - if (optional->dontPropagateMask != DontPropagateMasks[w->dontPropagate]) - return; - if (optional->otherEventMasks != 0) - return; - if (optional->otherClients != NULL) - return; - if (optional->passiveGrabs != NULL) - return; - if (optional->userProps != NULL) - return; - if (optional->backingBitPlanes != ~0L) - return; - if (optional->backingPixel != 0) - return; -#ifdef SHAPE - if (optional->boundingShape != NULL) - return; - if (optional->clipShape != NULL) - return; - if (optional->inputShape != NULL) - return; -#endif -#ifdef XINPUT - if (optional->inputMasks != NULL) - return; -#endif - parentOptional = FindWindowWithOptional(w)->optional; - if (optional->visual != parentOptional->visual) - return; - if (optional->cursor != None && - (optional->cursor != parentOptional->cursor || - w->parent->cursorIsNone)) - return; - if (optional->colormap != parentOptional->colormap) - return; - DisposeWindowOptional (w); -} - -/* - * MakeWindowOptional - * - * create an optional record and initialize it with the default - * values. - */ - -Bool -MakeWindowOptional (register WindowPtr pWin) -{ - register WindowOptPtr optional; - register WindowOptPtr parentOptional; - - if (pWin->optional) - return TRUE; - optional = (WindowOptPtr) xalloc (sizeof (WindowOptRec)); - if (!optional) - return FALSE; - optional->dontPropagateMask = DontPropagateMasks[pWin->dontPropagate]; - optional->otherEventMasks = 0; - optional->otherClients = NULL; - optional->passiveGrabs = NULL; - optional->userProps = NULL; - optional->backingBitPlanes = ~0L; - optional->backingPixel = 0; -#ifdef SHAPE - optional->boundingShape = NULL; - optional->clipShape = NULL; - optional->inputShape = NULL; -#endif -#ifdef XINPUT - optional->inputMasks = NULL; -#endif - parentOptional = FindWindowWithOptional(pWin)->optional; - optional->visual = parentOptional->visual; - if (!pWin->cursorIsNone) - { - optional->cursor = parentOptional->cursor; - optional->cursor->refcnt++; - } - else - { - optional->cursor = None; - } - optional->colormap = parentOptional->colormap; - pWin->optional = optional; - return TRUE; -} - -void -DisposeWindowOptional (register WindowPtr pWin) -{ - if (!pWin->optional) - return; - /* - * everything is peachy. Delete the optional record - * and clean up - */ - /* - * TOG changed this code to: - * - * if (pWin->cursorIsNone == FALSE) - * FreeCursor (pWin->optional->cursor, (Cursor)0); - * pWin->cursorIsNone = TRUE; - * - * This is blatently wrong; windows without optionals can have - * two different cursor values, either None or sharing their - * parents cursor. This difference is controlled by the - * cursorIsNone value; when TRUE, the window has no cursor, - * when false, it shares its cursor with its parent; TOG - * made it impossible for a window to have a cursor without - * an optional record. - */ - if (pWin->optional->cursor) - { - FreeCursor (pWin->optional->cursor, (Cursor)0); - pWin->cursorIsNone = FALSE; - } - else - pWin->cursorIsNone = TRUE; -/* FIXME - There is an error when disposing ClientResources on Agent exit - this xfree is not valid in some window at exit -*/ - - xfree (pWin->optional); - pWin->optional = NULL; -} - -#ifndef NOLOGOHACK -static void -DrawLogo(WindowPtr pWin) -{ - DrawablePtr pDraw; - ScreenPtr pScreen; - int x, y; - unsigned int width, height, size; - GC *pGC; - int thin, gap, d31; - DDXPointRec poly[4]; - ChangeGCVal fore[2], back[2]; - xrgb rgb[2]; - BITS32 fmask, bmask; - ColormapPtr cmap; - - pDraw = (DrawablePtr)pWin; - pScreen = pDraw->pScreen; - x = -pWin->origin.x; - y = -pWin->origin.y; - width = pScreen->width; - height = pScreen->height; - pGC = GetScratchGC(pScreen->rootDepth, pScreen); - if (!pGC) - return; - - if ((rand() % 100) <= 17) /* make the probability for white fairly low */ - fore[0].val = pScreen->whitePixel; - else - fore[0].val = pScreen->blackPixel; - if ((pWin->backgroundState == BackgroundPixel) && - (cmap = (ColormapPtr)LookupIDByType(wColormap (pWin), RT_COLORMAP))) { - Pixel querypixels[2]; - - querypixels[0] = fore[0].val; - querypixels[1] = pWin->background.pixel; - QueryColors(cmap, 2, querypixels, rgb); - if ((rgb[0].red == rgb[1].red) && - (rgb[0].green == rgb[1].green) && - (rgb[0].blue == rgb[1].blue)) { - if (fore[0].val == pScreen->blackPixel) - fore[0].val = pScreen->whitePixel; - else - fore[0].val = pScreen->blackPixel; - } - } - fore[1].val = FillSolid; - fmask = GCForeground|GCFillStyle; - if (pWin->backgroundState == BackgroundPixel) { - back[0].val = pWin->background.pixel; - back[1].val = FillSolid; - bmask = GCForeground|GCFillStyle; - } else { - back[0].val = 0; - back[1].val = 0; - dixChangeGC(NullClient, pGC, GCTileStipXOrigin|GCTileStipYOrigin, - NULL, back); - back[0].val = FillTiled; - back[1].ptr = pWin->background.pixmap; - bmask = GCFillStyle|GCTile; - } - - /* should be the same as the reference function XmuDrawLogo() */ - - size = width; - if (height < width) - size = height; - size = RANDOM_WIDTH + rand() % (size - RANDOM_WIDTH); - size &= ~1; - x += rand() % (width - size); - y += rand() % (height - size); - -/* - * Draw what will be the thin strokes. - * - * ----- - * / / - * / / - * / / - * / / - * /____/ - * d - * - * Point d is 9/44 (~1/5) of the way across. - */ - - thin = (size / 11); - if (thin < 1) thin = 1; - gap = (thin+3) / 4; - d31 = thin + thin + gap; - poly[0].x = x + size; poly[0].y = y; - poly[1].x = x + size-d31; poly[1].y = y; - poly[2].x = x + 0; poly[2].y = y + size; - poly[3].x = x + d31; poly[3].y = y + size; - dixChangeGC(NullClient, pGC, fmask, NULL, fore); - ValidateGC(pDraw, pGC); - (*pGC->ops->FillPolygon)(pDraw, pGC, Convex, CoordModeOrigin, 4, poly); - -/* - * Erase area not needed for lower thin stroke. - * - * ------ - * / / - * / __ / - * / / / - * / / / - * /__/__/ - */ - - poly[0].x = x + d31/2; poly[0].y = y + size; - poly[1].x = x + size / 2; poly[1].y = y + size/2; - poly[2].x = x + (size/2)+(d31-(d31/2)); poly[2].y = y + size/2; - poly[3].x = x + d31; poly[3].y = y + size; - dixChangeGC(NullClient, pGC, bmask, NULL, back); - ValidateGC(pDraw, pGC); - (*pGC->ops->FillPolygon)(pDraw, pGC, Convex, CoordModeOrigin, 4, poly); - -/* - * Erase area not needed for upper thin stroke. - * - * ------ - * / / / - * /--/ / - * / / - * / / - * /_____/ - */ - - poly[0].x = x + size - d31/2; poly[0].y = y; - poly[1].x = x + size / 2; poly[1].y = y + size/2; - poly[2].x = x + (size/2)-(d31-(d31/2)); poly[2].y = y + size/2; - poly[3].x = x + size - d31; poly[3].y = y; - ValidateGC(pDraw, pGC); - (*pGC->ops->FillPolygon)(pDraw, pGC, Convex, CoordModeOrigin, 4, poly); - -/* - * Draw thick stroke. - * Point b is 1/4 of the way across. - * - * b - * ----- - * \ \ - * \ \ - * \ \ - * \ \ - * \____\ - */ - - poly[0].x = x; poly[0].y = y; - poly[1].x = x + size/4; poly[1].y = y; - poly[2].x = x + size; poly[2].y = y + size; - poly[3].x = x + size - size/4; poly[3].y = y + size; - dixChangeGC(NullClient, pGC, fmask, NULL, fore); - ValidateGC(pDraw, pGC); - (*pGC->ops->FillPolygon)(pDraw, pGC, Convex, CoordModeOrigin, 4, poly); - -/* - * Erase to create gap. - * - * / - * / - * / - * / - * / - */ - - poly[0].x = x + size- thin; poly[0].y = y; - poly[1].x = x + size-( thin+gap); poly[1].y = y; - poly[2].x = x + thin; poly[2].y = y + size; - poly[3].x = x + thin + gap; poly[3].y = y + size; - dixChangeGC(NullClient, pGC, bmask, NULL, back); - ValidateGC(pDraw, pGC); - (*pGC->ops->FillPolygon)(pDraw, pGC, Convex, CoordModeOrigin, 4, poly); - - FreeScratchGC(pGC); -} - -#endif - diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c deleted file mode 100644 index cbb3f63..0000000 --- a/nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c +++ /dev/null @@ -1,2292 +0,0 @@ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2011 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAGENT, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -/* $XdotOrg: xc/programs/Xserver/Xext/xvdisp.c,v 1.6 2005/07/03 08:53:36 daniels Exp $ */ -/*********************************************************** -Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts, -and the Massachusetts Institute of Technology, Cambridge, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Digital or MIT not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* $XFree86: xc/programs/Xserver/Xext/xvdisp.c,v 1.27 2003/07/16 01:38:31 dawes Exp $ */ - -/* -** File: -** -** xvdisp.c --- Xv server extension dispatch module. -** -** Author: -** -** David Carver (Digital Workstation Engineering/Project Athena) -** -** Revisions: -** -** 11.06.91 Carver -** - changed SetPortControl to SetPortAttribute -** - changed GetPortControl to GetPortAttribute -** - changed QueryBestSize -** -** 15.05.91 Carver -** - version 2.0 upgrade -** -** 24.01.91 Carver -** - version 1.4 upgrade -** -*/ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include <X11/X.h> -#include <X11/Xproto.h> -#include "misc.h" -#include "scrnintstr.h" -#include "windowstr.h" -#include "pixmapstr.h" -#include "gcstruct.h" -#include "dixstruct.h" -#include "resource.h" -#include "opaque.h" - -#include <X11/extensions/Xv.h> -#include <X11/extensions/Xvproto.h> -#include "xvdix.h" -#ifdef MITSHM -#define _XSHM_SERVER_ -#include <X11/extensions/shmstr.h> -#endif - -#include "Trap.h" - -#undef TEST -#undef DEBUG - -#ifdef EXTMODULE -#include "xf86_ansic.h" -#endif - -#include "xvdisp.h" - -#ifdef PANORAMIX -#include "panoramiX.h" -#include "panoramiXsrv.h" - -unsigned long XvXRTPort; - -#ifdef MITSHM -static int XineramaXvShmPutImage(ClientPtr); -#endif -static int XineramaXvPutImage(ClientPtr); -static int XineramaXvPutVideo(ClientPtr); -static int XineramaXvPutStill(ClientPtr); -static int XineramaXvSetPortAttribute(ClientPtr); -static int XineramaXvStopVideo(ClientPtr); -#endif - -/* INTERNAL */ - -static int ProcXvQueryExtension(ClientPtr); -static int ProcXvQueryAdaptors(ClientPtr); -static int ProcXvQueryEncodings(ClientPtr); -static int ProcXvPutVideo(ClientPtr); -static int ProcXvPutStill(ClientPtr); -static int ProcXvGetVideo(ClientPtr); -static int ProcXvGetStill(ClientPtr); -static int ProcXvGrabPort(ClientPtr); -static int ProcXvUngrabPort(ClientPtr); -static int ProcXvSelectVideoNotify(ClientPtr); -static int ProcXvSelectPortNotify(ClientPtr); -static int ProcXvStopVideo(ClientPtr); -static int ProcXvSetPortAttribute(ClientPtr); -static int ProcXvGetPortAttribute(ClientPtr); -static int ProcXvQueryBestSize(ClientPtr); -static int ProcXvQueryPortAttributes(ClientPtr); -static int ProcXvPutImage(ClientPtr); -#ifdef MITSHM -static int ProcXvShmPutImage(ClientPtr); -#endif -static int ProcXvQueryImageAttributes(ClientPtr); -static int ProcXvListImageFormats(ClientPtr); - -static int SProcXvQueryExtension(ClientPtr); -static int SProcXvQueryAdaptors(ClientPtr); -static int SProcXvQueryEncodings(ClientPtr); -static int SProcXvPutVideo(ClientPtr); -static int SProcXvPutStill(ClientPtr); -static int SProcXvGetVideo(ClientPtr); -static int SProcXvGetStill(ClientPtr); -static int SProcXvGrabPort(ClientPtr); -static int SProcXvUngrabPort(ClientPtr); -static int SProcXvSelectVideoNotify(ClientPtr); -static int SProcXvSelectPortNotify(ClientPtr); -static int SProcXvStopVideo(ClientPtr); -static int SProcXvSetPortAttribute(ClientPtr); -static int SProcXvGetPortAttribute(ClientPtr); -static int SProcXvQueryBestSize(ClientPtr); -static int SProcXvQueryPortAttributes(ClientPtr); -static int SProcXvPutImage(ClientPtr); -#ifdef MITSHM -static int SProcXvShmPutImage(ClientPtr); -#endif -static int SProcXvQueryImageAttributes(ClientPtr); -static int SProcXvListImageFormats(ClientPtr); - -static int SWriteQueryAdaptorsReply(ClientPtr, xvQueryAdaptorsReply *); -static int SWriteQueryExtensionReply(ClientPtr, xvQueryExtensionReply *); -static int SWriteQueryEncodingsReply(ClientPtr, xvQueryEncodingsReply *); -static int SWriteAdaptorInfo(ClientPtr, xvAdaptorInfo *); -static int SWriteEncodingInfo(ClientPtr, xvEncodingInfo *); -static int SWriteFormat(ClientPtr, xvFormat *); -static int SWriteAttributeInfo(ClientPtr, xvAttributeInfo *); -static int SWriteGrabPortReply(ClientPtr, xvGrabPortReply *); -static int SWriteGetPortAttributeReply(ClientPtr, xvGetPortAttributeReply *); -static int SWriteQueryBestSizeReply(ClientPtr, xvQueryBestSizeReply *); -static int SWriteQueryPortAttributesReply( - ClientPtr, xvQueryPortAttributesReply *); -static int SWriteQueryImageAttributesReply( - ClientPtr, xvQueryImageAttributesReply*); -static int SWriteListImageFormatsReply(ClientPtr, xvListImageFormatsReply*); -static int SWriteImageFormatInfo(ClientPtr, xvImageFormatInfo*); - -#define _WriteQueryAdaptorsReply(_c,_d) \ - if ((_c)->swapped) SWriteQueryAdaptorsReply(_c, _d); \ - else WriteToClient(_c, sz_xvQueryAdaptorsReply, (char*)_d) - -#define _WriteQueryExtensionReply(_c,_d) \ - if ((_c)->swapped) SWriteQueryExtensionReply(_c, _d); \ - else WriteToClient(_c, sz_xvQueryExtensionReply, (char*)_d) - -#define _WriteQueryEncodingsReply(_c,_d) \ - if ((_c)->swapped) SWriteQueryEncodingsReply(_c, _d); \ - else WriteToClient(_c, sz_xvQueryEncodingsReply, (char*)_d) - -#define _WriteAdaptorInfo(_c,_d) \ - if ((_c)->swapped) SWriteAdaptorInfo(_c, _d); \ - else WriteToClient(_c, sz_xvAdaptorInfo, (char*)_d) - -#define _WriteAttributeInfo(_c,_d) \ - if ((_c)->swapped) SWriteAttributeInfo(_c, _d); \ - else WriteToClient(_c, sz_xvAttributeInfo, (char*)_d) - -#define _WriteEncodingInfo(_c,_d) \ - if ((_c)->swapped) SWriteEncodingInfo(_c, _d); \ - else WriteToClient(_c, sz_xvEncodingInfo, (char*)_d) - -#define _WriteFormat(_c,_d) \ - if ((_c)->swapped) SWriteFormat(_c, _d); \ - else WriteToClient(_c, sz_xvFormat, (char*)_d) - -#define _WriteGrabPortReply(_c,_d) \ - if ((_c)->swapped) SWriteGrabPortReply(_c, _d); \ - else WriteToClient(_c, sz_xvGrabPortReply, (char*)_d) - -#define _WriteGetPortAttributeReply(_c,_d) \ - if ((_c)->swapped) SWriteGetPortAttributeReply(_c, _d); \ - else WriteToClient(_c, sz_xvGetPortAttributeReply, (char*)_d) - -#define _WriteQueryBestSizeReply(_c,_d) \ - if ((_c)->swapped) SWriteQueryBestSizeReply(_c, _d); \ - else WriteToClient(_c, sz_xvQueryBestSizeReply,(char*) _d) - -#define _WriteQueryPortAttributesReply(_c,_d) \ - if ((_c)->swapped) SWriteQueryPortAttributesReply(_c, _d); \ - else WriteToClient(_c, sz_xvQueryPortAttributesReply,(char*) _d) - -#define _WriteQueryImageAttributesReply(_c,_d) \ - if ((_c)->swapped) SWriteQueryImageAttributesReply(_c, _d); \ - else WriteToClient(_c, sz_xvQueryImageAttributesReply,(char*) _d) - -#define _WriteListImageFormatsReply(_c,_d) \ - if ((_c)->swapped) SWriteListImageFormatsReply(_c, _d); \ - else WriteToClient(_c, sz_xvListImageFormatsReply,(char*) _d) - -#define _WriteImageFormatInfo(_c,_d) \ - if ((_c)->swapped) SWriteImageFormatInfo(_c, _d); \ - else WriteToClient(_c, sz_xvImageFormatInfo, (char*)_d) - -#define _AllocatePort(_i,_p) \ - ((_p)->id != _i) ? (* (_p)->pAdaptor->ddAllocatePort)(_i,_p,&_p) : Success - -/* -** ProcXvDispatch -** -** -** -*/ - -int -ProcXvDispatch(ClientPtr client) -{ - int result; - - REQUEST(xReq); - - UpdateCurrentTime(); - - /* - * Report upstream that we are - * dispatching a XVideo operation. - */ - - nxagentXvTrap = 1; - - #ifdef TEST - fprintf(stderr, "ProcXvDispatch: Going to dispatch XVideo operation [%d] for client [%d].\n", - stuff->data, client -> index); - #endif - - switch (stuff->data) - { - case xv_QueryExtension: result = (ProcXvQueryExtension(client)); break; - case xv_QueryAdaptors: result = (ProcXvQueryAdaptors(client)); break; - case xv_QueryEncodings: result = (ProcXvQueryEncodings(client)); break; - case xv_PutVideo: -#ifdef PANORAMIX - if(!noPanoramiXExtension) - result = (XineramaXvPutVideo(client)); - else -#endif - result = (ProcXvPutVideo(client)); - break; - case xv_PutStill: -#ifdef PANORAMIX - if(!noPanoramiXExtension) - result = (XineramaXvPutStill(client)); - else -#endif - result = (ProcXvPutStill(client)); - break; - case xv_GetVideo: result = (ProcXvGetVideo(client)); break; - case xv_GetStill: result = (ProcXvGetStill(client)); break; - case xv_GrabPort: result = (ProcXvGrabPort(client)); break; - case xv_UngrabPort: result = (ProcXvUngrabPort(client)); break; - case xv_SelectVideoNotify: result = (ProcXvSelectVideoNotify(client)); break; - case xv_SelectPortNotify: result = (ProcXvSelectPortNotify(client)); break; - case xv_StopVideo: -#ifdef PANORAMIX - if(!noPanoramiXExtension) - result = (XineramaXvStopVideo(client)); - else -#endif - result = (ProcXvStopVideo(client)); - break; - case xv_SetPortAttribute: -#ifdef PANORAMIX - if(!noPanoramiXExtension) - result = (XineramaXvSetPortAttribute(client)); - else -#endif - result = (ProcXvSetPortAttribute(client)); - break; - case xv_GetPortAttribute: result = (ProcXvGetPortAttribute(client)); break; - case xv_QueryBestSize: result = (ProcXvQueryBestSize(client)); break; - case xv_QueryPortAttributes: result = (ProcXvQueryPortAttributes(client)); break; - case xv_PutImage: -#ifdef PANORAMIX - if(!noPanoramiXExtension) - result = (XineramaXvPutImage(client)); - else -#endif - result = (ProcXvPutImage(client)); - break; -#ifdef MITSHM - case xv_ShmPutImage: -#ifdef PANORAMIX - if(!noPanoramiXExtension) - result = (XineramaXvShmPutImage(client)); - else -#endif - result = (ProcXvShmPutImage(client)); - break; -#endif - case xv_QueryImageAttributes: result = (ProcXvQueryImageAttributes(client)); break; - case xv_ListImageFormats: result = (ProcXvListImageFormats(client)); break; - default: - if (stuff->data < xvNumRequests) - { - SendErrorToClient(client, XvReqCode, stuff->data, 0, - BadImplementation); - result = (BadImplementation); break; - } - else - { - SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest); - result = (BadRequest); break; - } - } - - nxagentXvTrap = 0; - - #ifdef TEST - fprintf(stderr, "ProcXvDispatch: Dispatched XVideo operation [%d] for client [%d].\n", - stuff->data, client -> index); - #endif - - return result; -} - -int -SProcXvDispatch(ClientPtr client) -{ - int result; - - REQUEST(xReq); - - UpdateCurrentTime(); - - /* - * Report upstream that we are - * dispatching a XVideo operation. - */ - - nxagentXvTrap = 1; - - #ifdef TEST - fprintf(stderr, "SProcXvDispatch: Going to dispatch XVideo operation [%d] for client [%d].\n", - stuff->data, client -> index); - #endif - - switch (stuff->data) - { - case xv_QueryExtension: result = (SProcXvQueryExtension(client)); break; - case xv_QueryAdaptors: result = (SProcXvQueryAdaptors(client)); break; - case xv_QueryEncodings: result = (SProcXvQueryEncodings(client)); break; - case xv_PutVideo: result = (SProcXvPutVideo(client)); break; - case xv_PutStill: result = (SProcXvPutStill(client)); break; - case xv_GetVideo: result = (SProcXvGetVideo(client)); break; - case xv_GetStill: result = (SProcXvGetStill(client)); break; - case xv_GrabPort: result = (SProcXvGrabPort(client)); break; - case xv_UngrabPort: result = (SProcXvUngrabPort(client)); break; - case xv_SelectVideoNotify: result = (SProcXvSelectVideoNotify(client)); break; - case xv_SelectPortNotify: result = (SProcXvSelectPortNotify(client)); break; - case xv_StopVideo: result = (SProcXvStopVideo(client)); break; - case xv_SetPortAttribute: result = (SProcXvSetPortAttribute(client)); break; - case xv_GetPortAttribute: result = (SProcXvGetPortAttribute(client)); break; - case xv_QueryBestSize: result = (SProcXvQueryBestSize(client)); break; - case xv_QueryPortAttributes: result = (SProcXvQueryPortAttributes(client)); break; - case xv_PutImage: result = (SProcXvPutImage(client)); break; -#ifdef MITSHM - case xv_ShmPutImage: result = (SProcXvShmPutImage(client)); break; -#endif - case xv_QueryImageAttributes: result = (SProcXvQueryImageAttributes(client)); break; - case xv_ListImageFormats: result = (SProcXvListImageFormats(client)); break; - default: - if (stuff->data < xvNumRequests) - { - SendErrorToClient(client, XvReqCode, stuff->data, 0, - BadImplementation); - result = (BadImplementation); break; - } - else - { - SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest); - result = (BadRequest); break; - } - } - - nxagentXvTrap = 0; - - #ifdef TEST - fprintf(stderr, "ProcXvDispatch: Dispatched XVideo operation [%d] for client [%d].\n", - stuff->data, client -> index); - #endif - - return result; -} - -static int -ProcXvQueryExtension(ClientPtr client) -{ - xvQueryExtensionReply rep; - /* REQUEST(xvQueryExtensionReq); */ - REQUEST_SIZE_MATCH(xvQueryExtensionReq); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.version = XvVersion; - rep.revision = XvRevision; - - _WriteQueryExtensionReply(client, &rep); - - return Success; - -} - -static int -ProcXvQueryAdaptors(ClientPtr client) -{ - xvFormat format; - xvAdaptorInfo ainfo; - xvQueryAdaptorsReply rep; - int totalSize; - int na; - XvAdaptorPtr pa; - int nf; - XvFormatPtr pf; - WindowPtr pWin; - ScreenPtr pScreen; - XvScreenPtr pxvs; - - REQUEST(xvQueryAdaptorsReq); - REQUEST_SIZE_MATCH(xvQueryAdaptorsReq); - - if(!(pWin = (WindowPtr)LookupWindow(stuff->window, client) )) - { - client->errorValue = stuff->window; - return (BadWindow); - } - - pScreen = pWin->drawable.pScreen; - pxvs = (XvScreenPtr)pScreen->devPrivates[XvScreenIndex].ptr; - - if (!pxvs) - { - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.num_adaptors = 0; - rep.length = 0; - - _WriteQueryAdaptorsReply(client, &rep); - - return Success; - } - - (* pxvs->ddQueryAdaptors)(pScreen, &pxvs->pAdaptors, &pxvs->nAdaptors); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.num_adaptors = pxvs->nAdaptors; - - /* CALCULATE THE TOTAL SIZE OF THE REPLY IN BYTES */ - - totalSize = pxvs->nAdaptors * sz_xvAdaptorInfo; - - /* FOR EACH ADPATOR ADD UP THE BYTES FOR ENCODINGS AND FORMATS */ - - na = pxvs->nAdaptors; - pa = pxvs->pAdaptors; - while (na--) - { - totalSize += (strlen(pa->name) + 3) & ~3; - totalSize += pa->nFormats * sz_xvFormat; - pa++; - } - - rep.length = totalSize >> 2; - - _WriteQueryAdaptorsReply(client, &rep); - - na = pxvs->nAdaptors; - pa = pxvs->pAdaptors; - while (na--) - { - - ainfo.base_id = pa->base_id; - ainfo.num_ports = pa->nPorts; - ainfo.type = pa->type; - ainfo.name_size = strlen(pa->name); - ainfo.num_formats = pa->nFormats; - - _WriteAdaptorInfo(client, &ainfo); - - WriteToClient(client, ainfo.name_size, pa->name); - - nf = pa->nFormats; - pf = pa->pFormats; - while (nf--) - { - format.depth = pf->depth; - format.visual = pf->visual; - _WriteFormat(client, &format); - pf++; - } - - pa++; - - } - - return (client->noClientException); - -} - -static int -ProcXvQueryEncodings(ClientPtr client) -{ - xvEncodingInfo einfo; - xvQueryEncodingsReply rep; - int totalSize; - XvPortPtr pPort; - int ne; - XvEncodingPtr pe; - int status; - - REQUEST(xvQueryEncodingsReq); - REQUEST_SIZE_MATCH(xvQueryEncodingsReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.num_encodings = pPort->pAdaptor->nEncodings; - - /* FOR EACH ENCODING ADD UP THE BYTES FOR ENCODING NAMES */ - - ne = pPort->pAdaptor->nEncodings; - pe = pPort->pAdaptor->pEncodings; - totalSize = ne * sz_xvEncodingInfo; - while (ne--) - { - totalSize += (strlen(pe->name) + 3) & ~3; - pe++; - } - - rep.length = totalSize >> 2; - - _WriteQueryEncodingsReply(client, &rep); - - ne = pPort->pAdaptor->nEncodings; - pe = pPort->pAdaptor->pEncodings; - while (ne--) - { - einfo.encoding = pe->id; - einfo.name_size = strlen(pe->name); - einfo.width = pe->width; - einfo.height = pe->height; - einfo.rate.numerator = pe->rate.numerator; - einfo.rate.denominator = pe->rate.denominator; - _WriteEncodingInfo(client, &einfo); - WriteToClient(client, einfo.name_size, pe->name); - pe++; - } - - return (client->noClientException); - -} - -static int -ProcXvPutVideo(ClientPtr client) -{ - register DrawablePtr pDraw; - XvPortPtr pPort; - register GCPtr pGC; - int status; - - REQUEST(xvPutVideoReq); - REQUEST_SIZE_MATCH(xvPutVideoReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!(pPort->pAdaptor->type & XvInputMask) || - !(pPort->pAdaptor->type & XvVideoMask)) - { - client->errorValue = stuff->port; - return (BadMatch); - } - - status = XVCALL(diMatchPort)(pPort, pDraw); - if (status != Success) - { - return status; - } - - return XVCALL(diPutVideo)(client, pDraw, pPort, pGC, - stuff->vid_x, stuff->vid_y, - stuff->vid_w, stuff->vid_h, - stuff->drw_x, stuff->drw_y, - stuff->drw_w, stuff->drw_h); - -} - -static int -ProcXvPutStill(ClientPtr client) -{ - register DrawablePtr pDraw; - XvPortPtr pPort; - register GCPtr pGC; - int status; - - REQUEST(xvPutStillReq); - REQUEST_SIZE_MATCH(xvPutStillReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!(pPort->pAdaptor->type & XvInputMask) || - !(pPort->pAdaptor->type & XvStillMask)) - { - client->errorValue = stuff->port; - return (BadMatch); - } - - status = XVCALL(diMatchPort)(pPort, pDraw); - if (status != Success) - { - return status; - } - - return XVCALL(diPutStill)(client, pDraw, pPort, pGC, - stuff->vid_x, stuff->vid_y, - stuff->vid_w, stuff->vid_h, - stuff->drw_x, stuff->drw_y, - stuff->drw_w, stuff->drw_h); - -} - - -static int -ProcXvGetVideo(ClientPtr client) -{ - register DrawablePtr pDraw; - XvPortPtr pPort; - register GCPtr pGC; - int status; - - REQUEST(xvGetVideoReq); - REQUEST_SIZE_MATCH(xvGetVideoReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!(pPort->pAdaptor->type & XvOutputMask) || - !(pPort->pAdaptor->type & XvVideoMask)) - { - client->errorValue = stuff->port; - return (BadMatch); - } - - status = XVCALL(diMatchPort)(pPort, pDraw); - if (status != Success) - { - return status; - } - - return XVCALL(diGetVideo)(client, pDraw, pPort, pGC, - stuff->vid_x, stuff->vid_y, - stuff->vid_w, stuff->vid_h, - stuff->drw_x, stuff->drw_y, - stuff->drw_w, stuff->drw_h); - -} - - -static int -ProcXvGetStill(ClientPtr client) -{ - register DrawablePtr pDraw; - XvPortPtr pPort; - register GCPtr pGC; - int status; - - REQUEST(xvGetStillReq); - REQUEST_SIZE_MATCH(xvGetStillReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!(pPort->pAdaptor->type & XvOutputMask) || - !(pPort->pAdaptor->type & XvStillMask)) - { - client->errorValue = stuff->port; - return (BadMatch); - } - - status = XVCALL(diMatchPort)(pPort, pDraw); - if (status != Success) - { - return status; - } - - return XVCALL(diGetStill)(client, pDraw, pPort, pGC, - stuff->vid_x, stuff->vid_y, - stuff->vid_w, stuff->vid_h, - stuff->drw_x, stuff->drw_y, - stuff->drw_w, stuff->drw_h); - -} - -static int -ProcXvSelectVideoNotify(ClientPtr client) -{ - register DrawablePtr pDraw; - REQUEST(xvSelectVideoNotifyReq); - REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq); - - if(!(pDraw = (DrawablePtr)LOOKUP_DRAWABLE(stuff->drawable, client) )) - { - client->errorValue = stuff->drawable; - return (BadWindow); - } - - return XVCALL(diSelectVideoNotify)(client, pDraw, stuff->onoff); - -} - -static int -ProcXvSelectPortNotify(ClientPtr client) -{ - int status; - XvPortPtr pPort; - REQUEST(xvSelectPortNotifyReq); - REQUEST_SIZE_MATCH(xvSelectPortNotifyReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - return XVCALL(diSelectPortNotify)(client, pPort, stuff->onoff); - -} - -static int -ProcXvGrabPort(ClientPtr client) -{ - int result, status; - XvPortPtr pPort; - xvGrabPortReply rep; - REQUEST(xvGrabPortReq); - REQUEST_SIZE_MATCH(xvGrabPortReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - status = XVCALL(diGrabPort)(client, pPort, stuff->time, &result); - - if (status != Success) - { - return status; - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.result = result; - - _WriteGrabPortReply(client, &rep); - - return Success; - -} - -static int -ProcXvUngrabPort(ClientPtr client) -{ - int status; - XvPortPtr pPort; - REQUEST(xvGrabPortReq); - REQUEST_SIZE_MATCH(xvGrabPortReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - return XVCALL(diUngrabPort)(client, pPort, stuff->time); - -} - - -static int -ProcXvStopVideo(ClientPtr client) -{ - int status; - register DrawablePtr pDraw; - XvPortPtr pPort; - REQUEST(xvStopVideoReq); - REQUEST_SIZE_MATCH(xvStopVideoReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if(!(pDraw = LOOKUP_DRAWABLE(stuff->drawable, client) )) - { - client->errorValue = stuff->drawable; - return (BadDrawable); - } - - return XVCALL(diStopVideo)(client, pPort, pDraw); - -} - -static int -ProcXvSetPortAttribute(ClientPtr client) -{ - int status; - XvPortPtr pPort; - REQUEST(xvSetPortAttributeReq); - REQUEST_SIZE_MATCH(xvSetPortAttributeReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!ValidAtom(stuff->attribute)) - { - client->errorValue = stuff->attribute; - return(BadAtom); - } - - status = XVCALL(diSetPortAttribute)(client, pPort, - stuff->attribute, stuff->value); - - if (status == BadMatch) - client->errorValue = stuff->attribute; - else - client->errorValue = stuff->value; - - return status; -} - -static int -ProcXvGetPortAttribute(ClientPtr client) -{ - INT32 value; - int status; - XvPortPtr pPort; - xvGetPortAttributeReply rep; - REQUEST(xvGetPortAttributeReq); - REQUEST_SIZE_MATCH(xvGetPortAttributeReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!ValidAtom(stuff->attribute)) - { - client->errorValue = stuff->attribute; - return(BadAtom); - } - - status = XVCALL(diGetPortAttribute)(client, pPort, stuff->attribute, &value); - if (status != Success) - { - client->errorValue = stuff->attribute; - return status; - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - rep.value = value; - - _WriteGetPortAttributeReply(client, &rep); - - return Success; -} - -static int -ProcXvQueryBestSize(ClientPtr client) -{ - int status; - unsigned int actual_width, actual_height; - XvPortPtr pPort; - xvQueryBestSizeReply rep; - REQUEST(xvQueryBestSizeReq); - REQUEST_SIZE_MATCH(xvQueryBestSizeReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = 0; - - (* pPort->pAdaptor->ddQueryBestSize)(client, pPort, stuff->motion, - stuff->vid_w, stuff->vid_h, - stuff->drw_w, stuff->drw_h, - &actual_width, &actual_height); - - rep.actual_width = actual_width; - rep.actual_height = actual_height; - - _WriteQueryBestSizeReply(client, &rep); - - return Success; -} - - -static int -ProcXvQueryPortAttributes(ClientPtr client) -{ - int status, size, i; - XvPortPtr pPort; - XvAttributePtr pAtt; - xvQueryPortAttributesReply rep; - xvAttributeInfo Info; - REQUEST(xvQueryPortAttributesReq); - REQUEST_SIZE_MATCH(xvQueryPortAttributesReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.num_attributes = pPort->pAdaptor->nAttributes; - rep.text_size = 0; - - for(i = 0, pAtt = pPort->pAdaptor->pAttributes; - i < rep.num_attributes; i++, pAtt++) - { - rep.text_size += (strlen(pAtt->name) + 1 + 3) & ~3L; - } - - rep.length = (rep.num_attributes * sz_xvAttributeInfo) + rep.text_size; - rep.length >>= 2; - - _WriteQueryPortAttributesReply(client, &rep); - - for(i = 0, pAtt = pPort->pAdaptor->pAttributes; - i < rep.num_attributes; i++, pAtt++) - { - size = strlen(pAtt->name) + 1; /* pass the NULL */ - Info.flags = pAtt->flags; - Info.min = pAtt->min_value; - Info.max = pAtt->max_value; - Info.size = (size + 3) & ~3L; - - _WriteAttributeInfo(client, &Info); - - WriteToClient(client, size, pAtt->name); - } - - return Success; -} - - - -static int -ProcXvPutImage(ClientPtr client) -{ - DrawablePtr pDraw; - XvPortPtr pPort; - XvImagePtr pImage = NULL; - GCPtr pGC; - int status, i, size; - CARD16 width, height; - - REQUEST(xvPutImageReq); - REQUEST_AT_LEAST_SIZE(xvPutImageReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!(pPort->pAdaptor->type & XvImageMask) || - !(pPort->pAdaptor->type & XvInputMask)) - { - client->errorValue = stuff->port; - return (BadMatch); - } - - status = XVCALL(diMatchPort)(pPort, pDraw); - if (status != Success) - { - return status; - } - - for(i = 0; i < pPort->pAdaptor->nImages; i++) { - if(pPort->pAdaptor->pImages[i].id == stuff->id) { - pImage = &(pPort->pAdaptor->pImages[i]); - break; - } - } - - if(!pImage) - return BadMatch; - - width = stuff->width; - height = stuff->height; - size = (*pPort->pAdaptor->ddQueryImageAttributes)(client, - pPort, pImage, &width, &height, NULL, NULL); - size += sizeof(xvPutImageReq); - size = (size + 3) >> 2; - - if((width < stuff->width) || (height < stuff->height)) - return BadValue; - - if(client->req_len < size) - return BadLength; - - return XVCALL(diPutImage)(client, pDraw, pPort, pGC, - stuff->src_x, stuff->src_y, - stuff->src_w, stuff->src_h, - stuff->drw_x, stuff->drw_y, - stuff->drw_w, stuff->drw_h, - pImage, (unsigned char*)(&stuff[1]), FALSE, - stuff->width, stuff->height); -} - -#ifdef MITSHM -/* redefined here since it's not in any header file */ -typedef struct _ShmDesc { - struct _ShmDesc *next; - int shmid; - int refcnt; - char *addr; - Bool writable; - unsigned long size; -} ShmDescRec, *ShmDescPtr; - -extern RESTYPE ShmSegType; -extern int BadShmSegCode; -extern int ShmCompletionCode; - -static int -ProcXvShmPutImage(ClientPtr client) -{ - ShmDescPtr shmdesc; - DrawablePtr pDraw; - XvPortPtr pPort; - XvImagePtr pImage = NULL; - GCPtr pGC; - int status, size_needed, i; - CARD16 width, height; - - REQUEST(xvShmPutImageReq); - REQUEST_SIZE_MATCH(xvShmPutImageReq); - - VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, pGC, client); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - if ((status = _AllocatePort(stuff->port, pPort)) != Success) - { - client->errorValue = stuff->port; - return (status); - } - - if (!(pPort->pAdaptor->type & XvImageMask) || - !(pPort->pAdaptor->type & XvInputMask)) - { - client->errorValue = stuff->port; - return (BadMatch); - } - - status = XVCALL(diMatchPort)(pPort, pDraw); - if (status != Success) - { - return status; - } - - for(i = 0; i < pPort->pAdaptor->nImages; i++) { - if(pPort->pAdaptor->pImages[i].id == stuff->id) { - pImage = &(pPort->pAdaptor->pImages[i]); - break; - } - } - - if(!pImage) - return BadMatch; - - if(!(shmdesc = (ShmDescPtr)LookupIDByType(stuff->shmseg, ShmSegType))) - { - client->errorValue = stuff->shmseg; - return BadShmSegCode; - } - - width = stuff->width; - height = stuff->height; - size_needed = (*pPort->pAdaptor->ddQueryImageAttributes)(client, - pPort, pImage, &width, &height, NULL, NULL); - if((size_needed + stuff->offset) > shmdesc->size) - return BadAccess; - - if((width < stuff->width) || (height < stuff->height)) - return BadValue; - - status = XVCALL(diPutImage)(client, pDraw, pPort, pGC, - stuff->src_x, stuff->src_y, - stuff->src_w, stuff->src_h, - stuff->drw_x, stuff->drw_y, - stuff->drw_w, stuff->drw_h, pImage, - (unsigned char *)shmdesc->addr + stuff->offset, - stuff->send_event, stuff->width, stuff->height); - - if((status == Success) && stuff->send_event) { - xShmCompletionEvent ev; - - ev.type = ShmCompletionCode; - ev.drawable = stuff->drawable; - ev.sequenceNumber = client->sequence; - ev.minorEvent = xv_ShmPutImage; - ev.majorEvent = XvReqCode; - ev.shmseg = stuff->shmseg; - ev.offset = stuff->offset; - WriteEventsToClient(client, 1, (xEvent *) &ev); - } - - return status; -} -#endif - -#ifdef XvMCExtension -#include "xvmcext.h" -#endif - -static int -ProcXvQueryImageAttributes(ClientPtr client) -{ - xvQueryImageAttributesReply rep; - int size, num_planes, i; - CARD16 width, height; - XvImagePtr pImage = NULL; - XvPortPtr pPort; - int *offsets; - int *pitches; - REQUEST(xvQueryImageAttributesReq); - - REQUEST_SIZE_MATCH(xvQueryImageAttributesReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - for(i = 0; i < pPort->pAdaptor->nImages; i++) { - if(pPort->pAdaptor->pImages[i].id == stuff->id) { - pImage = &(pPort->pAdaptor->pImages[i]); - break; - } - } - -#ifdef XvMCExtension - if(!pImage) - pImage = XvMCFindXvImage(pPort, stuff->id); -#endif - - if(!pImage) - return BadMatch; - - num_planes = pImage->num_planes; - - if(!(offsets = xalloc(num_planes << 3))) - return BadAlloc; - pitches = offsets + num_planes; - - width = stuff->width; - height = stuff->height; - - size = (*pPort->pAdaptor->ddQueryImageAttributes)(client, pPort, pImage, - &width, &height, offsets, pitches); - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.length = num_planes << 1; - rep.num_planes = num_planes; - rep.width = width; - rep.height = height; - rep.data_size = size; - - _WriteQueryImageAttributesReply(client, &rep); - if(client->swapped) - SwapLongs((CARD32*)offsets, rep.length); - WriteToClient(client, rep.length << 2, (char*)offsets); - - xfree(offsets); - - return Success; -} - -static int -ProcXvListImageFormats(ClientPtr client) -{ - XvPortPtr pPort; - XvImagePtr pImage; - int i; - xvListImageFormatsReply rep; - xvImageFormatInfo info; - REQUEST(xvListImageFormatsReq); - - REQUEST_SIZE_MATCH(xvListImageFormatsReq); - - if(!(pPort = LOOKUP_PORT(stuff->port, client) )) - { - client->errorValue = stuff->port; - return (_XvBadPort); - } - - rep.type = X_Reply; - rep.sequenceNumber = client->sequence; - rep.num_formats = pPort->pAdaptor->nImages; - rep.length = rep.num_formats * sz_xvImageFormatInfo >> 2; - - _WriteListImageFormatsReply(client, &rep); - - pImage = pPort->pAdaptor->pImages; - - for(i = 0; i < rep.num_formats; i++, pImage++) { - info.id = pImage->id; - info.type = pImage->type; - info.byte_order = pImage->byte_order; - memcpy(&info.guid, pImage->guid, 16); - info.bpp = pImage->bits_per_pixel; - info.num_planes = pImage->num_planes; - info.depth = pImage->depth; - info.red_mask = pImage->red_mask; - info.green_mask = pImage->green_mask; - info.blue_mask = pImage->blue_mask; - info.format = pImage->format; - info.y_sample_bits = pImage->y_sample_bits; - info.u_sample_bits = pImage->u_sample_bits; - info.v_sample_bits = pImage->v_sample_bits; - info.horz_y_period = pImage->horz_y_period; - info.horz_u_period = pImage->horz_u_period; - info.horz_v_period = pImage->horz_v_period; - info.vert_y_period = pImage->vert_y_period; - info.vert_u_period = pImage->vert_u_period; - info.vert_v_period = pImage->vert_v_period; - memcpy(&info.comp_order, pImage->component_order, 32); - info.scanline_order = pImage->scanline_order; - _WriteImageFormatInfo(client, &info); - } - - return Success; -} - - - -/* Swapped Procs */ - -static int -SProcXvQueryExtension(ClientPtr client) -{ - register char n; - REQUEST(xvQueryExtensionReq); - swaps(&stuff->length, n); - return ProcXvQueryExtension(client); -} - -static int -SProcXvQueryAdaptors(ClientPtr client) -{ - register char n; - REQUEST(xvQueryAdaptorsReq); - swaps(&stuff->length, n); - swapl(&stuff->window, n); - return ProcXvQueryAdaptors(client); -} - -static int -SProcXvQueryEncodings(ClientPtr client) -{ - register char n; - REQUEST(xvQueryEncodingsReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvQueryEncodings(client); -} - -static int -SProcXvGrabPort(ClientPtr client) -{ - register char n; - REQUEST(xvGrabPortReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->time, n); - return ProcXvGrabPort(client); -} - -static int -SProcXvUngrabPort(ClientPtr client) -{ - register char n; - REQUEST(xvUngrabPortReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->time, n); - return ProcXvUngrabPort(client); -} - -static int -SProcXvPutVideo(ClientPtr client) -{ - register char n; - REQUEST(xvPutVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); - swapl(&stuff->gc, n); - swaps(&stuff->vid_x, n); - swaps(&stuff->vid_y, n); - swaps(&stuff->vid_w, n); - swaps(&stuff->vid_h, n); - swaps(&stuff->drw_x, n); - swaps(&stuff->drw_y, n); - swaps(&stuff->drw_w, n); - swaps(&stuff->drw_h, n); - return ProcXvPutVideo(client); -} - -static int -SProcXvPutStill(ClientPtr client) -{ - register char n; - REQUEST(xvPutStillReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); - swapl(&stuff->gc, n); - swaps(&stuff->vid_x, n); - swaps(&stuff->vid_y, n); - swaps(&stuff->vid_w, n); - swaps(&stuff->vid_h, n); - swaps(&stuff->drw_x, n); - swaps(&stuff->drw_y, n); - swaps(&stuff->drw_w, n); - swaps(&stuff->drw_h, n); - return ProcXvPutStill(client); -} - -static int -SProcXvGetVideo(ClientPtr client) -{ - register char n; - REQUEST(xvGetVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); - swapl(&stuff->gc, n); - swaps(&stuff->vid_x, n); - swaps(&stuff->vid_y, n); - swaps(&stuff->vid_w, n); - swaps(&stuff->vid_h, n); - swaps(&stuff->drw_x, n); - swaps(&stuff->drw_y, n); - swaps(&stuff->drw_w, n); - swaps(&stuff->drw_h, n); - return ProcXvGetVideo(client); -} - -static int -SProcXvGetStill(ClientPtr client) -{ - register char n; - REQUEST(xvGetStillReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); - swapl(&stuff->gc, n); - swaps(&stuff->vid_x, n); - swaps(&stuff->vid_y, n); - swaps(&stuff->vid_w, n); - swaps(&stuff->vid_h, n); - swaps(&stuff->drw_x, n); - swaps(&stuff->drw_y, n); - swaps(&stuff->drw_w, n); - swaps(&stuff->drw_h, n); - return ProcXvGetStill(client); -} - -static int -SProcXvPutImage(ClientPtr client) -{ - register char n; - REQUEST(xvPutImageReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); - swapl(&stuff->gc, n); - swapl(&stuff->id, n); - swaps(&stuff->src_x, n); - swaps(&stuff->src_y, n); - swaps(&stuff->src_w, n); - swaps(&stuff->src_h, n); - swaps(&stuff->drw_x, n); - swaps(&stuff->drw_y, n); - swaps(&stuff->drw_w, n); - swaps(&stuff->drw_h, n); - swaps(&stuff->width, n); - swaps(&stuff->height, n); - return ProcXvPutImage(client); -} - -#ifdef MITSHM -static int -SProcXvShmPutImage(ClientPtr client) -{ - register char n; - REQUEST(xvShmPutImageReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); - swapl(&stuff->gc, n); - swapl(&stuff->shmseg, n); - swapl(&stuff->id, n); - swaps(&stuff->src_x, n); - swaps(&stuff->src_y, n); - swaps(&stuff->src_w, n); - swaps(&stuff->src_h, n); - swaps(&stuff->drw_x, n); - swaps(&stuff->drw_y, n); - swaps(&stuff->drw_w, n); - swaps(&stuff->drw_h, n); - swaps(&stuff->offset, n); - swaps(&stuff->width, n); - swaps(&stuff->height, n); - return ProcXvShmPutImage(client); -} -#endif - - -static int -SProcXvSelectVideoNotify(ClientPtr client) -{ - register char n; - REQUEST(xvSelectVideoNotifyReq); - swaps(&stuff->length, n); - swapl(&stuff->drawable, n); - return ProcXvSelectVideoNotify(client); -} - -static int -SProcXvSelectPortNotify(ClientPtr client) -{ - register char n; - REQUEST(xvSelectPortNotifyReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvSelectPortNotify(client); -} - -static int -SProcXvStopVideo(ClientPtr client) -{ - register char n; - REQUEST(xvStopVideoReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->drawable, n); - return ProcXvStopVideo(client); -} - -static int -SProcXvSetPortAttribute(ClientPtr client) -{ - register char n; - REQUEST(xvSetPortAttributeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->attribute, n); - return ProcXvSetPortAttribute(client); -} - -static int -SProcXvGetPortAttribute(ClientPtr client) -{ - register char n; - REQUEST(xvGetPortAttributeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swapl(&stuff->attribute, n); - return ProcXvGetPortAttribute(client); -} - -static int -SProcXvQueryBestSize(ClientPtr client) -{ - register char n; - REQUEST(xvQueryBestSizeReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - swaps(&stuff->vid_w, n); - swaps(&stuff->vid_h, n); - swaps(&stuff->drw_w, n); - swaps(&stuff->drw_h, n); - return ProcXvQueryBestSize(client); -} - -static int -SProcXvQueryPortAttributes(ClientPtr client) -{ - register char n; - REQUEST(xvQueryPortAttributesReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvQueryPortAttributes(client); -} - -static int -SProcXvQueryImageAttributes(ClientPtr client) -{ - register char n; - REQUEST(xvQueryImageAttributesReq); - swaps(&stuff->length, n); - swapl(&stuff->id, n); - swaps(&stuff->width, n); - swaps(&stuff->width, n); - return ProcXvQueryImageAttributes(client); -} - -static int -SProcXvListImageFormats(ClientPtr client) -{ - register char n; - REQUEST(xvListImageFormatsReq); - swaps(&stuff->length, n); - swapl(&stuff->port, n); - return ProcXvListImageFormats(client); -} - - -static int -SWriteQueryExtensionReply( - ClientPtr client, - xvQueryExtensionReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swaps(&rep->version, n); - swaps(&rep->revision, n); - - (void)WriteToClient(client, sz_xvQueryExtensionReply, (char *)&rep); - - return Success; -} - -static int -SWriteQueryAdaptorsReply( - ClientPtr client, - xvQueryAdaptorsReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swaps(&rep->num_adaptors, n); - - (void)WriteToClient(client, sz_xvQueryAdaptorsReply, (char *)&rep); - - return Success; -} - -static int -SWriteQueryEncodingsReply( - ClientPtr client, - xvQueryEncodingsReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swaps(&rep->num_encodings, n); - - (void)WriteToClient(client, sz_xvQueryEncodingsReply, (char *)&rep); - - return Success; -} - -static int -SWriteAdaptorInfo( - ClientPtr client, - xvAdaptorInfo *pAdaptor -){ - register char n; - - swapl(&pAdaptor->base_id, n); - swaps(&pAdaptor->name_size, n); - swaps(&pAdaptor->num_ports, n); - swaps(&pAdaptor->num_formats, n); - - (void)WriteToClient(client, sz_xvAdaptorInfo, (char *)pAdaptor); - - return Success; -} - -static int -SWriteEncodingInfo( - ClientPtr client, - xvEncodingInfo *pEncoding -){ - register char n; - - swapl(&pEncoding->encoding, n); - swaps(&pEncoding->name_size, n); - swaps(&pEncoding->width, n); - swaps(&pEncoding->height, n); - swapl(&pEncoding->rate.numerator, n); - swapl(&pEncoding->rate.denominator, n); - (void)WriteToClient(client, sz_xvEncodingInfo, (char *)pEncoding); - - return Success; -} - -static int -SWriteFormat( - ClientPtr client, - xvFormat *pFormat -){ - register char n; - - swapl(&pFormat->visual, n); - (void)WriteToClient(client, sz_xvFormat, (char *)pFormat); - - return Success; -} - -static int -SWriteAttributeInfo( - ClientPtr client, - xvAttributeInfo *pAtt -){ - register char n; - - swapl(&pAtt->flags, n); - swapl(&pAtt->size, n); - swapl(&pAtt->min, n); - swapl(&pAtt->max, n); - (void)WriteToClient(client, sz_xvAttributeInfo, (char *)pAtt); - - return Success; -} - -static int -SWriteImageFormatInfo( - ClientPtr client, - xvImageFormatInfo *pImage -){ - register char n; - - swapl(&pImage->id, n); - swapl(&pImage->red_mask, n); - swapl(&pImage->green_mask, n); - swapl(&pImage->blue_mask, n); - swapl(&pImage->y_sample_bits, n); - swapl(&pImage->u_sample_bits, n); - swapl(&pImage->v_sample_bits, n); - swapl(&pImage->horz_y_period, n); - swapl(&pImage->horz_u_period, n); - swapl(&pImage->horz_v_period, n); - swapl(&pImage->vert_y_period, n); - swapl(&pImage->vert_u_period, n); - swapl(&pImage->vert_v_period, n); - - (void)WriteToClient(client, sz_xvImageFormatInfo, (char *)pImage); - - return Success; -} - - - -static int -SWriteGrabPortReply( - ClientPtr client, - xvGrabPortReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - - (void)WriteToClient(client, sz_xvGrabPortReply, (char *)&rep); - - return Success; -} - -static int -SWriteGetPortAttributeReply( - ClientPtr client, - xvGetPortAttributeReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swapl(&rep->value, n); - - (void)WriteToClient(client, sz_xvGetPortAttributeReply, (char *)&rep); - - return Success; -} - -static int -SWriteQueryBestSizeReply( - ClientPtr client, - xvQueryBestSizeReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swaps(&rep->actual_width, n); - swaps(&rep->actual_height, n); - - (void)WriteToClient(client, sz_xvQueryBestSizeReply, (char *)&rep); - - return Success; -} - -static int -SWriteQueryPortAttributesReply( - ClientPtr client, - xvQueryPortAttributesReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swapl(&rep->num_attributes, n); - swapl(&rep->text_size, n); - - (void)WriteToClient(client, sz_xvQueryPortAttributesReply, (char *)&rep); - - return Success; -} - -static int -SWriteQueryImageAttributesReply( - ClientPtr client, - xvQueryImageAttributesReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swapl(&rep->num_planes, n); - swapl(&rep->data_size, n); - swaps(&rep->width, n); - swaps(&rep->height, n); - - (void)WriteToClient(client, sz_xvQueryImageAttributesReply, (char *)&rep); - - return Success; -} - - -static int -SWriteListImageFormatsReply( - ClientPtr client, - xvListImageFormatsReply *rep -){ - register char n; - - swaps(&rep->sequenceNumber, n); - swapl(&rep->length, n); - swapl(&rep->num_formats, n); - - (void)WriteToClient(client, sz_xvListImageFormatsReply, (char *)&rep); - - return Success; -} - - -#ifdef PANORAMIX - - - - -static int -XineramaXvStopVideo(ClientPtr client) -{ - int result = Success, i; - PanoramiXRes *draw, *port; - REQUEST(xvStopVideoReq); - REQUEST_SIZE_MATCH(xvStopVideoReq); - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, SecurityReadAccess))) - return _XvBadPort; - - FOR_NSCREENS_BACKWARD(i) { - if(port->info[i].id) { - stuff->drawable = draw->info[i].id; - stuff->port = port->info[i].id; - result = ProcXvStopVideo(client); - } - } - - return result; -} - -static int -XineramaXvSetPortAttribute(ClientPtr client) -{ - REQUEST(xvSetPortAttributeReq); - PanoramiXRes *port; - int result = Success, i; - - REQUEST_SIZE_MATCH(xvSetPortAttributeReq); - - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, SecurityReadAccess))) - return _XvBadPort; - - FOR_NSCREENS_BACKWARD(i) { - if(port->info[i].id) { - stuff->port = port->info[i].id; - result = ProcXvSetPortAttribute(client); - } - } - return result; -} - - -#ifdef MITSHM -static int -XineramaXvShmPutImage(ClientPtr client) -{ - REQUEST(xvShmPutImageReq); - PanoramiXRes *draw, *gc, *port; - Bool send_event = stuff->send_event; - Bool isRoot; - int result = Success, i, x, y; - - REQUEST_SIZE_MATCH(xvShmPutImageReq); - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, SecurityReadAccess))) - return BadGC; - - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, SecurityReadAccess))) - return _XvBadPort; - - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - - x = stuff->drw_x; - y = stuff->drw_y; - - FOR_NSCREENS_BACKWARD(i) { - if(port->info[i].id) { - stuff->drawable = draw->info[i].id; - stuff->port = port->info[i].id; - stuff->gc = gc->info[i].id; - stuff->drw_x = x; - stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= panoramiXdataPtr[i].x; - stuff->drw_y -= panoramiXdataPtr[i].y; - } - stuff->send_event = (send_event && !i) ? 1 : 0; - - result = ProcXvShmPutImage(client); - } - } - return result; -} -#endif - -static int -XineramaXvPutImage(ClientPtr client) -{ - REQUEST(xvPutImageReq); - PanoramiXRes *draw, *gc, *port; - Bool isRoot; - int result = Success, i, x, y; - - REQUEST_AT_LEAST_SIZE(xvPutImageReq); - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, SecurityReadAccess))) - return BadGC; - - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, SecurityReadAccess))) - return _XvBadPort; - - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - - x = stuff->drw_x; - y = stuff->drw_y; - - FOR_NSCREENS_BACKWARD(i) { - if(port->info[i].id) { - stuff->drawable = draw->info[i].id; - stuff->port = port->info[i].id; - stuff->gc = gc->info[i].id; - stuff->drw_x = x; - stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= panoramiXdataPtr[i].x; - stuff->drw_y -= panoramiXdataPtr[i].y; - } - - result = ProcXvPutImage(client); - } - } - return result; -} - -static int -XineramaXvPutVideo(ClientPtr client) -{ - REQUEST(xvPutImageReq); - PanoramiXRes *draw, *gc, *port; - Bool isRoot; - int result = Success, i, x, y; - - REQUEST_AT_LEAST_SIZE(xvPutVideoReq); - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, SecurityReadAccess))) - return BadGC; - - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, SecurityReadAccess))) - return _XvBadPort; - - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - - x = stuff->drw_x; - y = stuff->drw_y; - - FOR_NSCREENS_BACKWARD(i) { - if(port->info[i].id) { - stuff->drawable = draw->info[i].id; - stuff->port = port->info[i].id; - stuff->gc = gc->info[i].id; - stuff->drw_x = x; - stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= panoramiXdataPtr[i].x; - stuff->drw_y -= panoramiXdataPtr[i].y; - } - - result = ProcXvPutVideo(client); - } - } - return result; -} - -static int -XineramaXvPutStill(ClientPtr client) -{ - REQUEST(xvPutImageReq); - PanoramiXRes *draw, *gc, *port; - Bool isRoot; - int result = Success, i, x, y; - - REQUEST_AT_LEAST_SIZE(xvPutImageReq); - - if(!(draw = (PanoramiXRes *)SecurityLookupIDByClass( - client, stuff->drawable, XRC_DRAWABLE, SecurityWriteAccess))) - return BadDrawable; - - if(!(gc = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->gc, XRT_GC, SecurityReadAccess))) - return BadGC; - - if(!(port = (PanoramiXRes *)SecurityLookupIDByType( - client, stuff->port, XvXRTPort, SecurityReadAccess))) - return _XvBadPort; - - isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root; - - x = stuff->drw_x; - y = stuff->drw_y; - - FOR_NSCREENS_BACKWARD(i) { - if(port->info[i].id) { - stuff->drawable = draw->info[i].id; - stuff->port = port->info[i].id; - stuff->gc = gc->info[i].id; - stuff->drw_x = x; - stuff->drw_y = y; - if(isRoot) { - stuff->drw_x -= panoramiXdataPtr[i].x; - stuff->drw_y -= panoramiXdataPtr[i].y; - } - - result = ProcXvPutStill(client); - } - } - return result; -} - - -void XineramifyXv(void) -{ - ScreenPtr pScreen, screen0 = screenInfo.screens[0]; - XvScreenPtr xvsp0 = (XvScreenPtr)screen0->devPrivates[XvScreenIndex].ptr; - XvAdaptorPtr refAdapt, pAdapt; - XvAttributePtr pAttr; - XvScreenPtr xvsp; - Bool isOverlay, hasOverlay; - PanoramiXRes *port; - XvAdaptorPtr MatchingAdaptors[MAXSCREENS]; - int i, j, k, l; - - XvXRTPort = CreateNewResourceType(XineramaDeleteResource); - - if(!xvsp0) return; - - for(i = 0; i < xvsp0->nAdaptors; i++) { - refAdapt = xvsp0->pAdaptors + i; - - bzero(MatchingAdaptors, sizeof(XvAdaptorPtr) * MAXSCREENS); - - MatchingAdaptors[0] = refAdapt; - - if(!(refAdapt->type & XvInputMask)) continue; - - isOverlay = FALSE; - for(j = 0; j < refAdapt->nAttributes; j++) { - pAttr = refAdapt->pAttributes + j; - if(!strcmp(pAttr->name, "XV_COLORKEY")) { - isOverlay = TRUE; - break; - } - } - - for(j = 1; j < PanoramiXNumScreens; j++) { - pScreen = screenInfo.screens[j]; - xvsp = (XvScreenPtr)pScreen->devPrivates[XvScreenIndex].ptr; - - /* Do not try to go on if xv is not supported on this screen */ - if (xvsp==NULL) continue ; - - /* if the adaptor has the same name it's a perfect match */ - for(k = 0; k < xvsp->nAdaptors; k++) { - pAdapt = xvsp->pAdaptors + k; - if(!strcmp(refAdapt->name, pAdapt->name)) { - MatchingAdaptors[j] = pAdapt; - break; - } - } - if(MatchingAdaptors[j]) continue; /* found it */ - - /* otherwise we only look for XvImage adaptors */ - if(!(refAdapt->type & XvImageMask)) continue; - if(refAdapt->nImages <= 0) continue; - - /* prefer overlay/overlay non-overlay/non-overlay pairing */ - for(k = 0; k < xvsp->nAdaptors; k++) { - pAdapt = xvsp->pAdaptors + k; - if((pAdapt->type & XvImageMask) && (pAdapt->nImages > 0)) { - hasOverlay = FALSE; - for(l = 0; l < pAdapt->nAttributes; l++) { - if(!strcmp(pAdapt->name, "XV_COLORKEY")) { - hasOverlay = TRUE; - break; - } - } - if(isOverlay && hasOverlay) { - MatchingAdaptors[j] = pAdapt; - break; - } - else if(!isOverlay && !hasOverlay) { - MatchingAdaptors[j] = pAdapt; - break; - } - } - } - - if(MatchingAdaptors[j]) continue; /* found it */ - - /* but we'll take any XvImage pairing if we can get it */ - - for(k = 0; k < xvsp->nAdaptors; k++) { - pAdapt = xvsp->pAdaptors + k; - if((pAdapt->type & XvImageMask) && (pAdapt->nImages > 0)) { - MatchingAdaptors[j] = pAdapt; - break; - } - } - } - - /* now create a resource for each port */ - for(j = 0; j < refAdapt->nPorts; j++) { - if(!(port = xalloc(sizeof(PanoramiXRes)))) - break; - port->info[0].id = MatchingAdaptors[0]->base_id + j; - AddResource(port->info[0].id, XvXRTPort, port); - - for(k = 1; k < PanoramiXNumScreens; k++) { - if(MatchingAdaptors[k] && (MatchingAdaptors[k]->nPorts > j)) - port->info[k].id = MatchingAdaptors[k]->base_id + j; - else - port->info[k].id = 0; - } - } - } -} - -#endif - -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit cfc0202b42ad307391202ca776937b28ea7d2b03 Merge: fad840c a5f71f0 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Apr 16 18:03:18 2015 +0200 Merge branch 'sunweaver-pr/nxupgradeagent-cleanup' into arctica-3.6.x nx-X11/config/cf/host.def | 7 - nx-X11/programs/Xserver/hw/nxagent/Composite.c | 10 - nx-X11/programs/Xserver/hw/nxagent/Imakefile | 8 +- nx-X11/programs/Xserver/hw/nxagent/Init.c | 8 - nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c | 359 -- nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h | 4 - .../programs/Xserver/hw/nxagent/NXcompositeext.h | 4 - .../programs/Xserver/hw/nxagent/NXcompositeint.h | 76 - .../programs/Xserver/hw/nxagent/NXcompositeproto.h | 148 - nx-X11/programs/Xserver/hw/nxagent/NXdamage.c | 2072 +++++++- nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c | 541 +-- nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c | 276 +- nx-X11/programs/Xserver/hw/nxagent/NXevents.c | 1049 ++-- nx-X11/programs/Xserver/hw/nxagent/NXextension.c | 54 +- nx-X11/programs/Xserver/hw/nxagent/NXglxext.c | 63 +- nx-X11/programs/Xserver/hw/nxagent/NXglyph.c | 94 +- nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c | 25 +- nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h | 35 +- nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c | 71 +- nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c | 16 +- nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c | 129 +- nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c | 49 +- nx-X11/programs/Xserver/hw/nxagent/NXpicture.c | 944 +++- nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h | 206 +- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 157 +- nx-X11/programs/Xserver/hw/nxagent/NXrender.c | 909 +++- nx-X11/programs/Xserver/hw/nxagent/NXresource.c | 319 +- nx-X11/programs/Xserver/hw/nxagent/NXshm.c | 161 +- nx-X11/programs/Xserver/hw/nxagent/NXwindow.c | 566 ++- nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c | 94 +- nx-X11/programs/Xserver/hw/nxagent/Render.c | 60 - nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c | 2073 -------- nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c | 4682 ------------------ nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c | 2805 ----------- nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c | 5044 -------------------- nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c | 508 -- nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c | 575 --- nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c | 581 --- nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c | 241 - nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h | 174 - nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c | 979 ---- nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c | 318 -- nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c | 233 - nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c | 1222 ----- nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c | 2274 --------- .../programs/Xserver/hw/nxagent/X/NXpicturestr.h | 679 --- nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c | 992 ---- nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c | 3861 --------------- nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c | 1250 ----- nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c | 1498 ------ nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c | 4167 ---------------- nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c | 2292 --------- 52 files changed, 6098 insertions(+), 38864 deletions(-) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 422fe90717dde8ee451f37f29a11b0b4c319210c Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Apr 8 21:52:51 2015 +0200 library clean-up: Drop nx-X11/lib/Xcursor. Not used at build time. --- nx-X11/lib/Xcursor/AUTHORS | 2 - nx-X11/lib/Xcursor/COPYING | 19 - nx-X11/lib/Xcursor/ChangeLog | 202 ----- nx-X11/lib/Xcursor/Imakefile | 100 --- nx-X11/lib/Xcursor/Xcursor-def.cpp | 54 -- nx-X11/lib/Xcursor/Xcursor.h | 501 ------------ nx-X11/lib/Xcursor/Xcursor.man | 379 --------- nx-X11/lib/Xcursor/autogen.sh | 12 - nx-X11/lib/Xcursor/configure.ac | 143 ---- nx-X11/lib/Xcursor/cursor.c | 815 ------------------- nx-X11/lib/Xcursor/display.c | 382 --------- nx-X11/lib/Xcursor/file.c | 1101 -------------------------- nx-X11/lib/Xcursor/library.c | 495 ------------ nx-X11/lib/Xcursor/xcursor-config.in | 95 --- nx-X11/lib/Xcursor/xcursor.pc.in | 15 - nx-X11/lib/Xcursor/xcursorint.h | 109 --- nx-X11/lib/Xcursor/xlib.c | 422 ---------- nx-X11/lib/Xrender/Imakefile | 2 +- nx-X11/lib/{Xcursor => Xrender}/config-subst | 0 19 files changed, 1 insertion(+), 4847 deletions(-) diff --git a/nx-X11/lib/Xcursor/AUTHORS b/nx-X11/lib/Xcursor/AUTHORS deleted file mode 100644 index 57c4efd..0000000 --- a/nx-X11/lib/Xcursor/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Keith Packard, HP - diff --git a/nx-X11/lib/Xcursor/COPYING b/nx-X11/lib/Xcursor/COPYING deleted file mode 100644 index 6d9f423..0000000 --- a/nx-X11/lib/Xcursor/COPYING +++ /dev/null @@ -1,19 +0,0 @@ -Copyright © 2002 Keith Packard - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of Keith Packard not be used in -advertising or publicity pertaining to distribution of the software without -specific, written prior permission. Keith Packard makes no -representations about the suitability of this software for any purpose. It -is provided "as is" without express or implied warranty. - -KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. diff --git a/nx-X11/lib/Xcursor/ChangeLog b/nx-X11/lib/Xcursor/ChangeLog deleted file mode 100644 index 8d57211..0000000 --- a/nx-X11/lib/Xcursor/ChangeLog +++ /dev/null @@ -1,202 +0,0 @@ -2005-06-30 Daniel Stone <daniel@freedesktop.org> - - * lib/Xcursor/file.c: - * lib/Xcursor/library.c: - * lib/Xcursor/xlib.c: - Check arguments for validity on almost all functions. - -2005-06-17 Branden Robinson <branden@deadbeast.net> - - Merge changes from freedesktop.org xorg CVS trunk. - - * cursor.c: - * library.c: - Add preprocessor test for HAVE_XFIXES being defined before testing - its value. [merged by Egbert Eich; author unknown] - - * COPYING: - * ChangeLog: - * Xcursor.3: - * Xcursor.h: - * cursor.c: - * display.c: - * file.c: - * library.c: - * xcursorint.h: - * xlib.c: - Encoding of numerous files changed to UTF-8 [Markus Kuhn] - - * cursor.c: - Bug #1043: Fix leak when creating animated cursors. [Daniel Stone] - -Tue Feb 8 14:26:32 2005 Owen Taylor <otaylor@redhat.com> - - * configure.ac: Remove AC_CONFIG_AUX_DIR() - -2004-04-13 Daniel Stone <daniel@freedesktop.org> - - * ChangeLog: - Tag 1.1.3, for xlibs 1.0.1. - -2004-04-07 Keith Packard <keithp@keithp.com> - - reviewed by: Michel Dänzer <michel@daenzer.net> - - * configure.ac: - Make sure X_CFLAGS/X_LIBS are substituted in the xcursor.pc file - -2004-02-24 Fredrik Höglund <fredrik@kde.org> - - * configure.ac: - * xcursorint.h: - Make the Xfixes code actually work by including the Xfixes.h - header file. - -2004-02-03 Jim Gettys <jg@freedesktop.org> - - * AUTHORS: Add contents to author's file - -2004-01-17 Daniel Stone <daniel@fooishbar.org> - * Xcursor.h: - * configure.ac: - Bump package version to 1.1.2, slated for first fd.o platform release. - -2004-01-15 Harold L Hunt II <huntharo@msu.edu> - * Makefile.am: Pass -no-undefined to libtool via LDFLAGS. - -2003-11-10 Keith Packard <keithp@keithp.com> - - * library.c: (_XcursorBuildThemeDir): - Make sure the allocated path has space for directory separators - -2003-10-29 Keith Packard <keithp@keithp.com> - - * Xcursor.h: - * configure.ac: - Bump package version to 1.1.1 and library info to 1.2.0 as - the library exports new name-based APIs and uses Xfixes - -2003-10-28 Keith Packard <keithp@keithp.com> - - * Makefile.am: - * Xcursor.h: - * configure.ac: - * cursor.c: (XcursorImagesLoadCursor): - * file.c: (XcursorImagesCreate), (XcursorImagesDestroy), - (XcursorImagesSetName): - * library.c: (XcursorLibraryLoadImages), - (XcursorLibraryLoadCursor): - Add support for XFixes version 2 cursor naming functions - -2003-10-16 23:45 fredrik - - * Xcursor-def.cpp, Xcursor.h, configure.ac, library.c: - Rename _XcursorLibraryPath() to XcursorLibraryPath() and make - it a public function, since it's useful for theme selectors. - Bump version to 1.1.0 - -2003-05-21 10:21 keithp - - * Makefile.am, Xcursor.h, configure.ac, xcursorint.h: Package - Xcursor.3, bump version to 1.0.2 - -2003-05-06 11:20 keithp - - * ChangeLog: Add initial change log - -2003-05-06 11:09 keithp - - * .cvsignore, Makefile.am, Xcursor-def.cpp, Xcursor.3, Xcursor.h, - Xcursor.man, cursor.c, display.c, file.c, library.c, xcursorint.h, - xlib.c: Update .cvsignore, move manual and install, fix CVS ident - lines - -2003-05-06 11:00 keithp - - * configure.ac: replace Xrender test with fragment from Xft - -2003-05-06 10:52 keithp - - * Makefile.am: Add xcursorint.h to library sources list - -2003-05-06 10:49 keithp - - * Imakefile, Makefile.am, Xcursor.h, autogen.sh, configure.ac, - file.c, xcursor.pc.in: Convert Xcursor to autotools - -2003-02-21 22:16 dawes - - * xlib.c: 941. Fix a problem where a malformed Ximage can cause - Xcursor to step - outside the image data (#A.1636, Keith Packard, reported by - Michel Dänzer). - -2003-02-19 19:13 dawes - - * display.c: 924. Fix a memory leak in XCloseDisplay, and a - potential race condition - when multiple threads attempt to initialize the Xcursor - library - simultaneously (#A.1623, Keith Packard). - -2003-02-12 19:09 dawes - - * Xcursor.man: 880. Fix the Xcursor include path in the man page - (#5617, Kevin Brosius). - -2003-01-25 19:22 eich - - * Xcursor.h, cursor.c, library.c, xcursorint.h: 787. Add "core" - theme to Xcursor to force old behaviour (Keith Packard). - -2002-11-26 21:35 keithp - - * display.c: Fix XcursorSetTheme to permit NULL theme - -2002-11-22 18:34 keithp - - * Xcursor.h, cursor.c, display.c, xcursorint.h, xlib.c: Add animate - cursor support, client side - -2002-10-11 10:06 keithp - - * cursor.c: Off by one in XcursorAnimateNext (from Anders Carlsson) - -2002-09-30 15:02 alanh - - * Xcursor-def.cpp: add Xv-def.cpp file add $XFree86$ tags - -2002-09-26 00:52 alanh - - * Imakefile: #elif -> #else - -2002-09-25 16:27 alanh - - * Xcursor-def.cpp: #5350, add Xcursor-def.cpp - -2002-09-25 09:10 torrey - - * Imakefile: Add SharedXcursorReqs for operating systems that - require it. - -2002-09-18 10:11 tsi - - * file.c: Pacify gcc 3.2 - -2002-09-05 00:55 keithp - - * display.c: Clean up parsing of option that forces use of core - cursors - -2002-09-05 00:29 keithp - - * Xcursor.h, cursor.c, display.c, xcursorint.h, xlib.c: Add - themeable app-specific cursors. Add dithers for core cursors. - Dont theme servers without Render by default - -2002-08-28 21:40 keithp - - * Imakefile, Xcursor.h, Xcursor.man, config-subst, cursor.c, - display.c, file.c, library.c, xcursor-config.in, xcursor.pc.in, - xcursorint.h, xlib.c: Add Xcursor library and Xlib hooks for it - diff --git a/nx-X11/lib/Xcursor/INSTALL b/nx-X11/lib/Xcursor/INSTALL deleted file mode 100644 index e69de29..0000000 diff --git a/nx-X11/lib/Xcursor/Imakefile b/nx-X11/lib/Xcursor/Imakefile deleted file mode 100644 index 53b41e8..0000000 --- a/nx-X11/lib/Xcursor/Imakefile +++ /dev/null @@ -1,100 +0,0 @@ -XCOMM $XdotOrg: xc/lib/Xcursor/Imakefile,v 1.5 2005/10/09 21:52:42 alanc Exp $ -XCOMM $XFree86: xc/lib/Xcursor/Imakefile,v 1.3 2002/09/26 07:52:01 alanh Exp $ - -#ifndef NormalLibXcursor -#define NormalLibXcursor YES -SOXCURSORREV=1.0.2 -#endif - -#ifndef SharedLibXcursor -#define SharedLibXcursor YES -#endif - -#define DoNormalLib NormalLibXcursor -#define DoSharedLib SharedLibXcursor -#define DoDebugLib DebugLibXcursor -#define DoProfileLib ProfileLibXcursor - -#define LibName NX_Xcursor -#define SoRev SOXCURSORREV -#define IncSubdir X11 -#define IncSubSubdir Xcursor - -#include <Threads.tmpl> - -#ifdef SharedXcursorReqs -REQUIREDLIBS = SharedXcursorReqs -#else -REQUIREDLIBS = $(LDPRELIB) $(XRENDERLIB) -#endif - -XCURSOR_VERSION=1.1.4 - -XRENDER_LIBS=$(XRENDERLIB) -XRENDER_CFLAGS=$(XRENDERINCLUDES) - -X_LIBS=-L$(SHLIBDIR) $(XONLYLIB) -X_CFLAGS=-I$(INCROOT) $(THREADS_DEFINES) - -#if BuildRenderLibrary -XRENDER_LIBS=-L$(USRLIBDIR) $(XRENDERLIB) -XRENDER_CFLAGS=-I$(INCROOT) -#endif - -#if BuildXfixesLibrary -XFIXES_DEFINES = -DHAVE_XFIXES -REQUIREDLIBS += $(XFIXESLIB) -#endif - -RPATH_CFLAG = HardCodeLibdirFlag - -ICONDIR=$(LIBDIR)/icons - -DEFINES=-DICONDIR=\"$(ICONDIR)\" $(XFIXES_DEFINES) - -SRCS = cursor.c display.c file.c library.c xlib.c - -OBJS = cursor.o display.o file.o library.o xlib.o - -HEADERS = Xcursor.h - -SUBSTVARS=prefix="$(PROJECTROOT)" \ - exec_prefix="$(BINDIR)" \ - libdir="$(USRLIBDIR)" \ - hardcode_libdir_flag_spec="$(RPATH_CFLAG)" \ - includedir="$(INCROOT)" \ - XRENDER_LIBS="$(XRENDER_LIBS)"\ - XRENDER_CFLAGS="$(XRENDER_CFLAGS)"\ - X_LIBS="$(X_LIBS)" \ - X_CFLAGS="$(X_CFLAGS)" \ - VERSION="$(XCURSOR_VERSION)" - -#include <Library.tmpl> - -MANSUFFIX=$(LIBMANSUFFIX) -InstallManPage(Xcursor,$(LIBMANDIR)) - -DependTarget() - -all:: xcursor-config.script - -xcursor-config.script: xcursor-config.in - RemoveFile($@) - sh config-subst $(SUBSTVARS) < xcursor-config.in > $@ - -InstallScript(xcursor-config,$(BINDIR)) - -clean:: - RemoveFile(xcursor-config.script) - -all:: xcursor.pc - -xcursor.pc: xcursor.pc.in - RemoveFile($@) - sh config-subst $(SUBSTVARS) < xcursor.pc.in > $@ - -InstallNonExecFile(xcursor.pc,$(USRLIBDIR)/pkgconfig) - -clean:: - RemoveFile(xcursor.pc) - diff --git a/nx-X11/lib/Xcursor/NEWS b/nx-X11/lib/Xcursor/NEWS deleted file mode 100644 index e69de29..0000000 diff --git a/nx-X11/lib/Xcursor/README b/nx-X11/lib/Xcursor/README deleted file mode 100644 index e69de29..0000000 diff --git a/nx-X11/lib/Xcursor/Xcursor-def.cpp b/nx-X11/lib/Xcursor/Xcursor-def.cpp deleted file mode 100644 index e60212f..0000000 --- a/nx-X11/lib/Xcursor/Xcursor-def.cpp +++ /dev/null @@ -1,54 +0,0 @@ -LIBRARY Xcursor -VERSION LIBRARY_VERSION -EXPORTS -XcursorAnimateCreate -XcursorAnimateDestroy -XcursorAnimateNext -XcursorCursorsCreate -XcursorCursorsDestroy -XcursorFilenameLoadCursor -XcursorFilenameLoadCursors -XcursorImageLoadCursor -XcursorImagesLoadCursors -XcursorLibraryLoadCursor -XcursorLibraryLoadCursors -XcursorShapeLoadCursor -XcursorShapeLoadCursors -_XcursorCreateGlyphCursor -XcursorGetDefaultSize -XcursorGetTheme -XcursorSetDefaultSize -XcursorSetTheme -XcursorSupportsARGB -_XcursorGetDisplayInfo -XcursorCommentCreate -XcursorCommentDestroy -XcursorCommentsCreate -XcursorCommentsDestroy -XcursorFileLoad -XcursorFileLoadAllImages -XcursorFileLoadImage -XcursorFileLoadImages -XcursorFileSave -XcursorFileSaveImages -XcursorFilenameLoad -XcursorFilenameLoadAllImages -XcursorFilenameLoadImage -XcursorFilenameLoadImages -XcursorFilenameSave -XcursorFilenameSaveImages -XcursorImageCreate -XcursorImageDestroy -XcursorImagesCreate -XcursorImagesDestroy -XcursorXcFileLoad -XcursorXcFileLoadAllImages -XcursorXcFileLoadImage -XcursorXcFileLoadImages -XcursorXcFileSave -XcursorLibraryPath -XcursorLibraryLoadImage -XcursorLibraryLoadImages -XcursorShapeLoadImage -XcursorShapeLoadImages -XcursorTryShapeCursor diff --git a/nx-X11/lib/Xcursor/Xcursor.h b/nx-X11/lib/Xcursor/Xcursor.h deleted file mode 100644 index d8a7ac3..0000000 --- a/nx-X11/lib/Xcursor/Xcursor.h +++ /dev/null @@ -1,501 +0,0 @@ -/* - * $Id: Xcursor.h,v 1.6 2005/11/09 21:31:19 kem Exp $ - * - * Copyright © 2002 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef _XCURSOR_H_ -#define _XCURSOR_H_ -#include <stdio.h> -#include <X11/Xfuncproto.h> - -typedef int XcursorBool; -typedef unsigned int XcursorUInt; - -typedef XcursorUInt XcursorDim; -typedef XcursorUInt XcursorPixel; - -#define XcursorTrue 1 -#define XcursorFalse 0 - -/* - * Cursor files start with a header. The header - * contains a magic number, a version number and a - * table of contents which has type and offset information - * for the remaining tables in the file. - * - * File minor versions increment for compatible changes - * File major versions increment for incompatible changes (never, we hope) - * - * Chunks of the same type are always upward compatible. Incompatible - * changes are made with new chunk types; the old data can remain under - * the old type. Upward compatible changes can add header data as the - * header lengths are specified in the file. - * - * File: - * FileHeader - * LISTofChunk - * - * FileHeader: - * CARD32 magic magic number - * CARD32 header bytes in file header - * CARD32 version file version - * CARD32 ntoc number of toc entries - * LISTofFileToc toc table of contents - * - * FileToc: - * CARD32 type entry type - * CARD32 subtype entry subtype (size for images) - * CARD32 position absolute file position - */ - -#define XCURSOR_MAGIC 0x72756358 /* "Xcur" LSBFirst */ - -/* - * Current Xcursor version number. This same number - * must appear in the Xcursor configure.ac file. Yes, - * it'a a pain to synchronize version numbers like this. - */ - -#define XCURSOR_LIB_MAJOR 1 -#define XCURSOR_LIB_MINOR 1 -#define XCURSOR_LIB_REVISION 5 -#define XCURSOR_LIB_VERSION ((XCURSOR_LIB_MAJOR * 10000) + \ - (XCURSOR_LIB_MINOR * 100) + \ - (XCURSOR_LIB_REVISION)) - -/* - * This version number is stored in cursor files; changes to the - * file format require updating this version number - */ -#define XCURSOR_FILE_MAJOR 1 -#define XCURSOR_FILE_MINOR 0 -#define XCURSOR_FILE_VERSION ((XCURSOR_FILE_MAJOR << 16) | (XCURSOR_FILE_MINOR)) -#define XCURSOR_FILE_HEADER_LEN (4 * 4) -#define XCURSOR_FILE_TOC_LEN (3 * 4) - -typedef struct _XcursorFileToc { - XcursorUInt type; /* chunk type */ - XcursorUInt subtype; /* subtype (size for images) */ - XcursorUInt position; /* absolute position in file */ -} XcursorFileToc; - -typedef struct _XcursorFileHeader { - XcursorUInt magic; /* magic number */ - XcursorUInt header; /* byte length of header */ - XcursorUInt version; /* file version number */ - XcursorUInt ntoc; /* number of toc entries */ - XcursorFileToc *tocs; /* table of contents */ -} XcursorFileHeader; - -/* - * The rest of the file is a list of chunks, each tagged by type - * and version. - * - * Chunk: - * ChunkHeader - * <extra type-specific header fields> - * <type-specific data> - * - * ChunkHeader: - * CARD32 header bytes in chunk header + type header - * CARD32 type chunk type - * CARD32 subtype chunk subtype - * CARD32 version chunk type version - */ - -#define XCURSOR_CHUNK_HEADER_LEN (4 * 4) - -typedef struct _XcursorChunkHeader { - XcursorUInt header; /* bytes in chunk header */ - XcursorUInt type; /* chunk type */ - XcursorUInt subtype; /* chunk subtype (size for images) */ - XcursorUInt version; /* version of this type */ -} XcursorChunkHeader; - -/* - * Here's a list of the known chunk types - */ - -/* - * Comments consist of a 4-byte length field followed by - * UTF-8 encoded text - * - * Comment: - * ChunkHeader header chunk header - * CARD32 length bytes in text - * LISTofCARD8 text UTF-8 encoded text - */ - -#define XCURSOR_COMMENT_TYPE 0xfffe0001 -#define XCURSOR_COMMENT_VERSION 1 -#define XCURSOR_COMMENT_HEADER_LEN (XCURSOR_CHUNK_HEADER_LEN + (1 *4)) -#define XCURSOR_COMMENT_COPYRIGHT 1 -#define XCURSOR_COMMENT_LICENSE 2 -#define XCURSOR_COMMENT_OTHER 3 -#define XCURSOR_COMMENT_MAX_LEN 0x100000 - -typedef struct _XcursorComment { - XcursorUInt version; - XcursorUInt comment_type; - char *comment; -} XcursorComment; - -/* - * Each cursor image occupies a separate image chunk. - * The length of the image header follows the chunk header - * so that future versions can extend the header without - * breaking older applications - * - * Image: - * ChunkHeader header chunk header - * CARD32 width actual width - * CARD32 height actual height - * CARD32 xhot hot spot x - * CARD32 yhot hot spot y - * CARD32 delay animation delay - * LISTofCARD32 pixels ARGB pixels - */ - -#define XCURSOR_IMAGE_TYPE 0xfffd0002 -#define XCURSOR_IMAGE_VERSION 1 -#define XCURSOR_IMAGE_HEADER_LEN (XCURSOR_CHUNK_HEADER_LEN + (5*4)) -#define XCURSOR_IMAGE_MAX_SIZE 0x7fff /* 32767x32767 max cursor size */ - -typedef struct _XcursorImage { - XcursorUInt version; /* version of the image data */ - XcursorDim size; /* nominal size for matching */ - XcursorDim width; /* actual width */ - XcursorDim height; /* actual height */ - XcursorDim xhot; /* hot spot x (must be inside image) */ - XcursorDim yhot; /* hot spot y (must be inside image) */ - XcursorUInt delay; /* animation delay to next frame (ms) */ - XcursorPixel *pixels; /* pointer to pixels */ -} XcursorImage; - -/* - * Other data structures exposed by the library API - */ -typedef struct _XcursorImages { - int nimage; /* number of images */ - XcursorImage **images; /* array of XcursorImage pointers */ - char *name; /* name used to load images */ -} XcursorImages; - -typedef struct _XcursorCursors { - Display *dpy; /* Display holding cursors */ - int ref; /* reference count */ - int ncursor; /* number of cursors */ - Cursor *cursors; /* array of cursors */ -} XcursorCursors; - -typedef struct _XcursorAnimate { - XcursorCursors *cursors; /* list of cursors to use */ - int sequence; /* which cursor is next */ -} XcursorAnimate; - -typedef struct _XcursorFile XcursorFile; - -struct _XcursorFile { - void *closure; - int (*read) (XcursorFile *file, unsigned char *buf, int len); - int (*write) (XcursorFile *file, unsigned char *buf, int len); - int (*seek) (XcursorFile *file, long offset, int whence); -}; - -typedef struct _XcursorComments { - int ncomment; /* number of comments */ - XcursorComment **comments; /* array of XcursorComment pointers */ -} XcursorComments; - -#define XCURSOR_CORE_THEME "core" - -_XFUNCPROTOBEGIN - -/* - * Manage Image objects - */ -XcursorImage * -XcursorImageCreate (int width, int height); - -void -XcursorImageDestroy (XcursorImage *image); - -/* - * Manage Images objects - */ -XcursorImages * -XcursorImagesCreate (int size); - -void -XcursorImagesDestroy (XcursorImages *images); - -void -XcursorImagesSetName (XcursorImages *images, const char *name); - -/* - * Manage Cursor objects - */ -XcursorCursors * -XcursorCursorsCreate (Display *dpy, int size); - -void -XcursorCursorsDestroy (XcursorCursors *cursors); - -/* - * Manage Animate objects - */ -XcursorAnimate * -XcursorAnimateCreate (XcursorCursors *cursors); - -void -XcursorAnimateDestroy (XcursorAnimate *animate); - -Cursor -XcursorAnimateNext (XcursorAnimate *animate); - -/* - * Manage Comment objects - */ -XcursorComment * -XcursorCommentCreate (XcursorUInt comment_type, int length); - -void -XcursorCommentDestroy (XcursorComment *comment); - -XcursorComments * -XcursorCommentsCreate (int size); - -void -XcursorCommentsDestroy (XcursorComments *comments); - -/* - * XcursorFile/Image APIs - */ -XcursorImage * -XcursorXcFileLoadImage (XcursorFile *file, int size); - -XcursorImages * -XcursorXcFileLoadImages (XcursorFile *file, int size); - -XcursorImages * -XcursorXcFileLoadAllImages (XcursorFile *file); - -XcursorBool -XcursorXcFileLoad (XcursorFile *file, - XcursorComments **commentsp, - XcursorImages **imagesp); - -XcursorBool -XcursorXcFileSave (XcursorFile *file, - const XcursorComments *comments, - const XcursorImages *images); - -/* - * FILE/Image APIs - */ -XcursorImage * -XcursorFileLoadImage (FILE *file, int size); - -XcursorImages * -XcursorFileLoadImages (FILE *file, int size); - -XcursorImages * -XcursorFileLoadAllImages (FILE *file); - -XcursorBool -XcursorFileLoad (FILE *file, - XcursorComments **commentsp, - XcursorImages **imagesp); - -XcursorBool -XcursorFileSaveImages (FILE *file, const XcursorImages *images); - -XcursorBool -XcursorFileSave (FILE * file, - const XcursorComments *comments, - const XcursorImages *images); - -/* - * Filename/Image APIs - */ -XcursorImage * -XcursorFilenameLoadImage (const char *filename, int size); - -XcursorImages * -XcursorFilenameLoadImages (const char *filename, int size); - -XcursorImages * -XcursorFilenameLoadAllImages (const char *filename); - -XcursorBool -XcursorFilenameLoad (const char *file, - XcursorComments **commentsp, - XcursorImages **imagesp); - -XcursorBool -XcursorFilenameSaveImages (const char *filename, const XcursorImages *images); - -XcursorBool -XcursorFilenameSave (const char *file, - const XcursorComments *comments, - const XcursorImages *images); - -/* - * Library/Image APIs - */ -XcursorImage * -XcursorLibraryLoadImage (const char *library, const char *theme, int size); - -XcursorImages * -XcursorLibraryLoadImages (const char *library, const char *theme, int size); - -/* - * Library/shape API - */ - -const char * -XcursorLibraryPath (void); - -int -XcursorLibraryShape (const char *library); - -/* - * Image/Cursor APIs - */ - -Cursor -XcursorImageLoadCursor (Display *dpy, const XcursorImage *image); - -XcursorCursors * -XcursorImagesLoadCursors (Display *dpy, const XcursorImages *images); - -Cursor -XcursorImagesLoadCursor (Display *dpy, const XcursorImages *images); - -/* - * Filename/Cursor APIs - */ -Cursor -XcursorFilenameLoadCursor (Display *dpy, const char *file); - -XcursorCursors * -XcursorFilenameLoadCursors (Display *dpy, const char *file); - -/* - * Library/Cursor APIs - */ -Cursor -XcursorLibraryLoadCursor (Display *dpy, const char *file); - -XcursorCursors * -XcursorLibraryLoadCursors (Display *dpy, const char *file); - -/* - * Shape/Image APIs - */ - -XcursorImage * -XcursorShapeLoadImage (unsigned int shape, const char *theme, int size); - -XcursorImages * -XcursorShapeLoadImages (unsigned int shape, const char *theme, int size); - -/* - * Shape/Cursor APIs - */ -Cursor -XcursorShapeLoadCursor (Display *dpy, unsigned int shape); - -XcursorCursors * -XcursorShapeLoadCursors (Display *dpy, unsigned int shape); - -/* - * This is the function called by Xlib when attempting to - * load cursors from XCreateGlyphCursor. The interface must - * not change as Xlib loads 'libXcursor.so' instead of - * a specific major version - */ -Cursor -XcursorTryShapeCursor (Display *dpy, - Font source_font, - Font mask_font, - unsigned int source_char, - unsigned int mask_char, - XColor _Xconst *foreground, - XColor _Xconst *background); - -void -XcursorNoticeCreateBitmap (Display *dpy, - Pixmap pid, - unsigned int width, - unsigned int height); - -void -XcursorNoticePutBitmap (Display *dpy, - Drawable draw, - XImage *image); - -Cursor -XcursorTryShapeBitmapCursor (Display *dpy, - Pixmap source, - Pixmap mask, - XColor *foreground, - XColor *background, - unsigned int x, - unsigned int y); - -#define XCURSOR_BITMAP_HASH_SIZE 16 - -void -XcursorImageHash (XImage *image, - unsigned char hash[XCURSOR_BITMAP_HASH_SIZE]); - -/* - * Display information APIs - */ -XcursorBool -XcursorSupportsARGB (Display *dpy); - -XcursorBool -XcursorSupportsAnim (Display *dpy); - -XcursorBool -XcursorSetDefaultSize (Display *dpy, int size); - -int -XcursorGetDefaultSize (Display *dpy); - -XcursorBool -XcursorSetTheme (Display *dpy, const char *theme); - -char * -XcursorGetTheme (Display *dpy); - -XcursorBool -XcursorGetThemeCore (Display *dpy); - -XcursorBool -XcursorSetThemeCore (Display *dpy, XcursorBool theme_core); - -_XFUNCPROTOEND - -#endif diff --git a/nx-X11/lib/Xcursor/Xcursor.man b/nx-X11/lib/Xcursor/Xcursor.man deleted file mode 100644 index 99b7213..0000000 --- a/nx-X11/lib/Xcursor/Xcursor.man +++ /dev/null @@ -1,379 +0,0 @@ -.\" -.\" $Id: Xcursor.man,v 1.4 2005/10/13 02:22:47 alanc Exp $ -.\" -.\" Copyright © 2002 Keith Packard -.\" -.\" Permission to use, copy, modify, distribute, and sell this software and its -.\" documentation for any purpose is hereby granted without fee, provided that -.\" the above copyright notice appear in all copies and that both that -.\" copyright notice and this permission notice appear in supporting -.\" documentation, and that the name of Keith Packard not be used in -.\" advertising or publicity pertaining to distribution of the software without -.\" specific, written prior permission. Keith Packard makes no -.\" representations about the suitability of this software for any purpose. It -.\" is provided "as is" without express or implied warranty. -.\" -.\" KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -.\" EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -.\" CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -.\" DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -.\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -.\" PERFORMANCE OF THIS SOFTWARE. -.\" -.de TQ -.br -.ns -.TP \\$1 -.. -.TH XCURSOR 3 "Version 1.0" "Keith Packard" - -.SH NAME -XCURSOR \- Cursor management library - -.SH SYNOPSIS -.nf -.B #include <X11/Xcursor/Xcursor.h> -.fi -.SH DESCRIPTION -.B Xcursor -is a simple library designed to help locate and load cursors. Cursors can -be loaded from files or memory. A library of common cursors exists which -map to the standard X cursor names. Cursors can exist in several sizes and -the library automatically picks the best size. - -.SH FUNCTIONAL OVERVIEW -Xcursor is built in a couple of layers; at the bottom layer is code which -can load cursor images from files. Above that is a layer which locates -cursor files based on the library path and theme. At the top is a layer -which builds cursors either out of an image loaded from a file or one of the -standard X cursors. When using images loaded from files, Xcursor prefers -to use the Render extension CreateCursor request if supported by the X -server. Where not supported, Xcursor maps the cursor image to a standard X -cursor and uses the core CreateCursor request. - -.SS CURSOR FILES -Xcursor defines a new format for cursors on disk. Each file holds -one or more cursor images. Each cursor image is tagged with a nominal size -so that the best size can be selected automatically. Multiple cursors of -the same nominal size can be loaded together; applications are expected to -use them as an animated sequence. -.P -Cursor files are stored as a header containing a table of contents followed -by a sequence of chunks. The table of contents indicates the type, subtype -and position in the file of each chunk. The file header looks like: -.LP -.in +.2i -\fImagic\fP\^: CARD32 'Xcur' (0x58, 0x63, 0x75, 0x72) -.br -\fIheader\fP\^: CARD32 bytes in this header -.br -\fIversion\fP\^: CARD32 file version number -.br -\fIntoc\fP\^: CARD32 number of toc entries -\fItoc\fP\^: LISTofTOC table of contents -.in -.2i -.P -Each table of contents entry looks like: -.LP -.in +.2i -\fItype\fP\^: CARD32 entry type -\fIsubtype\fP\^: CARD32 type-specific label - size for images -\fIposition\fP\^: CARD32 absolute byte position of table in file -.in -.2i -.P -.P -Each chunk in the file has set of common header fields followed by -additional type-specific fields: -.LP -.in +.2i -\fIheader\fP\^: CARD32 bytes in chunk header (including type-specific fields) -.br -\fItype\fP\^: CARD32 must match type in TOC for this chunk -.br -\fIsubtype\fP\^: CARD32 must match subtype in TOC for this chunk -.br -\fIversion\fP\^: CARD32 version number for this chunk type -.in -.2i -.P -There are currently two chunk types defined for cursor files; comments and -images. Comments look like: -.LP -.in +.2i -\fIheader\fP\^: 20 Comment headers are 20 bytes -.br -\fItype\fP\^: 0xfffe0001 Comment type is 0xfffe0001 -.br -\fIsubtype\fP\^: { 1 (COPYRIGHT), 2 (LICENSE), 3 (OTHER) } -.br -\fIversion\fP\^: 1 -.br -\fIlength\fP\^: CARD32 byte length of UTF-8 string -.br -\fIstring\fP\^: LISTofCARD8 UTF-8 string -.in -.2i -.P -Images look like: -.LP -.in +.2i -\fIheader\fP\^: 36 Image headers are 36 bytes -.br -\fItype\fP\^: 0xfffd0002 Image type is 0xfffd0002 -.br -\fIsubtype\fP\^: CARD32 Image subtype is the nominal size -.br -\fIversion\fP\^: 1 -.br -\fIwidth\fP\^: CARD32 Must be less than or equal to 0x7fff -.br -\fIheight\fP\^: CARD32 Must be less than or equal to 0x7fff -.br -\fIxhot\fP\^: CARD32 Must be less than or equal to width -.br -\fIyhot\fP\^: CARD32 Must be less than or equal to height -.br -\fIdelay\fP\^: CARD32 Delay between animation frames in milliseconds -.br -\fIpixels\fP\^: LISTofCARD32 Packed ARGB format pixels -.in -.2i - -.SS THEMES -Xcursor (mostly) follows the freedesktop.org spec for theming icons. The -default search path it uses is $HOME/.icons, /usr/share/icons, -/usr/share/pimaps, /usr/X11R6/lib/X11/icons. Within each of these -directorys, it searches for a directory using the theme name. Within the -theme directory, it looks for cursor files in the 'cursors' subdirectory. -It uses the first cursor file found along the path. -.PP -If necessary, Xcursor also looks for a "index.theme" file in each theme -directory to find inherited themes and searches along the path for those -themes as well. -.PP -If no theme is set, or if no cursor is found for the specified theme, -Xcursor checks the "default" theme. - -.SH DATATYPES - -.TP -.B XcursorImage -holds a single cursor image in memory. Each pixel in the cursor is a 32-bit -value containing ARGB with A in the high byte. -.sp -.nf -.ft CR - typedef struct _XcursorImage { - XcursorDim size; /\(** nominal size for matching */ - XcursorDim width; /\(** actual width */ - XcursorDim height; /\(** actual height */ - XcursorDim xhot; /\(** hot spot x (must be inside image) */ - XcursorDim yhot; /\(** hot spot y (must be inside image) */ - XcursorPixel *pixels; /\(** pointer to pixels */ - } XcursorImage; -.ft -.fi - -.TP -.B XcursorImages -holds multiple XcursorImage structures. They're all freed when the -XcursorImages is freed. -.sp -.nf -.ft CR - typedef struct _XcursorImages { - int nimage; /\(** number of images */ - XcursorImage **images; /\(** array of XcursorImage pointers */ - } XcursorImages; -.ft -.fi - -.TP -.B XcursorCursors -Holds multiple Cursor objects. They're all freed when the XcursorCursors is -freed. These are reference counted so that multiple XcursorAnimate -structures can use the same XcursorCursors. -.sp -.nf -.ft CR - typedef struct _XcursorCursors { - Display *dpy; /\(** Display holding cursors */ - int ref; /\(** reference count */ - int ncursor; /\(** number of cursors */ - Cursor *cursors; /\(** array of cursors */ - } XcursorCursors; -.ft -.fi - -.TP -.B XcursorAnimate -References a set of cursors and a sequence within that set. Multiple -XcursorAnimate structures may reference the same XcursorCursors; each -holds a reference which is removed when the XcursorAnimate is freed. -.sp -.nf -.ft CR - typedef struct _XcursorAnimate { - XcursorCursors *cursors; /\(** list of cursors to use */ - int sequence; /\(** which cursor is next */ - } XcursorAnimate; -.ft -.fi - -.TP -.B XcursorFile -Xcursor provides an abstract API for accessing the file data. Xcursor -provides a stdio implementation of this abstract API; applications -are free to create additional implementations. These functions -parallel the stdio functions in return value and expected argument values; -the read and write functions flip the arguments around to match the POSIX -versions. -.sp -.nf -.ft CR - typedef struct _XcursorFile { - void *closure; - int (*read) (XcursorFile *file, unsigned char *buf, int len); - int (*write) (XcursorFile *file, unsigned char *buf, int len); - int (*seek) (XcursorFile *file, long offset, int whence); - }; -.ft -.fi - -.SH FUNCTIONS - -.SS Object Management -.TP -XcursorImage *XcursorImageCreate (int width, int height) -.TQ -void XcursorImageDestroy (XcursorImage *image) -Allocate and free images. On allocation, the hotspot and the pixels are -left uninitialized. The size is set to the maximum of width and height. - -.TP -XcursorImages *XcursorImagesCreate (int size) -.TQ -void XcursorImagesDestroy (XcursorImages *images) -Allocate and free arrays to hold multiple cursor images. On allocation, -nimage is set to zero. - -.TP -XcursorCursors *XcursorCursorsCreate (Display *dpy, int size) -.TQ -void XcursorCursorsDestroy (XcursorCursors *cursors) -Allocate and free arrays to hold multiple cursors. On allocation, -ncursor is set to zero, ref is set to one. - -.SS Reading and writing images. - -.TP -XcursorImage *XcursorXcFileLoadImage (XcursorFile *file, int size) -.TQ -XcursorImages *XcursorXcFileLoadImages (XcursorFile *file, int size) -.TQ -XcursorImages *XcursorXcFileLoadAllImages (XcursorFile *file) -.TQ -XcursorBool XcursorXcFileLoad (XcursorFile *file, XcursorComments **commentsp, XcursorImages **imagesp) -.TQ -XcursorBool XcursorXcFileSave (XcursorFile *file, const XcursorComments *comments, const XcursorImages *images) -These read and write cursors from an XcursorFile handle. After reading, the -file pointer will be left at some random place in the file. - -.TP -XcursorImage *XcursorFileLoadImage (FILE *file, int size) -.TQ -XcursorImages *XcursorFileLoadImages (FILE *file, int size) -.TQ -XcursorImages *XcursorFileLoadAllImages (FILE *file) -.TQ -XcursorBool XcursorFileLoad (FILE *file, XcursorComments **commentsp, XcursorImages **imagesp) -.TQ -XcursorBool XcursorFileSaveImages (FILE *file, const XcursorImages *images) -.TQ -XcursorBool XcursorFileSave (FILE * file, const XcursorComments *comments, const XcursorImages *images) -These read and write cursors from a stdio FILE handle. Writing flushes -before returning so that any errors should be detected. - -.TP -XcursorImage *XcursorFilenameLoadImage (const char *filename, int size) -.TQ -XcursorImages *XcursorFilenameLoadImages (const char *filename, int size) -.TQ -XcursorImages *XcursorFilenameLoadAllImages (FILE *file) -.TQ -XcursorBool XcursorFilenameLoad (const char *file, XcursorComments **commentsp, XcursorImages **imagesp) -.TQ -XcursorBool XcursorFilenameSaveImages (const char *filename, const XcursorImages *images) -.TQ -XcursorBool XcursorFilenameSave (const char *file, const XcursorComments *comments, const XcursorImages *images) -These parallel the stdio FILE interfaces above, but take filenames. - -.SS Reading library images -.TP -XcursorImage *XcursorLibraryLoadImage (const char *name, const char *theme, int size) -.TQ -XcursorImages *XcursorLibraryLoadImages (const char *name, const char *theme, int size) -These search the library path, loading the first file found. If 'theme' is -not NULL, these functions first try appending -theme to name and then -name alone. - -.SS Cursor APIs - -.TP -Cursor XcursorFilenameLoadCursor (Display *dpy, const char *file) -.TQ -XcursorCursors *XcursorFilenameLoadCursors (Display *dpy, const char *file) -These load cursors from the specified file. - -.TP -Cursor XcursorLibraryLoadCursor (Display *dpy, const char *name) -.TQ -XcursorCursors *XcursorLibraryLoadCursors (Display *dpy, const char *name) -These load cursors using the specified library name. The theme -comes from the display. - -.SS X Cursor Name APIs - -.TP -XcursorImage *XcursorShapeLoadImage (unsigned int shape, const char *theme, int size) -.TQ -XcursorImages *XcursorShapeLoadImages (unsigned int shape, const char *theme, int size) -These map 'shape' to a library name using the standard X cursor names and -then load the images. - -.TP -Cursor XcursorShapeLoadCursor (Display *dpy, unsigned int shape) -.TQ -XcursorCursors *XcursorShapeLoadCursors (Display *dpy, unsigned int shape) -These map 'shape' to a library name and then load the cursors. - -.SS Display Information APIs - -.TP -XcursorBool XcursorSupportsARGB (Display *dpy) -Returns whether the display supports ARGB cursors or whether cursors will be -mapped to a core X cursor. - -.TP -XcursorBool XcursorSetDefaultSize (Display *dpy, int size) -Sets the default size for cursors on the specified display. When loading -cursors, those who's nominal size is closest to this size will be preferred. - -.TP -int XcursorGetDefaultSize (Display *dpy) -Gets the default cursor size. - -.TP -XcursorBool -XcursorSetTheme (Display *dpy, const char *theme) -Sets the current theme name. - -char * -XcursorGetTheme (Display *dpy) -Gets the current theme name. - -.SH RESTRICTIONS -.B Xcursor -will probably change radically in the future; weak attempts will be made to -retain some level of source-file compatibility. - -.SH AUTHOR -Keith Packard diff --git a/nx-X11/lib/Xcursor/autogen.sh b/nx-X11/lib/Xcursor/autogen.sh deleted file mode 100755 index 904cd67..0000000 --- a/nx-X11/lib/Xcursor/autogen.sh +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -ORIGDIR=`pwd` -cd $srcdir - -autoreconf -v --install || exit 1 -cd $ORIGDIR || exit $? - -$srcdir/configure --enable-maintainer-mode "$@" diff --git a/nx-X11/lib/Xcursor/config.h b/nx-X11/lib/Xcursor/config.h deleted file mode 100644 index e69de29..0000000 diff --git a/nx-X11/lib/Xcursor/configure.ac b/nx-X11/lib/Xcursor/configure.ac deleted file mode 100644 index 8ec0d2e..0000000 --- a/nx-X11/lib/Xcursor/configure.ac +++ /dev/null @@ -1,143 +0,0 @@ -dnl -dnl $Id: configure.ac,v 1.3 2005/06/29 18:46:53 daniels Exp $ -dnl -dnl Copyright © 2003 Keith Packard -dnl -dnl Permission to use, copy, modify, distribute, and sell this software and its -dnl documentation for any purpose is hereby granted without fee, provided that -dnl the above copyright notice appear in all copies and that both that -dnl copyright notice and this permission notice appear in supporting -dnl documentation, and that the name of Keith Packard not be used in -dnl advertising or publicity pertaining to distribution of the software without -dnl specific, written prior permission. Keith Packard makes no -dnl representations about the suitability of this software for any purpose. It -dnl is provided "as is" without express or implied warranty. -dnl -dnl KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -dnl EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -dnl PERFORMANCE OF THIS SOFTWARE. -dnl -dnl Process this file with autoconf to create configure. - -AC_PREREQ([2.57]) -dnl -dnl This is the package version number, not the shared library -dnl version. This same version number must appear in Xcursor.h -dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's -dnl not possible to extract the version number here from Xcursor.h -dnl -AC_INIT([libXcursor],1.1.4,[keithp@keithp.com],[libXcursor]) -AM_INIT_AUTOMAKE([dist-bzip2]) -AC_CONFIG_SRCDIR([Makefile.am]) -AM_MAINTAINER_MODE -AM_CONFIG_HEADER(config.h) - -dnl libtool versioning - -LT_CURRENT=1 -LT_REVISION=2 -LT_AGE=0 - -AC_SUBST(LT_CURRENT) -AC_SUBST(LT_REVISION) -LT_AGE=0 - -LT_VERSION_INFO="$LT_CURRENT:$LT_REVISION:$LT_AGE" -AC_SUBST(LT_VERSION_INFO) - -LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE` -AC_SUBST(LT_CURRENT_MINUS_AGE) - -# Check for progs -AC_PROG_CC -AC_PROG_LIBTOOL - -# Check for X -PKG_CHECK_MODULES(X, x11, - [x_found_with_pkgconfig=yes], - [x_found_with_pkgconfig=no]) - -if test "$x_found_with_pkgconfig" = "no" -then - AC_PATH_XTRA - X_LIBS="$X_LIBS -lX11" - - if test "x$no_x" = "xyes" - then - AC_MSG_ERROR([X is required, but it was either disabled or not found.]) - fi - # Check for XTHREADS - - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $X_CFLAGS" - LIBS="$LIBS $X_LIBS" - - AC_MSG_CHECKING([for XTHREADS in Xlib]) - AC_RUN_IFELSE( - [AC_LANG_PROGRAM([[#include <X11/Xlib.h>]], - [[return XInitThreads() == 0 ? 0 : 1;]])], - [xthreads=no], - [xthreads=yes], - [xthreads=yes]) - - AC_MSG_RESULT($xthreads) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - if test "x$xthreads" = "xyes" - then - X_CFLAGS="$X_CFLAGS -DXTHREADS" - fi - - if test "x$no_x" = "xyes" - then - AC_MSG_ERROR([X is required, but it was either disabled or not found.]) - fi -fi - -AC_SUBST(X_CFLAGS) -AC_SUBST(X_LIBS) - -PKG_CHECK_MODULES(XRENDER, xrender >= 0.8.2, [xrender_found_with_pkgconfig=yes], - [xrender_found_with_pkgconfig=no]) -case "$xrender_found_with_pkgconfig" in -no) - PKG_CHECK_MODULES(XRENDER, xrender >= 0.8, [old_xrender_found_with_pkgconfig=yes], - [old_xrender_found_with_pkgconfig=no]) - case "$old_xrender_found_with_pkgconfig" in - no) - # checks for X - AC_PATH_X - - XRENDER_CFLAGS="-I$x_includes" - XRENDER_LIBS="-L$x_libraries -lXrender -lXext -lX11" - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS" - AC_CHECK_HEADERS([X11/extensions/Xrender.h], [], [AC_MSG_ERROR([Xrender.h not found.])]) - CPPFLAGS="$saved_CPPFLAGS" - - saved_LIBS="$LIBS" - LIBS="$LIBS $XRENDER_LIBS" - AC_CHECK_FUNCS([XRenderCreateAnimCursor], [], [AC_MSG_ERROR([libXrender not found.])]) - LIBS="$saved_LIBS" - ;; - yes) - XRENDER_LIBS="$XRENDER_LIBS -lXext -lX11" - ;; - esac - ;; -esac -PKG_CHECK_MODULES(XFIXES, xfixes, [AC_DEFINE_UNQUOTED(HAVE_XFIXES, 1, [Define to 1 if you have Xfixes])]) - -AC_SUBST(XRENDER_LIBS) -AC_SUBST(XRENDER_CFLAGS) - -AC_OUTPUT([Makefile - xcursor.pc]) diff --git a/nx-X11/lib/Xcursor/cursor.c b/nx-X11/lib/Xcursor/cursor.c deleted file mode 100644 index df96106..0000000 --- a/nx-X11/lib/Xcursor/cursor.c +++ /dev/null @@ -1,815 +0,0 @@ -/* - * $Id: cursor.c,v 1.6 2005/07/03 07:00:56 daniels Exp $ - * - * Copyright © 2002 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "xcursorint.h" -#include <X11/Xlibint.h> -#include <X11/Xutil.h> - -XcursorCursors * -XcursorCursorsCreate (Display *dpy, int size) -{ - XcursorCursors *cursors; - - cursors = malloc (sizeof (XcursorCursors) + - size * sizeof (Cursor)); - if (!cursors) - return 0; - cursors->ref = 1; - cursors->dpy = dpy; - cursors->ncursor = 0; - cursors->cursors = (Cursor *) (cursors + 1); - return cursors; -} - -void -XcursorCursorsDestroy (XcursorCursors *cursors) -{ - int n; - - --cursors->ref; - if (cursors->ref > 0) - return; - - for (n = 0; n < cursors->ncursor; n++) - XFreeCursor (cursors->dpy, cursors->cursors[n]); - free (cursors); -} - -XcursorAnimate * -XcursorAnimateCreate (XcursorCursors *cursors) -{ - XcursorAnimate *animate; - - animate = malloc (sizeof (XcursorAnimate)); - if (!animate) - return 0; - animate->cursors = cursors; - cursors->ref++; - animate->sequence = 0; - return animate; -} - -void -XcursorAnimateDestroy (XcursorAnimate *animate) -{ - XcursorCursorsDestroy (animate->cursors); - free (animate); -} - -Cursor -XcursorAnimateNext (XcursorAnimate *animate) -{ - Cursor cursor = animate->cursors->cursors[animate->sequence++]; - - if (animate->sequence >= animate->cursors->ncursor) - animate->sequence = 0; - return cursor; -} - -static int -nativeByteOrder (void) -{ - int x = 1; - - return (*((char *) &x) == 1) ? LSBFirst : MSBFirst; -} - -static XcursorUInt -_XcursorPixelBrightness (XcursorPixel p) -{ - XcursorPixel alpha = p >> 24; - XcursorPixel r, g, b; - - if (!alpha) - return 0; - r = ((p >> 8) & 0xff00) / alpha; - if (r > 0xff) r = 0xff; - g = ((p >> 0) & 0xff00) / alpha; - if (g > 0xff) g = 0xff; - b = ((p << 8) & 0xff00) / alpha; - if (b > 0xff) b = 0xff; - return (r * 153 + g * 301 + b * 58) >> 9; -} - -static unsigned short -_XcursorDivideAlpha (XcursorUInt value, XcursorUInt alpha) -{ - if (!alpha) - return 0; - value = value * 255 / alpha; - if (value > 255) - value = 255; - return value | (value << 8); -} - -static void -_XcursorPixelToColor (XcursorPixel p, XColor *color) -{ - XcursorPixel alpha = p >> 24; - - color->pixel = 0; - color->red = _XcursorDivideAlpha ((p >> 16) & 0xff, alpha); - color->green = _XcursorDivideAlpha ((p >> 8) & 0xff, alpha); - color->blue = _XcursorDivideAlpha ((p >> 0) & 0xff, alpha); - color->flags = DoRed|DoGreen|DoBlue; -} - -#undef DEBUG_IMAGE -#ifdef DEBUG_IMAGE -static void -_XcursorDumpImage (XImage *image) -{ - FILE *f = fopen ("/tmp/images", "a"); - int x, y; - if (!f) - return; - fprintf (f, "%d x %x\n", image->width, image->height); - for (y = 0; y < image->height; y++) - { - for (x = 0; x < image->width; x++) - fprintf (f, "%c", XGetPixel (image, x, y) ? '*' : ' '); - fprintf (f, "\n"); - } - fflush (f); - fclose (f); -} - -static void -_XcursorDumpColor (XColor *color, char *name) -{ - FILE *f = fopen ("/tmp/images", "a"); - fprintf (f, "%s: %x %x %x\n", name, - color->red, color->green, color->blue); - fflush (f); - fclose (f); -} -#endif - -static int -_XcursorCompareRed (const void *a, const void *b) -{ - const XcursorPixel *ap = a, *bp = b; - - return (int) (((*ap >> 16) & 0xff) - ((*bp >> 16) & 0xff)); -} - -static int -_XcursorCompareGreen (const void *a, const void *b) -{ - const XcursorPixel *ap = a, *bp = b; - - return (int) (((*ap >> 8) & 0xff) - ((*bp >> 8) & 0xff)); -} - -static int -_XcursorCompareBlue (const void *a, const void *b) -{ - const XcursorPixel *ap = a, *bp = b; - - return (int) (((*ap >> 0) & 0xff) - ((*bp >> 0) & 0xff)); -} - -static XcursorPixel -_XcursorAverageColor (XcursorPixel *pixels, int npixels) -{ - XcursorPixel p; - XcursorPixel red, green, blue; - int n = npixels; - - blue = green = red = 0; - while (n--) - { - p = *pixels++; - red += (p >> 16) & 0xff; - green += (p >> 8) & 0xff; - blue += (p >> 0) & 0xff; - } - if (!n) - return 0; - return (0xff << 24) | ((red/npixels) << 16) | ((green/npixels) << 8) | (blue/npixels); -} - -typedef struct XcursorCoreCursor { - XImage *src_image; - XImage *msk_image; - XColor on_color; - XColor off_color; -} XcursorCoreCursor; - -static Bool -_XcursorHeckbertMedianCut (const XcursorImage *image, XcursorCoreCursor *core) -{ - XImage *src_image = core->src_image, *msk_image = core->msk_image; - int npixels = image->width * image->height; - int ncolors; - int n; - XcursorPixel *po, *pn, *pc; - XcursorPixel p; - XcursorPixel red, green, blue, alpha; - XcursorPixel max_red, min_red, max_green, min_green, max_blue, min_blue; - XcursorPixel *temp, *pixels, *colors; - int split; - XcursorPixel leftColor, centerColor, rightColor; - int (*compare) (const void *, const void *); - int x, y; - - /* - * Temp space for converted image and converted colors - */ - temp = malloc (npixels * sizeof (XcursorPixel) * 2); - if (!temp) - return False; - - pixels = temp; - colors = pixels + npixels; - - /* - * Convert to 2-value alpha and build - * array of opaque color values and an - */ - po = image->pixels; - pn = pixels; - pc = colors; - max_blue = max_green = max_red = 0; - min_blue = min_green = min_red = 255; - n = npixels; - while (n--) - { - p = *po++; - alpha = (p >> 24) & 0xff; - red = (p >> 16) & 0xff; - green = (p >> 8) & 0xff; - blue = (p >> 0) & 0xff; - if (alpha >= 0x80) - { - red = red * 255 / alpha; - green = green * 255 / alpha; - blue = blue * 255 / alpha; - if (red < min_red) min_red = red; - if (red > max_red) max_red = red; - if (green < min_green) min_green = green; - if (green > max_green) max_green = green; - if (blue < min_blue) min_blue = blue; - if (blue > max_blue) max_blue = blue; - p = ((0xff << 24) | (red << 16) | - (green << 8) | (blue << 0)); - *pc++ = p; - } - else - p = 0; - *pn++ = p; - } - ncolors = pc - colors; - - /* - * Compute longest dimension and sort - */ - if ((max_green - min_green) >= (max_red - min_red) && - (max_green - min_green) >= (max_blue - min_blue)) - compare = _XcursorCompareGreen; - else if ((max_red - min_red) >= (max_blue - min_blue)) - compare = _XcursorCompareRed; - else - compare = _XcursorCompareBlue; - qsort (colors, ncolors, sizeof (XcursorPixel), compare); - /* - * Compute average colors on both sides of the cut - */ - split = ncolors >> 1; - leftColor = _XcursorAverageColor (colors, split); - centerColor = colors[split]; - rightColor = _XcursorAverageColor (colors + split, ncolors - split); - /* - * Select best color for each pixel - */ - pn = pixels; - for (y = 0; y < image->height; y++) - for (x = 0; x < image->width; x++) - { - p = *pn++; - if (p & 0xff000000) - { - XPutPixel (msk_image, x, y, 1); - if ((*compare) (&p, ¢erColor) >= 0) - XPutPixel (src_image, x, y, 0); - else - XPutPixel (src_image, x, y, 1); - } - else - { - XPutPixel (msk_image, x, y, 0); - XPutPixel (src_image, x, y, 0); - } - } - free (temp); - _XcursorPixelToColor (rightColor, &core->off_color); - _XcursorPixelToColor (leftColor, &core->on_color); - return True; -} - -#if 0 -#define DITHER_DIM 4 -static XcursorPixel orderedDither[4][4] = { - { 1, 9, 3, 11 }, - { 13, 5, 15, 7 }, - { 4, 12, 2, 10 }, - { 16, 8, 14, 6 } -}; -#else -#define DITHER_DIM 2 -static XcursorPixel orderedDither[2][2] = { - { 1, 3, }, - { 4, 2, }, -}; -#endif - -#define DITHER_SIZE ((sizeof orderedDither / sizeof orderedDither[0][0]) + 1) - -static Bool -_XcursorBayerOrderedDither (const XcursorImage *image, XcursorCoreCursor *core) -{ - int x, y; - XcursorPixel *pixel, p; - XcursorPixel a, i, d; - - pixel = image->pixels; - for (y = 0; y < image->height; y++) - for (x = 0; x < image->width; x++) - { - p = *pixel++; - a = ((p >> 24) * DITHER_SIZE + 127) / 255; - i = (_XcursorPixelBrightness (p) * DITHER_SIZE + 127) / 255; - d = orderedDither[y&(DITHER_DIM-1)][x&(DITHER_DIM-1)]; - if (a > d) - { - XPutPixel (core->msk_image, x, y, 1); - if (i > d) - XPutPixel (core->src_image, x, y, 0); /* white */ - else - XPutPixel (core->src_image, x, y, 1); /* black */ - } - else - { - XPutPixel (core->msk_image, x, y, 0); - XPutPixel (core->src_image, x, y, 0); - } - } - core->on_color.red = 0; - core->on_color.green = 0; - core->on_color.blue = 0; - core->off_color.red = 0xffff; - core->off_color.green = 0xffff; - core->off_color.blue = 0xffff; - return True; -} - -static Bool -_XcursorFloydSteinberg (const XcursorImage *image, XcursorCoreCursor *core) -{ - int *aPicture, *iPicture, *aP, *iP; - XcursorPixel *pixel, p; - int aR, iR, aA, iA; - int npixels = image->width * image->height; - int n; - int right = 1; - int belowLeft = image->width - 1; - int below = image->width; - int belowRight = image->width + 1; - int iError, aError; - int iErrorRight, aErrorRight; - int iErrorBelowLeft, aErrorBelowLeft; - int iErrorBelow, aErrorBelow; - int iErrorBelowRight, aErrorBelowRight; - int x, y; - int max_inten, min_inten, mean_inten; - - iPicture = malloc (npixels * sizeof (int) * 2); - if (!iPicture) - return False; - aPicture = iPicture + npixels; - - /* - * Compute raw gray and alpha arrays - */ - pixel = image->pixels; - iP = iPicture; - aP = aPicture; - n = npixels; - max_inten = 0; - min_inten = 0xff; - while (n--) - { - p = *pixel++; - *aP++ = (int) (p >> 24); - iR = (int) _XcursorPixelBrightness (p); - if (iR > max_inten) max_inten = iR; - if (iR < min_inten) min_inten = iR; - *iP++ = iR; - } - /* - * Draw the image while diffusing the error - */ - iP = iPicture; - aP = aPicture; - mean_inten = (max_inten + min_inten + 1) >> 1; - for (y = 0; y < image->height; y++) - for (x = 0; x < image->width; x++) - { - aR = *aP; - iR = *iP; - if (aR >= 0x80) - { - XPutPixel (core->msk_image, x, y, 1); - aA = 0xff; - } - else - { - XPutPixel (core->msk_image, x, y, 0); - aA = 0x00; - } - if (iR >= mean_inten) - { - XPutPixel (core->src_image, x, y, 0); - iA = max_inten; - } - else - { - XPutPixel (core->src_image, x, y, 1); - iA = min_inten; - } - iError = iR - iA; - aError = aR - aA; - iErrorRight = (iError * 7) >> 4; - iErrorBelowLeft = (iError * 3) >> 4; - iErrorBelow = (iError * 5) >> 4; - iErrorBelowRight = (iError - iErrorRight - - iErrorBelowLeft - iErrorBelow); - aErrorRight = (aError * 7) >> 4; - aErrorBelowLeft = (aError * 3) >> 4; - aErrorBelow = (aError * 5) >> 4; - aErrorBelowRight = (aError - aErrorRight - - aErrorBelowLeft - aErrorBelow); - if (x < image->width - 1) - { - iP[right] += iErrorRight; - aP[right] += aErrorRight; - } - if (y < image->height - 1) - { - if (x) - { - iP[belowLeft] += iErrorBelowLeft; - aP[belowLeft] += aErrorBelowLeft; - } - iP[below] += iErrorBelow; - aP[below] += aErrorBelow; - if (x < image->width - 1) - { - iP[belowRight] += iErrorBelowRight; - aP[belowRight] += aErrorBelowRight; - } - } - aP++; - iP++; - } - free (iPicture); - core->on_color.red = - core->on_color.green = - core->on_color.blue = (min_inten | min_inten << 8); - core->off_color.red = - core->off_color.green = - core->off_color.blue = (max_inten | max_inten << 8); - return True; -} - -static Bool -_XcursorThreshold (const XcursorImage *image, XcursorCoreCursor *core) -{ - XcursorPixel *pixel, p; - int x, y; - - /* - * Draw the image, picking black for dark pixels and white for light - */ - pixel = image->pixels; - for (y = 0; y < image->height; y++) - for (x = 0; x < image->width; x++) - { - p = *pixel++; - if ((p >> 24) >= 0x80) - { - XPutPixel (core->msk_image, x, y, 1); - if (_XcursorPixelBrightness (p) > 0x80) - XPutPixel (core->src_image, x, y, 0); - else - XPutPixel (core->src_image, x, y, 1); - } - else - { - XPutPixel (core->msk_image, x, y, 0); - XPutPixel (core->src_image, x, y, 0); - } - } - core->on_color.red = - core->on_color.green = - core->on_color.blue = 0; - core->off_color.red = - core->off_color.green = - core->off_color.blue = 0xffff; - return True; -} - -Cursor -XcursorImageLoadCursor (Display *dpy, const XcursorImage *image) -{ - Cursor cursor; - -#if RENDER_MAJOR > 0 || RENDER_MINOR >= 5 - if (XcursorSupportsARGB (dpy)) - { - XImage ximage; - int screen = DefaultScreen (dpy); - Pixmap pixmap; - Picture picture; - GC gc; - XRenderPictFormat *format; - - ximage.width = image->width; - ximage.height = image->height; - ximage.xoffset = 0; - ximage.format = ZPixmap; - ximage.data = (char *) image->pixels; - ximage.byte_order = nativeByteOrder (); - ximage.bitmap_unit = 32; - ximage.bitmap_bit_order = ximage.byte_order; - ximage.bitmap_pad = 32; - ximage.depth = 32; - ximage.bits_per_pixel = 32; - ximage.bytes_per_line = image->width * 4; - ximage.red_mask = 0xff0000; - ximage.green_mask = 0x00ff00; - ximage.blue_mask = 0x0000ff; - ximage.obdata = 0; - if (!XInitImage (&ximage)) - return None; - pixmap = XCreatePixmap (dpy, RootWindow (dpy, screen), - image->width, image->height, 32); - gc = XCreateGC (dpy, pixmap, 0, 0); - XPutImage (dpy, pixmap, gc, &ximage, - 0, 0, 0, 0, image->width, image->height); - XFreeGC (dpy, gc); - format = XRenderFindStandardFormat (dpy, PictStandardARGB32); - picture = XRenderCreatePicture (dpy, pixmap, format, 0, 0); - XFreePixmap (dpy, pixmap); - cursor = XRenderCreateCursor (dpy, picture, - image->xhot, image->yhot); - XRenderFreePicture (dpy, picture); - } - else -#endif - { - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - int screen = DefaultScreen (dpy); - XcursorCoreCursor core; - Pixmap src_pixmap, msk_pixmap; - GC gc; - XGCValues gcv; - - core.src_image = XCreateImage (dpy, 0, 1, ZPixmap, - 0, 0, image->width, image->height, - 32, 0); - core.src_image->data = Xmalloc (image->height * - core.src_image->bytes_per_line); - core.msk_image = XCreateImage (dpy, 0, 1, ZPixmap, - 0, 0, image->width, image->height, - 32, 0); - core.msk_image->data = Xmalloc (image->height * - core.msk_image->bytes_per_line); - - switch (info->dither) { - case XcursorDitherThreshold: - if (!_XcursorThreshold (image, &core)) - return 0; - break; - case XcursorDitherMedian: - if (!_XcursorHeckbertMedianCut (image, &core)) - return 0; - break; - case XcursorDitherOrdered: - if (!_XcursorBayerOrderedDither (image, &core)) - return 0; - break; - case XcursorDitherDiffuse: - if (!_XcursorFloydSteinberg (image, &core)) - return 0; - break; - default: - return 0; - } - - /* - * Create the cursor - */ - src_pixmap = XCreatePixmap (dpy, RootWindow (dpy, screen), - image->width, image->height, 1); - msk_pixmap = XCreatePixmap (dpy, RootWindow (dpy, screen), - image->width, image->height, 1); - gcv.foreground = 1; - gcv.background = 0; - gc = XCreateGC (dpy, src_pixmap, - GCForeground|GCBackground, - &gcv); - XPutImage (dpy, src_pixmap, gc, core.src_image, - 0, 0, 0, 0, image->width, image->height); - - XPutImage (dpy, msk_pixmap, gc, core.msk_image, - 0, 0, 0, 0, image->width, image->height); - XFreeGC (dpy, gc); - -#ifdef DEBUG_IMAGE - _XcursorDumpColor (&core.on_color, "on_color"); - _XcursorDumpColor (&core.off_color, "off_color"); - _XcursorDumpImage (core.src_image); - _XcursorDumpImage (core.msk_image); -#endif - XDestroyImage (core.src_image); - XDestroyImage (core.msk_image); - - cursor = XCreatePixmapCursor (dpy, src_pixmap, msk_pixmap, - &core.on_color, &core.off_color, - image->xhot, image->yhot); - XFreePixmap (dpy, src_pixmap); - XFreePixmap (dpy, msk_pixmap); - } - return cursor; -} - -XcursorCursors * -XcursorImagesLoadCursors (Display *dpy, const XcursorImages *images) -{ - XcursorCursors *cursors = XcursorCursorsCreate (dpy, images->nimage); - int n; - - if (!cursors) - return 0; - for (n = 0; n < images->nimage; n++) - { - cursors->cursors[n] = XcursorImageLoadCursor (dpy, images->images[n]); - if (!cursors->cursors[n]) - { - XcursorCursorsDestroy (cursors); - return 0; - } - cursors->ncursor++; - } - return cursors; -} - -Cursor -XcursorImagesLoadCursor (Display *dpy, const XcursorImages *images) -{ - Cursor cursor; - if (images->nimage == 1 || !XcursorSupportsAnim (dpy)) - cursor = XcursorImageLoadCursor (dpy, images->images[0]); - else - { - XcursorCursors *cursors = XcursorImagesLoadCursors (dpy, images); - XAnimCursor *anim; - int n; - - if (!cursors) - return 0; - anim = malloc (cursors->ncursor * sizeof (XAnimCursor)); - if (!anim) - { - XcursorCursorsDestroy (cursors); - return 0; - } - for (n = 0; n < cursors->ncursor; n++) - { - anim[n].cursor = cursors->cursors[n]; - anim[n].delay = images->images[n]->delay; - } - cursor = XRenderCreateAnimCursor (dpy, cursors->ncursor, anim); - XcursorCursorsDestroy(cursors); - free (anim); - } -#if defined HAVE_XFIXES && XFIXES_MAJOR >= 2 - if (images->name) - XFixesSetCursorName (dpy, cursor, images->name); -#endif - return cursor; -} - - -Cursor -XcursorFilenameLoadCursor (Display *dpy, const char *file) -{ - int size = XcursorGetDefaultSize (dpy); - XcursorImages *images = XcursorFilenameLoadImages (file, size); - Cursor cursor; - - if (!images) - return None; - cursor = XcursorImagesLoadCursor (dpy, images); - XcursorImagesDestroy (images); - return cursor; -} - -XcursorCursors * -XcursorFilenameLoadCursors (Display *dpy, const char *file) -{ - int size = XcursorGetDefaultSize (dpy); - XcursorImages *images = XcursorFilenameLoadImages (file, size); - XcursorCursors *cursors; - - if (!images) - return 0; - cursors = XcursorImagesLoadCursors (dpy, images); - XcursorImagesDestroy (images); - return cursors; -} - -/* - * Stolen from XCreateGlyphCursor (which we cruelly override) - */ - -Cursor -_XcursorCreateGlyphCursor(Display *dpy, - Font source_font, - Font mask_font, - unsigned int source_char, - unsigned int mask_char, - XColor _Xconst *foreground, - XColor _Xconst *background) -{ - Cursor cid; - register xCreateGlyphCursorReq *req; - - LockDisplay(dpy); - GetReq(CreateGlyphCursor, req); - cid = req->cid = XAllocID(dpy); - req->source = source_font; - req->mask = mask_font; - req->sourceChar = source_char; - req->maskChar = mask_char; - req->foreRed = foreground->red; - req->foreGreen = foreground->green; - req->foreBlue = foreground->blue; - req->backRed = background->red; - req->backGreen = background->green; - req->backBlue = background->blue; - UnlockDisplay(dpy); - SyncHandle(); - return (cid); -} - -/* - * Stolen from XCreateFontCursor (which we cruelly override) - */ - -Cursor -_XcursorCreateFontCursor (Display *dpy, unsigned int shape) -{ - static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */ - static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */ - - /* - * the cursor font contains the shape glyph followed by the mask - * glyph; so character position 0 contains a shape, 1 the mask for 0, - * 2 a shape, etc. <X11/cursorfont.h> contains hash define names - * for all of these. - */ - - if (dpy->cursor_font == None) - { - dpy->cursor_font = XLoadFont (dpy, CURSORFONT); - if (dpy->cursor_font == None) - return None; - } - - return _XcursorCreateGlyphCursor (dpy, dpy->cursor_font, dpy->cursor_font, - shape, shape + 1, &foreground, &background); -} - diff --git a/nx-X11/lib/Xcursor/display.c b/nx-X11/lib/Xcursor/display.c deleted file mode 100644 index ef94125..0000000 --- a/nx-X11/lib/Xcursor/display.c +++ /dev/null @@ -1,382 +0,0 @@ -/* - * $Id: display.c,v 1.6 2005/10/19 22:26:55 ajax Exp $ - * - * Copyright © 2002 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "xcursorint.h" -#include <X11/Xlibint.h> -#include <ctype.h> - -static XcursorDisplayInfo *_XcursorDisplayInfo; - -static void -_XcursorFreeDisplayInfo (XcursorDisplayInfo *info) -{ - if (info->theme) - free (info->theme); - - if (info->theme_from_config) - free (info->theme_from_config); - - free (info); -} - -static int -_XcursorCloseDisplay (Display *dpy, XExtCodes *codes) -{ - XcursorDisplayInfo *info, **prev; - - /* - * Unhook from the global list - */ - _XLockMutex (_Xglobal_lock); - for (prev = &_XcursorDisplayInfo; (info = *prev); prev = &(*prev)->next) - if (info->display == dpy) - { - *prev = info->next; - break; - } - _XUnlockMutex (_Xglobal_lock); - - _XcursorFreeDisplayInfo (info); - return 0; -} - -static int -_XcursorDefaultParseBool (char *v) -{ - char c0, c1; - - c0 = *v; - if (isupper ((int)c0)) - c0 = tolower (c0); - if (c0 == 't' || c0 == 'y' || c0 == '1') - return 1; - if (c0 == 'f' || c0 == 'n' || c0 == '0') - return 0; - if (c0 == 'o') - { - c1 = v[1]; - if (isupper ((int)c1)) - c1 = tolower (c1); - if (c1 == 'n') - return 1; - if (c1 == 'f') - return 0; - } - return -1; -} - -XcursorDisplayInfo * -_XcursorGetDisplayInfo (Display *dpy) -{ - XcursorDisplayInfo *info, **prev, *old; - int event_base, error_base; - int major, minor; - char *v; - int i; - - _XLockMutex (_Xglobal_lock); - for (prev = &_XcursorDisplayInfo; (info = *prev); prev = &(*prev)->next) - { - if (info->display == dpy) - { - /* - * MRU the list - */ - if (prev != &_XcursorDisplayInfo) - { - *prev = info->next; - info->next = _XcursorDisplayInfo; - _XcursorDisplayInfo = info; - } - break; - } - } - _XUnlockMutex (_Xglobal_lock); - if (info) - return info; - info = (XcursorDisplayInfo *) malloc (sizeof (XcursorDisplayInfo)); - if (!info) - return 0; - info->next = 0; - info->display = dpy; - - info->codes = XAddExtension (dpy); - if (!info->codes) - { - free (info); - return 0; - } - (void) XESetCloseDisplay (dpy, info->codes->extension, _XcursorCloseDisplay); - - /* - * Check whether the display supports the Render CreateCursor request - */ - info->has_render_cursor = XcursorFalse; - info->has_anim_cursor = XcursorFalse; - if (XRenderQueryExtension (dpy, &event_base, &error_base) && - XRenderQueryVersion (dpy, &major, &minor)) - { - if (major > 0 || minor >= 5) - { - info->has_render_cursor = XcursorTrue; - v = getenv ("XCURSOR_CORE"); - if (!v) - v = XGetDefault (dpy, "Xcursor", "core"); - if (v && _XcursorDefaultParseBool (v) == 1) - info->has_render_cursor = XcursorFalse; - } - if (info->has_render_cursor && (major > 0 || minor >= 8)) - { - info->has_anim_cursor = XcursorTrue; - v = getenv ("XCURSOR_ANIM"); - if (!v) - v = XGetDefault (dpy, "Xcursor", "anim"); - if (v && _XcursorDefaultParseBool (v) == 0) - info->has_anim_cursor = XcursorFalse; - } - } - - info->size = 0; - - /* - * Get desired cursor size - */ - v = getenv ("XCURSOR_SIZE"); - if (!v) - v = XGetDefault (dpy, "Xcursor", "size"); - if (v) - info->size = atoi (v); - - /* - * Use the Xft size to guess a size; make cursors 16 "points" tall - */ - if (info->size == 0) - { - int dpi = 0; - v = XGetDefault (dpy, "Xft", "dpi"); - if (v) - dpi = atoi (v); - if (dpi) - info->size = dpi * 16 / 72; - } - - /* - * Use display size to guess a size - */ - if (info->size == 0) - { - int dim; - - if (DisplayHeight (dpy, DefaultScreen (dpy)) < - DisplayWidth (dpy, DefaultScreen (dpy))) - dim = DisplayHeight (dpy, DefaultScreen (dpy)); - else - dim = DisplayWidth (dpy, DefaultScreen (dpy)); - /* - * 16 pixels on a display of dimension 768 - */ - info->size = dim / 48; - } - - info->theme = 0; - info->theme_from_config = 0; - - /* - * Get the desired theme - */ - v = getenv ("XCURSOR_THEME"); - if (!v) - v = XGetDefault (dpy, "Xcursor", "theme"); - if (v) - { - int len; - - len = strlen (v) + 1; - - info->theme = malloc (len); - if (info->theme) - strcpy (info->theme, v); - - info->theme_from_config = malloc (len); - if (info->theme_from_config) - strcpy (info->theme_from_config, v); - } - - /* - * Get the desired dither - */ - info->dither = XcursorDitherThreshold; - v = getenv ("XCURSOR_DITHER"); - if (!v) - v = XGetDefault (dpy, "Xcursor", "dither"); - if (v) - { - if (!strcmp (v, "threshold")) - info->dither = XcursorDitherThreshold; - if (!strcmp (v, "median")) - info->dither = XcursorDitherMedian; - if (!strcmp (v, "ordered")) - info->dither = XcursorDitherOrdered; - if (!strcmp (v, "diffuse")) - info->dither = XcursorDitherDiffuse; - } - - info->theme_core = False; - /* - * Find out if core cursors should - * be themed - */ - v = getenv ("XCURSOR_THEME_CORE"); - if (!v) - v = XGetDefault (dpy, "Xcursor", "theme_core"); - if (v) - { - i = _XcursorDefaultParseBool (v); - if (i >= 0) - info->theme_core = i; - } - - info->fonts = 0; - for (i = 0; i < NUM_BITMAPS; i++) - info->bitmaps[i].bitmap = None; - - /* - * Link new info info list, making sure another - * thread hasn't inserted something into the list while - * this one was busy setting up the data - */ - _XLockMutex (_Xglobal_lock); - for (old = _XcursorDisplayInfo; old; old = old->next) - if (old->display == dpy) - break; - if (old) - { - _XcursorFreeDisplayInfo (info); - info = old; - } - else - { - info->next = _XcursorDisplayInfo; - _XcursorDisplayInfo = info; - } - _XUnlockMutex (_Xglobal_lock); - - return info; -} - -XcursorBool -XcursorSupportsARGB (Display *dpy) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - - return info && info->has_render_cursor; -} - -XcursorBool -XcursorSupportsAnim (Display *dpy) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - - return info && info->has_anim_cursor; -} - -XcursorBool -XcursorSetDefaultSize (Display *dpy, int size) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - - if (!info) - return XcursorFalse; - info->size = size; - return XcursorTrue; -} - -int -XcursorGetDefaultSize (Display *dpy) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - - if (!info) - return 0; - return info->size; -} - -XcursorBool -XcursorSetTheme (Display *dpy, const char *theme) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - char *copy; - - if (!info) - return XcursorFalse; - - if (!theme) - theme = info->theme_from_config; - - if (theme) - { - copy = malloc (strlen (theme) + 1); - if (!copy) - return XcursorFalse; - strcpy (copy, theme); - } - else - copy = 0; - if (info->theme) - free (info->theme); - info->theme = copy; - return XcursorTrue; -} - -char * -XcursorGetTheme (Display *dpy) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - - if (!info) - return 0; - return info->theme; -} - -XcursorBool -XcursorGetThemeCore (Display *dpy) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - - if (!info) - return XcursorFalse; - return info->theme_core; - -} - -XcursorBool -XcursorSetThemeCore (Display *dpy, XcursorBool theme_core) -{ - XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy); - - if (!info) - return XcursorFalse; - info->theme_core = theme_core; - return XcursorTrue; -} diff --git a/nx-X11/lib/Xcursor/file.c b/nx-X11/lib/Xcursor/file.c deleted file mode 100644 index 175676c..0000000 --- a/nx-X11/lib/Xcursor/file.c +++ /dev/null @@ -1,1101 +0,0 @@ -/* - * $Id: file.c,v 1.5 2005/07/03 07:00:56 daniels Exp $ - * - * Copyright © 2002 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "xcursorint.h" -#include <stdlib.h> -#include <string.h> - -XcursorImage * -XcursorImageCreate (int width, int height) -{ - XcursorImage *image; - - image = malloc (sizeof (XcursorImage) + - width * height * sizeof (XcursorPixel)); - if (!image) - return 0; - image->version = XCURSOR_IMAGE_VERSION; - image->pixels = (XcursorPixel *) (image + 1); - image->size = width > height ? width : height; - image->width = width; - image->height = height; - image->delay = 0; - return image; -} - -void -XcursorImageDestroy (XcursorImage *image) -{ - if (image) - free (image); -} - -XcursorImages * -XcursorImagesCreate (int size) -{ - XcursorImages *images; - - images = malloc (sizeof (XcursorImages) + - size * sizeof (XcursorImage *)); - if (!images) - return 0; - images->nimage = 0; - images->images = (XcursorImage **) (images + 1); - images->name = 0; - return images; -} - -void -XcursorImagesDestroy (XcursorImages *images) -{ - int n; - - if (!images) - return; - - for (n = 0; n < images->nimage; n++) - XcursorImageDestroy (images->images[n]); - if (images->name) - free (images->name); - free (images); -} - -void -XcursorImagesSetName (XcursorImages *images, const char *name) -{ - char *new; - - if (!images || !name) - return; - - new = malloc (strlen (name) + 1); - - if (!new) - return; - - strcpy (new, name); - if (images->name) - free (images->name); - images->name = new; -} - -XcursorComment * -XcursorCommentCreate (XcursorUInt comment_type, int length) -{ - XcursorComment *comment; - - if (length > XCURSOR_COMMENT_MAX_LEN) - return 0; - - comment = malloc (sizeof (XcursorComment) + length + 1); - if (!comment) - return 0; - comment->version = XCURSOR_COMMENT_VERSION; - comment->comment_type = comment_type; - comment->comment = (char *) (comment + 1); - comment->comment[0] = '\0'; - return comment; -} - -void -XcursorCommentDestroy (XcursorComment *comment) -{ - if (!comment) - free (comment); -} - -XcursorComments * -XcursorCommentsCreate (int size) -{ - XcursorComments *comments; - - comments = malloc (sizeof (XcursorComments) + - size * sizeof (XcursorComment *)); - if (!comments) - return 0; - comments->ncomment = 0; - comments->comments = (XcursorComment **) (comments + 1); - return comments; -} - -void -XcursorCommentsDestroy (XcursorComments *comments) -{ - int n; - - if (!comments) - return; - - for (n = 0; n < comments->ncomment; n++) - XcursorCommentDestroy (comments->comments[n]); - free (comments); -} - -static XcursorBool -_XcursorReadUInt (XcursorFile *file, XcursorUInt *u) -{ - unsigned char bytes[4]; - - if (!file || !u) - return XcursorFalse; - - if ((*file->read) (file, bytes, 4) != 4) - return XcursorFalse; - *u = ((bytes[0] << 0) | - (bytes[1] << 8) | - (bytes[2] << 16) | - (bytes[3] << 24)); - return XcursorTrue; -} - -static XcursorBool -_XcursorReadBytes (XcursorFile *file, char *bytes, int length) -{ - if (!file || !bytes || (*file->read) (file, (unsigned char *) bytes, length) != length) - return XcursorFalse; - return XcursorTrue; -} - -static XcursorBool -_XcursorWriteUInt (XcursorFile *file, XcursorUInt u) -{ - unsigned char bytes[4]; - - if (!file) - return XcursorFalse; - - bytes[0] = u; - bytes[1] = u >> 8; - bytes[2] = u >> 16; - bytes[3] = u >> 24; - if ((*file->write) (file, bytes, 4) != 4) - return XcursorFalse; - return XcursorTrue; -} - -static XcursorBool -_XcursorWriteBytes (XcursorFile *file, char *bytes, int length) -{ - if (!file || !bytes || (*file->write) (file, (unsigned char *) bytes, length) != length) - return XcursorFalse; - return XcursorTrue; -} - -static void -_XcursorFileHeaderDestroy (XcursorFileHeader *fileHeader) -{ - if (!fileHeader) - free (fileHeader); -} - -static XcursorFileHeader * -_XcursorFileHeaderCreate (int ntoc) -{ - XcursorFileHeader *fileHeader; - - if (ntoc > 0x10000) - return 0; - fileHeader = malloc (sizeof (XcursorFileHeader) + - ntoc * sizeof (XcursorFileToc)); - if (!fileHeader) - return 0; - fileHeader->magic = XCURSOR_MAGIC; - fileHeader->header = XCURSOR_FILE_HEADER_LEN; - fileHeader->version = XCURSOR_FILE_VERSION; - fileHeader->ntoc = ntoc; - fileHeader->tocs = (XcursorFileToc *) (fileHeader + 1); - return fileHeader; -} - -static XcursorFileHeader * -_XcursorReadFileHeader (XcursorFile *file) -{ - XcursorFileHeader head, *fileHeader; - XcursorUInt skip; - int n; - - if (!file) - return NULL; - - if (!_XcursorReadUInt (file, &head.magic)) - return 0; - if (head.magic != XCURSOR_MAGIC) - return 0; - if (!_XcursorReadUInt (file, &head.header)) - return 0; - if (!_XcursorReadUInt (file, &head.version)) - return 0; - if (!_XcursorReadUInt (file, &head.ntoc)) - return 0; - skip = head.header - XCURSOR_FILE_HEADER_LEN; - if (skip) - if ((*file->seek) (file, skip, SEEK_CUR) == EOF) - return 0; - fileHeader = _XcursorFileHeaderCreate (head.ntoc); - if (!fileHeader) - return 0; - fileHeader->magic = head.magic; - fileHeader->header = head.header; - fileHeader->version = head.version; - fileHeader->ntoc = head.ntoc; - for (n = 0; n < fileHeader->ntoc; n++) - { - if (!_XcursorReadUInt (file, &fileHeader->tocs[n].type)) - break; - if (!_XcursorReadUInt (file, &fileHeader->tocs[n].subtype)) - break; - if (!_XcursorReadUInt (file, &fileHeader->tocs[n].position)) - break; - } - if (n != fileHeader->ntoc) - { - _XcursorFileHeaderDestroy (fileHeader); - return 0; - } - return fileHeader; -} - -static XcursorUInt -_XcursorFileHeaderLength (XcursorFileHeader *fileHeader) -{ - return (XCURSOR_FILE_HEADER_LEN + - fileHeader->ntoc * XCURSOR_FILE_TOC_LEN); -} - -static XcursorBool -_XcursorWriteFileHeader (XcursorFile *file, XcursorFileHeader *fileHeader) -{ - int toc; - - if (!file || !fileHeader) - return XcursorFalse; - - if (!_XcursorWriteUInt (file, fileHeader->magic)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, fileHeader->header)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, fileHeader->version)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, fileHeader->ntoc)) - return XcursorFalse; - for (toc = 0; toc < fileHeader->ntoc; toc++) - { - if (!_XcursorWriteUInt (file, fileHeader->tocs[toc].type)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, fileHeader->tocs[toc].subtype)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, fileHeader->tocs[toc].position)) - return XcursorFalse; - } - return XcursorTrue; -} - -static XcursorBool -_XcursorSeekToToc (XcursorFile *file, - XcursorFileHeader *fileHeader, - int toc) -{ - if (!file || !fileHeader || \ - (*file->seek) (file, fileHeader->tocs[toc].position, SEEK_SET) == EOF) - return XcursorFalse; - return XcursorTrue; -} - -static XcursorBool -_XcursorFileReadChunkHeader (XcursorFile *file, - XcursorFileHeader *fileHeader, - int toc, - XcursorChunkHeader *chunkHeader) -{ - if (!file || !fileHeader || !chunkHeader) - return XcursorFalse; - if (!_XcursorSeekToToc (file, fileHeader, toc)) - return XcursorFalse; - if (!_XcursorReadUInt (file, &chunkHeader->header)) - return XcursorFalse; - if (!_XcursorReadUInt (file, &chunkHeader->type)) - return XcursorFalse; - if (!_XcursorReadUInt (file, &chunkHeader->subtype)) - return XcursorFalse; - if (!_XcursorReadUInt (file, &chunkHeader->version)) - return XcursorFalse; - /* sanity check */ - if (chunkHeader->type != fileHeader->tocs[toc].type || - chunkHeader->subtype != fileHeader->tocs[toc].subtype) - return XcursorFalse; - return XcursorTrue; -} - -static XcursorBool -_XcursorFileWriteChunkHeader (XcursorFile *file, - XcursorFileHeader *fileHeader, - int toc, - XcursorChunkHeader *chunkHeader) -{ - if (!file || !fileHeader || !chunkHeader) - return XcursorFalse; - if (!_XcursorSeekToToc (file, fileHeader, toc)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, chunkHeader->header)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, chunkHeader->type)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, chunkHeader->subtype)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, chunkHeader->version)) - return XcursorFalse; - return XcursorTrue; -} - -#define dist(a,b) ((a) > (b) ? (a) - (b) : (b) - (a)) - -static XcursorDim -_XcursorFindBestSize (XcursorFileHeader *fileHeader, - XcursorDim size, - int *nsizesp) -{ - int n; - int nsizes = 0; - XcursorDim bestSize = 0; - XcursorDim thisSize; - - if (!fileHeader || !nsizesp) - return 0; - - for (n = 0; n < fileHeader->ntoc; n++) - { - if (fileHeader->tocs[n].type != XCURSOR_IMAGE_TYPE) - continue; - thisSize = fileHeader->tocs[n].subtype; - if (!bestSize || dist (thisSize, size) < dist (bestSize, size)) - { - bestSize = thisSize; - nsizes = 1; - } - else if (thisSize == bestSize) - nsizes++; - } - *nsizesp = nsizes; - return bestSize; -} - -static int -_XcursorFindImageToc (XcursorFileHeader *fileHeader, - XcursorDim size, - int count) -{ - int toc; - XcursorDim thisSize; - - if (!fileHeader) - return 0; - - for (toc = 0; toc < fileHeader->ntoc; toc++) - { - if (fileHeader->tocs[toc].type != XCURSOR_IMAGE_TYPE) - continue; - thisSize = fileHeader->tocs[toc].subtype; - if (thisSize != size) - continue; - if (!count) - break; - count--; - } - if (toc == fileHeader->ntoc) - return -1; - return toc; -} - -static XcursorImage * -_XcursorReadImage (XcursorFile *file, - XcursorFileHeader *fileHeader, - int toc) -{ - XcursorChunkHeader chunkHeader; - XcursorImage head; - XcursorImage *image; - int n; - XcursorPixel *p; - - if (!file || !fileHeader) - return NULL; - - if (!_XcursorFileReadChunkHeader (file, fileHeader, toc, &chunkHeader)) - return 0; - if (!_XcursorReadUInt (file, &head.width)) - return 0; - if (!_XcursorReadUInt (file, &head.height)) - return 0; - if (!_XcursorReadUInt (file, &head.xhot)) - return 0; - if (!_XcursorReadUInt (file, &head.yhot)) - return 0; - if (!_XcursorReadUInt (file, &head.delay)) - return 0; - /* sanity check data */ - if (head.width >= 0x10000 || head.height > 0x10000) - return 0; - if (head.width == 0 || head.height == 0) - return 0; - if (head.xhot > head.width || head.yhot > head.height) - return 0; - - /* Create the image and initialize it */ - image = XcursorImageCreate (head.width, head.height); - if (chunkHeader.version < image->version) - image->version = chunkHeader.version; - image->size = chunkHeader.subtype; - image->xhot = head.xhot; - image->yhot = head.yhot; - image->delay = head.delay; - n = image->width * image->height; - p = image->pixels; - while (n--) - { - if (!_XcursorReadUInt (file, p)) - { - XcursorImageDestroy (image); - return 0; - } - p++; - } - return image; -} - -static XcursorUInt -_XcursorImageLength (XcursorImage *image) -{ - if (!image) - return 0; - - return XCURSOR_IMAGE_HEADER_LEN + (image->width * image->height) * 4; -} - -static XcursorBool -_XcursorWriteImage (XcursorFile *file, - XcursorFileHeader *fileHeader, - int toc, - XcursorImage *image) -{ - XcursorChunkHeader chunkHeader; - int n; - XcursorPixel *p; - - if (!file || !fileHeader || !image) - return XcursorFalse; - - /* sanity check data */ - if (image->width > XCURSOR_IMAGE_MAX_SIZE || - image->height > XCURSOR_IMAGE_MAX_SIZE) - return XcursorFalse; - if (image->width == 0 || image->height == 0) - return XcursorFalse; - if (image->xhot > image->width || image->yhot > image->height) - return XcursorFalse; - - /* write chunk header */ - chunkHeader.header = XCURSOR_IMAGE_HEADER_LEN; - chunkHeader.type = XCURSOR_IMAGE_TYPE; - chunkHeader.subtype = image->size; - chunkHeader.version = XCURSOR_IMAGE_VERSION; - - if (!_XcursorFileWriteChunkHeader (file, fileHeader, toc, &chunkHeader)) - return XcursorFalse; - - /* write extra image header fields */ - if (!_XcursorWriteUInt (file, image->width)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, image->height)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, image->xhot)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, image->yhot)) - return XcursorFalse; - if (!_XcursorWriteUInt (file, image->delay)) - return XcursorFalse; - - /* write the image */ - n = image->width * image->height; - p = image->pixels; - while (n--) - { - if (!_XcursorWriteUInt (file, *p)) - return XcursorFalse; - p++; - } - return XcursorTrue; -} - -static XcursorComment * -_XcursorReadComment (XcursorFile *file, - XcursorFileHeader *fileHeader, - int toc) -{ - XcursorChunkHeader chunkHeader; - XcursorUInt length; - XcursorComment *comment; - - if (!file || !fileHeader) - return NULL; - - /* read chunk header */ - if (!_XcursorFileReadChunkHeader (file, fileHeader, toc, &chunkHeader)) - return 0; - /* read extra comment header fields */ - if (!_XcursorReadUInt (file, &length)) - return 0; - comment = XcursorCommentCreate (chunkHeader.subtype, length); - if (!comment) - return 0; - if (!_XcursorReadBytes (file, comment->comment, length)) - { - XcursorCommentDestroy (comment); - return 0; - } - comment->comment[length] = '\0'; - return comment; -} - -static XcursorUInt -_XcursorCommentLength (XcursorComment *comment) -{ - return XCURSOR_COMMENT_HEADER_LEN + strlen (comment->comment); -} - -static XcursorBool -_XcursorWriteComment (XcursorFile *file, - XcursorFileHeader *fileHeader, - int toc, - XcursorComment *comment) -{ - XcursorChunkHeader chunkHeader; - XcursorUInt length; - - if (!file || !fileHeader || !comment || !comment->comment) - return XcursorFalse; - - length = strlen (comment->comment); - - /* sanity check data */ - if (length > XCURSOR_COMMENT_MAX_LEN) - return XcursorFalse; - - /* read chunk header */ - chunkHeader.header = XCURSOR_COMMENT_HEADER_LEN; - chunkHeader.type = XCURSOR_COMMENT_TYPE; - chunkHeader.subtype = comment->comment_type; - chunkHeader.version = XCURSOR_COMMENT_VERSION; - - if (!_XcursorFileWriteChunkHeader (file, fileHeader, toc, &chunkHeader)) - return XcursorFalse; - - /* write extra comment header fields */ - if (!_XcursorWriteUInt (file, length)) - return XcursorFalse; - - if (!_XcursorWriteBytes (file, comment->comment, length)) - return XcursorFalse; - return XcursorTrue; -} - -XcursorImage * -XcursorXcFileLoadImage (XcursorFile *file, int size) -{ - XcursorFileHeader *fileHeader; - XcursorDim bestSize; - int nsize; - int toc; - XcursorImage *image; - - if (size < 0) - return 0; - fileHeader = _XcursorReadFileHeader (file); - if (!fileHeader) - return 0; - bestSize = _XcursorFindBestSize (fileHeader, (XcursorDim) size, &nsize); - if (!bestSize) - return 0; - toc = _XcursorFindImageToc (fileHeader, bestSize, 0); - if (toc < 0) - return 0; - image = _XcursorReadImage (file, fileHeader, toc); - _XcursorFileHeaderDestroy (fileHeader); - return image; -} - -XcursorImages * -XcursorXcFileLoadImages (XcursorFile *file, int size) -{ - XcursorFileHeader *fileHeader; - XcursorDim bestSize; - int nsize; - XcursorImages *images; - int n; - int toc; - - if (!file || size < 0) - return 0; - fileHeader = _XcursorReadFileHeader (file); - if (!fileHeader) - return 0; - bestSize = _XcursorFindBestSize (fileHeader, (XcursorDim) size, &nsize); - if (!bestSize) - return 0; - images = XcursorImagesCreate (nsize); - if (!images) - return 0; - for (n = 0; n < nsize; n++) - { - toc = _XcursorFindImageToc (fileHeader, bestSize, n); - if (toc < 0) - break; - images->images[images->nimage] = _XcursorReadImage (file, fileHeader, - toc); - if (!images->images[images->nimage]) - break; - images->nimage++; - } - _XcursorFileHeaderDestroy (fileHeader); - if (images->nimage != nsize) - { - XcursorImagesDestroy (images); - images = 0; - } - return images; -} - -XcursorImages * -XcursorXcFileLoadAllImages (XcursorFile *file) -{ - XcursorFileHeader *fileHeader; - XcursorImage *image; - XcursorImages *images; - int nimage; - int n; - int toc; - - if (!file) - return 0; - - fileHeader = _XcursorReadFileHeader (file); - if (!fileHeader) - return 0; - nimage = 0; - for (n = 0; n < fileHeader->ntoc; n++) - { - switch (fileHeader->tocs[n].type) { - case XCURSOR_IMAGE_TYPE: - nimage++; - break; - } - } - images = XcursorImagesCreate (nimage); - if (!images) - return 0; - for (toc = 0; toc < fileHeader->ntoc; toc++) - { - switch (fileHeader->tocs[toc].type) { - case XCURSOR_IMAGE_TYPE: - image = _XcursorReadImage (file, fileHeader, toc); - if (image) - { - images->images[images->nimage] = image; - images->nimage++; - } - break; - } - } - _XcursorFileHeaderDestroy (fileHeader); - if (images->nimage != nimage) - { - XcursorImagesDestroy (images); - images = 0; - } - return images; -} - -XcursorBool -XcursorXcFileLoad (XcursorFile *file, - XcursorComments **commentsp, - XcursorImages **imagesp) -{ - XcursorFileHeader *fileHeader; - int nimage; - int ncomment; - XcursorImages *images; - XcursorImage *image; - XcursorComment *comment; - XcursorComments *comments; - int toc; - - if (!file) - return 0; - fileHeader = _XcursorReadFileHeader (file); - if (!fileHeader) - return 0; - nimage = 0; - ncomment = 0; - for (toc = 0; toc < fileHeader->ntoc; toc++) - { - switch (fileHeader->tocs[toc].type) { - case XCURSOR_COMMENT_TYPE: - ncomment++; - break; - case XCURSOR_IMAGE_TYPE: - nimage++; - break; - } - } - images = XcursorImagesCreate (nimage); - if (!images) - return 0; - comments = XcursorCommentsCreate (ncomment); - if (!comments) - { - XcursorImagesDestroy (images); - return 0; - } - for (toc = 0; toc < fileHeader->ntoc; toc++) - { - switch (fileHeader->tocs[toc].type) { - case XCURSOR_COMMENT_TYPE: - comment = _XcursorReadComment (file, fileHeader, toc); - if (comment) - { - comments->comments[comments->ncomment] = comment; - comments->ncomment++; - } - break; - case XCURSOR_IMAGE_TYPE: - image = _XcursorReadImage (file, fileHeader, toc); - if (image) - { - images->images[images->nimage] = image; - images->nimage++; - } - break; - } - } - _XcursorFileHeaderDestroy (fileHeader); - if (images->nimage != nimage || comments->ncomment != ncomment) - { - XcursorImagesDestroy (images); - XcursorCommentsDestroy (comments); - images = 0; - comments = 0; - return XcursorFalse; - } - *imagesp = images; - *commentsp = comments; - return XcursorTrue; -} - -XcursorBool -XcursorXcFileSave (XcursorFile *file, - const XcursorComments *comments, - const XcursorImages *images) -{ - XcursorFileHeader *fileHeader; - XcursorUInt position; - int n; - int toc; - - if (!file || !comments || !images) - return XcursorFalse; - - fileHeader = _XcursorFileHeaderCreate (comments->ncomment + images->nimage); - if (!fileHeader) - return XcursorFalse; - - position = _XcursorFileHeaderLength (fileHeader); - - /* - * Compute the toc. Place the images before the comments - * as they're more often read - */ - - toc = 0; - for (n = 0; n < images->nimage; n++) - { - fileHeader->tocs[toc].type = XCURSOR_IMAGE_TYPE; - fileHeader->tocs[toc].subtype = images->images[n]->size; - fileHeader->tocs[toc].position = position; - position += _XcursorImageLength (images->images[n]); - toc++; - } - - for (n = 0; n < comments->ncomment; n++) - { - fileHeader->tocs[toc].type = XCURSOR_COMMENT_TYPE; - fileHeader->tocs[toc].subtype = comments->comments[n]->comment_type; - fileHeader->tocs[toc].position = position; - position += _XcursorCommentLength (comments->comments[n]); - toc++; - } - - /* - * Write the header and the toc - */ - if (!_XcursorWriteFileHeader (file, fileHeader)) - goto bail; - - /* - * Write the images - */ - toc = 0; - for (n = 0; n < images->nimage; n++) - { - if (!_XcursorWriteImage (file, fileHeader, toc, images->images[n])) - goto bail; - toc++; - } - - /* - * Write the comments - */ - for (n = 0; n < comments->ncomment; n++) - { - if (!_XcursorWriteComment (file, fileHeader, toc, comments->comments[n])) - goto bail; - toc++; - } - - _XcursorFileHeaderDestroy (fileHeader); - return XcursorTrue; -bail: - _XcursorFileHeaderDestroy (fileHeader); - return XcursorFalse; -} - -static int -_XcursorStdioFileRead (XcursorFile *file, unsigned char *buf, int len) -{ - FILE *f = file->closure; - return fread (buf, 1, len, f); -} - -static int -_XcursorStdioFileWrite (XcursorFile *file, unsigned char *buf, int len) -{ - FILE *f = file->closure; - return fwrite (buf, 1, len, f); -} - -static int -_XcursorStdioFileSeek (XcursorFile *file, long offset, int whence) -{ - FILE *f = file->closure; - return fseek (f, offset, whence); -} - -static void -_XcursorStdioFileInitialize (FILE *stdfile, XcursorFile *file) -{ - file->closure = stdfile; - file->read = _XcursorStdioFileRead; - file->write = _XcursorStdioFileWrite; - file->seek = _XcursorStdioFileSeek; -} - -XcursorImage * -XcursorFileLoadImage (FILE *file, int size) -{ - XcursorFile f; - - if (!file) - return NULL; - - _XcursorStdioFileInitialize (file, &f); - return XcursorXcFileLoadImage (&f, size); -} - -XcursorImages * -XcursorFileLoadImages (FILE *file, int size) -{ - XcursorFile f; - - if (!file) - return NULL; - - _XcursorStdioFileInitialize (file, &f); - return XcursorXcFileLoadImages (&f, size); -} - -XcursorImages * -XcursorFileLoadAllImages (FILE *file) -{ - XcursorFile f; - - if (!file) - return NULL; - - _XcursorStdioFileInitialize (file, &f); - return XcursorXcFileLoadAllImages (&f); -} - -XcursorBool -XcursorFileLoad (FILE *file, - XcursorComments **commentsp, - XcursorImages **imagesp) -{ - XcursorFile f; - - if (!file || !commentsp || !imagesp) - return XcursorFalse; - - _XcursorStdioFileInitialize (file, &f); - return XcursorXcFileLoad (&f, commentsp, imagesp); -} - -XcursorBool -XcursorFileSaveImages (FILE *file, const XcursorImages *images) -{ - XcursorComments *comments = XcursorCommentsCreate (0); - XcursorFile f; - XcursorBool ret; - if (!comments || !file || !images) - return 0; - _XcursorStdioFileInitialize (file, &f); - ret = XcursorXcFileSave (&f, comments, images) && fflush (file) != EOF; - XcursorCommentsDestroy (comments); - return ret; -} - -XcursorBool -XcursorFileSave (FILE * file, - const XcursorComments *comments, - const XcursorImages *images) -{ - XcursorFile f; - - if (!file || !comments || !images) - return XcursorFalse; - - _XcursorStdioFileInitialize (file, &f); - return XcursorXcFileSave (&f, comments, images) && fflush (file) != EOF; -} - -XcursorImage * -XcursorFilenameLoadImage (const char *file, int size) -{ - FILE *f; - XcursorImage *image; - - if (!file || size < 0) - return NULL; - - f = fopen (file, "r"); - if (!f) - return 0; - image = XcursorFileLoadImage (f, size); - fclose (f); - return image; -} - -XcursorImages * -XcursorFilenameLoadImages (const char *file, int size) -{ - FILE *f; - XcursorImages *images; - - if (!file || size < 0) - return NULL; - - f = fopen (file, "r"); - if (!f) - return 0; - images = XcursorFileLoadImages (f, size); - fclose (f); - return images; -} - -XcursorImages * -XcursorFilenameLoadAllImages (const char *file) -{ - FILE *f; - XcursorImages *images; - - if (!file) - return NULL; - - f = fopen (file, "r"); - if (!f) - return 0; - images = XcursorFileLoadAllImages (f); - fclose (f); - return images; -} - -XcursorBool -XcursorFilenameLoad (const char *file, - XcursorComments **commentsp, - XcursorImages **imagesp) -{ - FILE *f; - XcursorBool ret; - - if (!file) - return XcursorFalse; - - f = fopen (file, "r"); - if (!f) - return 0; - ret = XcursorFileLoad (f, commentsp, imagesp); - fclose (f); - return ret; -} - -XcursorBool -XcursorFilenameSaveImages (const char *file, const XcursorImages *images) -{ - FILE *f; - XcursorBool ret; - - if (!file || !images) - return XcursorFalse; - - f = fopen (file, "w"); - if (!f) - return 0; - ret = XcursorFileSaveImages (f, images); - return fclose (f) != EOF && ret; -} - -XcursorBool -XcursorFilenameSave (const char *file, - const XcursorComments *comments, - const XcursorImages *images) -{ - FILE *f; - XcursorBool ret; - - if (!file || !comments || !images) - return XcursorFalse; - - f = fopen (file, "w"); - if (!f) - return 0; - ret = XcursorFileSave (f, comments, images); - return fclose (f) != EOF && ret; -} diff --git a/nx-X11/lib/Xcursor/library.c b/nx-X11/lib/Xcursor/library.c deleted file mode 100644 index 6774f80..0000000 --- a/nx-X11/lib/Xcursor/library.c +++ /dev/null @@ -1,495 +0,0 @@ -/* - * $Id: library.c,v 1.6 2005/12/08 17:54:40 kem Exp $ - * - * Copyright © 2002 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "xcursorint.h" -#include <stdlib.h> -#include <string.h> - -#ifndef ICONDIR -#define ICONDIR "/usr/X11R6/lib/X11/icons" -#endif - -#ifndef XCURSORPATH -#define XCURSORPATH "~/.icons:/usr/share/icons:/usr/share/pixmaps:"ICONDIR -#endif - -const char * -XcursorLibraryPath (void) -{ - static const char *path; - - if (!path) - { - path = getenv ("XCURSOR_PATH"); - if (!path) - path = XCURSORPATH; - } - return path; -} - -static void -_XcursorAddPathElt (char *path, const char *elt, int len) -{ - int pathlen = strlen (path); - - /* append / if the path doesn't currently have one */ - if (path[0] == '\0' || path[pathlen - 1] != '/') - { - strcat (path, "/"); - pathlen++; - } - if (len == -1) - len = strlen (elt); - /* strip leading slashes */ - while (len && elt[0] == '/') - { - elt++; - len--; - } - strncpy (path + pathlen, elt, len); - path[pathlen + len] = '\0'; -} - -static char * -_XcursorBuildThemeDir (const char *dir, const char *theme) -{ - const char *colon; - const char *tcolon; - char *full; - char *home; - int dirlen; - int homelen; - int themelen; - int len; - - if (!dir || !theme) - return NULL; - - colon = strchr (dir, ':'); - if (!colon) - colon = dir + strlen (dir); - - dirlen = colon - dir; - - tcolon = strchr (theme, ':'); - if (!tcolon) - tcolon = theme + strlen (theme); - - themelen = tcolon - theme; - - home = 0; - homelen = 0; - if (*dir == '~') - { - home = getenv ("HOME"); - if (!home) - return 0; - homelen = strlen (home); - dir++; - dirlen--; - } - - /* - * add space for any needed directory separators, one per component, - * and one for the trailing null - */ - len = 1 + homelen + 1 + dirlen + 1 + themelen + 1; - - full = malloc (len); - if (!full) - return 0; - full[0] = '\0'; - - if (home) - _XcursorAddPathElt (full, home, -1); - _XcursorAddPathElt (full, dir, dirlen); - _XcursorAddPathElt (full, theme, themelen); - return full; -} - -static char * -_XcursorBuildFullname (const char *dir, const char *subdir, const char *file) -{ - char *full; - - if (!dir || !subdir || !file) - return NULL; - - full = malloc (strlen (dir) + 1 + strlen (subdir) + 1 + strlen (file) + 1); - if (!full) - return 0; - full[0] = '\0'; - _XcursorAddPathElt (full, dir, -1); - _XcursorAddPathElt (full, subdir, -1); - _XcursorAddPathElt (full, file, -1); - return full; -} - -static const char * -_XcursorNextPath (const char *path) -{ - char *colon = strchr (path, ':'); - - if (!colon) - return 0; - return colon + 1; -} - -#define XcursorWhite(c) ((c) == ' ' || (c) == '\t' || (c) == '\n') -#define XcursorSep(c) ((c) == ';' || (c) == ',') - -static char * -_XcursorThemeInherits (const char *full) -{ - char line[8192]; - char *result = 0; - FILE *f; - - if (!full) - return NULL; - - f = fopen (full, "r"); - if (f) - { - while (fgets (line, sizeof (line), f)) - { - if (!strncmp (line, "Inherits", 8)) - { - char *l = line + 8; - char *r; - while (*l == ' ') l++; - if (*l != '=') continue; - l++; - while (*l == ' ') l++; - result = malloc (strlen (l)); - if (result) - { - r = result; - while (*l) - { - while (XcursorSep(*l) || XcursorWhite (*l)) l++; - if (!*l) - break; - if (r != result) - *r++ = ':'; - while (*l && !XcursorWhite(*l) && - !XcursorSep(*l)) - *r++ = *l++; - } - *r++ = '\0'; - } - break; - } - } - fclose (f); - } - return result; -} - -#define XCURSOR_SCAN_CORE ((FILE *) 1) - -static FILE * -XcursorScanTheme (const char *theme, const char *name) -{ - FILE *f = 0; - char *full; - char *dir; - const char *path; - char *inherits = 0; - const char *i; - - if (!theme || !name) - return NULL; - - /* - * XCURSOR_CORE_THEME is a magic name; cursors from the core set - * are never found in any directory. Instead, a magic value is - * returned which truncates any search so that overlying functions - * can switch to equivalent core cursors - */ - if (!strcmp (theme, XCURSOR_CORE_THEME) && XcursorLibraryShape (name) >= 0) - return XCURSOR_SCAN_CORE; - /* - * Scan this theme - */ - for (path = XcursorLibraryPath (); - path && f == 0; - path = _XcursorNextPath (path)) - { - dir = _XcursorBuildThemeDir (path, theme); - if (dir) - { - full = _XcursorBuildFullname (dir, "cursors", name); - if (full) - { - f = fopen (full, "r"); - free (full); - } - if (!f && !inherits) - { - full = _XcursorBuildFullname (dir, "", "index.theme"); - if (full) - { - inherits = _XcursorThemeInherits (full); - free (full); - } - } - free (dir); - } - } - /* - * Recurse to scan inherited themes - */ - for (i = inherits; i && f == 0; i = _XcursorNextPath (i)) - f = XcursorScanTheme (i, name); - if (inherits) - free (inherits); - return f; -} - -XcursorImage * -XcursorLibraryLoadImage (const char *file, const char *theme, int size) -{ - FILE *f = 0; - XcursorImage *image = 0; - - if (!file) - return NULL; - - if (theme) - f = XcursorScanTheme (theme, file); - if (!f) - f = XcursorScanTheme ("default", file); - if (f == XCURSOR_SCAN_CORE) - return 0; - if (f) - { - image = XcursorFileLoadImage (f, size); - fclose (f); - } - return image; -} - -XcursorImages * -XcursorLibraryLoadImages (const char *file, const char *theme, int size) -{ - FILE *f = 0; - XcursorImages *images = 0; - - if (!file) - return NULL; - - if (theme) - f = XcursorScanTheme (theme, file); - if (!f) - f = XcursorScanTheme ("default", file); - if (f == XCURSOR_SCAN_CORE) - return 0; - if (f) - { - images = XcursorFileLoadImages (f, size); - if (images) - XcursorImagesSetName (images, file); - fclose (f); - } - return images; -} - -Cursor -XcursorLibraryLoadCursor (Display *dpy, const char *file) -{ - int size = XcursorGetDefaultSize (dpy); - char *theme = XcursorGetTheme (dpy); - XcursorImages *images = XcursorLibraryLoadImages (file, theme, size); - Cursor cursor; - - if (!file) - return 0; - - if (!images) - { - int id = XcursorLibraryShape (file); - - if (id >= 0) - return _XcursorCreateFontCursor (dpy, id); - else - return 0; - } - cursor = XcursorImagesLoadCursor (dpy, images); - XcursorImagesDestroy (images); -#if defined HAVE_XFIXES && XFIXES_MAJOR >= 2 - XFixesSetCursorName (dpy, cursor, file); -#endif - return cursor; -} - -XcursorCursors * -XcursorLibraryLoadCursors (Display *dpy, const char *file) -{ - int size = XcursorGetDefaultSize (dpy); - char *theme = XcursorGetTheme (dpy); - XcursorImages *images = XcursorLibraryLoadImages (file, theme, size); - XcursorCursors *cursors; - - if (!file) - return NULL; - - if (!images) - { - int id = XcursorLibraryShape (file); - - if (id >= 0) - { - cursors = XcursorCursorsCreate (dpy, 1); - if (cursors) - { - cursors->cursors[0] = _XcursorCreateFontCursor (dpy, id); - if (cursors->cursors[0] == None) - { - XcursorCursorsDestroy (cursors); - cursors = 0; - } - else - cursors->ncursor = 1; - } - } - else - cursors = 0; - } - else - { - cursors = XcursorImagesLoadCursors (dpy, images); - XcursorImagesDestroy (images); - } - return cursors; -} - -const static char *_XcursorStandardNames[] = { - /* 0 */ - "X_cursor", "arrow", "based_arrow_down", "based_arrow_up", - "boat", "bogosity", "bottom_left_corner", "bottom_right_corner", - "bottom_side", "bottom_tee", "box_spiral", "center_ptr", - "circle", "clock", "coffee_mug", "cross", - - /* 32 */ - "cross_reverse", "crosshair", "diamond_cross", "dot", - "dotbox", "double_arrow", "draft_large", "draft_small", - "draped_box", "exchange", "fleur", "gobbler", - "gumby", "hand1", "hand2", "heart", - - /* 64 */ - "icon", "iron_cross", "left_ptr", "left_side", - "left_tee", "leftbutton", "ll_angle", "lr_angle", - "man", "middlebutton", "mouse", "pencil", - "pirate", "plus", "question_arrow", "right_ptr", - - /* 96 */ - "right_side", "right_tee", "rightbutton", "rtl_logo", - "sailboat", "sb_down_arrow", "sb_h_double_arrow", "sb_left_arrow", - "sb_right_arrow", "sb_up_arrow", "sb_v_double_arrow", "shuttle", - "sizing", "spider", "spraycan", "star", - - /* 128 */ - "target", "tcross", "top_left_arrow", "top_left_corner", - "top_right_corner", "top_side", "top_tee", "trek", - "ul_angle", "umbrella", "ur_angle", "watch", - "xterm", -}; - -#define NUM_STANDARD_NAMES (sizeof _XcursorStandardNames / sizeof _XcursorStandardNames[0]) - -XcursorImage * -XcursorShapeLoadImage (unsigned int shape, const char *theme, int size) -{ - unsigned int id = shape >> 1; - - if (id < NUM_STANDARD_NAMES) - return XcursorLibraryLoadImage (_XcursorStandardNames[id], - theme, size); - else - return 0; -} - -XcursorImages * -XcursorShapeLoadImages (unsigned int shape, const char *theme, int size) -{ - unsigned int id = shape >> 1; - - if (id < NUM_STANDARD_NAMES) - return XcursorLibraryLoadImages (_XcursorStandardNames[id], - theme, size); - else - return 0; -} - -Cursor -XcursorShapeLoadCursor (Display *dpy, unsigned int shape) -{ - unsigned int id = shape >> 1; - - if (id < NUM_STANDARD_NAMES) - return XcursorLibraryLoadCursor (dpy, _XcursorStandardNames[id]); - else - return 0; -} - -XcursorCursors * -XcursorShapeLoadCursors (Display *dpy, unsigned int shape) -{ - unsigned int id = shape >> 1; - - if (id < NUM_STANDARD_NAMES) - return XcursorLibraryLoadCursors (dpy, _XcursorStandardNames[id]); - else - return 0; -} - -int -XcursorLibraryShape (const char *library) -{ - int low, high; - int mid; - int c; - - low = 0; - high = NUM_STANDARD_NAMES - 1; - while (low < high - 1) - { - mid = (low + high) >> 1; - c = strcmp (library, _XcursorStandardNames[mid]); - if (c == 0) - return (mid << 1); - if (c > 0) - low = mid; - else - high = mid; - } - while (low <= high) - { - if (!strcmp (library, _XcursorStandardNames[low])) - return (low << 1); - low++; - } - return -1; -} diff --git a/nx-X11/lib/Xcursor/xcursor-config.in b/nx-X11/lib/Xcursor/xcursor-config.in deleted file mode 100644 index af59f99..0000000 --- a/nx-X11/lib/Xcursor/xcursor-config.in +++ /dev/null @@ -1,95 +0,0 @@ -#! /bin/sh - -prefix="@prefix@" -exec_prefix="@exec_prefix@" -libdir="@libdir@" -hardcode_libdir_flag_spec=@hardcode_libdir_flag_spec@ -includedir="@includedir@" -version="@VERSION@" - -usage() -{ - cat <<EOF -Usage: xcursor-config [OPTIONS] [LIBRARIES] -Options: - [--prefix[=DIR]] - [--exec-prefix[=DIR]] - [--version] - [--libs] - [--cflags] -EOF - exit $1 -} - -if test $# -eq 0 ; then - usage 1 1>&2 -fi - -while test $# -gt 0 ; do - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case $1 in - --prefix=*) - prefix=$optarg - local_prefix=yes - ;; - --prefix) - echo_prefix=yes - ;; - --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - local_prefix=yes - ;; - --exec-prefix) - echo_exec_prefix=yes - ;; - --version) - echo $version - exit 0 - ;; - --cflags) - echo_cflags=yes - ;; - --libs) - echo_libs=yes - ;; - *) - usage 1 1>&2 - ;; - esac - shift -done - -if test "$local_prefix" = "yes" ; then - if test "$exec_prefix_set" != "yes" ; then - exec_prefix=$prefix - fi -fi - -if test "$echo_prefix" = "yes" ; then - echo $prefix -fi - -if test "$echo_exec_prefix" = "yes" ; then - echo $exec_prefix -fi - -if test "$echo_cflags" = "yes" ; then - cflags="-I${includedir}" - echo $cflags -fi - -if test "$echo_libs" = "yes" ; then - libs="-lXcursor" - if test "${libdir}" != "/usr/lib" ; then - echo ${hardcode_libdir_flag_spec} -L${libdir} $libs - else - echo $libs - fi -fi - -# EOF diff --git a/nx-X11/lib/Xcursor/xcursor.pc.in b/nx-X11/lib/Xcursor/xcursor.pc.in deleted file mode 100644 index 87aba12..0000000 --- a/nx-X11/lib/Xcursor/xcursor.pc.in +++ /dev/null @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -xrenderlibs=@XRENDER_LIBS@ -xrendercflags=@XRENDER_CFLAGS@ -xlibs=@X_LIBS@ -xcflags=@X_CFLAGS@ - -Name: Xcursor -Description: X Cursor Library -Version: @VERSION@ -Requires: xrender -Cflags: -I${includedir} ${xrendercflags} ${xcflags} -Libs: -L${libdir} -lNX_Xcursor ${xrenderlibs} ${xlibs} diff --git a/nx-X11/lib/Xcursor/xcursorint.h b/nx-X11/lib/Xcursor/xcursorint.h deleted file mode 100644 index 83913a0..0000000 --- a/nx-X11/lib/Xcursor/xcursorint.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * $Id: xcursorint.h,v 1.6 2005/10/19 22:26:55 ajax Exp $ - * - * Copyright © 2002 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifndef _XCURSORINT_H_ -#define _XCURSORINT_H_ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <X11/Xlib.h> -#include <X11/cursorfont.h> -#include <X11/extensions/Xrender.h> - -#ifdef HAVE_XFIXES -#include <X11/extensions/Xfixes.h> -#endif - -#include "Xcursor.h" -#include "config.h" - -typedef struct _XcursorFontInfo { - struct _XcursorFontInfo *next; - Font font; - XcursorBool is_cursor_font; -} XcursorFontInfo; - -/* - * Track a few recently created bitmaps to see - * if they get used to create cursors. This - * is done by hooking into Xlib and watching - * for XCreatePixmap, XPutImage, XCreatePixmapCursor - * with appropriate arguments. When this happens - * Xcursor computes a hash value for the source image - * and tries to load a library cursor of that name. - */ - -/* large bitmaps are unlikely to be cursors */ -#define MAX_BITMAP_CURSOR_SIZE 64 -/* don't need to remember very many; in fact, 2 is likely sufficient */ -#define NUM_BITMAPS 8 - -typedef struct _XcursorBitmapInfo { - Pixmap bitmap; - unsigned long sequence; - unsigned int width, height; - Bool has_image; - unsigned char hash[XCURSOR_BITMAP_HASH_SIZE]; -} XcursorBitmapInfo; - -typedef enum _XcursorDither { - XcursorDitherThreshold, - XcursorDitherMedian, - XcursorDitherOrdered, - XcursorDitherDiffuse -} XcursorDither; - -typedef struct _XcursorDisplayInfo { - struct _XcursorDisplayInfo *next; - Display *display; - XExtCodes *codes; - XcursorBool has_render_cursor; - XcursorBool has_anim_cursor; - XcursorBool theme_core; - int size; - XcursorFontInfo *fonts; - char *theme; - char *theme_from_config; - XcursorDither dither; - XcursorBitmapInfo bitmaps[NUM_BITMAPS]; -} XcursorDisplayInfo; - -XcursorDisplayInfo * -_XcursorGetDisplayInfo (Display *dpy); - -Cursor -_XcursorCreateGlyphCursor(Display *dpy, - Font source_font, - Font mask_font, - unsigned int source_char, - unsigned int mask_char, - XColor _Xconst *foreground, - XColor _Xconst *background); - -Cursor -_XcursorCreateFontCursor (Display *dpy, unsigned int shape); - -#endif /* _XCURSORINT_H_ */ diff --git a/nx-X11/lib/Xcursor/xlib.c b/nx-X11/lib/Xcursor/xlib.c deleted file mode 100644 index 7d10caf..0000000 --- a/nx-X11/lib/Xcursor/xlib.c +++ /dev/null @@ -1,422 +0,0 @@ -/* - * $Id: xlib.c,v 1.5 2005/07/03 07:00:56 daniels Exp $ - * - * Copyright © 2002 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "xcursorint.h" -#include <X11/Xlibint.h> -#include <X11/Xatom.h> -#include <stdlib.h> - -static XcursorBool -_XcursorFontIsCursor (Display *dpy, Font font) -{ - XcursorFontInfo *fi; - XcursorDisplayInfo *info; - XcursorBool ret; - XFontStruct *fs; - int n; - Atom cursor; - - if (!dpy || !font) - return XcursorFalse; - - if (font == dpy->cursor_font) - return XcursorTrue; - - info = _XcursorGetDisplayInfo (dpy); - if (!info) - return XcursorFalse; - LockDisplay (dpy); - for (fi = info->fonts; fi; fi = fi->next) - if (fi->font == font) - { - ret = fi->is_cursor_font; - UnlockDisplay (dpy); - return ret; - } - UnlockDisplay (dpy); - ret = XcursorFalse; - fs = XQueryFont (dpy, font); - if (fs) - { - cursor = XInternAtom (dpy, "cursor", False); - for (n = 0; n < fs->n_properties; n++) - if (fs->properties[n].name == XA_FONT) - { - ret = (fs->properties[n].card32 == cursor); - break; - } - } - fi = malloc (sizeof (XcursorFontInfo)); - if (fi) - { - fi->font = font; - fi->is_cursor_font = ret; - LockDisplay (dpy); - fi->next = info->fonts; - info->fonts = fi; - UnlockDisplay (dpy); - } - return ret; -} - -Cursor -XcursorTryShapeCursor (Display *dpy, - Font source_font, - Font mask_font, - unsigned int source_char, - unsigned int mask_char, - XColor _Xconst *foreground, - XColor _Xconst *background) -{ - Cursor cursor = None; - - if (!dpy || !source_font || !mask_font || !foreground || !background) - return 0; - - if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy)) - return None; - - if (source_font == mask_font && - _XcursorFontIsCursor (dpy, source_font) && - source_char + 1 == mask_char) - { - int size = XcursorGetDefaultSize (dpy); - char *theme = XcursorGetTheme (dpy); - XcursorImages *images = XcursorShapeLoadImages (source_char, theme, size); - - if (images) - { - cursor = XcursorImagesLoadCursor (dpy, images); - XcursorImagesDestroy (images); - } - } - return cursor; -} - -void -XcursorNoticeCreateBitmap (Display *dpy, - Pixmap pid, - unsigned int width, - unsigned int height) -{ - XcursorDisplayInfo *info; - unsigned long oldest; - unsigned long now; - int i; - int replace = 0; - XcursorBitmapInfo *bmi; - - if (!dpy) - return; - - if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy)) - return; - - if (width > MAX_BITMAP_CURSOR_SIZE || height > MAX_BITMAP_CURSOR_SIZE) - return; - - info = _XcursorGetDisplayInfo (dpy); - if (!info) - return; - - LockDisplay (dpy); - replace = 0; - now = dpy->request; - oldest = now; - for (i = 0; i < NUM_BITMAPS; i++) - { - if (!info->bitmaps[i].bitmap) - { - replace = i; - break; - } - if ((long) (now - info->bitmaps[i].sequence) > - (long) (now - oldest)) - { - replace = i; - oldest = info->bitmaps[i].sequence; - } - } - bmi = &info->bitmaps[replace]; - bmi->bitmap = pid; - bmi->sequence = now; - bmi->width = width; - bmi->height = height; - bmi->has_image = False; - UnlockDisplay (dpy); -} - -static XcursorBitmapInfo * -_XcursorGetBitmap (Display *dpy, Pixmap bitmap) -{ - XcursorDisplayInfo *info; - int i; - - if (!dpy || !bitmap) - return NULL; - - info = _XcursorGetDisplayInfo (dpy); - - if (!info) - return 0; - LockDisplay (dpy); - for (i = 0; i < NUM_BITMAPS; i++) - if (info->bitmaps[i].bitmap == bitmap) - { - info->bitmaps[i].sequence = dpy->request; - UnlockDisplay (dpy); - return &info->bitmaps[i]; - } - UnlockDisplay (dpy); - return 0; -} - -static Bool -_XcursorClientLSB (void) -{ - int v = 1; - return *((char *) &v) == 1; -} - -/* stolen from Xlib */ -static unsigned char const _reverse_byte[0x100] = { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff -}; - -#define RotByte(t,i) (((t) << (i)) | ((t) >> (8 - (i)))) - -void -XcursorImageHash (XImage *image, - unsigned char hash[XCURSOR_BITMAP_HASH_SIZE]) -{ - int i; - int x, y; - unsigned char *line; - unsigned char t; - int low_addr; - Bool bit_swap; - - if (!image) - return; - - for (i = 0; i < XCURSOR_BITMAP_HASH_SIZE; i++) - hash[i] = 0; - /* - * Flip byte order on MSB machines where the bitmap_unit isn't - * in bytes - */ - low_addr = 0; - if (image->bitmap_unit != 8) - { - if (!_XcursorClientLSB()) - switch (image->bitmap_unit) { - case 16: - low_addr = 1; - break; - case 32: - low_addr = 3; - break; - } - } - /* - * Flip bit order on MSB images - */ - bit_swap = (image->bitmap_bit_order != LSBFirst); - - line = (unsigned char *) image->data; - i = 0; - /* - * Compute the hash. Yes, it might be nice to use - * a stronger hash function, but MD5 and SHA1 are both - * a bit to expensive in time and space for this, - * and cursors are generally small enough that a weak - * hash is sufficient to distinguish among them. - */ - for (y = 0; y < image->height; y++) - { - for (x = 0; x < image->bytes_per_line; x++) - { - t = line[x^low_addr]; - if (bit_swap) - t = _reverse_byte[t]; - if (t) - hash[(i++) & (XCURSOR_BITMAP_HASH_SIZE - 1)] ^= RotByte (t, y & 7); - } - line += image->bytes_per_line; - } -} - -static Bool -_XcursorLogDiscover (void) -{ - static Bool been_here; - static Bool log; - - if (!been_here) - { - been_here = True; - - if (getenv ("XCURSOR_DISCOVER")) - log = True; - } - return log; -} - -void -XcursorNoticePutBitmap (Display *dpy, - Drawable draw, - XImage *image) -{ - XcursorBitmapInfo *bmi; - - if (!dpy || !image) - return; - - if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy)) - return; - - if (image->width > MAX_BITMAP_CURSOR_SIZE || - image->height > MAX_BITMAP_CURSOR_SIZE) - return; - - bmi = _XcursorGetBitmap (dpy, (Pixmap) draw); - if (!bmi) - return; - /* - * Make sure the image fills the bitmap - */ - if (image->width != bmi->width || image->height != bmi->height) - { - bmi->bitmap = 0; - return; - } - /* - * If multiple images are placed in the same bitmap, - * assume it's not going to be a cursor - */ - if (bmi->has_image) - { - bmi->bitmap = 0; - return; - } - /* - * Make sure the image is valid - */ - if (image->bytes_per_line & ((image->bitmap_unit >> 3) - 1)) - { - bmi->bitmap = 0; - return; - } - /* - * Hash the image - */ - XcursorImageHash (image, bmi->hash); - /* - * Display the hash value and the image if - * requested so that users can find out what - * cursor name is associated with each image - */ - if (_XcursorLogDiscover()) - { - int x, y; - int i; - XImage t = *image; - - XInitImage (&t); - - printf ("Cursor image name: "); - for (i = 0; i < XCURSOR_BITMAP_HASH_SIZE; i++) - printf ("%02x", bmi->hash[i]); - printf ("\n"); - for (y = 0; y < image->height; y++) - { - for (x = 0; x < image->width; x++) - putchar (XGetPixel (&t, x, y) ? '*' : ' '); - putchar ('\n'); - } - } - bmi->has_image = True; -} - -Cursor -XcursorTryShapeBitmapCursor (Display *dpy, - Pixmap source, - Pixmap mask, - XColor *foreground, - XColor *background, - unsigned int x, - unsigned int y) -{ - XcursorBitmapInfo *bmi; - char name[8 * XCURSOR_BITMAP_HASH_SIZE]; - int i; - Cursor cursor; - - if (!dpy || !foreground || !background) - return 0; - - if (!XcursorSupportsARGB (dpy) && !XcursorGetThemeCore (dpy)) - return None; - - bmi = _XcursorGetBitmap (dpy, source); - if (!bmi || !bmi->has_image) - return None; - for (i = 0; i < XCURSOR_BITMAP_HASH_SIZE; i++) - sprintf (name + 2 * i, "%02x", bmi->hash[i]); - cursor = XcursorLibraryLoadCursor (dpy, name); - if (_XcursorLogDiscover()) - printf ("Cursor hash %s returns 0x%x\n", name, (unsigned int) cursor); - return cursor; -} diff --git a/nx-X11/lib/Xrender/Imakefile b/nx-X11/lib/Xrender/Imakefile index c4fd0aa..86ac94f 100644 --- a/nx-X11/lib/Xrender/Imakefile +++ b/nx-X11/lib/Xrender/Imakefile @@ -159,7 +159,7 @@ all:: xrender.pc xrender.pc: xrender.pc.in RemoveFile($@) - sh ../Xcursor/config-subst $(SUBSTVARS) < xrender.pc.in > $@ + sh config-subst $(SUBSTVARS) < xrender.pc.in > $@ InstallNonExecFile(xrender.pc,$(USRLIBDIR)/pkgconfig) diff --git a/nx-X11/lib/Xcursor/config-subst b/nx-X11/lib/Xrender/config-subst similarity index 100% rename from nx-X11/lib/Xcursor/config-subst rename to nx-X11/lib/Xrender/config-subst -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 0d9217127f3e81fa19037f4923949b10443c5f1d Merge: cfc0202 422fe90 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Apr 16 22:12:45 2015 +0200 Merge branch 'sunweaver-pr/xcursor-cleanup' into arctica-3.6.x Attributes GH PR #13: https://github.com/ArcticaProject/nx-libs/pull/13 nx-X11/lib/Xcursor/AUTHORS | 2 - nx-X11/lib/Xcursor/COPYING | 19 - nx-X11/lib/Xcursor/ChangeLog | 202 ----- nx-X11/lib/Xcursor/Imakefile | 100 --- nx-X11/lib/Xcursor/Xcursor-def.cpp | 54 -- nx-X11/lib/Xcursor/Xcursor.h | 501 ------------ nx-X11/lib/Xcursor/Xcursor.man | 379 --------- nx-X11/lib/Xcursor/autogen.sh | 12 - nx-X11/lib/Xcursor/configure.ac | 143 ---- nx-X11/lib/Xcursor/cursor.c | 815 ------------------- nx-X11/lib/Xcursor/display.c | 382 --------- nx-X11/lib/Xcursor/file.c | 1101 -------------------------- nx-X11/lib/Xcursor/library.c | 495 ------------ nx-X11/lib/Xcursor/xcursor-config.in | 95 --- nx-X11/lib/Xcursor/xcursor.pc.in | 15 - nx-X11/lib/Xcursor/xcursorint.h | 109 --- nx-X11/lib/Xcursor/xlib.c | 422 ---------- nx-X11/lib/Xrender/Imakefile | 2 +- nx-X11/lib/{Xcursor => Xrender}/config-subst | 0 19 files changed, 1 insertion(+), 4847 deletions(-) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 8b1577599271da1ac50ebb38d7297769f6b1139c Merge: 0d92171 ac9fbaa Author: Mike DePaulo <mikedep333@users.noreply.github.com> Date: Thu Apr 16 18:30:39 2015 -0400 Merge pull request #12 from sunweaver/pr/arch-cleanup.CRAY arch cleanup (CRAY/WORD64) + X.Org CVE-2013-7439 nx-X11/config/cf/Imake.cf | 11 -- nx-X11/config/imake/imakemdep.h | 20 +-- nx-X11/config/makedepend/main.c | 2 +- nx-X11/include/Xmd.h | 53 +------ nx-X11/include/Xos.h | 10 +- nx-X11/include/Xpoll.h.in | 4 +- nx-X11/include/Xproto.h | 13 -- nx-X11/include/extensions/XKBstr.h | 5 - nx-X11/include/extensions/lbxopts.h | 2 +- nx-X11/include/extensions/lbxstr.h | 4 - nx-X11/include/extensions/xf86bigfstr.h | 4 - nx-X11/lib/X11/ChWindow.c | 9 -- nx-X11/lib/X11/ConfWind.c | 13 -- nx-X11/lib/X11/CrWindow.c | 9 -- nx-X11/lib/X11/DrArc.c | 13 -- nx-X11/lib/X11/DrLine.c | 16 -- nx-X11/lib/X11/DrPoint.c | 15 -- nx-X11/lib/X11/DrRect.c | 16 -- nx-X11/lib/X11/FillArc.c | 16 -- nx-X11/lib/X11/FillRct.c | 15 -- nx-X11/lib/X11/Font.c | 45 +----- nx-X11/lib/X11/FontInfo.c | 24 +-- nx-X11/lib/X11/ImUtil.c | 8 - nx-X11/lib/X11/LiHosts.c | 7 - nx-X11/lib/X11/Macros.c | 5 - nx-X11/lib/X11/MoveWin.c | 9 -- nx-X11/lib/X11/PolyTxt16.c | 26 +--- nx-X11/lib/X11/Quarks.c | 4 - nx-X11/lib/X11/RestackWs.c | 11 +- nx-X11/lib/X11/SendEvent.c | 5 - nx-X11/lib/X11/StColor.c | 13 -- nx-X11/lib/X11/Text16.c | 23 --- nx-X11/lib/X11/XKBNames.c | 56 ------- nx-X11/lib/X11/XKBRdBuf.c | 27 +--- nx-X11/lib/X11/XKBlibint.h | 2 +- nx-X11/lib/X11/Xlib.h | 4 - nx-X11/lib/X11/XlibAsync.c | 5 - nx-X11/lib/X11/XlibInt.c | 252 ------------------------------- nx-X11/lib/X11/Xlibint.h | 82 +++------- nx-X11/lib/X11/cmsTrig.c | 4 - nx-X11/lib/X11/omXChar.c | 71 --------- nx-X11/lib/Xrender/FillRect.c | 15 -- nx-X11/lib/Xrender/Xrenderint.h | 7 +- nx-X11/lib/Xtst/XRecord.c | 28 ---- nx-X11/lib/Xxf86vm/XF86VMode.c | 2 - nx-X11/lib/font/fc/fslibos.h | 4 - nx-X11/lib/font/fontfile/ffcheck.c | 2 - nx-X11/lib/font/fontfile/register.c | 12 +- nx-X11/lib/xtrans/Xtrans.c | 38 ----- nx-X11/lib/xtrans/Xtrans.h | 2 +- nx-X11/lib/xtrans/Xtransint.h | 8 +- nx-X11/lib/xtrans/Xtranssock.c | 16 -- nx-X11/lib/xtrans/Xtransutil.c | 9 -- 53 files changed, 43 insertions(+), 1033 deletions(-) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit a20e77b7cc5eaa8565344ce19d797f2d994cecce Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Fri Apr 17 00:12:52 2015 +0200 imake cleanup (nx-X11/programs/Xserver/Imakefile): Drop build rules for XF86Server and XorgServer. --- nx-X11/programs/Xserver/Imakefile | 288 +------------------------------------ 1 file changed, 2 insertions(+), 286 deletions(-) diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index d6e67d8..1419531 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -338,304 +338,20 @@ XCOMM XCOMM XCOMM force non-parallel build of XF86 servers to prevent MUTEX overrides XCOMM -#if defined(XF86Server) && XF86Server -XF86SERVER = XFree86 -#endif -#if defined(XorgServer) && XorgServer -XF86SERVER = Xorg -#endif #if defined(NXAgentServer) && NXAgentServer NXAGENT = nxagent #endif #if defined(NXWinServer) && NXWinServer && !MakeDllModules NXWIN = NXWin #endif -#if (defined(XF86Server) && XF86Server) || \ - (defined(XorgServer) && XorgServer) || \ - (defined(NXAgentServer) && NXAgentServer) || \ +#if (defined(NXAgentServer) && NXAgentServer) || \ (!MakeDllModules && defined(NXWinServer) && NXWinServer) -MakeMutex($(XF86SERVER) $(NXAGENT) $(NXWIN)) +MakeMutex($(NXAGENT) $(NXWIN)) #endif MakeMutex($(STDDIRS) mfb fb cfb cfb16 cfb24 cfb32) #endif -#if defined(XF86Server) && XF86Server -XCOMM -XCOMM XFree86 Server -XCOMM -FBSUBDIR = fb -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -CFB16SUBDIR = cfb16 -CFB24SUBDIR = cfb24 -CFB32SUBDIR = cfb32 -MIDAMAGEDIR = miext/damage -SHADOWDIR = miext/shadow -LAYERDIR = miext/layer -#ifdef OS2Architecture -SERVERDEFFILE = XFree86.def -XNESTDEFFILE = Xnest.def -XVFBDEFFILE = Xvfb.def -#endif -#if XF86AFB -AFBSUBDIR = afb -#endif -XFREE86DDXDIR = hw/xfree86 -XF86SERVERSUBDIRS = $(STDDIRS) $(MFBDIR) $(FBDIR) $(AFBDIR) \ - $(CFB8DIR) $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \ - $(SHADOWDIR) $(LAYERDIR) $(XFREE86DDXDIR) $(DEPDIRS) \ - $(MIDAMAGEDIR) -XF86INIT = $(XF86COMSRC)/xf86Init.o $(XF86COMSRC)/xf86IniExt.o -XF86COMLIB = $(XF86COMSRC)/LibraryTargetName(xf86) -XF86PARSLIB= $(XF86PARSERSRC)/LibraryTargetName(xf86config) -XF86OSLIB = $(XF86OSSRC)/LibraryTargetName(xf86_os) -#if XF86XAA -XF86XAALIB = $(XF86SRC)/xaa/LibraryTargetName(xaa) -#endif -#if XF86EXA -XF86EXALIB = $(XF86SRC)/exa/LibraryTargetName(exa) -#endif -#if XF86VgaHw -XF86VGAHWLIB = $(XF86SRC)/vgahw/LibraryTargetName(vgahw) -#endif -#if XF86FBDevHw -XF86FBDEVHWLIB = $(XF86SRC)/fbdevhw/LibraryTargetName(fbdevhw) -#endif -#if XF1Bpp || XF4Bpp -XF1BPPLIB = $(XF86SRC)/xf1bpp/LibraryTargetName(xf1bpp) -#endif -#if XF4Bpp -XF4BPPLIB = $(XF86SRC)/xf4bpp/LibraryTargetName(xf4bpp) -#endif -#if XF8_32Wid -XF8_32WIDLIB = $(XF86SRC)/xf8_32wid/LibraryTargetName(xf8_32wid) -#endif -#if XF8_32Bpp -XF8_32BPPLIB = $(XF86SRC)/xf8_32bpp/LibraryTargetName(xf8_32bpp) -#endif -#if XF8_16Bpp -XF8_16BPPLIB = $(XF86SRC)/xf8_16bpp/LibraryTargetName(xf8_16bpp) -#endif -#if XFShadowFB -XFSHADOWFBLIB = $(XF86SRC)/shadowfb/LibraryTargetName(shadowfb) -#endif -#if XF86AFB -AFBLIB = afb/LibraryTargetName(afb) -#endif -XF86DRIVERLIB = $(XF86SRC)/drivers/LibraryTargetName(driver) -#if XF86Ramdac -XF86RAMDACLIB = $(XF86SRC)/ramdac/LibraryTargetName(ramdac) -#endif -#if XF86I2C -XF86I2CLIB = $(XF86SRC)/i2c/LibraryTargetName(i2c) -#endif -#if XF86DDC -XF86DDCLIB = $(XF86SRC)/ddc/LibraryTargetName(ddc) -#endif -#if XF86VBE -XF86VBELIB = $(XF86SRC)/vbe/LibraryTargetName(vbe) -#endif -#if XF86RAC -XF86RACLIB = $(XF86SRC)/rac/LibraryTargetName(rac) -#endif -#if XF86INT10_BUILD > X86EMU_GENERIC -XF86INT10LIB = $(XF86OSSRC)/LibraryTargetName(int10) -#else -XF86INT10LIB = $(XF86SRC)/int10/LibraryTargetName(int10) -#endif -#if UseMemLeak -MEMDEBUGLIB = $(TOP)/util/memleak/LibraryTargetName(memleak) -#endif -XF86IDRIVERLIB = $(XF86SRC)/input/LibraryTargetName(idriver) -#if !DoLoadableServer -XF86DRVOBJS = $(XF86SRC)/drivers/drvConf.o -XF86DRVLIBS = $(XF86DRIVERLIB) $(XF86RAMDACLIB) $(XF86DDCLIB) $(XF86I2CLIB) \ - $(XF86XAALIB) $(XF86EXALIB) $(XF86VGAHWLIB) $(XF86FBDEVHWLIB) \ - $(XF8_32WIDLIB) $(XF8_32BPPLIB) \ - $(XF8_16BPPLIB) \ - $(XF4BPPLIB) $(XF1BPPLIB) $(XFSHADOWFBLIB) $(AFBLIB) -XF86IDRVOBJS = $(XF86SRC)/input/drvConf.o -XF86IDRVLIBS = $(XF86IDRIVERLIB) -XF86SCANLIB = $(XF86SRC)/scanpci/LibraryTargetName(scanpci) -XF86LIBS = $(MEMDEBUGLIB) $(XF86INIT) $(XF86COMLIB) $(XF86RACLIB) \ - $(XF86PARSLIB) $(XF86VBELIB) $(XF86OSLIB) $(XF86INT10LIB) -#else -XF86LIBS = $(MEMDEBUGLIB) $(XF86INIT) $(XF86COMLIB) \ - $(XF86PARSLIB) $(XF86OSLIB) -#endif -#if DoLoadableServer -XF86LOADERLIB = $(XF86SRC)/loader/LibraryTargetName(loader) -XF86MAINLIBS = PreFbLibsNoFont \ - $(FONTBASE) $(OTHEREXTS) $(XF86COMLIB) \ - NoMfbPostFbLibs -XF86SERVERSYSLIBS = $(SYSLIBS) $(LIBDL) $(LIBREGEX) -XF86SERVERLIBS = $(XF86DRVLIBS) $(XF86IDRVLIBS) $(XF86LIBS) $(XF86LOADERLIB) \ - $(XF86COMLIB) $(XF86MAINLIBS) $(XF86SCANLIB) $(XF86OSLIB) -#else -XF86MAINLIBS = MiExtLibs AllFBLibs $(XF86COMLIB) $(MI) -XF86SERVERSYSLIBS = $(FONTLIBS) $(SYSLIBS) $(LIBDL) $(LIBREGEX) -XF86SERVERLIBS = $(XF86DRVLIBS) $(XF86IDRVLIBS) $(XF86LIBS) $(XF86LOADERLIB) \ - $(XF86COMLIB) $(XF86MAINLIBS) $(XF86SCANLIB) $(XF86OSLIB) \ - $(XF86DDCLIB) -#endif -XF86SERVEROBJS = $(XF86XKBOBJS) $(XF86DRVOBJS) $(XF86IDRVOBJS) -#if HasParallelMake -MakeMutex($(XF86SERVERSUBDIRS) $(XF86SERVERLIBS) $(XF86SERVERSYSLIBS)) -#endif -#if ForceServerRemake -$(XF86SERVERLIBS) $(XF86SERVERSYSLIBS):: $(XF86SERVERSUBDIRS) - @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi -#endif -SetUIDServerTarget(XFree86,$(XF86SERVERSUBDIRS),$(XF86SERVEROBJS) $(SERVERDEFFILE), \ - $(XF86SERVERLIBS),$(XF86SERVERSYSLIBS)) -#if DoLoadableServer -ServerDriverSDKTarget(XFree86) -#endif -#ifndef ServerToInstall -#define ServerToInstall XFree86 -#endif -#endif /* XF86Server */ - -#if defined(XorgServer) && XorgServer -XCOMM -XCOMM Xorg Server -XCOMM -FBSUBDIR = fb -MFBSUBDIR = mfb -CFB8SUBDIR = cfb -CFB16SUBDIR = cfb16 -#if XF8_32Wid -CFB24SUBDIR = cfb24 -#endif -CFB32SUBDIR = cfb32 -MIDAMAGEDIR = miext/damage -SHADOWDIR = miext/shadow -LAYERDIR = miext/layer -#ifdef OS2Architecture -SERVERDEFFILE = Xorg.def -XNESTDEFFILE = Xnest.def -XVFBDEFFILE = Xvfb.def -#endif -#if XF86AFB -AFBSUBDIR = afb -#endif -XFREE86DDXDIR = hw/xfree86 -XF86SERVERSUBDIRS = $(STDDIRS) $(MFBDIR) $(FBDIR) $(AFBDIR) \ - $(CFB8DIR) $(CFB16DIR) $(CFB24DIR) $(CFB32DIR) \ - $(SHADOWDIR) $(LAYERDIR) $(XFREE86DDXDIR) $(DEPDIRS) \ - $(MIDAMAGEDIR) -XF86INIT = $(XF86COMSRC)/xf86Init.o $(XF86COMSRC)/xf86IniExt.o -XF86COMLIB = $(XF86COMSRC)/LibraryTargetName(xf86) -XF86PARSLIB= $(XF86PARSERSRC)/LibraryTargetName(xf86config) -XF86OSLIB = $(XF86OSSRC)/LibraryTargetName(xf86_os) -#if XF86XAA -XF86XAALIB = $(XF86SRC)/xaa/LibraryTargetName(xaa) -#endif -#if XF86EXA -XF86EXALIB = $(XF86SRC)/exa/LibraryTargetName(exa) -#endif -#if XF86VgaHw -XF86VGAHWLIB = $(XF86SRC)/vgahw/LibraryTargetName(vgahw) -#endif -#if XF86FBDevHw -XF86FBDEVHWLIB = $(XF86SRC)/fbdevhw/LibraryTargetName(fbdevhw) -#endif -#if XF1Bpp || XF4Bpp -XF1BPPLIB = $(XF86SRC)/xf1bpp/LibraryTargetName(xf1bpp) -#endif -#if XF4Bpp -XF4BPPLIB = $(XF86SRC)/xf4bpp/LibraryTargetName(xf4bpp) -#endif -#if XF8_32Wid -XF8_32WIDLIB = $(XF86SRC)/xf8_32wid/LibraryTargetName(xf8_32wid) -#endif -#if XF8_32Bpp -XF8_32BPPLIB = $(XF86SRC)/xf8_32bpp/LibraryTargetName(xf8_32bpp) -#endif -#if XF8_16Bpp -XF8_16BPPLIB = $(XF86SRC)/xf8_16bpp/LibraryTargetName(xf8_16bpp) -#endif -#if XFShadowFB -XFSHADOWFBLIB = $(XF86SRC)/shadowfb/LibraryTargetName(shadowfb) -#endif -#if XF86AFB -AFBLIB = afb/LibraryTargetName(afb) -#endif -XF86DRIVERLIB = $(XF86SRC)/drivers/LibraryTargetName(driver) -#if XF86Ramdac -XF86RAMDACLIB = $(XF86SRC)/ramdac/LibraryTargetName(ramdac) -#endif -#if XF86I2C -XF86I2CLIB = $(XF86SRC)/i2c/LibraryTargetName(i2c) -#endif -#if XF86DDC -XF86DDCLIB = $(XF86SRC)/ddc/LibraryTargetName(ddc) -#endif -#if XF86VBE -XF86VBELIB = $(XF86SRC)/vbe/LibraryTargetName(vbe) -#endif -#if XF86RAC -XF86RACLIB = $(XF86SRC)/rac/LibraryTargetName(rac) -#endif -#if XF86INT10_BUILD > X86EMU_GENERIC -XF86INT10LIB = $(XF86OSSRC)/LibraryTargetName(int10) -#else -XF86INT10LIB = $(XF86SRC)/int10/LibraryTargetName(int10) -#endif -#if UseMemLeak -MEMDEBUGLIB = $(TOP)/util/memleak/LibraryTargetName(memleak) -#endif -XF86IDRIVERLIB = $(XF86SRC)/input/LibraryTargetName(idriver) -#if !DoLoadableServer -XF86DRVOBJS = $(XF86SRC)/drivers/drvConf.o -XF86DRVLIBS = $(XF86DRIVERLIB) $(XF86RAMDACLIB) $(XF86DDCLIB) $(XF86I2CLIB) \ - $(XF86XAALIB) $(XF86EXALIB) $(XF86VGAHWLIB) $(XF86FBDEVHWLIB) \ - $(XF8_32WIDLIB) $(XF8_32BPPLIB) \ - $(XF8_16BPPLIB) \ - $(XF4BPPLIB) $(XF1BPPLIB) $(XFSHADOWFBLIB) $(AFBLIB) -XF86IDRVOBJS = $(XF86SRC)/input/drvConf.o -XF86IDRVLIBS = $(XF86IDRIVERLIB) -XF86SCANLIB = $(XF86SRC)/scanpci/LibraryTargetName(scanpci) -XF86LIBS = $(MEMDEBUGLIB) $(XF86INIT) $(XF86COMLIB) $(XF86RACLIB) \ - $(XF86PARSLIB) $(XF86VBELIB) $(XF86OSLIB) $(XF86INT10LIB) -#else -XF86LIBS = $(MEMDEBUGLIB) $(XF86INIT) $(XF86COMLIB) \ - $(XF86PARSLIB) $(XF86OSLIB) -#endif -#if DoLoadableServer -XF86LOADERLIB = $(XF86SRC)/loader/LibraryTargetName(loader) -XF86MAINLIBS = PreFbLibsNoFont \ - $(FONTBASE) $(OTHEREXTS) $(XF86COMLIB) \ - NoMfbPostFbLibs -XF86SERVERSYSLIBS = $(SYSLIBS) $(LIBDL) $(LIBREGEX) -XF86SERVERLIBS = $(XF86DRVLIBS) $(XF86IDRVLIBS) $(XF86LIBS) $(XF86LOADERLIB) \ - $(XF86COMLIB) $(XF86MAINLIBS) $(XF86SCANLIB) $(XF86OSLIB) -#else -XF86MAINLIBS = MiExtLibs AllFBLibs $(XF86COMLIB) $(MI) -XF86SERVERSYSLIBS = $(FONTLIBS) $(SYSLIBS) $(LIBDL) $(LIBREGEX) -XF86SERVERLIBS = $(XF86DRVLIBS) $(XF86IDRVLIBS) $(XF86LIBS) $(XF86LOADERLIB) \ - $(XF86COMLIB) $(XF86MAINLIBS) $(XF86SCANLIB) $(XF86OSLIB) \ - $(XF86DDCLIB) -#endif -XF86SERVEROBJS = $(XF86XKBOBJS) $(XF86DRVOBJS) $(XF86IDRVOBJS) -#if HasParallelMake -MakeMutex($(XF86SERVERSUBDIRS) $(XF86SERVERLIBS) $(XF86SERVERSYSLIBS)) -#endif -#if ForceServerRemake -$(XF86SERVERLIBS) $(XF86SERVERSYSLIBS):: $(XF86SERVERSUBDIRS) - @if [ -f $@ ]; then touch $@ >/dev/null 2>&1 || exit 0; fi -#endif -SetUIDServerTarget(Xorg,$(XF86SERVERSUBDIRS),$(XF86SERVEROBJS) $(SERVERDEFFILE), \ - $(XF86SERVERLIBS),$(XF86SERVERSYSLIBS)) -#if DoLoadableServer -ServerDriverSDKTarget(Xorg) -#endif -#ifndef ServerToInstall -#define ServerToInstall Xorg -#endif -#endif /* XorgServer */ - #if defined(NXAgentServer) && NXAgentServer XCOMM XCOMM Nested server with NXlib-based ddx and compressed transport. -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit a77ca871c6c1b0d6d866f95e4eb6e013f92e9627 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Apr 21 15:28:25 2015 +0200 fix for Xcursor clean-up (422fe90) --- nx-X11/lib/Xcomposite/Imakefile | 2 +- nx-X11/lib/Xdamage/Imakefile | 2 +- nx-X11/lib/Xfixes/Imakefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nx-X11/lib/Xcomposite/Imakefile b/nx-X11/lib/Xcomposite/Imakefile index a3b9414..0f3c44d 100644 --- a/nx-X11/lib/Xcomposite/Imakefile +++ b/nx-X11/lib/Xcomposite/Imakefile @@ -59,7 +59,7 @@ all:: xcomposite.pc xcomposite.pc: xcomposite.pc.in RemoveFile($@) - sh ../Xcursor/config-subst $(SUBSTVARS) < xcomposite.pc.in > $@ + sh ../Xrender/config-subst $(SUBSTVARS) < xcomposite.pc.in > $@ InstallNonExecFile(xcomposite.pc,$(USRLIBDIR)/pkgconfig) diff --git a/nx-X11/lib/Xdamage/Imakefile b/nx-X11/lib/Xdamage/Imakefile index d0d767a..f6ad0d2 100644 --- a/nx-X11/lib/Xdamage/Imakefile +++ b/nx-X11/lib/Xdamage/Imakefile @@ -59,7 +59,7 @@ all:: xdamage.pc xdamage.pc: xdamage.pc.in RemoveFile($@) - sh ../Xcursor/config-subst $(SUBSTVARS) < xdamage.pc.in > $@ + sh ../Xrender/config-subst $(SUBSTVARS) < xdamage.pc.in > $@ InstallNonExecFile(xdamage.pc,$(USRLIBDIR)/pkgconfig) diff --git a/nx-X11/lib/Xfixes/Imakefile b/nx-X11/lib/Xfixes/Imakefile index bbf88e1..3dc1bd9 100644 --- a/nx-X11/lib/Xfixes/Imakefile +++ b/nx-X11/lib/Xfixes/Imakefile @@ -66,7 +66,7 @@ all:: xfixes.pc xfixes.pc: xfixes.pc.in RemoveFile($@) - sh ../Xcursor/config-subst $(SUBSTVARS) < xfixes.pc.in > $@ + sh ../Xrender/config-subst $(SUBSTVARS) < xfixes.pc.in > $@ InstallNonExecFile(xfixes.pc,$(USRLIBDIR)/pkgconfig) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 70b77a0fc329e2e205a596a738c7307d354e7b1c Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Apr 14 09:24:55 2015 +0200 library clean-up: Don't build and link libXfont.a anymore. Use system's libXfont shared library and link dynamically. --- debian/control | 4 +- debian/rules | 1 - nx-X11/Imakefile | 3 - nx-X11/config/cf/Imake.rules | 21 - nx-X11/config/cf/Imake.tmpl | 8 - nx-X11/config/cf/README | 8 - nx-X11/config/cf/X11.tmpl | 1036 +------ nx-X11/config/cf/host.def | 150 - nx-X11/config/cf/linux.cf | 8 - nx-X11/config/cf/xf86site.def | 111 - nx-X11/config/cf/xfree86.cf | 52 - nx-X11/config/cf/xorg.cf | 52 - nx-X11/config/cf/xorgsite.def | 137 - nx-X11/include/Imakefile | 2 +- nx-X11/include/extensions/Imakefile | 2 +- nx-X11/include/fonts/FS.h | 132 - nx-X11/include/fonts/FSproto.h | 816 ------ nx-X11/include/fonts/Imakefile | 22 - nx-X11/include/fonts/font.h | 169 -- nx-X11/include/fonts/fontproto.h | 93 - nx-X11/include/fonts/fontstruct.h | 295 -- nx-X11/include/fonts/fsmasks.h | 98 - nx-X11/lib/Imakefile | 36 +- nx-X11/lib/Xrender/Imakefile | 7 - nx-X11/lib/font/Imakefile | 178 -- nx-X11/lib/font/Speedo/Imakefile | 46 - nx-X11/lib/font/Speedo/adobe-iso.h | 200 -- nx-X11/lib/font/Speedo/bics-iso.h | 224 -- nx-X11/lib/font/Speedo/bics-unicode.c | 138 - nx-X11/lib/font/Speedo/bics-unicode.h | 3 - nx-X11/lib/font/Speedo/do_char.c | 1016 ------- nx-X11/lib/font/Speedo/do_trns.c | 512 ---- nx-X11/lib/font/Speedo/htest.c | 361 --- nx-X11/lib/font/Speedo/iface.c | 650 ----- nx-X11/lib/font/Speedo/keys.h | 56 - nx-X11/lib/font/Speedo/module/Imakefile | 47 - nx-X11/lib/font/Speedo/module/speedomod.c | 72 - nx-X11/lib/font/Speedo/nsample.c | 745 ----- nx-X11/lib/font/Speedo/out_bl2d.c | 772 ----- nx-X11/lib/font/Speedo/out_blk.c | 706 ----- nx-X11/lib/font/Speedo/out_outl.c | 290 -- nx-X11/lib/font/Speedo/out_scrn.c | 1090 ------- nx-X11/lib/font/Speedo/out_util.c | 341 --- nx-X11/lib/font/Speedo/reset.c | 131 - nx-X11/lib/font/Speedo/set_spcs.c | 773 ----- nx-X11/lib/font/Speedo/set_trns.c | 1324 --------- nx-X11/lib/font/Speedo/spdo_prv.h | 421 --- nx-X11/lib/font/Speedo/speedo.h | 890 ------ nx-X11/lib/font/Speedo/spencode.c | 67 - nx-X11/lib/font/Speedo/sperr.c | 127 - nx-X11/lib/font/Speedo/spfile.c | 460 --- nx-X11/lib/font/Speedo/spfont.c | 453 --- nx-X11/lib/font/Speedo/spfuncs.c | 167 -- nx-X11/lib/font/Speedo/spglyph.c | 399 --- nx-X11/lib/font/Speedo/spinfo.c | 462 --- nx-X11/lib/font/Speedo/spint.h | 180 -- nx-X11/lib/font/Speedo/sptobdf.c | 678 ----- nx-X11/lib/font/Speedo/useropt.h | 41 - nx-X11/lib/font/Type1/AFM.h | 62 - nx-X11/lib/font/Type1/Imakefile | 91 - nx-X11/lib/font/Type1/afm.c | 200 -- nx-X11/lib/font/Type1/arith.c | 486 ---- nx-X11/lib/font/Type1/arith.h | 77 - nx-X11/lib/font/Type1/blues.h | 95 - nx-X11/lib/font/Type1/cidchar.c | 621 ---- nx-X11/lib/font/Type1/cluts.h | 35 - nx-X11/lib/font/Type1/curves.c | 228 -- nx-X11/lib/font/Type1/curves.h | 44 - nx-X11/lib/font/Type1/digit.h | 64 - nx-X11/lib/font/Type1/fontfcn.c | 709 ----- nx-X11/lib/font/Type1/fontfcn.h | 250 -- nx-X11/lib/font/Type1/fonts.h | 49 - nx-X11/lib/font/Type1/hdigit.h | 94 - nx-X11/lib/font/Type1/hints.c | 890 ------ nx-X11/lib/font/Type1/hints.h | 48 - nx-X11/lib/font/Type1/lines.c | 189 -- nx-X11/lib/font/Type1/lines.h | 39 - nx-X11/lib/font/Type1/minimain.c | 48 - nx-X11/lib/font/Type1/module/Imakefile | 99 - nx-X11/lib/font/Type1/module/type1mod.c | 91 - nx-X11/lib/font/Type1/objects.c | 1101 ------- nx-X11/lib/font/Type1/objects.h | 354 --- nx-X11/lib/font/Type1/paths.c | 1406 --------- nx-X11/lib/font/Type1/paths.h | 239 -- nx-X11/lib/font/Type1/pictures.h | 50 - nx-X11/lib/font/Type1/range.h | 48 - nx-X11/lib/font/Type1/regions.c | 1651 ----------- nx-X11/lib/font/Type1/regions.h | 250 -- nx-X11/lib/font/Type1/scanfont.c | 2370 --------------- nx-X11/lib/font/Type1/spaces.c | 998 ------- nx-X11/lib/font/Type1/spaces.h | 172 -- nx-X11/lib/font/Type1/strokes.h | 38 - nx-X11/lib/font/Type1/t1funcs.c | 1668 ----------- nx-X11/lib/font/Type1/t1hdigit.h | 40 - nx-X11/lib/font/Type1/t1imager.h | 84 - nx-X11/lib/font/Type1/t1info.c | 1096 ------- nx-X11/lib/font/Type1/t1intf.h | 143 - nx-X11/lib/font/Type1/t1io.c | 388 --- nx-X11/lib/font/Type1/t1malloc.c | 759 ----- nx-X11/lib/font/Type1/t1snap.c | 85 - nx-X11/lib/font/Type1/t1stdio.h | 101 - nx-X11/lib/font/Type1/t1stub.c | 56 - nx-X11/lib/font/Type1/t1test.c | 246 -- nx-X11/lib/font/Type1/t1unicode.c | 251 -- nx-X11/lib/font/Type1/t1unicode.h | 25 - nx-X11/lib/font/Type1/token.c | 1208 -------- nx-X11/lib/font/Type1/token.h | 79 - nx-X11/lib/font/Type1/tokst.h | 510 ---- nx-X11/lib/font/Type1/trig.h | 41 - nx-X11/lib/font/Type1/type1.c | 1892 ------------ nx-X11/lib/font/Type1/util.c | 222 -- nx-X11/lib/font/Type1/util.h | 217 -- nx-X11/lib/font/bitmap/Imakefile | 71 - nx-X11/lib/font/bitmap/bdfint.h | 90 - nx-X11/lib/font/bitmap/bdfread.c | 967 ------- nx-X11/lib/font/bitmap/bdfutils.c | 340 --- nx-X11/lib/font/bitmap/bitmap.c | 160 -- nx-X11/lib/font/bitmap/bitmapfunc.c | 240 -- nx-X11/lib/font/bitmap/bitmaputil.c | 232 -- nx-X11/lib/font/bitmap/bitscale.c | 1978 ------------- nx-X11/lib/font/bitmap/fontink.c | 219 -- nx-X11/lib/font/bitmap/module/Imakefile | 45 - nx-X11/lib/font/bitmap/module/bitmapmod.c | 76 - nx-X11/lib/font/bitmap/pcf.h | 100 - nx-X11/lib/font/bitmap/pcfread.c | 997 ------- nx-X11/lib/font/bitmap/pcfwrite.c | 468 --- nx-X11/lib/font/bitmap/snfread.c | 514 ---- nx-X11/lib/font/bitmap/snfstr.h | 185 -- nx-X11/lib/font/builtins/Imakefile | 17 - nx-X11/lib/font/builtins/buildfont | 14 - nx-X11/lib/font/builtins/builtin.h | 60 - nx-X11/lib/font/builtins/dir.c | 64 - nx-X11/lib/font/builtins/file.c | 139 - nx-X11/lib/font/builtins/fonts.c | 2438 ---------------- nx-X11/lib/font/builtins/fpe.c | 98 - nx-X11/lib/font/builtins/render.c | 114 - nx-X11/lib/font/fc/Imakefile | 31 - nx-X11/lib/font/fc/fsconvert.c | 774 ----- nx-X11/lib/font/fc/fserve.c | 3480 ----------------------- nx-X11/lib/font/fc/fserve.h | 96 - nx-X11/lib/font/fc/fservestr.h | 211 -- nx-X11/lib/font/fc/fsio.c | 516 ---- nx-X11/lib/font/fc/fsio.h | 187 -- nx-X11/lib/font/fc/fsio.h.NX.reference | 191 -- nx-X11/lib/font/fc/fsio.h.XF86.reference | 187 -- nx-X11/lib/font/fc/fslibos.h | 216 -- nx-X11/lib/font/fontcache/Imakefile | 29 - nx-X11/lib/font/fontcache/fcqueue.h | 133 - nx-X11/lib/font/fontcache/fontcache.c | 1022 ------- nx-X11/lib/font/fontcache/fontcache.h | 121 - nx-X11/lib/font/fontfile/Imakefile | 81 - nx-X11/lib/font/fontfile/bitsource.c | 174 -- nx-X11/lib/font/fontfile/bufio.c | 212 -- nx-X11/lib/font/fontfile/decompress.c | 415 --- nx-X11/lib/font/fontfile/defaults.c | 77 - nx-X11/lib/font/fontfile/dirfile.c | 495 ---- nx-X11/lib/font/fontfile/encparse.c | 966 ------- nx-X11/lib/font/fontfile/ffcheck.c | 171 -- nx-X11/lib/font/fontfile/fileio.c | 90 - nx-X11/lib/font/fontfile/filewr.c | 65 - nx-X11/lib/font/fontfile/fontdir.c | 832 ------ nx-X11/lib/font/fontfile/fontenc.c | 952 ------- nx-X11/lib/font/fontfile/fontencI.h | 46 - nx-X11/lib/font/fontfile/fontencc.c | 77 - nx-X11/lib/font/fontfile/fontfile.c | 1147 -------- nx-X11/lib/font/fontfile/fontscale.c | 447 --- nx-X11/lib/font/fontfile/gunzip.c | 227 -- nx-X11/lib/font/fontfile/module/Imakefile | 21 - nx-X11/lib/font/fontfile/printerfont.c | 178 -- nx-X11/lib/font/fontfile/register.c | 107 - nx-X11/lib/font/fontfile/renderers.c | 117 - nx-X11/lib/font/include/Imakefile | 11 - nx-X11/lib/font/include/bitmap.h | 116 - nx-X11/lib/font/include/bufio.h | 92 - nx-X11/lib/font/include/fntfil.h | 178 -- nx-X11/lib/font/include/fntfilio.h | 56 - nx-X11/lib/font/include/fntfilst.h | 198 -- nx-X11/lib/font/include/fontencc.h | 36 - nx-X11/lib/font/include/fontmisc.h | 133 - nx-X11/lib/font/include/fontmod.h | 16 - nx-X11/lib/font/include/fontshow.h | 37 - nx-X11/lib/font/include/fontutil.h | 26 - nx-X11/lib/font/include/fontxlfd.h | 100 - nx-X11/lib/font/stubs/Imakefile | 25 - nx-X11/lib/font/stubs/cauthgen.c | 14 - nx-X11/lib/font/stubs/csignal.c | 14 - nx-X11/lib/font/stubs/delfntcid.c | 13 - nx-X11/lib/font/stubs/errorf.c | 13 - nx-X11/lib/font/stubs/fatalerror.c | 13 - nx-X11/lib/font/stubs/findoldfnt.c | 14 - nx-X11/lib/font/stubs/getcres.c | 14 - nx-X11/lib/font/stubs/getdefptsize.c | 14 - nx-X11/lib/font/stubs/getnewfntcid.c | 14 - nx-X11/lib/font/stubs/gettime.c | 14 - nx-X11/lib/font/stubs/initfshdl.c | 15 - nx-X11/lib/font/stubs/regfpefunc.c | 28 - nx-X11/lib/font/stubs/rmfshdl.c | 15 - nx-X11/lib/font/stubs/servclient.c | 3 - nx-X11/lib/font/stubs/setfntauth.c | 14 - nx-X11/lib/font/stubs/stfntcfnt.c | 14 - nx-X11/lib/font/stubs/stubs.h | 27 - nx-X11/lib/font/stubs/xpstubs.c | 24 - nx-X11/lib/font/util/Imakefile | 43 - nx-X11/lib/font/util/atom.c | 233 -- nx-X11/lib/font/util/fontaccel.c | 107 - nx-X11/lib/font/util/fontnames.c | 123 - nx-X11/lib/font/util/fontutil.c | 443 --- nx-X11/lib/font/util/fontxlfd.c | 637 ----- nx-X11/lib/font/util/format.c | 126 - nx-X11/lib/font/util/miscutil.c | 99 - nx-X11/lib/font/util/patcache.c | 221 -- nx-X11/lib/font/util/private.c | 107 - nx-X11/lib/font/util/utilbitmap.c | 188 -- nx-X11/programs/Xserver/GL/glx/Imakefile | 2 +- nx-X11/programs/Xserver/Imakefile | 26 +- nx-X11/programs/Xserver/Xext/Imakefile | 4 +- nx-X11/programs/Xserver/Xext/extmod/Imakefile | 2 +- nx-X11/programs/Xserver/composite/Imakefile | 2 +- nx-X11/programs/Xserver/dix/Imakefile | 2 +- nx-X11/programs/Xserver/dix/dixfonts.c | 17 +- nx-X11/programs/Xserver/fb/Imakefile | 2 +- nx-X11/programs/Xserver/hw/nxagent/Font.c | 4 +- nx-X11/programs/Xserver/hw/nxagent/Font.h | 2 +- nx-X11/programs/Xserver/hw/nxagent/GC.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/Imakefile | 13 +- nx-X11/programs/Xserver/hw/nxagent/Init.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c | 18 +- nx-X11/programs/Xserver/mi/Imakefile | 4 +- nx-X11/programs/Xserver/miext/damage/Imakefile | 2 +- nx-X11/programs/Xserver/os/Imakefile | 2 +- nx-X11/programs/Xserver/randr/Imakefile | 4 +- nx-X11/programs/Xserver/render/Imakefile | 4 +- nx-libs.spec | 33 +- 233 files changed, 50 insertions(+), 67022 deletions(-) diff --git a/debian/control b/debian/control index 65a8f94..9572f7c 100644 --- a/debian/control +++ b/debian/control @@ -12,12 +12,10 @@ Build-Depends: libjpeg-dev, zlib1g-dev, quilt (>= 0.46-7~), - libfontconfig1-dev, - libfontenc-dev, - libfreetype6-dev, libxmltok1-dev, libxml2-dev, libxpm-dev, + libxfont-dev, autoconf, pkg-config, x11proto-core-dev, diff --git a/debian/rules b/debian/rules index e58b791..6d076a1 100755 --- a/debian/rules +++ b/debian/rules @@ -64,7 +64,6 @@ override_dh_install: rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xf86bigfstr.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/xf86bigfont.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/XI.h - rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/fonts/ rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/Xtrans/ dh_install --fail-missing diff --git a/nx-X11/Imakefile b/nx-X11/Imakefile index 3cb1e1b..46ca9e7 100644 --- a/nx-X11/Imakefile +++ b/nx-X11/Imakefile @@ -15,9 +15,6 @@ RELEASE = XOrgReleaseString #endif #if !BuildServersOnly -#if BuildFonts - FONTSDIR = fonts -#endif #ifndef Win32Architecture #if BuildDocs DOCSDIR = doc diff --git a/nx-X11/config/cf/Imake.rules b/nx-X11/config/cf/Imake.rules index 3923e4a..e023b6d 100644 --- a/nx-X11/config/cf/Imake.rules +++ b/nx-X11/config/cf/Imake.rules @@ -2119,16 +2119,6 @@ Concat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) @@\ LintLibReferences(varname,libname,libsource) #endif - /* - * ProjectUnsharedFontLibReferences - unshared font libraries - */ -#ifndef ProjectUnsharedFontLibReferences -#define ProjectUnsharedFontLibReferences() @@\ -DEPFONTLIB = _UseCat($(USRLIBDIR)/,XBuildLibDir/,LibraryTargetName(NX_Xfont)) @@\ -FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lNX_Xfont @@\ -LintLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC)) -#endif - /* * SharedLibDependencies - shared library dependencies */ @@ -2137,17 +2127,6 @@ LintLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC)) #endif /* - * SharedFontLibReferences - shared font libraries - */ -#ifndef SharedFontLibReferences -#define SharedFontLibReferences() @@\ -SOFONTREV = SharedFontRev @@\ -DEPFONTLIB = SharedLibDependencies(NX_Xfont,$(FONTLIBSRC),SOFONTREV) @@\ -FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) LoaderLibPrefix -lNX_Xfont @@\ -LintLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC)) -#endif - -/* * SharedDSLibDependencies - shared library dependencies with data separation */ #ifndef SharedDSLibDependencies diff --git a/nx-X11/config/cf/Imake.tmpl b/nx-X11/config/cf/Imake.tmpl index 5956172..4a9e985 100644 --- a/nx-X11/config/cf/Imake.tmpl +++ b/nx-X11/config/cf/Imake.tmpl @@ -602,14 +602,6 @@ XCOMM deprecated; please strongly consider using vendor-supplied packages. #ifndef GzipLibrary /* if OS config didn't define it, assume it's -lz */ #define GzipLibrary -lz #endif -/* If the system has the Freetype2 library - if NO, the copy in extras is built */ -#ifndef HasFreetype2 -#define HasFreetype2 YES -#endif -/* If the system has the Fontconfig library - if NO, the copy in extras is built */ -#ifndef HasFontconfig -#define HasFontconfig NO -#endif /* If the system has the PNG library - if NO, xcursorgen is not built */ #ifndef HasLibpng #define HasLibpng NO diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index a314903..80113a9 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -178,7 +178,6 @@ X11.tmpl provides defaults for the following variables: BuildDBE build DOUBLE-BUFFER extension BuildDmx build Distributed Multihead X server and extension BuildDPMS build Display Power Management Signaling extension - BuildFonts build pcf fonts BuildIncRoot relative path to location of headers in build BuildIncTop path from build includes directory to top BuildEVI build EVI server extension @@ -214,7 +213,6 @@ X11.tmpl provides defaults for the following variables: DebugLibXag build libXag_d.a DebugOldX build liboldX_d.a DefaultCursorTheme name of default cursor theme - DefaultFSConfigFile default font server config file DefaultFontPath default server font path DefaultRGBDatabase default server rgb color database DefaultSystemPath default system xdm PATH environment variable @@ -226,13 +224,7 @@ X11.tmpl provides defaults for the following variables: DriverManSuffix man suffix for driver pages ExtensionDefines -D's for universal extensions ExtensionOSDefines -D's for additional extensions - FontCompilerFlags flags for bdftosnf - FontDefines -D's to turn on font options - FontDir directory in which to install fonts - FontFilters -D's to specify font conversion filters - FontOSDefines -D's for which fonts to support ForceNormalLib force building of .a in addition to shared lib - GzipFontCompression boolean for using gzip instead of compress HasXdmAuth boolean for using XDM-AUTHORIZATION-1; needs Wraphelp.c, see Release Notes InstallAppDefFiles install new app defaults files over old? diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl index b6ff72e..30b0451 100644 --- a/nx-X11/config/cf/X11.tmpl +++ b/nx-X11/config/cf/X11.tmpl @@ -23,20 +23,6 @@ XCOMM $XFree86: xc/config/cf/X11.tmpl,v 1.248 2004/02/16 04:07:37 dawes Exp $ * * InstallAppDefaults (class) * InstallAppDefaultsLong (file,class) - * MakeFontsDir (deplist) - * MakeFcCache (deplist) - * MakeFonts () - * InstallFontObjs (objs,dest) - * InstallFonts (dest) - * InstallFontAliases (dest) - * InstallFcCache (dest) - * FontSrc (basename) - * FontBaseObj (basename) - * InstallFontScale (dest) - * UncompressedFontTarget (basename) - * CompressedFontTarget (basename) - * FontTarget (basename) - * FontObj (basename) * MakeXkbDir (basedir,subdir) */ @@ -144,144 +130,6 @@ XORGRELSTRING = XorgManVersionString #ifndef BuildLibrariesForXServers #define BuildLibrariesForXServers BuildServer #endif -#ifndef XserverStaticFontLib -#define XserverStaticFontLib YES -#endif -#ifndef BuildSpeedo -#define BuildSpeedo NO -#endif -#ifndef BuildType1 -#define BuildType1 NO -#endif -#ifndef BuildCID -#define BuildCID YES -#endif -#ifndef BuildFreeType -#define BuildFreeType NO -#endif -#ifndef BuildBuiltinFonts -#define BuildBuiltinFonts NO -#endif -#ifndef BuildFonts -#define BuildFonts BuildServer -#endif -#ifndef Build75DpiFonts -#define Build75DpiFonts YES -#endif -#ifndef Build100DpiFonts -#define Build100DpiFonts YES -#endif -#ifndef BuildSpeedoFonts -#define BuildSpeedoFonts NO -#endif -#ifndef BuildType1Fonts -#define BuildType1Fonts YES -#endif -#ifndef BuildCIDFonts -#define BuildCIDFonts YES -#endif -#ifndef BuildTrueTypeFonts -#define BuildTrueTypeFonts YES -#endif -#ifndef BuildBethMarduthoFonts -#define BuildBethMarduthoFonts NO -#endif -#ifndef BuildEthiopicFonts -#define BuildEthiopicFonts NO -#endif -#ifndef BuildCyrillicFonts -#define BuildCyrillicFonts YES -#endif -/* Some bdf font generation details. The scripts for this require perl. */ -#ifndef TruncateUCSFonts -#define TruncateUCSFonts HasPerl5 -#endif -#ifndef MaxUCSChar -#define MaxUCSChar 0x3200 -#endif -#ifndef DerivedUCSFonts -#define DerivedUCSFonts YES -#endif -/* These primarily control generation of derived 8-bit fonts. */ -#ifndef BuildUCSFonts -#define BuildUCSFonts YES -#endif -/* Setting BuildISO8859_1Fonts to NO may result in problems. */ -#ifndef BuildISO8859_1Fonts -#define BuildISO8859_1Fonts YES -#endif -#ifndef BuildISO8859_2Fonts -#define BuildISO8859_2Fonts YES -#endif -#ifndef BuildISO8859_3Fonts -#define BuildISO8859_3Fonts YES -#endif -#ifndef BuildISO8859_4Fonts -#define BuildISO8859_4Fonts YES -#endif -#ifndef BuildISO8859_5Fonts -#define BuildISO8859_5Fonts BuildCyrillicFonts -#endif -#ifndef BuildArabicFonts -#define BuildArabicFonts YES -#endif -#ifndef BuildISO8859_6Fonts -#define BuildISO8859_6Fonts BuildArabicFonts -#endif -#ifndef BuildGreekFonts -#define BuildGreekFonts YES -#endif -#ifndef BuildISO8859_7Fonts -#define BuildISO8859_7Fonts BuildGreekFonts -#endif -#ifndef BuildHebrewFonts -#define BuildHebrewFonts YES -#endif -#ifndef BuildISO8859_8Fonts -#define BuildISO8859_8Fonts BuildHebrewFonts -#endif -#ifndef BuildISO8859_9Fonts -#define BuildISO8859_9Fonts YES -#endif -#ifndef BuildISO8859_10Fonts -#define BuildISO8859_10Fonts YES -#endif -#ifndef BuildThaiFonts -#define BuildThaiFonts YES -#endif -#ifndef BuildISO8859_11Fonts -#define BuildISO8859_11Fonts BuildThaiFonts -#endif -#ifndef BuildISO8859_13Fonts -#define BuildISO8859_13Fonts YES -#endif -#ifndef BuildISO8859_14Fonts -#define BuildISO8859_14Fonts YES -#endif -#ifndef BuildISO8859_15Fonts -#define BuildISO8859_15Fonts YES -#endif -#ifndef BuildISO8859_16Fonts -#define BuildISO8859_16Fonts YES -#endif -#ifndef BuildKOI8_RFonts -#define BuildKOI8_RFonts BuildCyrillicFonts -#endif -#ifndef BuildJapaneseFonts -#define BuildJapaneseFonts YES -#endif -#ifndef BuildJISX0201Fonts -#define BuildJISX0201Fonts BuildJapaneseFonts -#endif -#ifndef BuildKoreanFonts -#define BuildKoreanFonts YES -#endif -#ifndef BuildChineseFonts -#define BuildChineseFonts YES -#endif -#ifndef MakeLocalFontDir -#define MakeLocalFontDir YES -#endif #ifndef HasXAudio #define HasXAudio NO #endif @@ -366,35 +214,9 @@ XORGRELSTRING = XorgManVersionString #ifndef BuildDPMS #define BuildDPMS YES #endif -#ifndef BuildFontLib -#if (!defined(XF86Server) || !XF86Server) && (!defined (XorgServer) || !XorgServer) -#define BuildFontLib (BuildLibraries || BuildServer) -#else -#define BuildFontLib (BuildLibraries || (BuildServer && !DoLoadableServer)) -#endif -#endif #ifndef BuildFontCache #define BuildFontCache NO #endif -#ifndef BuildFontCacheLib -#define BuildFontCacheLib (BuildFontCache && !BuildServersOnly) -#endif -#ifndef BuildFontEncLib -#define BuildFontEncLib BuildLibraries -#endif -/* - * This enables binary compatibility with the older (XFree86 <= 4.1) fontenc - * entry points in the Xfont library (and X server). If this is turned off, - * then SharedFontRev should have it's major revision bumped, and the - * XFree86 font module ABI (in xfree86/common/xf86Module.h) should have it's - * major revision bumped. - * - * Note: this does not enable those older functions in the separate libfontenc - * library (which didn't exist previously). - */ -#ifndef FontencCompatibility -#define FontencCompatibility YES -#endif #ifndef BuildLBX #define BuildLBX YES #endif @@ -580,40 +402,16 @@ XORGRELSTRING = XorgManVersionString #ifndef BuildRenderLibrary #define BuildRenderLibrary !BuildServersOnly #endif -#ifndef BuildXftLibrary -#define BuildXftLibrary BuildRenderLibrary -#endif -#ifndef BuildXft1Library -#define BuildXft1Library BuildRenderLibrary -#endif -#ifndef UseFontconfig -#define UseFontconfig BuildXftLibrary -#endif -#ifndef BuildFontconfigLibrary -#define BuildFontconfigLibrary (UseFontconfig && !HasFontconfig) -#endif -#ifndef UseFreetype2 -#define UseFreetype2 (BuildXftLibrary || BuildXft1Library || \ - UseFontconfig || BuildFreeType) -#endif -#ifndef InstallFontconfigLibrary -# define InstallFontconfigLibrary YES -#endif + #ifndef HasExpat #define HasExpat YES #endif #ifndef UseExpat -#define UseExpat (UseFontconfig || BuildXF86DRI) +#define UseExpat BuildXF86DRI #endif #ifndef BuildExpatLibrary #define BuildExpatLibrary (UseExpat && !HasExpat) #endif -#ifndef BuildFreetype2Library -#define BuildFreetype2Library (UseFreetype2 && !HasFreetype2) -#endif -#ifndef Freetype2BuildDefines -#define Freetype2BuildDefines /**/ -#endif #ifndef BuildRandR #define BuildRandR YES @@ -739,9 +537,6 @@ XORGRELSTRING = XorgManVersionString #ifndef UseConfDirForXkb #define UseConfDirForXkb YES #endif -#ifndef CompressAllFonts -#define CompressAllFonts NO -#endif #ifndef ThreadedX #if HasPosixThreads || HasCThreads #define ThreadedX YES /* multi-threaded libraries */ @@ -795,9 +590,6 @@ XORGRELSTRING = XorgManVersionString #ifndef ServerErrorDefines #define ServerErrorDefines /**/ #endif -#ifndef FontCompilerFlags -#define FontCompilerFlags -t -#endif /* * NOTE: IPv6Flags could be tacked on to either ConnectionFlags or * ExtraConnectionDefs. Here, we choose the later in order to @@ -849,12 +641,6 @@ FCHOWN_DEFINES = -DHAS_FCHOWN #ifndef ProjectThreadsDefines #define ProjectThreadsDefines -DXTHREADS #endif -#ifndef FontOSDefines -#define FontOSDefines /**/ -#endif -#ifndef FontDefines -#define FontDefines -DFONT_SNF -DFONT_BDF -DFONT_PCF -DCOMPRESSED_FONTS FontOSDefines -#endif #ifndef XawI18nDefines #if SystemV4 #define XawI18nDefines -DHAS_WCTYPE_H @@ -1627,44 +1413,26 @@ XCOMM X Window System make variables; these need to be coordinated with rules LBXPROXYDIR = LbxproxyDir /* lbxproxy files */ PROXYMANAGERDIR = ProxyManagerDir /* proxy manager config files */ XAPPLOADDIR = XAppLoadDir /* application default resource dir */ - FONTCFLAGS = FontCompilerFlags INSTAPPFLAGS = $(INSTDATFLAGS) /* XXX - this should go away - XXX */ #if UseInstalledX11 RGB = $(XBINDIR)/rgb - FONTC = $(XBINDIR)/bdftopcf - MKFONTSCALE = $(XBINDIR)/mkfontscale - MKFONTDIR = $(XBINDIR)/mkfontdir MKHTMLINDEX = $(XBINDIR)/mkhtmlindex - UCS2ANY = $(XBINDIR)/ProgramTargetName(ucs2any) - BDFTRUNCATE = $(XBINDIR)/bdftruncate - UCSMAPPREFIX = $(FONTDIR)/util/map- XCURSORGEN = $(XBINDIR)/xcursorgen #else RGB = $(CLIENTENVSETUP) $(XBUILDBINDIR)/rgb # if !CrossCompiling - FONTC = $(CLIENTENVSETUP) $(PRELOADFONTSETUP) $(XBUILDBINDIR)/bdftopcf - MKFONTSCALE = $(CLIENTENVSETUP) $(PRELOADFREETYPESETUP) $(XBUILDBINDIR)/mkfontscale - MKFONTDIR = $(MKFONTSCALE) -b -s -l XCURSORGEN = $(CLIENTENVSETUP) $(PRELOADSETUP) $(XBUILDBINDIR)/xcursorgen - UCS2ANY = $(XBUILDBINDIR)/ProgramTargetName(ucs2any) # elif UseInstalledOnCrossCompile - MKFONTDIR = $(XBINDIR)/mkfontdir - MKFONTSCALE = $(XBINDIR)/mkfontscale - FONTC = $(XBINDIR)/bdftopcf XCURSORGEN = $(XBINDIR)/xcursorgen - UCS2ANY = $(XBINDIR)/ucs2any # endif # if HasPerl MKHTMLINDEX = RunPerlScript($(CONFIGSRC)/util/mkhtmlindex.pl,) # else MKHTMLINDEX = $(SHELL) $(CONFIGSRC)/util/mkhtmlindex.sh # endif - BDFTRUNCATE = $(FONTSRC)/util/bdftruncate.pl - UCSMAPPREFIX = $(FONTSRC)/util/map- #endif - HTMLINDEXCMD = HtmlIndexCmd DOCUTILSRC = $(XTOP)/doc/util @@ -1674,8 +1442,6 @@ XCOMM X Window System make variables; these need to be coordinated with rules XIDXMACROS = $(DOCUTILSRC)/indexmacros.t PROGRAMSRC = $(TOP)/programs LIBSRC = $(XTOP)/lib - FONTSRC = $(XTOP)/fonts - ENCODINGSSRC = $(FONTSRC)/encodings INCLUDESRC = BuildIncDir XINCLUDESRC = $(INCLUDESRC)/X11 SERVERSRC = $(XTOP)/programs/Xserver @@ -1683,11 +1449,7 @@ XCOMM X Window System make variables; these need to be coordinated with rules UNSUPPORTEDSRC = UnsupportedDir DOCSRC = $(XTOP)/doc RGBSRC = $(XTOP)/programs/rgb - BDFTOPCFSRC = $(PROGRAMSRC)/bdftopcf - MKFONTDIRSRC = $(PROGRAMSRC)/mkfontdir - FONTINCSRC = $(XTOP)/include/fonts EXTINCSRC = $(XTOP)/include/extensions - FTSOURCEDIR = FreeTypeSrcDir DRMSRCDIR = DRMSrcDir MESASRCDIR = MesaSrcDir OGLSAMPLESRCDIR = OglSampleSrcDir @@ -1740,15 +1502,6 @@ VENDORSUPPORTDEFS = VendorSupportDefines #ifdef PreloadSetup PRELOADSETUP = PreloadSetup #endif -#ifdef PreloadFontSetup - PRELOADFONTSETUP = PreloadFontSetup -#endif -#ifdef PreloadFreetypeSetup - PRELOADFREETYPESETUP = PreloadFreetypeSetup -#endif -#ifdef PreloadXFTSetup - PRELOADXFTSETUP = PreloadXFTSetup -#endif #ifndef ShLibIncludeFile /* need this to make ANSI-style preprocessors happy */ @@ -2663,29 +2416,6 @@ SharedLibReferences(WINDOWSWM,NX_WindowsWM,$(WINDOWSWMLIBSRC),SOWINDOWSWMREV,Sha ProjectUnsharedLibReferences(WINDOWSWM,NX_WindowsWM,$(WINDOWSWMLIBSRC),XBuildLibDir) #endif -# ifndef SharedLibXfontcache -# define SharedLibXfontcache HasSharedLibraries -# endif -# ifndef NormalLibXfontcache -# define NormalLibXfontcache (!SharedLibXfontcache || ForceNormalLib) -# endif -# ifndef DebugLibXfontcache -# define DebugLibXfontcache NO -# endif -# ifndef ProfileLibXfontcache -# define ProfileLibXfontcache NO -# endif - - XFONTCACHELIBSRC = $(LIBSRC)/Xfontcache -#if SharedLibXfontcache -#ifndef SharedXfontcacheRev -#define SharedXfontcacheRev 1.2 -#endif -SharedLibReferences(XFONTCACHE,NX_Xfontcache,$(XFONTCACHELIBSRC),SOXFONTCACHEREV,SharedXfontcacheRev) -#else -ProjectUnsharedLibReferences(XFONTCACHE,NX_Xfontcache,$(XFONTCACHELIBSRC),XBuildLibDir) -#endif - #ifndef SharedLibXau #define SharedLibXau YES #endif @@ -3107,58 +2837,6 @@ SharedLibReferences(FS,NX_FS,$(FSLIBSRC),SOFSREV,SharedFSRev) ProjectUnsharedLibReferences(FS,NX_FS,$(FSLIBSRC),XBuildLibDir) #endif -#ifndef SharedLibFont -#define SharedLibFont HasSharedLibraries -#endif -#ifndef NormalLibFont -#define NormalLibFont (!SharedLibFont | ForceNormalLib | XserverStaticFontLib) -#endif -#ifndef DebugLibFont -#define DebugLibFont NO /* debugged Font library */ -#endif -#ifndef ProfileLibFont -#define ProfileLibFont NO /* profiled Font library */ -#endif - FONTLIBSRC = $(LIBSRC)/font -#if SharedLibFont -#ifndef SharedFontRev -#define SharedFontRev 1.5 -#endif -SharedFontLibReferences() -XCOMM SharedLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC),SOFONTREV,SharedFontRev) -#else -ProjectUnsharedFontLibReferences() -XCOMM ProjectUnsharedLibReferences(XFONT,NX_Xfont,$(FONTLIBSRC),XBuildLibDir) -#endif - - FONTSTUBLIBSRC = $(FONTLIBSRC)/stubs -ProjectUnsharedLibReferences(FONTSTUB,NX_fntstubs,$(FONTSUBLIBSRC),XBuildLibDir) - DEPFONTLIB = $(DEPXFONTLIB) $(DEPFONTSTUBLIB) - FONTLIB = $(XFONTLIB) $(FONTSTUBLIB) $(FREETYPE2LIB) - - -#ifndef SharedLibFontEnc -#define SharedLibFontEnc HasSharedLibraries -#endif -#ifndef NormalLibFontEnc -#define NormalLibFontEnc (!SharedLibFontEnc | ForceNormalLib) -#endif -#ifndef DebugLibFontEnc -#define DebugLibFontEnc NO /* debugged fontenc library */ -#endif -#ifndef ProfileLibFontEnc -#define ProfileLibFontEnc NO /* profiled fontenc library */ -#endif - FONTENCLIBSRC = $(LIBSRC)/fontenc -#if SharedLibFontEnc -#ifndef SharedFontEncRev -#define SharedFontEncRev 1.0 -#endif -SharedLibReferences(XFONTENC,NX_fontenc,$(FONTENCLIBSRC),SOFONTENCREV,SharedFontEncRev) -#else -ProjectUnsharedLibReferences(XFONTENC,NX_fontenc,$(FONTENCLIBSRC),XBuildLibDir) -#endif - #ifndef SharedLibXpm #define SharedLibXpm HasSharedLibraries #endif @@ -3181,121 +2859,6 @@ SharedLibReferences(XPM,Xpm,$(XPMLIBSRC),SOXPMREV,SharedXpmRev) ProjectUnsharedLibReferences(XPM,Xpm,$(XPMLIBSRC),XBuildLibDir) #endif -#if UseFreetype2 - -#if BuildFreetype2Library - -#ifndef SharedLibFreetype2 -#define SharedLibFreetype2 HasSharedLibraries -#endif -#ifndef NormalLibFreetype2 -#define NormalLibFreetype2 (!SharedLibFreetype2 | ForceNormalLib) -#endif -#ifndef DebugLibFreetype2 -#define DebugLibFreetype2 NO -#endif -#ifndef ProfileLibFreetype2 -#define ProfileLibFreetype2 NO -#endif - FREETYPE2LIBSRC = $(LIBSRC)/freetype2 - -/* - * FreeType 2.1.9 - * - * Get the library version information from version_info in - * in xc/extras/freetype2/builds/unix/configure.ac. - * - * current:revision:age = 9:7:3 - * - * The LibtoolMinorVersions revision is "(current - age).age". - * The !LibtoolMinorVersions revision is "current.0". - * Freetype2Version should be set to "current.revision.age" - */ -#ifndef Freetype2Version -#define Freetype2Version 9.7.3 -#endif - -#if SharedLibFreetype2 -#ifndef SharedLibtoolFreetype2Rev -#define SharedLibtoolFreetype2Rev 9:7:3 -#endif -#ifndef SharedFreetype2Rev -#if LibtoolMinorVersions -#define SharedFreetype2Rev 6.3.8 -#else -#define SharedFreetype2Rev 9.0 -#endif -#endif -SharedLibReferences(FREETYPE2,NX_freetype,$(FREETYPE2LIBSRC),SOFREETYPE2REV,SharedFreetype2Rev) -#else -ProjectUnsharedLibReferences(FREETYPE2,NX_freetype,$(FREETYPE2LIBSRC),XBuildLibDir) -#endif - -#ifdef UseInstalled -FREETYPE2INCDIR=$(INCDIR) -#else -FREETYPE2INCDIR=$(BUILDINCDIR) -#endif - -#else /* BuildFreetype2Library */ - -#if HasFreetype2 - -#ifndef Freetype2Dir -#define Freetype2Dir /usr -#ifndef Freetype2DirStandard -# define Freetype2DirStandard YES -#endif -#endif -#ifndef Freetype2DirStandard -#define Freetype2DirStandard NO -#endif - -#ifndef Freetype2LibDir -#define Freetype2LibDir Freetype2Dir/LibDirName -# if Freetype2DirStandard -# define Freetype2LibDirStandard YES -# endif -#endif -#ifndef Freetype2LibDirStandard -# define Freetype2LibDirStandard NO -#endif - -#ifndef Freetype2IncDir -#define Freetype2IncDir Freetype2Dir/include -# if Freetype2DirStandard -# define Freetype2IncDirStandard YES -# endif -#endif - -FREETYPE2DIR = Freetype2Dir -FREETYPE2LIBDIR = Freetype2LibDir -FREETYPE2INCDIR = Freetype2IncDir -#if Freetype2LibDirStandard -FREETYPE2LIB = -lfreetype -#else -FREETYPE2LIB = -L$(FREETYPE2LIBDIR) LinkerRuntimeLibraryPathFlag($(FREETYPE2LIBDIR)) -lfreetype -#endif - -#endif /* HasFreetype2 */ - -#endif /* else BuildFreetype2Library */ - -#ifndef Freetype2IncDirStandard -# define Freetype2IncDirStandard NO -#endif - -#if BuildFreetype2Library || HasFreetype2 -#if Freetype2IncDirStandard -FREETYPE2INCLUDES = -I$(FREETYPE2INCDIR)/freetype2 -I$(FREETYPE2INCDIR)/freetype2/config -#else -FREETYPE2INCLUDES = -I$(FREETYPE2INCDIR) -I$(FREETYPE2INCDIR)/freetype2 -I$(FREETYPE2INCDIR)/freetype2/config -#endif -FREETYPE2DEFINES = -DFREETYPE2 -#endif - -#endif /* UseFreetype2 */ - #if HasMotif #ifndef MotifDir @@ -3448,188 +3011,6 @@ EXPATDEFINES = -DEXPAT #endif /* UseExpat */ -#ifndef SharedLibXft1 -#define SharedLibXft1 HasSharedLibraries -#endif -#ifndef NormalLibXft1 -#define NormalLibXft1 NO -#endif -#ifndef DebugLibXft1 -#define DebugLibXft1 NO -#endif -#ifndef ProfileLibXft1 -#define ProfileLibXft1 NO -#endif - XFT1LIBSRC = $(LIBSRC)/Xft1 -#if SharedLibXft1 -#ifndef SharedXft1Rev -#define SharedXft1Rev 1.1 -#endif -SharedLibReferences(XFT1,NX_Xft,$(XFT1LIBSRC),SOXFT1REV,SharedXft1Rev) -#else -ProjectUnsharedLibReferences(XFT1,NX_Xft,$(XFT1LIBSRC),XBuildLibDir) -#endif - -#ifndef Xft1ClientDepLibs -#if UseFreetype2 -#define Xft1ClientDepLibs $(DEPXFT1LIB) $(DEPFREETYPE2LIB) $(DEPXRENDERLIB) -#else -#define Xft1ClientDepLibs $(DEPXFT1LIB) $(DEPXRENDERLIB) -#endif -#endif -#ifndef Xft1ClientLibs -#if UseFreetype2 -#define Xft1ClientLibs $(XFT1LIB) $(FREETYPE2LIB) $(XRENDERLIB) -#else -#define Xft1ClientLibs $(XFT1LIB) $(XRENDERLIB) -#endif -#endif - -#ifndef SharedLibXft -#define SharedLibXft HasSharedLibraries -#endif -#ifndef NormalLibXft -#define NormalLibXft (!SharedLibXft | ForceNormalLib) -#endif -#ifndef DebugLibXft -#define DebugLibXft NO -#endif -#ifndef ProfileLibXft -#define ProfileLibXft NO -#endif - XFTLIBSRC = $(LIBSRC)/Xft -#if SharedLibXft -#ifndef SharedXftRev -#define SharedXftRev 2.1.2 -#endif -SharedLibReferences(XFT,NX_Xft,$(XFTLIBSRC),SOXFTREV,SharedXftRev) -#else -ProjectUnsharedLibReferences(XFT,NX_Xft,$(XFTLIBSRC),XBuildLibDir) -#endif - -#ifndef XftClientDepLibs -#define XftClientDepLibs $(DEPXFTLIB) FontconfigClientDepLibs $(DEPXRENDERLIB) -#endif -#ifndef XftClientLibs -#define XftClientLibs $(XFTLIB) FontconfigClientLibs $(XRENDERLIB) -#endif - -#if UseFontconfig - -#if BuildFontconfigLibrary - -#ifndef SharedLibFontconfig -#define SharedLibFontconfig HasSharedLibraries -#endif -#ifndef NormalLibFontconfig -#define NormalLibFontconfig (!SharedLibFontconfig | ForceNormalLib) -#endif -#ifndef DebugLibFontconfig -#define DebugLibFontconfig NO -#endif -#ifndef ProfileLibFontconfig -#define ProfileLibFontconfig NO -#endif - FONTCONFIGLIBSRC = $(LIBSRC)/fontconfig -#if SharedLibFontconfig -#ifndef SharedFontconfigRev -#define SharedFontconfigRev 1.0.4 -#endif -SharedLibReferences(FONTCONFIG,NX_fontconfig,$(FONTCONFIGLIBSRC),SOFONTCONFIGREV,SharedFontconfigRev) -#else -ProjectUnsharedLibReferences(FONTCONFIG,NX_fontconfig,$(FONTCONFIGLIBSRC),XBuildLibDir) -#endif - -#ifdef UseInstalled -FONTCONFIGINCDIR=$(INCDIR) -#else -FONTCONFIGINCDIR=$(BUILDINCDIR) -#endif - -FONTCONFIGINCLUDES = -I$(FONTCONFIGINCDIR) - -#if UseInstalledX11 -FCCACHE = $(BINDIR)/fc-cache -#else -FCCACHE = set -x; $(CLIENTENVSETUP) $(PRELOADXFTSETUP) FONTCONFIG_PATH=$(FONTCONFIGLIBSRC) $(XBUILDBINDIR)/fc-cache -#endif - -#else /* BuildFontconfigLibrary */ - -#if HasFontconfig - -#ifndef FontconfigDir -# define FontconfigDir /usr -# ifndef FontconfigDirStandard -# define FontconfigDirStandard YES -# endif -#endif - -#ifndef FontconfigDirStandard -# define FontconfigDirStandard NO -#endif - -#ifndef FontconfigLibDir -# define FontconfigLibDir FontconfigDir/LibDirName -# if FontconfigDirStandard -# define FontconfigLibDirStandard YES -# endif -#endif -#ifndef FontconfigLibDirStandard -# define FontconfigLibDirStandard NO -#endif - -#ifndef FontconfigBinDir -# define FontconfigBinDir FontconfigDir/bin -#endif - -#ifndef FontconfigIncDir -# define FontconfigIncDir FontconfigDir/include -# if FontconfigDirStandard -# define FontconfigIncDirStandard YES -# endif -#endif - -#ifndef FontconfigIncDirStandard -# define FontconfigIncDirStandard NO -#endif - -FONTCONFIGDIR = FontconfigDir -FONTCONFIGLIBDIR = FontconfigLibDir -FONTCONFIGINCDIR = FontconfigIncDir -FONTCONFIGBINDIR = FontconfigBinDir -#if FontconfigLibDirStandard -FONTCONFIGLIB = -lfontconfig -#else -FONTCONFIGLIB = -L$(FONTCONFIGLIBDIR) LinkerRuntimeLibraryPathFlag($(FONTCONFIGLIBDIR)) -lfontconfig -#endif - -#if FontconfigIncDirStandard -FONTCONFIGINCLUDES = -#else -FONTCONFIGINCLUDES = -I$(FONTCONFIGINCDIR) -#endif - -FCCACHE = $(FONTCONFIGBINDIR)/fc-cache - -#endif /* HasFontconfig */ - -#endif /* else BuildFontconfigLibrary */ - -#if BuildFontconfigLibrary || HasFontconfig -FONTCONFIGDEFINES = -DFONTCONFIG -#endif - -#ifndef FontconfigClientDepLibs -#define FontconfigClientDepLibs $(DEPFONTCONFIGLIB) $(DEPFREETYPE2LIB) ExpatClientDepLibs -#endif -#ifndef FontconfigClientLibs -#define FontconfigClientLibs $(FONTCONFIGLIB) $(FREETYPE2LIB) ExpatClientLibs -#endif - -#endif /* UseFontconfig */ - -XFTINCLUDES=$(FONTCONFIGINCLUDES) $(FREETYPE2INCLUDES) #ifdef HasLibpng @@ -3952,383 +3333,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class #endif /* InstallAppDefaultsLong */ /* - * MakeFcCache - generate rules to build fontconfig cache database - */ - -#if defined UseFreetype2 && !CrossCompiling - -# ifndef MakeFcCache -# define MakeFcCache(deplist) @@\ -all:: fonts.cache @@\ - @@\ -fonts.cache: deplist @@\ - RunProgram(FCCACHE, $(FCCACHEOPTS) .) @@\ - @@\ -clean:: @@\ - RemoveFiles(fonts.cache*) -# endif /* MakeFcCache */ - -# ifndef InstallFcCache -# define InstallFcCache(dest) @@\ -install:: @@\ - RunProgram(FCCACHE, $(FCCACHEOPTS) $(DESTDIR)dest) -# endif /* InstallFcCache */ - -#else - -#ifndef MakeFcCache -#define MakeFcCache(deplist) -#endif - -#ifndef InstallFcCache -#define InstallFcCache(dest) -#endif - -#endif - -/* - * MakeFontsScale - generate rules to build fonts.scale database. - */ -#ifndef MakeFontsScale -# if !CrossCompiling || UseInstalledOnCrossCompile -# define MakeFontsScale(deplist) @@\ -all:: fonts.scale @@\ - @@\ -fonts.scale: deplist @@\ - RemoveFile(fonts.scale) @@\ - RunProgram(MKFONTSCALE, .) @@\ - @@\ -clean:: @@\ - RemoveFile(fonts.scale) -# else -# define MakeFontsScale(deplist) @@\ -clean:: @@\ - RemoveFile(fonts.scale) -# endif -#endif /* MakeFontsScale */ - -/* - * MakeFontsDir - generate rules to build fonts.dir database. - */ -#ifndef MakeFontsDir -# if !CrossCompiling || UseInstalledOnCrossCompile -# define MakeFontsDir(deplist) @@\ -all:: fonts.dir @@\ - @@\ -fonts.dir: deplist @@\ - RemoveFile(fonts.dir) @@\ - RunProgram(MKFONTDIR, $(MKFONTDIROPTS) .) @@\ - @@\ -clean:: @@\ - RemoveFile(fonts.dir) -# else -# define MakeFontsDir(deplist) @@\ -clean:: @@\ - RemoveFile(fonts.dir) -# endif -#endif /* MakeFontsDir */ - - -/* - * MakeFonts - generate rules to build font database. - */ -#ifndef MakeFonts -# if !CrossCompiling || UseInstalledOnCrossCompile -# define MakeFonts() @@\ -all:: $(OBJS) @@\ - @@\ -MakeFontsDir($(OBJS)) @@\ - @@\ -clean:: @@\ - RemoveFiles(*.pcf *.pcf.Z *.pcf.gz) -# else -# define MakeFonts() @@\ -MakeFontsDir($(OBJS)) @@\ - @@\ -clean:: @@\ - RemoveFiles(*.pcf *.pcf.Z *.pcf.gz) -# endif -#endif /* MakeFonts */ - -#ifndef InstallFontsDir -# if !CrossCompiling || UseInstalledOnCrossCompile -# define InstallFontsDir(dest) @@\ -install:: @@\ - MakeDir($(DESTDIR)dest) @@\ - @if [ X$(STATIC_FONTS_SCALE) = X ]; then (set -x; \ @@\ - RemoveFile($(DESTDIR)dest/fonts.scale); \ @@\ - RunProgram(MKFONTSCALE, $(DESTDIR)dest)); \ @@\ - else (set -x; \ @@\ - InstallInline(fonts.scale,$(INSTDATFLAGS),dest)); \ @@\ - fi @@\ - RemoveFile($(DESTDIR)dest/fonts.dir) @@\ - RunProgram(MKFONTDIR, $(MKFONTDIROPTS) $(DESTDIR)dest) -# else -# define InstallFontsDir(dest) -# endif -#endif - -/* - * InstallFontObjs - generate rules to install font files - */ -#ifndef InstallFontObjs -# if !CrossCompiling || UseInstalledOnCrossCompile -# define InstallFontObjs(objs,dest) @@\ -InstallMultipleFlags(objs,dest,$(INSTDATFLAGS)) @@\ - @@\ -InstallFontsDir(dest) -# else -# define InstallFontObjs(objs,dest) -# endif -#endif /* InstallFontObjs */ - - -/* - * InstallFonts - generate rules to install font files - */ -#ifndef InstallFonts -#define InstallFonts(dest) @@\ -InstallFontObjs($(OBJS),dest) -#endif /* InstallFonts */ - - -/* - * InstallFontAliases - generate rules to install font aliases databases. - */ -#ifndef InstallFontAliases -#define InstallFontAliases(dest) @@\ -InstallTarget(install,fonts.alias,$(INSTDATFLAGS),dest) -#endif /* InstallFontAliases */ - -#ifndef InstallNamedFontAliases -#define InstallNamedFontAliases(src,dest) @@\ -InstallNamedTarget(install,src,$(INSTDATFLAGS),dest,fonts.alias) -#endif /* InstallNamedFontAliases */ - -#ifndef FontSrc -#define FontSrc(basename) basename.bdf -#endif - -#ifndef FontBaseObj -#define FontBaseObj(basename)basename.pcf -#endif - -/* - * InstallFontScale - generate rules to install font scale database. - */ -#ifndef InstallFontScale -#define InstallFontScale(dest) @@\ -InstallTarget(install,fonts.scale,$(INSTDATFLAGS),dest) -#endif /* InstallFontScale */ - -/* - * UncompressedFontTargetLong - */ -#if ! CrossCompiling || UseInstalledOnCrossCompile -# ifndef UncompressedFontTargetLong -# define UncompressedFontTargetLong(sname,tname) @@\ -FontBaseObj(tname): FontSrc(sname) @@\ - RunProgram(FONTC,$(FONTCFLAGS) $? -o $@) -# endif /* UncompressedFontTargetLong */ -#else -# ifndef UncompressedFontTargetLong -# define UncompressedFontTargetLong(sname,tname) -# endif -#endif - -/* - * CompressedFontTarget - */ -#ifndef GzipFontCompression -#define GzipFontCompression NO -#endif - -#if ! CrossCompiling || UseInstalledOnCrossCompile -# ifndef CompressedFontTargetLong -# if GzipFontCompression -# define CompressedFontTargetLong(sname,tname) @@\ -FontBaseObj(tname).gz: FontSrc(sname) @@\ - RunProgram(FONTC,$(FONTCFLAGS) $?) | $(GZIPCMD) > $@ -# else -# define CompressedFontTargetLong(sname,tname) @@\ -FontBaseObj(tname).Z: FontSrc(sname) @@\ - RunProgram(FONTC,$(FONTCFLAGS) $?) | $(COMPRESS) > $@ -# endif -# endif /* CompressedFontTargetLong */ -#else -# define CompressedFontTargetLong(sname,tname) -#endif - -/* - * UncompressedFontTarget - */ -#ifndef UncompressedFontTarget -#define UncompressedFontTarget(basename) UncompressedFontTargetLong(basename,basename) -#endif /* UncompressedFontTarget */ - -#ifndef CompressedFontTarget -#define CompressedFontTarget(basename) CompressedFontTargetLong(basename,basename) -#endif /* CompressedFontTarget */ - -#if !defined(FontTarget) && !defined(FontObj) -#if CompressAllFonts -#define FontTargetLong(sname,tname) CompressedFontTargetLong(sname,tname) -#define FontTarget(basename) CompressedFontTarget(basename) -#if GzipFontCompression -#define FontObj(basename) FontBaseObj(basename).gz -#else -#define FontObj(basename) FontBaseObj(basename).Z -#endif -#else -#define FontTargetLong(sname,tname) UncompressedFontTargetLong(sname,tname) -#define FontTarget(basename) UncompressedFontTarget(basename) -#define FontObj(basename) FontBaseObj(basename) -#endif /* CompressAllFonts */ -#endif - - -#ifndef EncObj -#define EncObj(basename) basename.enc -#endif -#ifndef EncObjComp -#if GzipFontCompression -#define EncObjComp(basename) basename.enc.gz -#else -#define EncObjComp(basename) basename.enc.Z -#endif -#endif - -#ifndef EncodingTarget -#define EncodingTarget(basename) /**/ -#endif - -#ifndef CompEncodingTarget -#if GzipFontCompression -#define CompEncodingTarget(basename) @@\ -EncObjComp(basename): EncObj(basename) @@\ - cat $? | $(GZIPCMD) > $@ -#else -#define CompEncodingTarget(basename) @@\ -EncObjComp(basename): EncObj(basename) @@\ - cat $? | $(COMPRESS) > $@ -#endif -#endif - -#ifndef MakeEncDir -# if !CrossCompiling || UseInstalledOnCrossCompile -# define MakeEncDir(deplist,inst,dirlist ) @@\ -AllTarget(encodings.dir) @@\ - @@\ -encodings.dir: deplist @@\ - RemoveFiles(encodings.dir fonts.dir) @@\ - @(E=; for i in dirlist; do \ @@\ - E="$$E -e $$i"; done; \ @@\ - set -x; \ @@\ - RunProgram(MKFONTDIR, -n -r -p inst/ $$E .)) @@\ - @@\ -clean:: @@\ - RemoveFiles(fonts.dir encodings.dir) -# else -# define MakeEncDir(deplist,inst,dirlist ) @@\ -clean:: @@\ - RemoveFiles(fonts.dir encodings.dir) -# endif -#endif - -#ifndef MakeEncodings -#define MakeEncodings(deplist,inst,dirlist) @@\ - @@\ -MakeEncDir(deplist $(OBJS),inst,dirlist) @@\ - @@\ -clean:: @@\ - RemoveFiles(*.enc.Z *.enc.gz) -#endif /* MakeEncodings */ - -#ifndef InstallEncObjs -# if !CrossCompiling || UseInstalledOnCrossCompile -# define InstallEncObjs(objs,dest) @@\ -InstallMultipleFlags(objs,dest,$(INSTDATFLAGS)) @@\ - @@\ -InstallTarget(install,encodings.dir,$(INSTDATFLAGS),dest) -# else -# define InstallEncObjs(objs,dest) -# endif -#endif /* InstallEncObjs */ - -#ifndef InstallEncodings -#define InstallEncodings(dest) @@\ -InstallEncObjs($(OBJS),dest) -#endif /* InstallEncodings */ - -#ifndef InstallEncodingsDir -# if !CrossCompiling || UseInstalledOnCrossCompile -# define InstallEncodingsDir(edir,fdir) @@\ -InstallNamedTarget(install,edir/encodings.dir,$(INSTDATFLAGS),fdir,encodings.dir) -# else -# define InstallEncodingsDir(edir,fdir) -# endif -#endif - - -#ifndef MakeBdfFontFromUCSMaster -#define MakeBdfFontFromUCSMaster(font,enc) @@\ -font-enc.bdf: font.bdf $(UCS2ANY) @@\ - RemoveFile($@) @@\ - $(UCS2ANY) font.bdf $(UCSMAPPREFIX)enc enc @@\ - @@\ -clean:: @@\ - RemoveFile(font-enc.bdf) -#endif - -#ifndef MakeTruncatedUCSBdfFont -#if HasPerl5 -#define MakeTruncatedUCSBdfFont(font,trunc,name) @@\ -name.bdf: font.bdf $(BDFTRUNCATE) @@\ - RemoveFile($@) @@\ - RunPerlScript($(BDFTRUNCATE),trunc < font.bdf > name.bdf) @@\ - @@\ -clean:: @@\ - RemoveFile(name.bdf) -#endif -#endif - -/* - * InstallXpPMFLink - install link for a Xprint PMF "font" from one - * print model to another - */ -#ifndef InstallXpPMFLink -#define InstallXpPMFLink(fontfilename,srcmodelfontdir,destmodelfontdir) @@\ - InstallLink(install,srcmodelfontdir/fontfilename,fontfilename,destmodelfontdir) -#endif /* InstallXpPMFLink */ -/* - * InstallXpMultiplePMFLinks - install multiple links for PMF fonts - * from one print model to another - */ -#ifndef InstallXpMultiplePMFLinks -#define InstallXpMultiplePMFLinks(list,srcmodelfontdir,destmodelfontdir) @@\ -install:: @@\ - MakeDir($(DESTDIR)destmodelfontdir) @@\ - for i in list ; do \ @@\ - $(RM) $(DESTDIR)destmodelfontdir/$$i ; \ @@\ - $(LN) -s -f srcmodelfontdir/$$i $(DESTDIR)destmodelfontdir/$$i ; \ @@\ - done -#endif /* InstallXpPMFLink */ - -/* - * InstallXpPMFFontsDir - make and install a fonts.dir index for model-config fonts - */ -#ifndef InstallXpPMFFontsDir -#if BuildServersOnly -#define InstallXpPMFFontsDir(destmodelfontdir) /**/ -#else -#define InstallXpPMFFontsDir(destmodelfontdir) @@\ -install:: @@\ - ($(MKFONTSCALE) -b -s -l $(DESTDIR)destmodelfontdir) -#endif -#endif /* InstallXpPMFFontsDir */ - - -/* * MakeXkbDir */ #ifndef MakeXkbDir @@ -4647,42 +3651,6 @@ clean:: @@\ InstallDoc(name,deps) #endif -/* - * Rule for maintainers to use to updated generated copies of fonts in the - * source tree. Use with care. - */ - -#ifndef UpdateDerivedFont -#define UpdateDerivedFont(src,dst) @@\ -update.fonts:: src @@\ - -@if [ -f dst ]; then \ @@\ - if [ "$(FORCEUPDATE)" = yes ]; then \ @@\ - if [ "$(FOLLOWLINK)" = no ]; then \ @@\ - (set -x; $(RM) dst); \ @@\ - fi; \ @@\ - set -x; cp src dst; \ @@\ - else \ @@\ - grep -v "XFree86:" src > __tmp1__; \ @@\ - grep -v "XFree86:" dst > __tmp2__; \ @@\ - if diff __tmp1__ __tmp2__ > /dev/null 2>&1; then :; \ @@\ - else \ @@\ - if [ "$(FOLLOWLINK)" = no ]; then \ @@\ - (set -x; $(RM) dst); \ @@\ - fi; \ @@\ - set -x; cp src dst; \ @@\ - fi; \ @@\ - fi; \ @@\ - fi @@\ - @$(RM) __tmp1__ __tmp2__ -#endif - -#if !HasFreetype2 - FT2PRELOADPATTERN = libfreetype.so.? -#endif -#if !HasFontconfig - FCPRELOADPATTERN = libfontconfig.so.? -#endif - XFTPRELOADPATTERN = libXft.so.? XRENDERPRELOADPATTERN = libXrender.so.? XFONTPRELOADPATTERN = libXfont*.so.? diff --git a/nx-X11/config/cf/host.def b/nx-X11/config/cf/host.def index 58b3df9..76318b4 100644 --- a/nx-X11/config/cf/host.def +++ b/nx-X11/config/cf/host.def @@ -91,9 +91,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #ifdef NXAgentServer #define BuildRenderLibrary YES -#define SharedLibFreetype2 YES -#define NormalLibFreetype2 YES -#define FontLibSharedFreeType YES #endif /* @@ -241,101 +238,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * Speedo fonts have been disabled by default in this release. - * To re-enable support for Speedo fonts, uncomment this. - * -#define BuildSpeedo YES - */ - -/* - * To disable support for CID fonts, uncomment this. - * -#define BuildCID NO - */ - -/* - * To disable support for TrueType fonts, uncomment these. - * -#define BuildFreeType NO - */ -#define BuildFreeType NO - -/* - * To set non-default build options for the underlying FreeType libraries, - * add them here and uncomment. - * -#define Freetype2BuildDefines -DFREETYPE_BUILD_DEFINES - */ - -/* - * To build the FreeType libraries with the TrueType byte code interpreter - * enabled, uncomment this. Note that there are patent issues related to the - * TrueType byte code interpreter, and we only recommend you enabling this - * if you are sure that there are no legal impediments to you doing so. See - * <http://www.freetype.org/patents.html> for further information. - * -#define Freetype2BuildDefines -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER - */ - -/* - * Do you want to Build Fonts (Usually you only want to build and install - * fonts once, if this is a first time install you will want to build the - * fonts) - * -#define BuildFonts NO - */ -#define BuildFonts NO - -/* - * To not build/install the 75dpi fonts, uncomment the following - * -#define Build75DpiFonts NO - */ - -/* - * To not build/install the 100dpi fonts, uncomment the following - * -#define Build100DpiFonts NO - */ - -/* - * To build/install the Speedo fonts, uncomment the following - * (see setting above about Speedo support as well) - * -#define BuildSpeedoFonts YES - */ - -/* - * To not build/install the Type1 fonts, uncomment the following - * -#define BuildType1Fonts NO - */ - -/* - * To not build/install the CID fonts, uncomment the following - * -#define BuildCIDFonts NO - */ - -/* - * To not build/install the True Type fonts, uncomment the following - * -#define BuildTrueTypeFonts NO - */ - -/* - * To not build/install the Cyrillic fonts, uncomment the following - * -#define BuildCyrillicFonts NO - */ - -/* - * To not install the local font directory, uncomment the following - * -#define MakeLocalFontDir NO - */ - -/* * Include True Type Fonts to default font path. It is safe to do * this by default as NX intaller carries only misc and TTF in the * basic set of fonts installed under Windows. @@ -368,7 +270,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ * #define InstallXinitConfig YES #define InstallXdmConfig YES -#define InstallFSConfig YES */ /* @@ -592,21 +493,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To link the X server with a dynamic version of the Xfont library, - * uncomment this. - * -#define XserverStaticFontLib NO - */ -#define XserverStaticFontLib YES - -/* - * To enable binary compatibility with previous versions of the font - * encoding support, uncomment this. - * -#define FontencCompatibility YES - */ - -/* * To disable building XInput support, uncomment this * #define BuildXInputExt NO @@ -834,38 +720,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define X86EMU_LIBPATH /usr/local/lib */ -/* - * Most platforms default to using an already installed FreeType 2 library. - * To use the one included in this release instead, uncomment the following. - * -#define HasFreetype2 NO - */ -#define HasFreetype2 YES - -/* - * To use a FreeType library already installed outside the default search - * paths, uncomment the following and set the path as needed. - * -#define HasFreetype2 YES -#define Freetype2Dir /usr/local - */ - - -/* - * Most platforms default to using an already installed Fontconfig library. - * To use the one included in this release instead, uncomment the following. - * -#define HasFontconfig NO - */ -#define HasFontconfig YES - -/* - * To use a Fontconfig library already installed outside the default search - * paths, uncomment the following and set the path as needed. -#define HasFontconfig YES -#define FontconfigDir /usr/local - */ - /* * Most platforms default to using an already installed Expat library. @@ -912,9 +766,5 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define BuildXaw7 NO #define BuildRman NO -#define BuildFontEncLib NO #define BuildXcursorLibrary NO -#define BuildXftLibrary NO -#define BuildXft1Library NO -#define SharedLibFont NO #define BuildLoadableXlibI18n NO diff --git a/nx-X11/config/cf/linux.cf b/nx-X11/config/cf/linux.cf index 32b7a86..fa18feb 100644 --- a/nx-X11/config/cf/linux.cf +++ b/nx-X11/config/cf/linux.cf @@ -116,7 +116,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class # define SharedLibXdmGreet NO # define LinkGLToUsrInclude NO # define LinkGLToUsrLib NO -# define SharedLibFont NO # define SharedLibGlu YES # define NormalLibGlu YES # define FSUseSyslog YES @@ -156,9 +155,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class # define BuildRman NO # define BuildHtmlManPages NO -/* we build-depend on libfreetype6-dev (FreeType 2.x) */ -# define BuildFreetype2Library NO -# define HasFreetype2 YES /* m68k has no 2.4 kernel yet */ # ifndef Mc68020Architecture # define HasLinuxInput YES @@ -539,10 +535,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class # define HasExpat YES #endif -#ifndef HasFreetype2 -# define HasFreetype2 YES -#endif - #define AvoidNullMakeCommand YES #ifndef DebuggableLibraries #define DebuggableLibraries NO diff --git a/nx-X11/config/cf/xf86site.def b/nx-X11/config/cf/xf86site.def index 39d8980..3f48cd1 100644 --- a/nx-X11/config/cf/xf86site.def +++ b/nx-X11/config/cf/xf86site.def @@ -139,103 +139,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To disable support for Speedo fonts, uncomment this. - * -#define BuildSpeedo NO - */ - -/* - * To disable support for Type1 fonts, uncomment this. - * -#define BuildType1 NO - */ - -/* - * To disable support for CID fonts, uncomment this. - * -#define BuildCID NO - */ - -/* - * To disable support for TrueType fonts, uncomment these. - * -#define BuildFreeType NO - */ - -/* - * To set non-default build options for the underlying FreeType libraries, - * add them here and uncomment. - * -#define Freetype2BuildDefines -DFREETYPE_BUILD_DEFINES - */ - -/* - * To build the FreeType libraries with the TrueType byte code interpreter - * enabled, uncomment this. Note that there are patent issues related to the - * TrueType byte code interpreter, and we only recommend you enabling this - * if you are sure that there are no legal impediments to you doing so. See - * <http://www.freetype.org/patents.html> for further information. - * -#define Freetype2BuildDefines -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER - */ - -/* - * Do you want to Build Fonts (Usually you only want to build and install - * fonts once, if this is a first time install you will want to build the - * fonts) - * -#define BuildFonts NO - */ - -/* - * To not build/install the 75dpi fonts, uncomment the following - * -#define Build75DpiFonts NO - */ - -/* - * To not build/install the 100dpi fonts, uncomment the following - * -#define Build100DpiFonts NO - */ - -/* - * To not build/install the Speedo fonts, uncomment the following - * -#define BuildSpeedoFonts NO - */ - -/* - * To not build/install the Type1 fonts, uncomment the following - * -#define BuildType1Fonts NO - */ - -/* - * To not build/install the CID fonts, uncomment the following - * -#define BuildCIDFonts NO - */ - -/* - * To not build/install the True Type fonts, uncomment the following - * -#define BuildTrueTypeFonts NO - */ - -/* - * To not build/install the Cyrillic fonts, uncomment the following - * -#define BuildCyrillicFonts NO - */ - -/* - * To not install the local font directory, uncomment the following - * -#define MakeLocalFontDir NO - */ - -/* * To build only the servers with a cut-down source tree, uncomment * this. * @@ -456,20 +359,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To link the X server with a dynamic version of the Xfont library, - * uncomment this. - * -#define XserverStaticFontLib NO - */ - -/* - * To enable binary compatibility with previous versions of the font - * encoding support, uncomment this. - * -#define FontencCompatibility YES - */ - -/* * To disable building XInput support, uncomment this * #define BuildXInputExt NO diff --git a/nx-X11/config/cf/xfree86.cf b/nx-X11/config/cf/xfree86.cf index 0348c03..41790c0 100644 --- a/nx-X11/config/cf/xfree86.cf +++ b/nx-X11/config/cf/xfree86.cf @@ -1684,50 +1684,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 #endif /* - * Include fonts support - */ -#ifndef BuildSpeedo -# define BuildSpeedo NO -#endif - -#ifndef BuildType1 -# define BuildType1 NO -#endif - -#ifndef BuildCID -# define BuildCID YES -#endif - -#ifndef BuildFreeType -# define BuildFreeType YES -#endif - -/* - * By default, build all of the fonts. - */ -#ifndef Build75DpiFonts -# define Build75DpiFonts YES -#endif -#ifndef Build100DpiFonts -# define Build100DpiFonts YES -#endif -#ifndef BuildSpeedoFonts -# define BuildSpeedoFonts NO -#endif -#ifndef BuildType1Fonts -# define BuildType1Fonts YES -#endif -#ifndef BuildCIDFonts -# define BuildCIDFonts YES -#endif -#ifndef BuildTrueTypeFonts -# define BuildTrueTypeFonts YES -#endif -#ifndef BuildCyrillicFonts -# define BuildCyrillicFonts YES -#endif - -/* * Build scanpci? */ #ifndef SystemV @@ -1748,14 +1704,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 # endif #endif -#ifndef CompressAllFonts -# define CompressAllFonts YES -#endif - -#ifndef GzipFontCompression -# define GzipFontCompression YES -#endif - /* Disable stripping installed programs for this release. */ #ifndef StripInstalledPrograms # define StripInstalledPrograms NO diff --git a/nx-X11/config/cf/xorg.cf b/nx-X11/config/cf/xorg.cf index 3f92235..9fb2f65 100644 --- a/nx-X11/config/cf/xorg.cf +++ b/nx-X11/config/cf/xorg.cf @@ -1248,50 +1248,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 #endif /* - * Include fonts support - */ -#ifndef BuildSpeedo -# define BuildSpeedo NO -#endif - -#ifndef BuildType1 -# define BuildType1 NO -#endif - -#ifndef BuildCID -# define BuildCID YES -#endif - -#ifndef BuildFreeType -# define BuildFreeType YES -#endif - -/* - * By default, build all of the fonts. - */ -#ifndef Build75DpiFonts -# define Build75DpiFonts YES -#endif -#ifndef Build100DpiFonts -# define Build100DpiFonts YES -#endif -#ifndef BuildSpeedoFonts -# define BuildSpeedoFonts NO -#endif -#ifndef BuildType1Fonts -# define BuildType1Fonts YES -#endif -#ifndef BuildCIDFonts -# define BuildCIDFonts YES -#endif -#ifndef BuildTrueTypeFonts -# define BuildTrueTypeFonts YES -#endif -#ifndef BuildCyrillicFonts -# define BuildCyrillicFonts YES -#endif - -/* * Build scanpci? */ #ifndef SystemV @@ -1312,14 +1268,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8 # endif #endif -#ifndef CompressAllFonts -# define CompressAllFonts YES -#endif - -#ifndef GzipFontCompression -# define GzipFontCompression YES -#endif - /* Disable stripping installed programs for this release. */ #ifndef StripInstalledPrograms # define StripInstalledPrograms NO diff --git a/nx-X11/config/cf/xorgsite.def b/nx-X11/config/cf/xorgsite.def index eeaffa4..eca20fa 100644 --- a/nx-X11/config/cf/xorgsite.def +++ b/nx-X11/config/cf/xorgsite.def @@ -153,99 +153,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * Speedo fonts have been disabled by default in this release. - * To re-enable support for Speedo fonts, uncomment this. - * -#define BuildSpeedo YES - */ - -/* - * To disable support for CID fonts, uncomment this. - * -#define BuildCID NO - */ - -/* - * To disable support for TrueType fonts, uncomment these. - * -#define BuildFreeType NO - */ - -/* - * To set non-default build options for the underlying FreeType libraries, - * add them here and uncomment. - * -#define Freetype2BuildDefines -DFREETYPE_BUILD_DEFINES - */ - -/* - * To build the FreeType libraries with the TrueType byte code interpreter - * enabled, uncomment this. Note that there are patent issues related to the - * TrueType byte code interpreter, and we only recommend you enabling this - * if you are sure that there are no legal impediments to you doing so. See - * <http://www.freetype.org/patents.html> for further information. - * -#define Freetype2BuildDefines -DTT_CONFIG_OPTION_BYTECODE_INTERPRETER - */ - -/* - * Do you want to Build Fonts (Usually you only want to build and install - * fonts once, if this is a first time install you will want to build the - * fonts) - * -#define BuildFonts NO - */ - -/* - * To not build/install the 75dpi fonts, uncomment the following - * -#define Build75DpiFonts NO - */ - -/* - * To not build/install the 100dpi fonts, uncomment the following - * -#define Build100DpiFonts NO - */ - -/* - * To build/install the Speedo fonts, uncomment the following - * (see setting above about Speedo support as well) - * -#define BuildSpeedoFonts YES - */ - -/* - * To not build/install the Type1 fonts, uncomment the following - * -#define BuildType1Fonts NO - */ - -/* - * To not build/install the CID fonts, uncomment the following - * -#define BuildCIDFonts NO - */ - -/* - * To not build/install the True Type fonts, uncomment the following - * -#define BuildTrueTypeFonts NO - */ - -/* - * To not build/install the Cyrillic fonts, uncomment the following - * -#define BuildCyrillicFonts NO - */ - -/* - * To not install the local font directory, uncomment the following - * -#define MakeLocalFontDir NO - */ - -/* * To build only the servers with a cut-down source tree, uncomment * this. * @@ -464,20 +371,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ */ /* - * To link the X server with a dynamic version of the Xfont library, - * uncomment this. - * -#define XserverStaticFontLib NO - */ - -/* - * To enable binary compatibility with previous versions of the font - * encoding support, uncomment this. - * -#define FontencCompatibility YES - */ - -/* * To disable building XInput support, uncomment this * #define BuildXInputExt NO @@ -669,36 +562,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ #define X86EMU_LIBPATH /usr/local/lib */ -/* - * Most platforms default to using an already installed FreeType 2 library. - * To use the one included in this release instead, uncomment the following. - * -#define HasFreetype2 NO - */ - -/* - * To use a FreeType library already installed outside the default search - * paths, uncomment the following and set the path as needed. - * -#define HasFreetype2 YES -#define Freetype2Dir /usr/local - */ - - -/* - * Most platforms default to using an already installed Fontconfig library. - * To use the one included in this release instead, uncomment the following. - * -#define HasFontconfig NO - */ - -/* - * To use a Fontconfig library already installed outside the default search - * paths, uncomment the following and set the path as needed. -#define HasFontconfig YES -#define FontconfigDir /usr/local - */ - /* * Most platforms default to using an already installed Expat library. diff --git a/nx-X11/include/Imakefile b/nx-X11/include/Imakefile index 8bdfd4a..39d330d 100644 --- a/nx-X11/include/Imakefile +++ b/nx-X11/include/Imakefile @@ -15,7 +15,7 @@ GLXDIR = GL DPSDIR = DPS #endif -SUBDIRS = bitmaps extensions fonts $(GLXDIR) $(DPSDIR) +SUBDIRS = bitmaps extensions $(GLXDIR) $(DPSDIR) #ifdef Win32Architecture EXTRA_HEADERS = Xw32defs.h Xwinsock.h Xwindows.h diff --git a/nx-X11/include/extensions/Imakefile b/nx-X11/include/extensions/Imakefile index 63b9365..24c0341 100644 --- a/nx-X11/include/extensions/Imakefile +++ b/nx-X11/include/extensions/Imakefile @@ -39,7 +39,7 @@ FONTCACHEHEADERS = fontcache.h fontcacheP.h fontcachstr.h #if BuildXinerama || BuildXineramaLibrary XINERAMAHEADERS = Xinerama.h panoramiXext.h panoramiXproto.h #endif -#if BuildRender || BuildXftLibrary +#if BuildRender RENDERHEADERS = render.h renderproto.h #endif #if BuildXfixes || BuildXfixesLibrary diff --git a/nx-X11/include/fonts/FS.h b/nx-X11/include/fonts/FS.h deleted file mode 100644 index e907522..0000000 --- a/nx-X11/include/fonts/FS.h +++ /dev/null @@ -1,132 +0,0 @@ -/* $Xorg: FS.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */ - -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. - * Network Computing Devices and Digital make no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES - * OR DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ - -/* - -Portions Copyright 1987, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/include/fonts/FS.h,v 1.9 2003/07/09 15:27:28 tsi Exp $ */ - -#ifndef _FS_H_ -#define _FS_H_ - -#include <X11/Xdefs.h> -#include <X11/fonts/fsmasks.h> - -#define FS_PROTOCOL 2 -#define FS_PROTOCOL_MINOR 0 - -#ifndef X_PROTOCOL -/* protocol familes */ -#define FamilyInternet 0 -#define FamilyDECnet 1 -#define FamilyChaos 2 -#define FamilyInternet6 6 - - -typedef unsigned int FSDrawDirection; -#endif - -#ifndef None -#define None 0L -#endif - -#define LeftToRightDrawDirection 0 -#define RightToLeftDrawDirection 1 - -/* font info flags */ -#define FontInfoAllCharsExist (1L << 0) -#define FontInfoInkInside (1L << 1) -#define FontInfoHorizontalOverlap (1L << 2) - -/* auth status flags */ -#define AuthSuccess 0 -#define AuthContinue 1 -#define AuthBusy 2 -#define AuthDenied 3 - -/* property types */ -#define PropTypeString 0 -#define PropTypeUnsigned 1 -#define PropTypeSigned 2 - -#ifndef LSBFirst -/* byte order */ -#define LSBFirst 0 -#define MSBFirst 1 -#endif - -/* event masks */ -#define CatalogueChangeNotifyMask (1L << 0) -#define FontChangeNotifyMask (1L << 1) - -/* errors */ -#define FSSuccess -1 -#define FSBadRequest 0 -#define FSBadFormat 1 -#define FSBadFont 2 -#define FSBadRange 3 -#define FSBadEventMask 4 -#define FSBadAccessContext 5 -#define FSBadIDChoice 6 -#define FSBadName 7 -#define FSBadResolution 8 -#define FSBadAlloc 9 -#define FSBadLength 10 -#define FSBadImplementation 11 - -#define FirstExtensionError 128 -#define LastExtensionError 255 - -/* events */ -#define KeepAlive 0 -#define CatalogueChangeNotify 1 -#define FontChangeNotify 2 -#define FSLASTEvent 3 - -#endif /* _FS_H_ */ diff --git a/nx-X11/include/fonts/FSproto.h b/nx-X11/include/fonts/FSproto.h deleted file mode 100644 index 03b2808..0000000 --- a/nx-X11/include/fonts/FSproto.h +++ /dev/null @@ -1,816 +0,0 @@ -/* $Xorg: FSproto.h,v 1.4 2001/02/09 02:03:25 xorgcvs Exp $ */ -/* - -Copyright 1990, 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices, or Digital - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES, AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES, - * OR DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/include/fonts/FSproto.h,v 1.2 2001/08/01 00:44:37 tsi Exp $ */ - -#ifndef _FS_PROTO_H_ -#define _FS_PROTO_H_ - -#include <X11/fonts/FS.h> - -#define sz_fsPropOffset 20 -#define sz_fsPropInfo 8 -#define sz_fsResolution 6 - -#define sz_fsChar2b 2 -#define sz_fsChar2b_version1 2 -#define sz_fsOffset32 8 -#define sz_fsRange 4 - -#define sz_fsXCharInfo 12 -#define sz_fsXFontInfoHeader 40 - -#define sz_fsConnClientPrefix 8 -#define sz_fsConnSetup 12 -#define sz_fsConnSetupExtra 8 -#define sz_fsConnSetupAccept 12 - -/* request sizes */ -#define sz_fsReq 4 -#define sz_fsListExtensionsReq 4 -#define sz_fsResourceReq 8 - -#define sz_fsNoopReq 4 -#define sz_fsListExtensionReq 4 -#define sz_fsQueryExtensionReq 4 -#define sz_fsListCataloguesReq 12 -#define sz_fsSetCataloguesReq 4 -#define sz_fsGetCataloguesReq 4 -#define sz_fsSetEventMaskReq 8 -#define sz_fsGetEventMaskReq 4 -#define sz_fsCreateACReq 8 -#define sz_fsFreeACReq 8 -#define sz_fsSetAuthorizationReq 8 -#define sz_fsSetResolutionReq 4 -#define sz_fsGetResolutionReq 4 -#define sz_fsListFontsReq 12 -#define sz_fsListFontsWithXInfoReq 12 -#define sz_fsOpenBitmapFontReq 16 -#define sz_fsQueryXInfoReq 8 -#define sz_fsQueryXExtents8Req 12 -#define sz_fsQueryXExtents16Req 12 -#define sz_fsQueryXBitmaps8Req 16 -#define sz_fsQueryXBitmaps16Req 16 -#define sz_fsCloseReq 8 - -/* reply sizes */ -#define sz_fsReply 8 -#define sz_fsGenericReply 8 - -#define sz_fsListExtensionsReply 8 -#define sz_fsQueryExtensionReply 20 -#define sz_fsListCataloguesReply 16 -#define sz_fsGetCataloguesReply 8 -#define sz_fsGetEventMaskReply 12 -#define sz_fsCreateACReply 12 -#define sz_fsGetResolutionReply 8 -#define sz_fsListFontsReply 16 -#define sz_fsListFontsWithXInfoReply (12 + sz_fsXFontInfoHeader) -#define sz_fsOpenBitmapFontReply 16 -#define sz_fsQueryXInfoReply (8 + sz_fsXFontInfoHeader) -#define sz_fsQueryXExtents8Reply 12 -#define sz_fsQueryXExtents16Reply 12 -#define sz_fsQueryXBitmaps8Reply 20 -#define sz_fsQueryXBitmaps16Reply 20 - -#define sz_fsError 16 -#define sz_fsEvent 12 -#define sz_fsKeepAliveEvent 12 - -#define fsTrue 1 -#define fsFalse 0 - -/* temp decls */ -#define Mask CARD32 -#define Font CARD32 -#define AccContext CARD32 - -typedef CARD32 fsTimestamp; - -#ifdef NOTDEF /* in fsmasks.h */ -typedef CARD32 fsBitmapFormat; -typedef CARD32 fsBitmapFormatMask; -#endif - -#define sz_fsBitmapFormat 4 - -typedef struct { - INT16 left B16, - right B16; - INT16 width B16; - INT16 ascent B16, - descent B16; - CARD16 attributes B16; -} fsXCharInfo; - -typedef struct { - CARD8 high; - CARD8 low; -} fsChar2b; - -typedef struct { - CARD8 low; - CARD8 high; -} fsChar2b_version1; - -typedef struct { - CARD8 min_char_high; - CARD8 min_char_low; - CARD8 max_char_high; - CARD8 max_char_low; -} fsRange; - -typedef struct { - CARD32 position B32; - CARD32 length B32; -} fsOffset32; - -typedef struct { - fsOffset32 name; - fsOffset32 value; - CARD8 type; - BYTE pad0; - CARD16 pad1 B16; -} fsPropOffset; - -typedef struct { - CARD32 num_offsets B32; - CARD32 data_len B32; - /* offsets */ - /* data */ -} fsPropInfo; - -typedef struct { - CARD16 x_resolution B16; - CARD16 y_resolution B16; - CARD16 point_size B16; -} fsResolution; - - -typedef struct { - CARD32 flags B32; - CARD8 char_range_min_char_high; - CARD8 char_range_min_char_low; - CARD8 char_range_max_char_high; - CARD8 char_range_max_char_low; - - CARD8 draw_direction; - CARD8 pad; - CARD8 default_char_high; - CARD8 default_char_low; - INT16 min_bounds_left B16; - INT16 min_bounds_right B16; - - INT16 min_bounds_width B16; - INT16 min_bounds_ascent B16; - INT16 min_bounds_descent B16; - CARD16 min_bounds_attributes B16; - - INT16 max_bounds_left B16; - INT16 max_bounds_right B16; - INT16 max_bounds_width B16; - INT16 max_bounds_ascent B16; - - INT16 max_bounds_descent B16; - CARD16 max_bounds_attributes B16; - INT16 font_ascent B16; - INT16 font_descent B16; - /* propinfo */ -} fsXFontInfoHeader; - - -/* requests */ - -typedef struct { - BYTE byteOrder; - CARD8 num_auths; - CARD16 major_version B16; - CARD16 minor_version B16; - CARD16 auth_len B16; - /* auth data */ -} fsConnClientPrefix; - -typedef struct { - CARD16 status B16; - CARD16 major_version B16; - CARD16 minor_version B16; - CARD8 num_alternates; - CARD8 auth_index; - CARD16 alternate_len B16; - CARD16 auth_len B16; - /* alternates */ - /* auth data */ -} fsConnSetup; - -typedef struct { - CARD32 length B32; - CARD16 status B16; - CARD16 pad B16; - /* more auth data */ -} fsConnSetupExtra; - -typedef struct { - CARD32 length B32; - CARD16 max_request_len B16; - CARD16 vendor_len B16; - CARD32 release_number B32; - /* vendor string */ -} fsConnSetupAccept; - -typedef struct { - CARD8 reqType; - CARD8 data; - CARD16 length B16; -} fsReq; - -/* - * The fsFakeReq structure is never used in the protocol; it is prepended - * to incoming packets when setting up a connection so we can index - * through InitialVector. To avoid alignment problems, it is padded - * to the size of a word on the largest machine this code runs on. - * Hence no sz_fsFakeReq constant is necessary. - */ -typedef struct { - CARD8 reqType; - CARD8 data; - CARD16 length B16; - CARD32 pad B32; /* to fill out to multiple of 64 bits */ -} fsFakeReq; - -typedef struct { - CARD8 reqType; - BYTE pad; - CARD16 length B16; - Font id B32; -} fsResourceReq; - -typedef fsReq fsNoopReq; -typedef fsReq fsListExtensionsReq; - -typedef struct { - CARD8 reqType; - BYTE nbytes; - CARD16 length B16; - /* name */ -} fsQueryExtensionReq; - -typedef struct { - CARD8 reqType; - CARD8 data; - CARD16 length B16; - CARD32 maxNames B32; - CARD16 nbytes B16; - CARD16 pad2 B16; - /* pattern */ -} fsListCataloguesReq; - -typedef struct { - CARD8 reqType; - BYTE num_catalogues; - CARD16 length B16; - /* catalogues */ -} fsSetCataloguesReq; - -typedef fsReq fsGetCataloguesReq; - -typedef struct { - CARD8 reqType; - CARD8 ext_opcode; - CARD16 length B16; - Mask event_mask; -} fsSetEventMaskReq; - -typedef struct { - CARD8 reqType; - CARD8 ext_opcode; - CARD16 length B16; -} fsGetEventMaskReq; - -typedef struct { - CARD8 reqType; - BYTE num_auths; - CARD16 length B16; - AccContext acid B32; - /* auth protocols */ -} fsCreateACReq; - -typedef fsResourceReq fsFreeACReq; -typedef fsResourceReq fsSetAuthorizationReq; - -typedef struct { - CARD8 reqType; - BYTE num_resolutions; - CARD16 length B16; - /* resolutions */ -} fsSetResolutionReq; - -typedef fsReq fsGetResolutionReq; - -typedef struct { - CARD8 reqType; - BYTE pad; - CARD16 length B16; - CARD32 maxNames B32; - CARD16 nbytes B16; - CARD16 pad2 B16; - /* pattern */ -} fsListFontsReq; - -typedef fsListFontsReq fsListFontsWithXInfoReq; - -typedef struct { - CARD8 reqType; - BYTE pad; - CARD16 length B16; - Font fid B32; - fsBitmapFormatMask format_mask B32; - fsBitmapFormat format_hint B32; - /* pattern */ -} fsOpenBitmapFontReq; - -typedef fsResourceReq fsQueryXInfoReq; - -typedef struct { - CARD8 reqType; - BOOL range; - CARD16 length B16; - Font fid B32; - CARD32 num_ranges B32; - /* list of chars */ -} fsQueryXExtents8Req; - -typedef fsQueryXExtents8Req fsQueryXExtents16Req; - -typedef struct { - CARD8 reqType; - BOOL range; - CARD16 length B16; - Font fid B32; - fsBitmapFormat format B32; - CARD32 num_ranges B32; - /* list of chars */ -} fsQueryXBitmaps8Req; - -typedef fsQueryXBitmaps8Req fsQueryXBitmaps16Req; - -typedef fsResourceReq fsCloseReq; - - -/* replies */ -typedef struct { - BYTE type; - BYTE data1; - CARD16 sequenceNumber B16; - CARD32 length B32; -} fsGenericReply; - -typedef struct { - BYTE type; - CARD8 nExtensions; - CARD16 sequenceNumber B16; - CARD32 length B32; - /* extension names */ -} fsListExtensionsReply; - -typedef struct { - BYTE type; - CARD8 present; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 major_version B16; - CARD16 minor_version B16; - CARD8 major_opcode; - CARD8 first_event; - CARD8 num_events; - CARD8 first_error; - CARD8 num_errors; - CARD8 pad1; - CARD16 pad2 B16; -} fsQueryExtensionReply; - -typedef struct { - BYTE type; - BYTE pad; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 num_replies B32; - CARD32 num_catalogues B32; - /* catalog names */ -} fsListCataloguesReply; - -typedef struct { - BYTE type; - CARD8 num_catalogues; - CARD16 sequenceNumber B16; - CARD32 length B32; - /* catalogue names */ -} fsGetCataloguesReply; - -typedef struct { - BYTE type; - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 event_mask B32; -} fsGetEventMaskReply; - -typedef struct { - BYTE type; - CARD8 auth_index; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 status B16; - CARD16 pad B16; - /* auth data */ -} fsCreateACReply; - -typedef struct { - CARD32 length B32; - CARD16 status B16; - CARD16 pad B16; - /* auth data */ -} fsCreateACExtraReply; - -typedef struct { - BYTE type; - CARD8 num_resolutions; - CARD16 sequenceNumber B16; - CARD32 length B32; - /* resolutions */ -} fsGetResolutionReply; - -typedef struct { - BYTE type; - BYTE pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 following B32; - CARD32 nFonts B32; - /* font names */ -} fsListFontsReply; - -/* - * this one is messy. the reply itself is variable length (unknown - * number of replies) and the contents of each is variable (unknown - * number of properties) - * - */ - -typedef struct { - BYTE type; - CARD8 nameLength; /* 0 is end-of-reply */ - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 nReplies B32; - CARD32 font_header_flags B32; - CARD8 font_hdr_char_range_min_char_high; - CARD8 font_hdr_char_range_min_char_low; - CARD8 font_hdr_char_range_max_char_high; - CARD8 font_hdr_char_range_max_char_low; - CARD8 font_header_draw_direction; - CARD8 font_header_pad; - CARD8 font_header_default_char_high; - CARD8 font_header_default_char_low; - INT16 font_header_min_bounds_left B16; - INT16 font_header_min_bounds_right B16; - INT16 font_header_min_bounds_width B16; - INT16 font_header_min_bounds_ascent B16; - INT16 font_header_min_bounds_descent B16; - CARD16 font_header_min_bounds_attributes B16; - INT16 font_header_max_bounds_left B16; - INT16 font_header_max_bounds_right B16; - INT16 font_header_max_bounds_width B16; - INT16 font_header_max_bounds_ascent B16; - INT16 font_header_max_bounds_descent B16; - CARD16 font_header_max_bounds_attributes B16; - INT16 font_header_font_ascent B16; - INT16 font_header_font_descent B16; - /* propinfo */ - /* name */ -} fsListFontsWithXInfoReply; - -typedef struct { - BYTE type; - CARD8 otherid_valid; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 otherid B32; - BYTE cachable; - BYTE pad1; - CARD16 pad2 B16; -} fsOpenBitmapFontReply; - -typedef struct { - BYTE type; - CARD8 pad0; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 font_header_flags B32; - CARD8 font_hdr_char_range_min_char_high; - CARD8 font_hdr_char_range_min_char_low; - CARD8 font_hdr_char_range_max_char_high; - CARD8 font_hdr_char_range_max_char_low; - CARD8 font_header_draw_direction; - CARD8 font_header_pad; - CARD8 font_header_default_char_high; - CARD8 font_header_default_char_low; - INT16 font_header_min_bounds_left B16; - INT16 font_header_min_bounds_right B16; - INT16 font_header_min_bounds_width B16; - INT16 font_header_min_bounds_ascent B16; - INT16 font_header_min_bounds_descent B16; - CARD16 font_header_min_bounds_attributes B16; - INT16 font_header_max_bounds_left B16; - INT16 font_header_max_bounds_right B16; - INT16 font_header_max_bounds_width B16; - INT16 font_header_max_bounds_ascent B16; - INT16 font_header_max_bounds_descent B16; - CARD16 font_header_max_bounds_attributes B16; - INT16 font_header_font_ascent B16; - INT16 font_header_font_descent B16; - /* propinfo */ -} fsQueryXInfoReply; - -typedef struct { - BYTE type; - CARD8 pad0; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 num_extents B32; - /* extents */ -} fsQueryXExtents8Reply; - -typedef fsQueryXExtents8Reply fsQueryXExtents16Reply; - -typedef struct { - BYTE type; - CARD8 pad0; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 replies_hint B32; - CARD32 num_chars B32; - CARD32 nbytes B32; - /* offsets */ - /* glyphs */ -} fsQueryXBitmaps8Reply; - -typedef fsQueryXBitmaps8Reply fsQueryXBitmaps16Reply; - -typedef union { - fsGenericReply generic; - fsListExtensionsReply extensions; - fsGetResolutionReply getres; -} fsReply; - -/* errors */ -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; -} fsError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; -} fsRequestError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; - fsBitmapFormat format B32; -} fsFormatError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; - Font fontid; -} fsFontError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; - fsRange range; -} fsRangeError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; - Mask event_mask; -} fsEventMaskError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; - AccContext acid; -} fsAccessContextError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; - Font fontid; -} fsIDChoiceError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; -} fsNameError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - fsResolution resolution; -} fsResolutionError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; -} fsAllocError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; - CARD32 bad_length B32; -} fsLengthError; - -typedef struct { - BYTE type; - BYTE request; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - CARD8 major_opcode; - CARD8 minor_opcode; - CARD16 pad B16; -} fsImplementationError; - -/* events */ -typedef struct { - BYTE type; - BYTE event_code; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; -} fsKeepAliveEvent; - -typedef struct { - BYTE type; - BYTE event_code; - CARD16 sequenceNumber B16; - CARD32 length B32; - fsTimestamp timestamp; - BOOL added; - BOOL deleted; - CARD16 pad B16; -} fsCatalogueChangeNotifyEvent; - -typedef fsCatalogueChangeNotifyEvent fsFontChangeNotifyEvent; - -typedef fsCatalogueChangeNotifyEvent fsEvent; - -/* reply codes */ -#define FS_Reply 0 /* normal reply */ -#define FS_Error 1 /* error */ -#define FS_Event 2 - -/* request codes */ -#define FS_Noop 0 -#define FS_ListExtensions 1 -#define FS_QueryExtension 2 -#define FS_ListCatalogues 3 -#define FS_SetCatalogues 4 -#define FS_GetCatalogues 5 -#define FS_SetEventMask 6 -#define FS_GetEventMask 7 -#define FS_CreateAC 8 -#define FS_FreeAC 9 -#define FS_SetAuthorization 10 -#define FS_SetResolution 11 -#define FS_GetResolution 12 -#define FS_ListFonts 13 -#define FS_ListFontsWithXInfo 14 -#define FS_OpenBitmapFont 15 -#define FS_QueryXInfo 16 -#define FS_QueryXExtents8 17 -#define FS_QueryXExtents16 18 -#define FS_QueryXBitmaps8 19 -#define FS_QueryXBitmaps16 20 -#define FS_CloseFont 21 - -/* restore decls */ -#undef Mask -#undef Font -#undef AccContext - -#endif /* _FS_PROTO_H_ */ diff --git a/nx-X11/include/fonts/Imakefile b/nx-X11/include/fonts/Imakefile deleted file mode 100644 index 0eae8a3..0000000 --- a/nx-X11/include/fonts/Imakefile +++ /dev/null @@ -1,22 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/18 04:05:44 coskrey Exp $ - - - - -XCOMM $XFree86: xc/include/fonts/Imakefile,v 3.7 2001/01/17 17:53:26 dawes Exp $ - - HEADERS = FS.h FSproto.h font.h fontstruct.h fsmasks.h - -all:: - -BuildIncludes($(HEADERS),X11/fonts,../..) - -#if BuildLibraries -InstallMultipleFlags($(HEADERS),$(INCDIR)/X11/fonts,$(INSTINCFLAGS)) -#endif - - -InstallDriverSDKNonExecFile(font.h,$(DRIVERSDKINCLUDEDIR)) -InstallDriverSDKNonExecFile(fontproto.h,$(DRIVERSDKINCLUDEDIR)) -InstallDriverSDKNonExecFile(fontstruct.h,$(DRIVERSDKINCLUDEDIR)) -InstallDriverSDKNonExecFile(fsmasks.h,$(DRIVERSDKINCLUDEDIR)) diff --git a/nx-X11/include/fonts/font.h b/nx-X11/include/fonts/font.h deleted file mode 100644 index e6a00cd..0000000 --- a/nx-X11/include/fonts/font.h +++ /dev/null @@ -1,169 +0,0 @@ -/* $Xorg: font.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */ -/*********************************************************** -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* $XFree86: xc/include/fonts/font.h,v 3.4 2000/11/27 00:10:02 dawes Exp $ */ -/* $NCDXorg: @(#)font.h,v 1.7 1991/06/24 17:00:23 lemke Exp $ */ - -#ifndef FONT_H -#define FONT_H - -#ifndef BitmapFormatByteOrderMask -#include "fsmasks.h" -#endif - -/* data structures */ -#ifndef _XTYPEDEF_FONTPTR -typedef struct _Font *FontPtr; -#define _XTYPEDEF_FONTPTR -#endif - -typedef struct _FontInfo *FontInfoPtr; -typedef struct _FontProp *FontPropPtr; -typedef struct _ExtentInfo *ExtentInfoPtr; -typedef struct _FontPathElement *FontPathElementPtr; - -#ifndef _XTYPEDEF_CHARINFOPTR -typedef struct _CharInfo *CharInfoPtr; -#define _XTYPEDEF_CHARINFOPTR -#endif - -typedef struct _FontNames *FontNamesPtr; -typedef struct _FontResolution *FontResolutionPtr; - -#define NullCharInfo ((CharInfoPtr) 0) -#define NullFont ((FontPtr) 0) -#define NullFontInfo ((FontInfoPtr) 0) - - /* draw direction */ -#define LeftToRight 0 -#define RightToLeft 1 -#define BottomToTop 2 -#define TopToBottom 3 -typedef int DrawDirection; - -#define NO_SUCH_CHAR -1 - - -#define FontAliasType 0x1000 - -#define AllocError 80 -#define StillWorking 81 -#define FontNameAlias 82 -#define BadFontName 83 -#define Suspended 84 -#define Successful 85 -#define BadFontPath 86 -#define BadCharRange 87 -#define BadFontFormat 88 -#define FPEResetFailed 89 /* for when an FPE reset won't work */ - -/* OpenFont flags */ -#define FontLoadInfo 0x0001 -#define FontLoadProps 0x0002 -#define FontLoadMetrics 0x0004 -#define FontLoadBitmaps 0x0008 -#define FontLoadAll 0x000f -#define FontOpenSync 0x0010 -#define FontReopen 0x0020 - -/* Query flags */ -#define LoadAll 0x1 -#define FinishRamge 0x2 -#define EightBitFont 0x4 -#define SixteenBitFont 0x8 - -/* Glyph Caching Modes */ -#define CACHING_OFF 0 -#define CACHE_16_BIT_GLYPHS 1 -#define CACHE_ALL_GLYPHS 2 -#define DEFAULT_GLYPH_CACHING_MODE CACHE_16_BIT_GLYPHS -extern int glyphCachingMode; - -struct _Client; - -extern int StartListFontsWithInfo( - struct _Client * /*client*/, - int /*length*/, - unsigned char * /*pattern*/, - int /*max_names*/ -); - -extern FontNamesPtr MakeFontNamesRecord( - unsigned /* size */ -); - -extern void FreeFontNames( - FontNamesPtr /* pFN*/ -); - -extern int AddFontNamesName( - FontNamesPtr /* names */, - char * /* name */, - int /* length */ -); - -#if 0 /* unused */ -extern int FontToFSError(); -extern FontResolutionPtr GetClientResolution(); -#endif - -typedef struct _FontPatternCache *FontPatternCachePtr; - -extern FontPatternCachePtr MakeFontPatternCache ( - void -); - -extern void FreeFontPatternCache ( - FontPatternCachePtr /* cache */ -); - -extern void EmptyFontPatternCache ( - FontPatternCachePtr /* cache */ -); - -extern void CacheFontPattern ( - FontPatternCachePtr /* cache */, - char * /* pattern */, - int /* patlen */, - FontPtr /* pFont */ -); -extern FontResolutionPtr GetClientResolutions( - int * /* num */ -); - -extern FontPtr FindCachedFontPattern ( - FontPatternCachePtr /* cache */, - char * /* pattern */, - int /* patlen */ -); - -extern void RemoveCachedFontPattern ( - FontPatternCachePtr /* cache */, - FontPtr /* pFont */ -); - -typedef enum { - Linear8Bit, TwoD8Bit, Linear16Bit, TwoD16Bit -} FontEncoding; - -#endif /* FONT_H */ diff --git a/nx-X11/include/fonts/fontproto.h b/nx-X11/include/fonts/fontproto.h deleted file mode 100644 index 83c9a00..0000000 --- a/nx-X11/include/fonts/fontproto.h +++ /dev/null @@ -1,93 +0,0 @@ -/* $XFree86: xc/include/fonts/fontproto.h,v 1.2 1999/09/04 09:14:08 dawes Exp $ */ - -/*********************************************************** - -Copyright (c) 1999 The XFree86 Project Inc. - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The XFree86 Project -Inc. shall not be used in advertising or otherwise to promote the -sale, use or other dealings in this Software without prior written -authorization from The XFree86 Project Inc.. - -*/ -#ifndef _FONTPROTO_H -#define _FONTPROTO_H - -/* Externally provided functions required by libXfont */ - -extern int RegisterFPEFunctions ( NameCheckFunc name_func, - InitFpeFunc init_func, - FreeFpeFunc free_func, - ResetFpeFunc reset_func, - OpenFontFunc open_func, - CloseFontFunc close_func, - ListFontsFunc list_func, - StartLfwiFunc start_lfwi_func, - NextLfwiFunc next_lfwi_func, - WakeupFpeFunc wakeup_func, - ClientDiedFunc client_died, - LoadGlyphsFunc load_glyphs, - StartLaFunc start_list_alias_func, - NextLaFunc next_list_alias_func, - SetPathFunc set_path_func); - -extern int GetDefaultPointSize ( void ); - -extern int init_fs_handlers ( FontPathElementPtr fpe, - BlockHandlerProcPtr block_handler); -extern void remove_fs_handlers ( FontPathElementPtr fpe, - BlockHandlerProcPtr block_handler, - Bool all ); - -extern int client_auth_generation ( ClientPtr client ); - -#ifndef ___CLIENTSIGNAL_DEFINED___ -#define ___CLIENTSIGNAL_DEFINED___ -extern Bool ClientSignal ( ClientPtr client ); -#endif /* ___CLIENTSIGNAL_DEFINED___ */ - -extern void DeleteFontClientID ( Font id ); -extern Font GetNewFontClientID ( void ); -extern int StoreFontClientFont ( FontPtr pfont, Font id ); -extern void FontFileRegisterFpeFunctions ( void ); -extern void FontFileCheckRegisterFpeFunctions ( void ); - -extern Bool XpClientIsBitmapClient ( ClientPtr client ); -extern Bool XpClientIsPrintClient( ClientPtr client, FontPathElementPtr fpe ); -extern void PrinterFontRegisterFpeFunctions ( void ); - -extern void fs_register_fpe_functions ( void ); -extern void check_fs_register_fpe_functions ( void ); - -/* util/private.c */ -extern FontPtr CreateFontRec (void); -extern void DestroyFontRec (FontPtr font); -extern Bool _FontSetNewPrivate (FontPtr /* pFont */, - int /* n */, - pointer /* ptr */); -extern int AllocateFontPrivateIndex (void); -extern void ResetFontPrivateIndex (void); - -/* Type1/t1funcs.c */ -extern void Type1RegisterFontFileFunctions(void); -extern void CIDRegisterFontFileFunctions(void); - -/* Speedo/spfuncs.c */ -extern void SpeedoRegisterFontFileFunctions(void); - -/* FreeType/ftfuncs.c */ -extern void FreeTypeRegisterFontFileFunctions(void); - -#endif diff --git a/nx-X11/include/fonts/fontstruct.h b/nx-X11/include/fonts/fontstruct.h deleted file mode 100644 index 451ed6a..0000000 --- a/nx-X11/include/fonts/fontstruct.h +++ /dev/null @@ -1,295 +0,0 @@ -/* $Xorg: fontstruct.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */ -/*********************************************************** -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -/* $XFree86: xc/include/fonts/fontstruct.h,v 3.3 1999/08/21 13:47:34 dawes Exp $ */ - -#ifndef FONTSTR_H -#define FONTSTR_H - -#include <X11/Xproto.h> -#include "font.h" -#include <X11/Xfuncproto.h> -#include <X11/Xdefs.h> - -/* - * This version of the server font data strucutre is only for describing - * the in memory data structure. The file structure is not necessarily a - * copy of this. That is up to the compiler and the OS layer font loading - * machinery. - */ - -#define GLYPHPADOPTIONS 4 /* 1, 2, 4, or 8 */ - -typedef struct _FontProp { - long name; - long value; /* assumes ATOM is not larger than INT32 */ -} FontPropRec; - -typedef struct _FontResolution { - unsigned short x_resolution; - unsigned short y_resolution; - unsigned short point_size; -} FontResolutionRec; - -typedef struct _ExtentInfo { - DrawDirection drawDirection; - int fontAscent; - int fontDescent; - int overallAscent; - int overallDescent; - int overallWidth; - int overallLeft; - int overallRight; -} ExtentInfoRec; - -typedef struct _CharInfo { - xCharInfo metrics; /* info preformatted for Queries */ - char *bits; /* pointer to glyph image */ -} CharInfoRec; - -/* - * Font is created at font load time. It is specific to a single encoding. - * e.g. not all of the glyphs in a font may be part of a single encoding. - */ - -typedef struct _FontInfo { - unsigned short firstCol; - unsigned short lastCol; - unsigned short firstRow; - unsigned short lastRow; - unsigned short defaultCh; - unsigned int noOverlap:1; - unsigned int terminalFont:1; - unsigned int constantMetrics:1; - unsigned int constantWidth:1; - unsigned int inkInside:1; - unsigned int inkMetrics:1; - unsigned int allExist:1; - unsigned int drawDirection:2; - unsigned int cachable:1; - unsigned int anamorphic:1; - short maxOverlap; - short pad; - xCharInfo maxbounds; - xCharInfo minbounds; - xCharInfo ink_maxbounds; - xCharInfo ink_minbounds; - short fontAscent; - short fontDescent; - int nprops; - FontPropPtr props; - char *isStringProp; -} FontInfoRec; - -typedef struct _Font { - int refcnt; - FontInfoRec info; - char bit; - char byte; - char glyph; - char scan; - fsBitmapFormat format; - int (*get_glyphs) (FontPtr /* font */, - unsigned long /* count */, - unsigned char * /* chars */, - FontEncoding /* encoding */, - unsigned long * /* count */, - CharInfoPtr * /* glyphs */); - int (*get_metrics) (FontPtr /* font */, - unsigned long /* count */, - unsigned char * /* chars */, - FontEncoding /* encoding */, - unsigned long * /* count */, - xCharInfo ** /* glyphs */); - void (*unload_font) (FontPtr /* font */); - void (*unload_glyphs) (FontPtr /* font */); - FontPathElementPtr fpe; - pointer svrPrivate; - pointer fontPrivate; - pointer fpePrivate; - int maxPrivate; - pointer *devPrivates; -} FontRec; - -#define FontGetPrivate(pFont,n) ((n) > (pFont)->maxPrivate ? (pointer) 0 : \ - (pFont)->devPrivates[n]) - -#define FontSetPrivate(pFont,n,ptr) ((n) > (pFont)->maxPrivate ? \ - _FontSetNewPrivate (pFont, n, ptr) : \ - ((((pFont)->devPrivates[n] = (ptr)) != 0) || TRUE)) - -typedef struct _FontNames { - int nnames; - int size; - int *length; - char **names; -} FontNamesRec; - -/* External view of font paths */ -typedef struct _FontPathElement { - int name_length; - char *name; - int type; - int refcount; - pointer private; -} FontPathElementRec; - -typedef Bool (*NameCheckFunc) (char *name); -typedef int (*InitFpeFunc) (FontPathElementPtr fpe); -typedef int (*FreeFpeFunc) (FontPathElementPtr fpe); -typedef int (*ResetFpeFunc) (FontPathElementPtr fpe); -typedef int (*OpenFontFunc) ( pointer client, - FontPathElementPtr fpe, - Mask flags, - char* name, - int namelen, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - XID id, - FontPtr* pFont, - char** aliasName, - FontPtr non_cachable_font); -typedef void (*CloseFontFunc) (FontPathElementPtr fpe, FontPtr pFont); -typedef int (*ListFontsFunc) (pointer client, - FontPathElementPtr fpe, - char* pat, - int len, - int max, - FontNamesPtr names); - -typedef int (*StartLfwiFunc) (pointer client, - FontPathElementPtr fpe, - char* pat, - int len, - int max, - pointer* privatep); - -typedef int (*NextLfwiFunc) (pointer client, - FontPathElementPtr fpe, - char** name, - int* namelen, - FontInfoPtr* info, - int* numFonts, - pointer private); - -typedef int (*WakeupFpeFunc) (FontPathElementPtr fpe, - unsigned long* LastSelectMask); - -typedef void (*ClientDiedFunc) (pointer client, - FontPathElementPtr fpe); - -typedef int (*LoadGlyphsFunc) (pointer client, - FontPtr pfont, - Bool range_flag, - unsigned int nchars, - int item_size, - unsigned char* data); - -typedef int (*StartLaFunc) (pointer client, - FontPathElementPtr fpe, - char* pat, - int len, - int max, - pointer* privatep); - -typedef int (*NextLaFunc) (pointer client, - FontPathElementPtr fpe, - char** namep, - int* namelenp, - char** resolvedp, - int* resolvedlenp, - pointer private); - -typedef void (*SetPathFunc)(void); - -typedef struct _FPEFunctions { - NameCheckFunc name_check; - InitFpeFunc init_fpe; - ResetFpeFunc reset_fpe; - FreeFpeFunc free_fpe; - OpenFontFunc open_font; - CloseFontFunc close_font; - ListFontsFunc list_fonts; - StartLaFunc start_list_fonts_and_aliases; - NextLaFunc list_next_font_or_alias; - StartLfwiFunc start_list_fonts_with_info; - NextLfwiFunc list_next_font_with_info; - WakeupFpeFunc wakeup_fpe; - ClientDiedFunc client_died; - /* for load_glyphs, range_flag = 0 -> - nchars = # of characters in data - item_size = bytes/char - data = list of characters - range_flag = 1 -> - nchars = # of fsChar2b's in data - item_size is ignored - data = list of fsChar2b's */ - LoadGlyphsFunc load_glyphs; - SetPathFunc set_path_hook; -} FPEFunctionsRec, FPEFunctions; - -/* - * Various macros for computing values based on contents of - * the above structures - */ - -#define GLYPHWIDTHPIXELS(pci) \ - ((pci)->metrics.rightSideBearing - (pci)->metrics.leftSideBearing) - -#define GLYPHHEIGHTPIXELS(pci) \ - ((pci)->metrics.ascent + (pci)->metrics.descent) - -#define GLYPHWIDTHBYTES(pci) (((GLYPHWIDTHPIXELS(pci))+7) >> 3) - -#define GLYPHWIDTHPADDED(bc) (((bc)+7) & ~0x7) - -#define BYTES_PER_ROW(bits, nbytes) \ - ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \ - :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \ - :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \ - :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \ - : 0) - -#define BYTES_FOR_GLYPH(ci,pad) (GLYPHHEIGHTPIXELS(ci) * \ - BYTES_PER_ROW(GLYPHWIDTHPIXELS(ci),pad)) -/* - * Macros for computing different bounding boxes for fonts; from - * the font protocol - */ - -#define FONT_MAX_ASCENT(pi) ((pi)->fontAscent > (pi)->ink_maxbounds.ascent ? \ - (pi)->fontAscent : (pi)->ink_maxbounds.ascent) -#define FONT_MAX_DESCENT(pi) ((pi)->fontDescent > (pi)->ink_maxbounds.descent ? \ - (pi)->fontDescent : (pi)->ink_maxbounds.descent) -#define FONT_MAX_HEIGHT(pi) (FONT_MAX_ASCENT(pi) + FONT_MAX_DESCENT(pi)) -#define FONT_MIN_LEFT(pi) ((pi)->ink_minbounds.leftSideBearing < 0 ? \ - (pi)->ink_minbounds.leftSideBearing : 0) -#define FONT_MAX_RIGHT(pi) ((pi)->ink_maxbounds.rightSideBearing > \ - (pi)->ink_maxbounds.characterWidth ? \ - (pi)->ink_maxbounds.rightSideBearing : \ - (pi)->ink_maxbounds.characterWidth) -#define FONT_MAX_WIDTH(pi) (FONT_MAX_RIGHT(pi) - FONT_MIN_LEFT(pi)) - -#include "fontproto.h" - -#endif /* FONTSTR_H */ diff --git a/nx-X11/include/fonts/fsmasks.h b/nx-X11/include/fonts/fsmasks.h deleted file mode 100644 index 434ee97..0000000 --- a/nx-X11/include/fonts/fsmasks.h +++ /dev/null @@ -1,98 +0,0 @@ -/* $Xorg: fsmasks.h,v 1.4 2001/02/09 02:03:25 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. - * Network Computing Devices and Digital make no representations - * about the suitability of this software for any purpose. It is provided - * "as is" without express or implied warranty. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES - * OR DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ - -/* - -Portions Copyright 1987, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - - -/* - * masks & values used by the font lib and the font server - */ - -#ifndef _FSMASKS_H_ -#define _FSMASKS_H_ - -#include <X11/Xmd.h> - -/* font format macros */ -#define BitmapFormatByteOrderMask (1L << 0) -#define BitmapFormatBitOrderMask (1L << 1) -#define BitmapFormatImageRectMask (3L << 2) -#define BitmapFormatScanlinePadMask (3L << 8) -#define BitmapFormatScanlineUnitMask (3L << 12) - -#define BitmapFormatByteOrderLSB (0) -#define BitmapFormatByteOrderMSB (1L << 0) -#define BitmapFormatBitOrderLSB (0) -#define BitmapFormatBitOrderMSB (1L << 1) - -#define BitmapFormatImageRectMin (0L << 2) -#define BitmapFormatImageRectMaxWidth (1L << 2) -#define BitmapFormatImageRectMax (2L << 2) - -#define BitmapFormatScanlinePad8 (0L << 8) -#define BitmapFormatScanlinePad16 (1L << 8) -#define BitmapFormatScanlinePad32 (2L << 8) -#define BitmapFormatScanlinePad64 (3L << 8) - -#define BitmapFormatScanlineUnit8 (0L << 12) -#define BitmapFormatScanlineUnit16 (1L << 12) -#define BitmapFormatScanlineUnit32 (2L << 12) -#define BitmapFormatScanlineUnit64 (3L << 12) - -#define BitmapFormatMaskByte (1L << 0) -#define BitmapFormatMaskBit (1L << 1) -#define BitmapFormatMaskImageRectangle (1L << 2) -#define BitmapFormatMaskScanLinePad (1L << 3) -#define BitmapFormatMaskScanLineUnit (1L << 4) - -typedef CARD32 fsBitmapFormat; -typedef CARD32 fsBitmapFormatMask; - -#endif /* _FSMASKS_H_ */ diff --git a/nx-X11/lib/Imakefile b/nx-X11/lib/Imakefile index 599ea64..2c7f174 100644 --- a/nx-X11/lib/Imakefile +++ b/nx-X11/lib/Imakefile @@ -106,22 +106,6 @@ RENDERLIBDIR = Xrender EXPATBUILDDIR = expat #endif -#if BuildFreetype2Library -FREETYPE2BUILDDIR = freetype2 -#endif - -#if BuildFontconfigLibrary -FONTCONFIGBUILDDIR = fontconfig -#endif - -#if BuildXftLibrary -XFTLIBDIR = Xft -#endif - -#if BuildXft1Library -XFT1LIBDIR = Xft1 -#endif - #if BuildRandRLibrary RANDRLIBDIR = Xrandr #endif @@ -165,7 +149,7 @@ XF86EXTLIBS = $(XF86MISCLIBDIR) $(XF86VMLIBDIR) \ LBXUTILDIR = lbxutil #endif -#if (BuildLBX || GzipFontCompression) && !HasZlib +#if BuildLBX && !HasZlib ZLIBDIR = zlib #endif @@ -177,16 +161,6 @@ REGEXDIR = regex XALIBDIR = Xa #endif -#if BuildFontCacheLib -FONTCACHELIBDIR = Xfontcache -#endif - -FONTSUBDIR = font - -#if BuildFontEncLib -FONTENCSUBDIR = fontenc -#endif - #if BuildXauLib XAULIBDIR = Xau #endif @@ -218,15 +192,13 @@ LINTSUBDIRS = $(XAULIBDIR) $(XDMCPLIBDIR) $(X11LIBDIR) \ $(XKBUILIBDIR) $(LBXUTILDIR) $(XALIBDIR) $(EXPATBUILDDIR) \ $(XVLIBDIR) $(GLXLIBDIR) $(GLULIBDIR) $(GLWLIBDIR) \ $(DPSLIBDIR) $(PSRESLIBDIR) $(DPSTKLIBDIR) $(XINERAMADIR) \ - $(ZLIBDIR) $(REGEXDIR) $(RENDERLIBDIR) $(FREETYPE2BUILDDIR) \ - $(FONTCONFIGBUILDDIR) $(XFT1LIBDIR) \ - $(XFTLIBDIR) $(XVMCLIBDIR) $(RANDRLIBDIR) $(XTRAPLIBDIR) \ + $(ZLIBDIR) $(REGEXDIR) $(RENDERLIBDIR) \ + $(XVMCLIBDIR) $(RANDRLIBDIR) $(XTRAPLIBDIR) \ $(XRESLIBDIR) $(APPLELIBDIR) $(DMXLIBDIR) $(WINDOWSLIBDIR) \ $(XEVIELIBDIR) $(XFIXESLIBDIR) $(DAMAGELIBDIR) \ $(XCURSORLIBDIR) $(COMPOSITELIBDIR) -SUBDIRS = $(BERKDIR) xtrans $(LINTSUBDIRS) $(FONTSUBDIR) $(FONTENCSUBDIR) \ - $(FONTCACHELIBDIR) +SUBDIRS = $(BERKDIR) xtrans $(LINTSUBDIRS) MakeSubdirs($(SUBDIRS)) DependSubdirs($(SUBDIRS)) diff --git a/nx-X11/lib/Xrender/Imakefile b/nx-X11/lib/Xrender/Imakefile index 86ac94f..72d149a 100644 --- a/nx-X11/lib/Xrender/Imakefile +++ b/nx-X11/lib/Xrender/Imakefile @@ -26,13 +26,6 @@ XCOMM NONSTANDARD_HEADERS below. #define SharedXrenderRev 1.1 SOXRENDERREV = SharedXrenderRev -#if SharedLibXrender -#define SharedXft1Rev 1.2 -SharedLibReferences(XFT1,Xft,$(XFT1SRC),SOXFT1REV,SharedXft1Rev) -#else -ProjectUnsharedLibReferences(XFT1,Xft,$(XFT1SRC),BuildLibDir) -#endif - #undef LinkBuildLibrary #define LinkBuildLibrary(lib) MakeDir($(BUILDLIBDIR)) @@\ RemoveFile($(BUILDLIBDIR)/lib) @@\ diff --git a/nx-X11/lib/font/Imakefile b/nx-X11/lib/font/Imakefile deleted file mode 100644 index f47fe96..0000000 --- a/nx-X11/lib/font/Imakefile +++ /dev/null @@ -1,178 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:24 cpqbld Exp $ - - - - -XCOMM $XFree86: xc/lib/font/Imakefile,v 3.37 2003/10/24 16:21:12 tsi Exp $ - -#include <Server.tmpl> - -#define IHaveSubdirs - -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoExtraLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont - -#if !BuildFontLib -#define LibCreate NO -#else -#define LibCreate YES -#endif - -#if BuildLibraries -#define LibInstall YES -#else -#define LibInstall NO -#endif - -#if BuildLibraries -STUBDIRS = stubs -#endif - -LIBNAME = NX_Xfont -SOREV = $(SOFONTREV) - -#ifndef SeparateSharedCompile -#define SeparateSharedCompile YES -#endif -#if NormalLibFont && SharedLibFont && SeparateSharedCompile -STATIC_OBJSDIR = unshared/ -#endif - -#ifdef SharedXfontReqs -REQUIREDLIBS = SharedXfontReqs -#endif - -#if BuildSpeedo - SPEEDODIRS = Speedo - SPEEDOSHAREDOBJS = Speedo/?*.o - SPEEDOSTATICOBJS = Speedo/$(STATIC_OBJSDIR)?*.o - SPEEDODEBUGOBJS = Speedo/debugger/?*.o - SPEEDOPROFILEOBJS = Speedo/profiled/?*.o - SPEEDODONES = Speedo/DONE -#endif -#if BuildType1 || BuildCID - TYPE1DIRS = Type1 - TYPE1SHAREDOBJS = Type1/?*.o - TYPE1STATICOBJS = Type1/$(STATIC_OBJSDIR)?*.o - TYPE1DEBUGOBJS = Type1/debugger/?*.o - TYPE1PROFILEOBJS = Type1/profiled/?*.o - TYPE1DONES = Type1/DONE -#endif -#if BuildFreeType || BuildFreetype2Library - FREETYPEDIRS = FreeType - FREETYPESHAREDOBJS = FreeType/?*.o - FREETYPESTATICOBJS = FreeType/$(STATIC_OBJSDIR)?*.o - FREETYPEDEBUGOBJS = FreeType/debugger/?*.o -FREETYPEPROFILEOBJS = FreeType/profiled/?*.o - FREETYPEDONES = FreeType/DONE -#endif -#if BuildBuiltinFonts - BUILTINDIRS = builtins - BUILTINSHAREDOBJS = builtins/?*.o - BUILTINSTATICOBJS = builtins/$(STATIC_OBJSDIR)?*.o - BUILTINDEBUGOBJS = builtins/debugger/?*.o - BUILTINPROFILEOBJS = builtins/profiled/?*.o - BUILTINDONES = builtins/DONE -#endif -#if BuildFontCache - FONTCACHEDIRS = fontcache -FONTCACHESHAREDOBJS = fontcache/?*.o -FONTCACHESTATICOBJS = fontcache/$(STATIC_OBJSDIR)?*.o - FONTCACHEDEBUGOBJS = fontcache/debugger/?*.o -FONTCACHEPROFILEOBJS = fontcache/profiled/?*.o - FONTCACHEDONES = fontcache/DONE -#endif - - SUBDIRS = bitmap fontfile fc $(FONTCACHEDIRS) \ - $(SPEEDODIRS) $(TYPE1DIRS) \ - $(FREETYPEDIRS) $(BUILTINDIRS) \ - util $(STUBDIRS) include - SHARED_OBJS = bitmap/?*.o fontfile/?*.o fc/?*.o $(FONTCACHESHAREDOBJS) \ - $(SPEEDOSHAREDOBJS) $(TYPE1SHAREDOBJS) \ - $(FREETYPESHAREDOBJS) \ - $(BUILTINSHAREDOBJS) util/?*.o - STATIC_OBJS = bitmap/$(STATIC_OBJSDIR)?*.o fontfile/$(STATIC_OBJSDIR)?*.o \ - fc/$(STATIC_OBJSDIR)?*.o $(FONTCACHESTATICOBJS) \ - $(SPEEDOSTATICOBJS) $(TYPE1STATICOBJS) \ - $(FREETYPESTATICOBJS) \ - $(BUILTINSTATICOBJS) util/$(STATIC_OBJSDIR)?*.o - DEBUG_OBJS = bitmap/debugger/?*.o fontfile/debugger/?*.o fc/debugger/?*.o \ - $(FONTCACHEDEBUGOBJS) \ - $(SPEEDODEBUGOBJS) $(TYPE1DEBUGOBJS) \ - $(FREETYPEDEBUGOBJS) \ - $(BUILTINDEBUGOBJS) util/debugger/?*.o - PROFILE_OBJS = bitmap/profiled/?*.o fontfile/profiled/?*.o fc/profiled/?*.o \ - $(FONTCACHEPROFILEOBJS) \ - $(SPEEDOPROFILEOBJS) $(TYPE1PROFILEOBJS) \ - $(FREETYPEPROFILEOBJS) \ - $(BUILTINPROFILEOBJS) util/profiled/?*.o - DONES = bitmap/DONE fontfile/DONE fc/DONE $(FONTCACHEDONES) \ - $(SPEEDODONES) $(TYPE1DONES) \ - $(FREETYPEDONES) \ - $(BUILTINDONES) util/DONE - -#if BuildServer && DoLoadableServer - BASEDIRS = fontfile fc util $(FONTCACHEDIRS) - BASELIBOBJS = fontfile/$(STATIC_OBJSDIR)?*.o fc/$(STATIC_OBJSDIR)?*.o \ - util/$(STATIC_OBJSDIR)?*.o $(FONTCACHESTATICOBJS) - BASEOBJS = fontfile/module/ffcheck.o fontfile/module/register.o \ - util/private.o - BASEDONES = fontfile/DONE fontfile/module/DONE fc/DONE util/DONE \ - $(FONTCACHEDONES) -#endif - -#if HasParallelMake -MakeMutex($(SUBDIRS) $(DONES)) -#endif - -#if HasGnuMake || HasBsdMake -$(DONES): $(SUBDIRS) -#endif - -#include <Library.tmpl> - -#undef _LinkBuildLibrary -#define _LinkBuildLibrary(lib) LinkBuildLibrary(lib) - -#if LibCreate -#if NormalLibFont -NormalDepLibraryTarget($(LIBNAME),$(SUBDIRS) $(DONES),$(STATIC_OBJS)) -#if LibInstall -InstallLibrary($(LIBNAME),$(USRLIBDIR)) -#endif /* LibInstall */ -#endif /* NormalLibFont */ - -#if SharedLibFont -SharedDepLibraryTarget($(LIBNAME),$(SOREV),$(SUBDIRS) $(DONES),$(SHARED_OBJS),.,.) -#if LibInstall -InstallSharedLibrary($(LIBNAME),$(SOREV),$(SHLIBDIR)) -#endif /* LibInstall */ -#endif /* SharedLibFont */ - -#if DebugLibFont -DebuggedDepLibraryTarget($(LIBNAME),$(SUBDIRS) $(DONES),$(DEBUG_OBJS)) -#if LibInstall -InstallLibrary($(LIBNAME)_d,$(USRLIBDIR)) -#endif /* LibInstall */ -#endif /* DebugLibFont */ - -#if ProfileLibFont -ProfiledDepLibraryTarget($(LIBNAME),$(SUBDIRS) $(DONES),$(PROFILE_OBJS)) -#if LibInstall -InstallLibrary($(LIBNAME)_p,$(USRLIBDIR)) -#endif /* LibInstall */ -#endif /* ProfileLibFont */ -#endif /* LibCreate */ - -#if BuildServer && DoLoadableServer -NormalDepLibraryTarget(fontbase,$(BASEDIRS) $(BASEDONES),$(BASELIBOBJS)) -NormalDepRelocatableTarget(fontbase,$(BASEDIRS) $(BASEDONES),$(BASEOBJS)) -#endif - - -ForceSubdirs($(SUBDIRS)) - -DependSubdirs($(SUBDIRS)) diff --git a/nx-X11/lib/font/Speedo/Imakefile b/nx-X11/lib/font/Speedo/Imakefile deleted file mode 100644 index e2d9dcd..0000000 --- a/nx-X11/lib/font/Speedo/Imakefile +++ /dev/null @@ -1,46 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:24 cpqbld Exp $ - - - - -XCOMM $XFree86: xc/lib/font/Speedo/Imakefile,v 1.10 2001/01/19 08:13:29 dawes Exp $ - -#if BuildServer && DoLoadableServer -#define IHaveSubdirs -#define NoLibSubdirs -#define PassCDebugFlags -SUBDIRS = module -#endif - - INCLUDES = -I$(FONTINCSRC) -I../include -I$(SERVERSRC)/include - HEADERS = - SPEEDOSRCS = do_char.c do_trns.c out_bl2d.c out_blk.c \ - out_scrn.c out_util.c reset.c set_spcs.c set_trns.c - SPEEDOOBJS = do_char.o do_trns.o out_bl2d.o out_blk.o \ - out_scrn.o out_util.o reset.o set_spcs.o set_trns.o - - SRCS = spfuncs.c spfile.c spinfo.c sperr.c spfont.c spglyph.c \ - spencode.c bics-unicode.c \ - $(SPEEDOSRCS) - OBJS = spfuncs.o spfile.o spinfo.o sperr.o spfont.o spglyph.o \ - spencode.o bics-unicode.o \ - $(SPEEDOOBJS) - -#if BuildFontLib -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont -#include <Library.tmpl> -LibraryObjectRule() - -SubdirLibraryRule($(OBJS)) -NormalLintTarget($(SRCS)) -#endif - -#if BuildServer && DoLoadableServer -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) -#endif - -DependTarget() diff --git a/nx-X11/lib/font/Speedo/adobe-iso.h b/nx-X11/lib/font/Speedo/adobe-iso.h deleted file mode 100644 index e1eeef1..0000000 --- a/nx-X11/lib/font/Speedo/adobe-iso.h +++ /dev/null @@ -1,200 +0,0 @@ -/* $Xorg: adobe-iso.h,v 1.3 2000/08/17 19:46:24 cpqbld Exp $ */ - -/* - * Latin 1 format from masterset format 11 (ps) - * 0 implies no valid mapping - */ - -int adobe_map[] = { - 32, 32, - 33, 33, - 34, 34, - 35, 35, - 36, 36, - 37, 37, - 38, 38, - 39, 169, - 40, 40, - 41, 41, - 42, 42, - 43, 43, - 44, 44, - 45, 45, - 46, 46, - 47, 47, - 48, 48, - 49, 49, - 50, 50, - 51, 51, - 52, 52, - 53, 53, - 54, 54, - 55, 55, - 56, 56, - 57, 57, - 58, 58, - 59, 59, - 60, 60, - 61, 61, - 62, 62, - 63, 63, - 64, 64, - 65, 65, - 66, 66, - 67, 67, - 68, 68, - 69, 69, - 70, 70, - 71, 71, - 72, 72, - 73, 73, - 74, 74, - 75, 75, - 76, 76, - 77, 77, - 78, 78, - 79, 79, - 80, 80, - 81, 81, - 82, 82, - 83, 83, - 84, 84, - 85, 85, - 86, 86, - 87, 87, - 88, 88, - 89, 89, - 90, 90, - 91, 91, - 92, 92, - 93, 93, - 94, 195, - 95, 95, - 96, 193, - 97, 97, - 98, 98, - 99, 99, - 100, 100, - 101, 101, - 102, 102, - 103, 103, - 104, 104, - 105, 105, - 106, 106, - 107, 107, - 108, 108, - 109, 109, - 110, 110, - 111, 111, - 112, 112, - 113, 113, - 114, 114, - 115, 115, - 116, 116, - 117, 117, - 118, 118, - 119, 119, - 120, 120, - 121, 121, - 122, 122, - 123, 123, - 124, 124, - 125, 125, - 126, 196, /* lc tilde */ - 127, 0, /* */ - 161, 161, /* invert exclamation */ - 162, 162, /* cent */ - 163, 163, /* pound sterling */ - 164, 168, /* intl currency */ - 165, 165, /* yen */ - 166, 320, /* split vert bar */ - 167, 167, /* section mark */ - 168, 200, /* dierisis */ - 169, 0, /* superior copyright */ - 170, 0, /* feminine ordinal */ - 171, 171, /* dbl left guillemot */ - 172, 314, /* math not */ - 173, 0, /* hyphen ? */ - 174, 0, /* superior registered */ - 175, 0, /* overscore */ - 176, 321, /* degree */ - 177, 329, /* math +- */ - 178, 333, /* superior 2 */ - 179, 332, /* superior 3 */ - 180, 194, /* lc acute */ - 181, 324, /* greek lc mu */ - 182, 182, /* Paragraph */ - 183, 180, /* center dot */ - 184, 203, /* cedilla lc */ - 185, 328, /* superior 1 */ - 186, 0, /* masculine ordinal(using superior o) */ - 187, 187, /* right dbl guillemot */ - 188, 327, /* 1/4 */ - 189, 326, /* 1/2 */ - 190, 331, /* 3/4 */ - 191, 191, /* invert question */ - 192, 259, /* A grave */ - 193, 256, /* A acute */ - 194, 257, /* A circumflex */ - 195, 261, /* A tilde */ - 196, 258, /* A dierisis */ - 197, 260, /* A angstrom */ - 198, 225, /* AE ligature */ - 199, 262, /* C cedilla */ - 200, 266, /* E grave */ - 201, 263, /* E acute */ - 202, 264, /* E circumflex */ - 203, 265, /* E dierisis */ - 204, 270, /* I grave */ - 205, 267, /* I acute */ - 206, 268, /* I circumflex */ - 207, 269, /* I dierisis */ - 208, 317, /* D bar */ - 209, 271, /* N tilde */ - 210, 275, /* O grave */ - 211, 272, /* O acute */ - 212, 273, /* O circumflex */ - 213, 276, /* O tilde */ - 214, 274, /* O dierisis */ - 215, 325, /* math multiply */ - 216, 233, /* O bar */ - 217, 281, /* U grave */ - 218, 278, /* U acute */ - 219, 279, /* U circumflex */ - 220, 280, /* U dierisis */ - 221, 319, /* Y acute */ - 222, 318, /* icelandic thorn lc */ - 223, 251, /* German dbl s */ - 224, 287, /* a grave */ - 225, 284, /* a acute */ - 226, 285, /* a circumflex */ - 227, 289, /* a tilde */ - 228, 286, /* a dierisis */ - 229, 288, /* a angstrom */ - 230, 241, /* ae ligature */ - 231, 290, /* c cedilla */ - 232, 294, /* e grave */ - 233, 291, /* e acute */ - 234, 292, /* e circumflex */ - 235, 293, /* e dierisis */ - 236, 298, /* i grave */ - 237, 295, /* i acute */ - 238, 296, /* i circumflex */ - 239, 297, /* i dierisis */ - 240, 323, /* icelandic eth lc */ - 241, 299, /* n tilde */ - 242, 303, /* o grave */ - 243, 300, /* o acute */ - 244, 301, /* o circumflex */ - 245, 304, /* o tilde */ - 246, 302, /* o dierisis */ - 247, 322, /* math divide */ - 248, 249, /* o bar */ - 249, 309, /* u grave */ - 250, 306, /* u acute */ - 251, 307, /* u circumflex */ - 252, 308, /* u dierisis */ - 253, 334, /* y acute */ - 254, 330, /* icelandic thorn uc */ - 255, 310, /* y dierisis */ -}; diff --git a/nx-X11/lib/font/Speedo/bics-iso.h b/nx-X11/lib/font/Speedo/bics-iso.h deleted file mode 100644 index 4964fa3..0000000 --- a/nx-X11/lib/font/Speedo/bics-iso.h +++ /dev/null @@ -1,224 +0,0 @@ -/* $Xorg: bics-iso.h,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - -Copyright 1993, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/bics-iso.h,v 1.6 2001/01/17 19:43:17 dawes Exp $ */ - -int sp_bics_map[] = { - 32, 0, - 33, 1, - 34, 2, - 35, 3, - 36, 4, - 37, 5, - 38, 6, - 39, 264, - 40, 8, - 41, 9, - 42, 10, - 43, 11, - 44, 12, - 45, 13, - 46, 14, - 47, 15, - 48, 16, - 49, 17, - 50, 18, - 51, 19, - 52, 20, - 53, 21, - 54, 22, - 55, 23, - 56, 24, - 57, 25, - 58, 26, - 59, 27, - 60, 28, - 61, 29, - 62, 30, - 63, 31, - 64, 32, - 65, 33, - 66, 34, - 67, 35, - 68, 36, - 69, 37, - 70, 38, - 71, 39, - 72, 40, - 73, 41, - 74, 42, - 75, 43, - 76, 44, - 77, 45, - 78, 46, - 79, 47, - 80, 48, - 81, 49, - 82, 50, - 83, 51, - 84, 52, - 85, 53, - 86, 54, - 87, 55, - 88, 56, - 89, 57, - 90, 58, - 91, 59, - 92, 60, - 93, 61, - 94, 133, - 95, 63, - 96, 131, - 97, 65, - 98, 66, - 99, 67, - 100, 68, - 101, 69, - 102, 70, - 103, 71, - 104, 72, - 105, 73, - 106, 74, - 107, 75, - 108, 76, - 109, 77, - 110, 78, - 111, 79, - 112, 80, - 113, 81, - 114, 82, - 115, 83, - 116, 84, - 117, 85, - 118, 86, - 119, 87, - 120, 88, - 121, 89, - 122, 90, - 123, 91, - 124, 92, - 125, 93, - 126, 137, - 127, 358, - 161, 128, - 162, 98, - 163, 97, - 164, 278, - 165, 274, - 166, 277, - 167, 110, - 168, 135, - 169, 503, - 170, 538, - 171, 125, - 172, 309, - 173, 191, - 174, 504, - 175, 230, - 176, 339, - 177, 286, - 178, 160, - 179, 161, - 180, 129, - 181, 325, - 182, 279, - 183, 102, - 184, 141, - 185, 159, - 186, 544, - 187, 126, - 188, 151, - 189, 153, - 190, 155, - 191, 127, - 192, 259, - 193, 261, - 194, 257, - 195, 253, - 196, 255, - 197, 113, - 198, 114, - 199, 148, - 200, 249, - 201, 251, - 202, 247, - 203, 245, - 204, 239, - 205, 241, - 206, 237, - 207, 235, - 208, 169, - 209, 196, - 210, 202, - 211, 200, - 212, 204, - 213, 208, - 214, 206, - 215, 284, - 216, 115, - 217, 212, - 218, 210, - 219, 214, - 220, 216, - 221, 224, - 222, 271, - 223, 121, - 224, 260, - 225, 262, - 226, 258, - 227, 254, - 228, 256, - 229, 117, - 230, 118, - 231, 149, - 232, 250, - 233, 252, - 234, 248, - 235, 246, - 236, 240, - 237, 242, - 238, 238, - 239, 236, - 240, 273, - 241, 195, - 242, 201, - 243, 199, - 244, 203, - 245, 207, - 246, 205, - 247, 285, - 248, 119, - 249, 211, - 250, 209, - 251, 213, - 252, 215, - 253, 223, - 254, 272, - 255, 221, -}; - diff --git a/nx-X11/lib/font/Speedo/bics-unicode.c b/nx-X11/lib/font/Speedo/bics-unicode.c deleted file mode 100644 index 7355082..0000000 --- a/nx-X11/lib/font/Speedo/bics-unicode.c +++ /dev/null @@ -1,138 +0,0 @@ -/* -Copyright (c) 1998 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* $XFree86$ */ - -/* These data are very dodgy. */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "bics-unicode.h" - -static short table_160[]= -{0, 128, 98, 97, 278, 274, 277, 110, 135, 503, 538, 125, 309, 191, 504, - 230, 339, 286, 160, 161, 129, 325, 279, 102, 141, 159, 544, 126, 151, - 153, 155, 127, 259, 261, 257, 253, 255, 113, 114, 148, 249, 251, 247, - 245, 239, 241, 237, 235, 169, 196, 202, 200, 204, 208, 206, 284, 115, - 212, 210, 214, 216, 224, 271, 121, 260, 262, 258, 254, 256, 117, 118, - 149, 250, 252, 248, 246, 240, 242, 238, 236, 273, 195, 201, 199, 203, - 207, 205, 285, 119, 211, 209, 213, 215, 223, 272, 221, 477, 476, 374, - 373, 171, 177, 376, 375, -1, -1, -1, -1, 378, 377, 379, -1, 169, 173, - 383, 382, -1, -1, -1, -1, 172, 178, 243, 244, -1, -1, -1, -1, -1, -1, - 385, -1, -1, -1, -1, -1, 233, 234, 387, 386, -1, -1, 391, 390, 389, - 122, 276, 275, -1, -1, 393, 392, -1, 395, 394, 399, 398, -1, -1, -1, - -1, 170, 174, 194, 193, 402, 401, 198, 197, 263, -1, -1, -1, -1, -1, - -1, 404, 403, 116, 120, -1, -1, 408, 407, 406, 405, 410, 409, -1, -1, - 486, 485, 412, 411, 419, 418, 364, 363, -1, -1, 218, 217, 421, 420, -1, - -1, 220, 219, 423, 422, -1, 268, 425, 424, -1, -1, 222, 368, 367, 372, - 371, 370, 369}; - -static short table_728[]={144, 181, 146, 731, 137, 183}; - -static short table_915[]= -{313, 314, -1, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, -1, 317, -1, -1, 318, -1, -1, -1, -1, -1, -1, -1, 319, 320, - -1, 321, 322, -1, 323, 324, -1, -1, -1, 325, -1, -1, -1, 326, -1, -1, - 327, 328, -1, 329}; - -static short table_8211[]= -{111, 112, -1, -1, -1, -1, -1, 106, -1, 103, 105, 107, 104, 108, 109, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, - -1, -1, -1, -1, -1, -1, 123, 124, -1, 265}; - -static short table_8319[]= -{543, 475, 466, 467, 468, 469, 470, 471, 472, 473, 474, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 491, -1, -1, -1, 266}; - -static short table_8592[]={293, 295, 294, 292, 297, 296}; - -static short table_8712[]= -{298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 492, -1, -1, -1, -1, -1, - -1, 302, -1, -1, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, - -1, -1, -1, -1, 428}; - - -static short table_8800[]={288, -1, -1, -1, 291, 290}; - -static short table_9600[]= -{304, -1, -1, -1, 305, -1, -1, -1, 308, -1, -1, -1, 306, -1, -1, -1, - 307, 357, 358, 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 335, 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 348, -1, -1, -1, 345, -1, -1, -1, -1, -1, 347, -1, -1, -1, 346, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, -1, -1, 342, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 344}; - -static short table_9784[]={360, -1, 361, 362, -1, -1, -1, -1, 350, -1, 349}; - -static short table_9824[]= -{354, -1, -1, 352, -1, 351, 353, -1, -1, -1, 330, 331}; - -static short table_64256[]={282, 95, 96, 281}; - -int -unicode_to_bics(unsigned code) -{ - if(code<32) return -1; - else if(code<127) return code-32; - else if(code<160) return -1; - else if(code<383) return table_160[code-160]; - else if(code==402) return 99; - else if(code==486) return 480; - else if(code==487) return 379; - else if(code==501) return 384; - else if(code==711) return 139; - else if(code<728) return -1; - else if(code<734) return table_728[code-728]; - else if(code<915) return -1; - else if(code<967) return table_915[code-915]; - else if(code<8211) return -1; - else if(code<8253) return table_8211[code-8211]; - else if(code<8319) return -1; - else if(code<8360) return table_8319[code-8319]; - else if(code<8592) return -1; - else if(code<8598) return table_8592[code-8592]; - else if(code==8616) return 340; - else if(code<8712) return -1; - else if(code<8751) return table_8712[code-8712]; - else if(code<8800) return -1; - else if(code<8806) return table_8800[code-8800]; - else if(code==8976) return 310; - else if(code==8992) return 300; - else if(code==8993) return 301; - else if(code==9400) return 332; - else if(code==9415) return 333; - else if(code==9473) return 355; - else if(code==9475) return 356; - else if(code<9600) return -1; - else if(code<9690) return table_9600[code-9600]; - else if(code==9711) return 343; - else if(code<9784) return -1; - else if(code<9795) return table_9784[code-9784]; - else if(code<9824) return -1; - else if(code<9836) return table_9824[code-9824]; - else if(code<64256) return -1; - else if(code<64261) return table_64256[code-64256]; - else return -1; -} - diff --git a/nx-X11/lib/font/Speedo/bics-unicode.h b/nx-X11/lib/font/Speedo/bics-unicode.h deleted file mode 100644 index 90fa188..0000000 --- a/nx-X11/lib/font/Speedo/bics-unicode.h +++ /dev/null @@ -1,3 +0,0 @@ -/* $XFree86$ */ - -int unicode_to_bics(unsigned); diff --git a/nx-X11/lib/font/Speedo/do_char.c b/nx-X11/lib/font/Speedo/do_char.c deleted file mode 100644 index 410d633..0000000 --- a/nx-X11/lib/font/Speedo/do_char.c +++ /dev/null @@ -1,1016 +0,0 @@ -/* $Xorg: do_char.c,v 1.3 2000/08/17 19:46:24 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/do_char.c,v 1.3 2001/01/17 19:43:17 dawes Exp $ */ - -/***************************** D O - C H A R . C ***************************** - * * - * This is the top level module for processing one simple or composite * - * character. - * * - ****************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for Speedo */ - -#define DEBUG 0 - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - -static boolean sp_make_simp_char(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format); -static boolean sp_make_comp_char(PROTO_DECL2 ufix8 FONTFAR *pointer); -static ufix8 FONTFAR *sp_get_char_org(PROTO_DECL2 ufix16 char_index,boolean top_level); -static fix15 sp_get_posn_arg(PROTO_DECL2 ufix8 FONTFAR *STACKFAR *ppointer,ufix8 format); -static fix15 sp_get_scale_arg(PROTO_DECL2 ufix8 FONTFAR *STACKFAR *ppointer,ufix8 format); - - -FUNCTION ufix16 get_char_id( -GDECL -ufix16 char_index) /* Index to character in char directory */ -/* - * Returns character id for specified character index in currently - * selected font. - * Reports Error 10 and returns 0 if no font selected. - * Reports Error 12 and returns 0 if character data not available. - */ -{ -ufix8 FONTFAR *pointer; /* Pointer to character data */ - -if (!sp_globals.specs_valid) /* Font specs not defined? */ - { - report_error(10); /* Report font not specified */ - return (ufix16)0; /* Return zero character id */ - } - -pointer = sp_get_char_org(char_index, TRUE); /* Get pointer to character data */ -if (pointer == NULL) /* Character data not available? */ - { - report_error(12); /* Report character data not avail */ - return (ufix16)0; /* Return zero character id */ - } - -return 0xffff & NEXT_WORD(pointer); /* Return character id */ -} - - -#if INCL_METRICS -FUNCTION fix31 get_char_width( -GDECL -ufix16 char_index) /* Index to character in char directory */ -/* - * Returns character set width for specified character index in currently - * selected font in units of 1/65536 em. - * Reports Error 10 and returns 0 if no font selected. - * Reports Error 12 and returns 0 if character data not available. - */ -{ -ufix8 FONTFAR *pointer; /* Pointer to character data */ -fix31 set_width; /* Set width of character */ - -if (!sp_globals.specs_valid) /* Font specs not defined? */ - { - report_error(10); /* Report font not specified */ - return (fix31)0; /* Return zero character width */ - } - -pointer = sp_get_char_org(char_index, TRUE); /* Get pointer to character data */ -if (pointer == NULL) /* Character data not available? */ - { - report_error(12); /* Report character data not avail */ - return (fix31)0; /* Return zero character width */ - } - -pointer += 2; /* Skip over character id */ -set_width = (fix31)NEXT_WORD(pointer); /* Read set width and Convert units */ -set_width = ((set_width << 16) + (sp_globals.metric_resolution >> 1)) / sp_globals.metric_resolution; -return set_width; /* Return in 1/65536 em units */ -} -#endif - -#if INCL_METRICS -FUNCTION fix15 get_track_kern( -GDECL -fix15 track, /* Track required (0 - 3) */ -fix15 point_size) /* Point size (units of whole points) */ -/* - * Returns inter-character spacing adjustment in units of 1/256 - * points for the specified kerning track and point size. - * If the specified point size is larger than the maximum point - * size for the specified track, the adjustment for the maximum - * point size is used. - * If the specified point size is smaller than the minimum point - * size for the specified track, the adjustment for the minimum - * point size is used. - * If the specified point size is between the minimum point size - * and the maximum point size for the specified track, the - * adjustment is interpolated linearly between the minimum and - * maximum adjustments. - * Reports Error 10 and returns 0 if no font selected. - * Reports Error 13 and returns 0 if track kerning data not in font. - */ -{ -ufix8 FONTFAR *pointer; /* Pointer to character data */ -fix15 no_tracks; /* Number of kerning tracks in font */ -ufix8 format; /* Track kerning format byte */ -fix15 i; /* Track counter */ -fix15 min_pt_size = 0; /* Minimum point size for track */ -fix15 max_pt_size = 0; /* Maximum point size for track */ -fix15 min_adj = 0; /* Adjustment for min point size */ -fix15 max_adj = 0; /* Adjustment for max point size */ -fix31 delta_pt_size; /* Max point size - min point size */ -fix31 delta_adj; /* Min adjustment - max adjustment */ -fix15 adj = 0; /* Interpolated adjustment */ - -if (track == 0) /* Track zero selected? */ - { - return adj; /* Return zero track kerning adjustment */ - } - -if (!sp_globals.specs_valid) /* Font specs not defined? */ - { - report_error(10); /* Report font not specified */ - return adj; /* Return zero track kerning adjustment */ - } - -no_tracks = sp_globals.kern.no_tracks; /* Number of kerning tracks */ -if (track > no_tracks) /* Required track not available? */ - { - report_error(13); /* Report track kerning data not avail */ - return adj; /* Return zero track kerning adjustment */ - } - -pointer = sp_globals.kern.tkorg; /* Point to start of track kern data */ -for (i = 0; i < track; i++) /* Read until track required is read */ - { - format = NEXT_BYTE(pointer); /* Read track kerning format byte */ - min_pt_size = (format & BIT0)? - NEXT_WORD(pointer): - (fix15)NEXT_BYTE(pointer); - min_adj = (format & BIT1)? - NEXT_WORD(pointer): - (fix15)NEXT_BYTE(pointer); - max_pt_size = (format & BIT2)? - NEXT_WORD(pointer): - (fix15)NEXT_BYTE(pointer); - max_adj = (format & BIT3)? - NEXT_WORD(pointer): - (fix15)NEXT_BYTE(pointer); - } - -if (point_size <= min_pt_size) /* Smaller than minimum point size? */ - { - return min_adj; /* Return minimum adjustment (1/256 points) */ - } - -if (point_size >= max_pt_size) /* Larger than maximum point size? */ - { - return max_adj; /* Return maximum adjustment (1/256 points) */ - } - -delta_pt_size = (fix31)(max_pt_size - min_pt_size); -delta_adj = (fix31)(min_adj - max_adj); -adj = (fix15)(min_adj - - (((fix31)(point_size - min_pt_size) * delta_adj + - (delta_pt_size >> 1)) / delta_pt_size)); -return adj; /* Return interpolated adjustment (1/256 points) */ -} -#endif - -#if INCL_METRICS -FUNCTION fix31 get_pair_kern( -GDECL -ufix16 char_index1, /* Index to first character in char directory */ -ufix16 char_index2) /* Index to second character in char directory */ -/* - * Returns inter-character spacing adjustment in units of 1/65536 em - * for the specified pair of characters. - * Reports Error 10 and returns 0 if no font selected. - * Reports Error 14 and returns 0 if pair kerning data not in font. - */ -{ -ufix8 FONTFAR *origin; /* Pointer to first kerning pair record */ -ufix8 FONTFAR *pointer; /* Pointer to character data */ -ufix16 tmpufix16; /* Temporary workspace */ -fix15 no_pairs; /* Number of kerning pairs in font */ -ufix8 format; /* Track kerning format byte */ -boolean long_id; /* TRUE if 2-byte character ids */ -fix15 rec_size; /* Number of bytes in kern pair record */ -fix15 n; /* Number of remaining kern pairs */ -fix15 nn; /* Number of kern pairs in first partition */ -fix15 base; /* Index to first record in rem kern pairs */ -fix15 i; /* Index to kern pair being tested */ -fix31 adj = 0; /* Returned value of adjustment */ -fix15 adj_base = 0; /* Adjustment base for relative adjustments */ - -if (!sp_globals.specs_valid) /* Font specs not defined? */ - { - report_error(10); /* Report font not specified */ - return adj; /* Return zero pair kerning adjustment */ - } - -no_pairs = sp_globals.kern.no_pairs; /* Number of kerning pairs */ -if (no_pairs == 0) /* Pair kerning data not available? */ - { - report_error(14); /* Report pair kerning data not avail */ - return adj; /* Return zero pair kerning adjustment */ - } - -pointer = sp_globals.kern.pkorg; /* Point to start of pair kern data */ -format = NEXT_BYTE(pointer); /* Read pair kerning format byte */ -if (!(format & BIT0)) /* One-byte adjustment values? */ - adj_base = NEXT_WORD(pointer); /* Read base adjustment */ -origin = pointer; /* First byte of kerning pair data */ -rec_size = format + 3; /* Compute kerning pair record size */ -long_id = format & BIT1; /* Set flag for 2-byte char index */ - -n = no_pairs; /* Consider all kerning pairs */ -base = 0; /* Set base at first kern pair record */ -while (n != 0) /* While 1 or more kern pairs remain ... */ - { - nn = n >> 1; /* Size of first partition */ - i = base + nn; /* Index to record to be tested */ - pointer = origin + (i * rec_size); - tmpufix16 = NEXT_CHNDX(pointer, long_id); - if (char_index1 < tmpufix16) - { - n = nn; /* Number remaining in first partition */ - continue; - } - if (char_index1 > tmpufix16) - { - n -= nn + 1; /* Number remaining in second partition */ - base = i + 1; /* Base index for second partition */ - continue; - } - tmpufix16 = NEXT_CHNDX(pointer, long_id); - if (char_index2 < tmpufix16) - { - n = nn; /* Number remaining in first partition */ - continue; - } - if (char_index2 > tmpufix16) - { - n -= nn + 1; /* Number remaining in second partition */ - base = i + 1; /* Base index for second partition */ - continue; - } - adj = (format & BIT0)? - (fix31)NEXT_WORD(pointer): - (fix31)(adj_base + (fix15)NEXT_BYTE(pointer)); - adj = ((adj << 16) + (sp_globals.orus_per_em >> 1)) / sp_globals.orus_per_em; /* Convert units */ - n = 0; /* No more to consider */ - } -return adj; /* Return pair kerning adjustment */ -} -#endif - - -#if INCL_METRICS -#ifdef old -FUNCTION boolean get_char_bbox( -GDECL -ufix16 char_index, -bbox_t *bbox) -{ -/* - * returns true if character exists, false if it doesn't - * provides transformed character bounding box in 1/65536 pixels - * in the provided bbox_t structure. Bounding box may be - * conservative in the event that the transformation is not - * normal or the character is compound. - */ - -ufix8 FONTFAR *pointer; -fix15 tmp; -point_t Pmin, Pmax; - -#if REENTRANT_ALLOC -plaid_t plaid; -sp_globals.plaid = &plaid; -#endif - -if (!sp_globals.specs_valid) /* Font specs not defined? */ - { - report_error(10); /* Report font not specified */ - return FALSE; /* Error return */ - } - -init_tcb(); /* Initialize transformation control block */ - -pointer = sp_get_char_org(char_index, TRUE); /* Point to start of character data */ -if (pointer == NULL) /* Character data not available? */ - { - report_error(12); /* Report character data not avail */ - return FALSE; /* Error return */ - } - -pointer += 2; /* Skip over character id */ -tmp = NEXT_WORD(pointer); /* Read set width */ - -tmp = NEXT_BYTE(pointer); -if (tmp & BIT1) /* Optional data in header? */ - { - tmp = (ufix8)NEXT_BYTE(pointer); /* Read size of optional data */ - pointer += tmp; /* Skip optional data */ - } - -pointer = plaid_tcb(pointer, tmp); /* Process plaid data */ -pointer = read_bbox(pointer, &Pmin, &Pmax,(boolean)FALSE); /* Read bounding box */ -bbox->xmin = (fix31)Pmin.x << sp_globals.poshift; -bbox->xmax = (fix31)Pmax.x << sp_globals.poshift; -bbox->ymin = (fix31)Pmin.y << sp_globals.poshift; -bbox->ymax = (fix31)Pmax.y << sp_globals.poshift; -return TRUE; -} - -#else /* new code, 4/25/91 */ - -FUNCTION boolean get_char_bbox( -GDECL -ufix16 char_index, -bbox_t *bbox) -{ -/* - * returns true if character exists, false if it doesn't - * provides transformed character bounding box in 1/65536 pixels - * in the provided bbox_t structure. Bounding box may be - * conservative in the event that the transformation is not - * normal or the character is compound. - */ - -ufix8 FONTFAR *pointer; -fix15 tmp; -fix15 format; -ufix16 pix_adj; -point_t Pmin, Pmax; - -#if REENTRANT_ALLOC -plaid_t plaid; -sp_globals.plaid = &plaid; -#endif - -if (!sp_globals.specs_valid) /* Font specs not defined? */ - { - report_error(10); /* Report font not specified */ - return FALSE; /* Error return */ - } - -init_tcb(); /* Initialize transformation control block */ - -pointer = sp_get_char_org(char_index, TRUE); /* Point to start of character data */ -if (pointer == NULL) /* Character data not available? */ - { - report_error(12); /* Report character data not avail */ - return FALSE; /* Error return */ - } - -pointer += 2; /* Skip over character id */ -tmp = NEXT_WORD(pointer); /* Read set width */ - -format = NEXT_BYTE(pointer); -if (format & BIT1) /* Optional data in header? */ - { - tmp = (ufix8)NEXT_BYTE(pointer); /* Read size of optional data */ - pointer += tmp; /* Skip optional data */ - } - -if (format & BIT0) - { - pix_adj = sp_globals.onepix << 1; /* Allow 2 pixel expansion ... */ - } -else - { - pix_adj = 0; - } - -pointer = plaid_tcb(pointer, format); /* Process plaid data */ -pointer = read_bbox(pointer, &Pmin, &Pmax,(boolean)FALSE); /* Read bounding box */ - -Pmin.x -= pix_adj; /* ... of components of ... */ -Pmin.y -= pix_adj; /* ... compound ... */ -Pmax.x += pix_adj; /* ... character ... */ -Pmax.y += pix_adj; /* ... bounding box. */ - - -bbox->xmin = (fix31)Pmin.x << sp_globals.poshift; -bbox->xmax = (fix31)Pmax.x << sp_globals.poshift; -bbox->ymin = (fix31)Pmin.y << sp_globals.poshift; -bbox->ymax = (fix31)Pmax.y << sp_globals.poshift; -return TRUE; -} -#endif /* new code */ - -#endif - - -#if INCL_ISW -FUNCTION boolean make_char_isw( -GDECL -ufix16 char_index, -ufix32 imported_setwidth) -{ -fix15 xmin; /* Minimum X ORU value in font */ -fix15 xmax; /* Maximum X ORU value in font */ -fix15 ymin; /* Minimum Y ORU value in font */ -fix15 ymax; /* Maximum Y ORU value in font */ -ufix16 return_value; - -sp_globals.import_setwidth_act = TRUE; -/* convert imported width to orus */ -sp_globals.imported_width = (sp_globals.metric_resolution * - imported_setwidth) >> 16; -return_value = do_make_char(char_index); - -if (sp_globals.isw_modified_constants) - { - /* reset fixed point constants */ - xmin = read_word_u(sp_globals.font_org + FH_FXMIN); - ymin = read_word_u(sp_globals.font_org + FH_FYMIN); - ymax = read_word_u(sp_globals.font_org + FH_FYMAX); - sp_globals.constr.data_valid = FALSE; - xmax = read_word_u(sp_globals.font_org + FH_FXMAX); - if (!setup_consts(xmin,xmax,ymin,ymax)) - { - report_error(3); /* Requested specs out of range */ - return FALSE; - } - } -return (return_value); -} - -FUNCTION boolean make_char( -GDECL -ufix16 char_index) /* Index to character in char directory */ -{ -sp_globals.import_setwidth_act = FALSE; -return (do_make_char(char_index)); -} - -FUNCTION static boolean do_make_char(GDECL ufix16 char_index) -#else -FUNCTION boolean make_char(GDECL ufix16 char_index) -#endif -/* - * Outputs specified character using the currently selected font and - * scaling and output specifications. - * Reports Error 10 and returns FALSE if no font specifications - * previously set. - * Reports Error 12 and returns FALSE if character data not available. - */ -{ -ufix8 FONTFAR *pointer; /* Pointer to character data */ -fix15 x_orus; -fix15 tmpfix15; -ufix8 format; - -#if INCL_ISW -sp_globals.isw_modified_constants = FALSE; -#endif - -#if REENTRANT_ALLOC - -plaid_t plaid; - -#if INCL_BLACK || INCL_SCREEN || INCL_2D -intercepts_t intercepts; -sp_globals.intercepts = &intercepts; -#endif - -sp_globals.plaid = &plaid; -#endif - -if (!sp_globals.specs_valid) /* Font specs not defined? */ - { - report_error(10); /* Report font not specified */ - return FALSE; /* Error return */ - } - -#if INCL_MULTIDEV -#if INCL_OUTLINE -if (sp_globals.output_mode == MODE_OUTLINE && !sp_globals.outline_device_set) - { - report_error(2); - return FALSE; - } -else -#endif - if (!sp_globals.bitmap_device_set) - { - report_error(2); - return FALSE; - } -#endif - - -init_tcb(); /* Initialize transformation control block */ - -pointer = sp_get_char_org(char_index, TRUE); /* Point to start of character data */ -SHOW(pointer); -if (pointer == NULL) /* Character data not available? */ - { - report_error(12); /* Report character data not avail */ - return FALSE; /* Error return */ - } - -pointer += 2; /* Skip over character id */ -x_orus = NEXT_WORD(pointer); /* Read set width */ -#if INCL_SQUEEZING || INCL_ISW -sp_globals.setwidth_orus = x_orus; -#endif - -#if INCL_ISW -if (sp_globals.import_setwidth_act) - x_orus = sp_globals.imported_width; -#endif -sp_globals.Psw.x = (fix15)((fix31) - (((fix31)x_orus * (sp_globals.specs.xxmult>>16) + - ( ((fix31)x_orus * (sp_globals.specs.xxmult&0xffffL) )>>16) - ) << sp_globals.pixshift) / sp_globals.metric_resolution); - -sp_globals.Psw.y = (fix15)( - (fix31)( - ((fix31)x_orus * (sp_globals.specs.yxmult>>16) + - ( ((fix31)x_orus * (sp_globals.specs.yxmult&0xffffL) )>>16) - ) << sp_globals.pixshift) / sp_globals.metric_resolution); - -format = NEXT_BYTE(pointer); -if (format & BIT1) /* Optional data in header? */ - { - tmpfix15 = (ufix8)NEXT_BYTE(pointer); /* Read size of optional data */ - pointer += tmpfix15; /* Skip optional data */ - } -if (format & BIT0) - { - return sp_make_comp_char(pointer); /* Output compound character */ - } -else - { - return sp_make_simp_char(pointer, format); /* Output simple character */ - } -} - -FUNCTION static boolean sp_make_simp_char( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to first byte of position argument */ -ufix8 format) /* Character format byte */ -/* - * Called by sp_make_char() to output a simple (non-compound) character. - * Returns TRUE on completion. - */ -{ -point_t Pmin, Pmax; /* Transformed corners of bounding box */ -#if INCL_SQUEEZING || INCL_ISW -ufix8 FONTFAR *save_pointer; -#endif -#if INCL_ISW -fix31 char_width; -fix31 isw_scale; -#endif - -#if INCL_SQUEEZING -sp_globals.squeezing_compound = FALSE; -if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) || - (sp_globals.pspecs->flags & SQUEEZE_RIGHT) || - (sp_globals.pspecs->flags & SQUEEZE_TOP) || - (sp_globals.pspecs->flags & SQUEEZE_BOTTOM) ) - { - /* get the bounding box data before processing the character */ - save_pointer = pointer; - preview_bounding_box (pointer, format); - pointer = save_pointer; - } -#endif -#if (INCL_ISW) -if (sp_globals.import_setwidth_act) - { - save_pointer = pointer; - preview_bounding_box (pointer, format); - pointer = save_pointer; - /* make sure I'm not going to get fixed point overflow */ - isw_scale = compute_isw_scale(); - if (sp_globals.bbox_xmin_orus < 0) - char_width = SQUEEZE_MULT((sp_globals.bbox_xmax_orus - sp_globals.bbox_xmin_orus), isw_scale); - else - char_width = SQUEEZE_MULT(sp_globals.bbox_xmax_orus, isw_scale); - if (char_width >= sp_globals.isw_xmax) - if (!reset_xmax(char_width)) - return FALSE; - } -#endif -pointer = plaid_tcb(pointer, format); /* Process plaid data */ -pointer = read_bbox(pointer, &Pmin, &Pmax, FALSE); /* Read bounding box */ -if (fn_begin_char(sp_globals.Psw, Pmin, Pmax)) /* Signal start of character output */ - { - do - { - proc_outl_data(pointer); /* Process outline data */ - } - while (!fn_end_char()); /* Repeat if not done */ - } -return TRUE; -} - -FUNCTION static boolean sp_make_comp_char( -GDECL -ufix8 FONTFAR *pointer) /* Pointer to first byte of position argument */ -/* - * Called by sp_make_char() to output a compound character. - * Returns FALSE if data for any sub-character is not available. - * Returns TRUE if output completed with no error. - */ -{ -point_t Pmin, Pmax; /* Transformed corners of bounding box */ -point_t Pssw; /* Transformed escapement vector */ -ufix8 FONTFAR *pointer_sav; /* Saved pointer to compound character data */ -ufix8 FONTFAR *sub_pointer; /* Pointer to sub-character data */ -ufix8 format; /* Format of DOCH instruction */ -ufix16 sub_char_index; /* Index to sub-character in character directory */ -fix15 x_posn; /* X position of sub-character (outline res units) */ -fix15 y_posn; /* Y position of sub-character (outline res units) */ -fix15 x_scale; /* X scale factor of sub-character (scale units) */ -fix15 y_scale; /* Y scale factor of sub-character (scale units) */ -fix15 tmpfix15; /* Temporary workspace */ -fix15 x_orus; /* Set width in outline resolution units */ -fix15 pix_adj; /* Pixel adjustment to compound char bounding box */ -#if INCL_SQUEEZING -fix31 x_factor, x_offset, top_scale, bottom_scale; -boolean squeezed_x, squeezed_y; -#endif -#if INCL_SQUEEZING || INCL_ISW -fix15 x_offset_pix; -#endif -#if INCL_ISW -fix31 char_width; -fix31 isw_scale; -#endif - - -#if INCL_SQUEEZING -sp_globals.squeezing_compound = TRUE; -#endif -pointer = read_bbox(pointer, &Pmin, &Pmax, TRUE); /* Read bounding box data */ -pix_adj = sp_globals.onepix << 1; /* Allow 2 pixel expansion ... */ -Pmin.x -= pix_adj; /* ... of components of ... */ -Pmin.y -= pix_adj; /* ... compound ... */ -Pmax.x += pix_adj; /* ... character ... */ -Pmax.y += pix_adj; /* ... bounding box. */ - -#if INCL_SQUEEZING -/* scale the bounding box if necessary before calling begin_char */ -squeezed_x = calculate_x_scale(&x_factor, &x_offset, 0); -squeezed_y = calculate_y_scale(&top_scale, &bottom_scale,0,0); - -if (squeezed_x) - { /* scale the x coordinates of the bbox */ - x_offset_pix = (fix15)(((x_offset >> 16) * sp_globals.tcb0.xppo) - >> sp_globals.mpshift); - if ((x_offset_pix >0) && (x_offset_pix < sp_globals.onepix)) - x_offset_pix = sp_globals.onepix; - Pmin.x = SQUEEZE_MULT (x_factor, Pmin.x) + x_offset_pix - pix_adj; - Pmax.x = SQUEEZE_MULT (x_factor, Pmax.x) + x_offset_pix + pix_adj; - } -if (squeezed_y) - { /* scale the y coordinates of the bbox */ - if ((Pmin.y) < 0) - Pmin.y = SQUEEZE_MULT (bottom_scale, Pmin.y) - pix_adj; - else - Pmin.y = SQUEEZE_MULT (top_scale, Pmin.y) - pix_adj; - if ((Pmax.y) < 0) - Pmax.y = SQUEEZE_MULT (bottom_scale, Pmax.y) + pix_adj; - else - Pmax.y = SQUEEZE_MULT (top_scale, Pmax.y) + pix_adj; - } -#endif -#if (INCL_ISW) -if (sp_globals.import_setwidth_act) - { - /* make sure I'm not going to get fixed point overflow */ - isw_scale = ((fix31)sp_globals.imported_width << 16)/ - (fix31)sp_globals.setwidth_orus; - char_width = SQUEEZE_MULT((sp_globals.bbox_xmax_orus - - sp_globals.bbox_xmin_orus), -isw_scale); - if (char_width >= sp_globals.isw_xmax) - if (!reset_xmax(char_width)) - return FALSE; - } -#endif - -if (fn_begin_char(sp_globals.Psw, Pmin, Pmax)) /* Signal start of character data */ - { - pointer_sav = pointer; - do - { - pointer = pointer_sav; /* Point to next DOCH or END instruction */ - while ((format = NEXT_BYTE(pointer))) /* DOCH instruction? */ - { - init_tcb(); /* Initialize transformation control block */ - x_posn = sp_get_posn_arg(&pointer, format); - y_posn = sp_get_posn_arg(&pointer, (ufix8)(format >> 2)); - x_scale = sp_get_scale_arg(&pointer, (ufix8)(format & BIT4)); - y_scale = sp_get_scale_arg(&pointer, (ufix8)(format & BIT5)); - scale_tcb(&sp_globals.tcb, x_posn, y_posn, x_scale, y_scale); /* Scale for sub-char */ - sub_char_index = (format & BIT6)? /* Read sub-char index */ - 0xffff & NEXT_WORD(pointer): - 0xffff & NEXT_BYTE(pointer); - sub_pointer = sp_get_char_org(sub_char_index, FALSE); /* Point to start of sub-char */ - if (sub_pointer == NULL) /* Character data not available? */ - { - return FALSE; /* Abort character output */ - } - sub_pointer += 2; /* Skip over character id */ - x_orus = NEXT_WORD(sub_pointer); /* Read set_width of sub-character */ - - Pssw.x = (fix15)( - (fix31)( - ((fix31)x_orus * (sp_globals.specs.xxmult>>16) + - ( ((fix31)x_orus * (sp_globals.specs.xxmult&0xffffL) )>>16) - ) << sp_globals.pixshift) / sp_globals.metric_resolution); - Pssw.y = (fix15)( - (fix31)( - ((fix31)x_orus * (sp_globals.specs.yxmult>>16) + - ( ((fix31)x_orus * (sp_globals.specs.yxmult&0xffffL) )>>16) - ) << sp_globals.pixshift) / sp_globals.metric_resolution); - - format = NEXT_BYTE(sub_pointer); /* Read sub-character format */ - if (format & BIT1) /* Optional data in header? */ - { - tmpfix15 = (ufix8)NEXT_BYTE(sub_pointer); /* Read size of optional data */ - sub_pointer += tmpfix15; /* Skip optional data */ - } - sub_pointer = plaid_tcb(sub_pointer, format); /* Process sub-character plaid data */ - sub_pointer = read_bbox(sub_pointer, &Pmin, &Pmax, FALSE); /* Read bounding box */ - fn_begin_sub_char(Pssw, Pmin, Pmax); /* Signal start of sub-character data */ - proc_outl_data(sub_pointer); /* Process sub-character data */ - fn_end_sub_char(); /* Signal end of sub-character data */ - } - } - while (!fn_end_char()); /* Signal end of character; repeat if required */ - } -return TRUE; -} - -#if INCL_LCD /* Dynamic load character data supported? */ -FUNCTION static ufix8 FONTFAR *sp_get_char_org( -GDECL -ufix16 char_index, /* Index of character to be accessed */ -boolean top_level) /* Not a compound character element */ -/* - * Called by sp_get_char_id(), sp_get_char_width(), sp_make_char() and - * sp_make_comp_char() to get a pointer to the start of the character data - * for the specified character index. - * Version for configuration supporting dynamic character data loading. - * Calls load_char_data() to load character data if not already loaded - * as part of the original font buffer. - * Returns NULL if character data not available - */ -{ -buff_t *pchar_data; /* Buffer descriptor requested */ -ufix8 FONTFAR *pointer; /* Pointer into character directory */ -ufix8 format; /* Character directory format byte */ -fix31 char_offset; /* Offset of char data from start of font file */ -fix31 next_char_offset; /* Offset of char data from start of font file */ -fix15 no_bytes; /* Number of bytes required for char data */ - -if (top_level) /* Not element of compound char? */ - { - if (char_index < sp_globals.first_char_idx) /* Before start of character set? */ - return NULL; - char_index -= sp_globals.first_char_idx; - if (char_index >= sp_globals.no_chars_avail) /* Beyond end of character set? */ - return NULL; - sp_globals.cb_offset = 0; /* Reset char buffer offset */ - } - -pointer = sp_globals.pchar_dir; -format = NEXT_BYTE(pointer); /* Read character directory format byte */ -pointer += char_index << 1; /* Point to indexed character entry */ -if (format) /* 3-byte entries in char directory? */ - { - pointer += char_index; /* Adjust for 3-byte entries */ - char_offset = read_long(pointer); /* Read file offset to char data */ - next_char_offset = read_long(pointer + 3); /* Read offset to next char */ - } -else - { - char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read file offset to char data */ - next_char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read offset to next char */ - } - -no_bytes = next_char_offset - char_offset; -if (no_bytes == 0) /* Character not in directory? */ - return NULL; - -if (next_char_offset <= sp_globals.font_buff_size)/* Character data already in font buffer? */ - return sp_globals.pfont->org + char_offset; /* Return pointer into font buffer */ - -pchar_data = load_char_data(char_offset, no_bytes, sp_globals.cb_offset); /* Request char data load */ -if (pchar_data->no_bytes < no_bytes) /* Correct number of bytes loaded? */ - return NULL; - -if (top_level) /* Not element of compound char? */ - { - sp_globals.cb_offset = no_bytes; - } - -return pchar_data->org; /* Return pointer into character data buffer */ -} -#endif - -#if INCL_LCD -#else /* Dynamic load character data not supported? */ -FUNCTION static ufix8 FONTFAR *sp_get_char_org( -GDECL -ufix16 char_index, /* Index of character to be accessed */ -boolean top_level) /* Not a compound character element */ -/* - * Called by sp_get_char_id(), sp_get_char_width(), sp_make_char() and - * sp_make_comp_char() to get a pointer to the start of the character data - * for the specified character index. - * Version for configuration not supporting dynamic character data loading. - * Returns NULL if character data not available - */ -{ -ufix8 FONTFAR *pointer; /* Pointer into character directory */ -ufix8 format; /* Character directory format byte */ -fix31 char_offset; /* Offset of char data from start of font file */ -fix31 next_char_offset; /* Offset of char data from start of font file */ -fix15 no_bytes; /* Number of bytes required for char data */ - -if (top_level) /* Not element of compound char? */ - { - if (char_index < sp_globals.first_char_idx) /* Before start of character set? */ - return NULL; - char_index -= sp_globals.first_char_idx; - if (char_index >= sp_globals.no_chars_avail) /* Beyond end of character set? */ - return NULL; - } - -pointer = sp_globals.pchar_dir; -format = NEXT_BYTE(pointer); /* Read character directory format byte */ -pointer += char_index << 1; /* Point to indexed character entry */ -if (format) /* 3-byte entries in char directory? */ - { - pointer += char_index; /* Adjust for 3-byte entries */ - char_offset = read_long(pointer); /* Read file offset to char data */ - next_char_offset = read_long(pointer + 3); /* Read offset to next char */ - } -else - { - char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read file offset to char data */ - next_char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read offset to next char */ - } - -no_bytes = next_char_offset - char_offset; -if (no_bytes == 0) /* Character not in directory? */ - return NULL; - -return sp_globals.pfont->org + char_offset; /* Return pointer into font buffer */ -} -#endif - - -FUNCTION static fix15 sp_get_posn_arg( -GDECL -ufix8 FONTFAR * STACKFAR *ppointer, /* Pointer to first byte of position argument */ -ufix8 format) /* Format of DOCH arguments */ -/* - * Called by sp_make_comp_char() to read a position argument from the - * specified point in the font/char buffer. - * Updates pointer to byte following position argument. - * Returns value of position argument in outline resolution units - */ -{ -switch (format & 0x03) - { -case 1: - return NEXT_WORD(*ppointer); - -case 2: - return (fix15)((fix7)NEXT_BYTE(*ppointer)); - -default: - return (fix15)0; - } -} - -FUNCTION static fix15 sp_get_scale_arg( -GDECL -ufix8 FONTFAR *STACKFAR *ppointer, /* Pointer to first byte of position argument */ -ufix8 format) /* Format of DOCH arguments */ -/* - * Called by sp_make_comp_char() to read a scale argument from the - * specified point in the font/char buffer. - * Updates pointer to byte following scale argument. - * Returns value of scale argument in scale units (normally 1/4096) - */ -{ -if (format) - return NEXT_WORD(*ppointer); -else - return (fix15)ONE_SCALE; -} -#if INCL_ISW || INCL_SQUEEZING -FUNCTION static void preview_bounding_box( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to first byte of position argument */ -ufix8 format) /* Character format byte */ -{ -point_t Pmin, Pmax; /* Transformed corners of bounding box */ - - sp_globals.no_X_orus = (format & BIT2)? - (fix15)NEXT_BYTE(pointer): - 0; - sp_globals.no_Y_orus = (format & BIT3)? - (fix15)NEXT_BYTE(pointer): - 0; - pointer = read_oru_table(pointer); - - /* Skip over control zone table */ - pointer = skip_control_zone(pointer,format); - - /* Skip over interpolation table */ - pointer = skip_interpolation_table(pointer,format); - /* get_args has a pathological need for this value to be set */ - sp_globals.Y_edge_org = sp_globals.no_X_orus; - pointer = read_bbox(pointer, &Pmin, &Pmax, TRUE); /* Read bounding bo -x */ - -} -#endif -#if INCL_ISW -FUNCTION static boolean reset_xmax( -GDECL -fix31 xmax) - -{ -fix15 xmin; /* Minimum X ORU value in font */ -fix15 ymin; /* Minimum Y ORU value in font */ -fix15 ymax; /* Maximum Y ORU value in font */ - - -sp_globals.isw_modified_constants = TRUE; -xmin = read_word_u(sp_globals.font_org + FH_FXMIN); -ymin = read_word_u(sp_globals.font_org + FH_FYMIN); -ymax = read_word_u(sp_globals.font_org + FH_FYMAX); - -if (!setup_consts(xmin,xmax,ymin,ymax)) - { - report_error(3); /* Requested specs out of range */ - return FALSE; - } -sp_globals.constr.data_valid = FALSE; -/* recompute setwidth */ -sp_globals.Psw.x = (fix15)((fix31)( - ((fix31)sp_globals.imported_width * (sp_globals.specs.xxmult>>16) + - ( ((fix31)sp_globals.imported_width * - (sp_globals.specs.xxmult&0xffffL) )>>16) - ) << sp_globals.pixshift) / sp_globals.metric_resolution); -sp_globals.Psw.y = (fix15)( - (fix31)( - ((fix31)sp_globals.imported_width * (sp_globals.specs.yxmult>>16) + - ( ((fix31)sp_globals.imported_width * (sp_globals.specs.yxmult&0xffffL) )>>16) - ) << sp_globals.pixshift) / sp_globals.metric_resolution); - -return TRUE; -} -#endif diff --git a/nx-X11/lib/font/Speedo/do_trns.c b/nx-X11/lib/font/Speedo/do_trns.c deleted file mode 100644 index 2e0f1db..0000000 --- a/nx-X11/lib/font/Speedo/do_trns.c +++ /dev/null @@ -1,512 +0,0 @@ -/* $Xorg: do_trns.c,v 1.3 2000/08/17 19:46:25 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/do_trns.c,v 1.3 2001/01/17 19:43:17 dawes Exp $ */ - -/**************************** D O _ T R N S . C ****************************** - * * - * This module is responsible for executing all intelligent transformation * - * for bounding box and outline data * - * * - ****************************************************************************/ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for Speedo */ - -#define DEBUG 0 - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - -static void sp_split_curve(PROTO_DECL2 point_t P1,point_t P2,point_t P3,fix15 depth); -static ufix8 FONTFAR *sp_get_args(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format,point_t STACKFAR *pP); - - -FUNCTION ufix8 FONTFAR *read_bbox( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */ -point_t STACKFAR *pPmin, /* Lower left corner of bounding box */ -point_t STACKFAR *pPmax, /* Upper right corner of bounding box */ -boolean set_flag) /* flag to indicate whether global oru bbox should be saved */ -/* - * Called by make_simp_char() and make_comp_char() to read the - * bounding box data from the font. - * Sets Pmin and Pmax to the bottom left and top right corners - * of the bounding box after transformation into device space. - * The units of Pmin and Pmax are sub-pixels. - * Updates *ppointer to point to the byte following the - * bounding box data. - */ -{ -ufix8 format1; -ufix8 format = 0; -fix15 i; -point_t P; - -sp_globals.x_int = 0; -sp_globals.y_int = sp_globals.Y_int_org; -sp_globals.x_orus = sp_globals.y_orus = 0; -format1 = NEXT_BYTE(pointer); -pointer = sp_get_args(pointer, format1, pPmin); -#if INCL_SQUEEZING || INCL_ISW -if (set_flag) - { - sp_globals.bbox_xmin_orus = sp_globals.x_orus; - sp_globals.bbox_ymin_orus = sp_globals.y_orus; - } -#endif -*pPmax = *pPmin; -for (i = 1; i < 4; i++) - { - switch(i) - { - case 1: - if (format1 & BIT6) /* Xmax requires X int zone 1? */ - sp_globals.x_int++; - format = (format1 >> 4) | 0x0c; - break; - - case 2: - if (format1 & BIT7) /* Ymax requires Y int zone 1? */ - sp_globals.y_int++; - format = NEXT_BYTE(pointer); - break; - - case 3: - sp_globals.x_int = 0; - format >>= 4; - break; - - default: - break; - } - - pointer = sp_get_args(pointer, format, &P); -#if INCL_SQUEEZING || INCL_ISW - if (set_flag && (i==2)) - { - sp_globals.bbox_xmax_orus = sp_globals.x_orus; - sp_globals.bbox_ymax_orus = sp_globals.y_orus; - } -#endif - if ((i == 2) || (!sp_globals.normal)) - { - if (P.x < pPmin->x) - pPmin->x = P.x; - if (P.y < pPmin->y) - pPmin->y = P.y; - if (P.x > pPmax->x) - pPmax->x = P.x; - if (P.y > pPmax->y) - pPmax->y = P.y; - } - } - -#if DEBUG -printf("BBOX %6.1f(Xint 0), %6.1f(Yint 0), %6.1f(Xint %d), %6.1f(Yint %d)\n", - (real)pPmin->x / (real)sp_globals.onepix, - (real)pPmin->y / (real)sp_globals.onepix, - (real)pPmax->x / (real)sp_globals.onepix, - (format1 >> 6) & 0x01, - (real)pPmax->y / (real)sp_globals.onepix, - (format1 >> 7) & 0x01); - -#endif -return pointer; -} - -FUNCTION void proc_outl_data( -GDECL -ufix8 FONTFAR *pointer) /* Pointer to next byte in char data */ -/* - * Called by make_simp_char() and make_comp_char() to read the - * outline data from the font. - * The outline data is parsed, transformed into device coordinates - * and passed to an output module for further processing. - * Note that pointer is not updated to facilitate repeated - * processing of the outline data when banding mode is in effect. - */ -{ -ufix8 format1, format2; -point_t P0, P1, P2, P3; -fix15 depth; -fix15 curve_count; - -sp_globals.x_int = 0; -sp_globals.y_int = sp_globals.Y_int_org; -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -record_xint((fix15)sp_globals.x_int); /* Record xint data */ -record_yint((fix15)(sp_globals.y_int - sp_globals.Y_int_org)); /* Record yint data */ -#endif - -sp_globals.x_orus = sp_globals.y_orus = 0; -curve_count = 0; -while(TRUE) - { - format1 = NEXT_BYTE(pointer); - switch(format1 >> 4) - { - case 0: /* LINE */ - pointer = sp_get_args(pointer, format1, &P1); -#if DEBUG - printf("LINE %6.1f, %6.1f\n", - (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix); -#endif - fn_line(P1); - sp_globals.P0 = P1; - continue; - - case 1: /* Short XINT */ - sp_globals.x_int = format1 & 0x0f; -#if DEBUG - printf("XINT %d\n", sp_globals.x_int); -#endif -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -record_xint((fix15)sp_globals.x_int); /* Record xint data */ -#endif - continue; - - case 2: /* Short YINT */ - sp_globals.y_int = sp_globals.Y_int_org + (format1 & 0x0f); -#if DEBUG - printf("YINT %d\n", sp_globals.y_int - sp_globals.Y_int_org); -#endif -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -record_yint((fix15)(sp_globals.y_int - sp_globals.Y_int_org)); /* Record yint data */ -#endif - continue; - - case 3: /* Miscellaneous */ - switch(format1 & 0x0f) - { - case 0: /* END */ - if (curve_count) - { - fn_end_contour(); - } - return; - - case 1: /* Long XINT */ - sp_globals.x_int = NEXT_BYTE(pointer); -#if DEBUG - printf("XINT %d\n", sp_globals.x_int); -#endif -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -record_xint((fix15)sp_globals.x_int); /* Record xint data */ -#endif - continue; - - case 2: /* Long YINT */ - sp_globals.y_int = sp_globals.Y_int_org + NEXT_BYTE(pointer); -#if DEBUG - printf("YINT %d\n", sp_globals.y_int - sp_globals.Y_int_org); -#endif -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -record_yint((fix15)(sp_globals.y_int - sp_globals.Y_int_org)); /* Record yint data */ -#endif - continue; - - default: /* Not used */ - continue; - } - - case 4: /* MOVE Inside */ - case 5: /* MOVE Outside */ - if (curve_count++) - { - fn_end_contour(); - } - - pointer = sp_get_args(pointer, format1, &P0); - sp_globals.P0 = P0; -#if DEBUG - printf("MOVE %6.1f, %6.1f\n", - (real)sp_globals.P0.x / (real)sp_globals.onepix, (real)sp_globals.P0.y / (real)sp_globals.onepix); -#endif - fn_begin_contour(sp_globals.P0, (boolean)(format1 & BIT4)); - continue; - - case 6: /* Undefined */ -#if DEBUG - printf("*** Undefined instruction (Hex %4x)\n", format1); -#endif - continue; - - case 7: /* Undefined */ -#if DEBUG - printf("*** Undefined instruction (Hex %4x)\n", format1); -#endif - continue; - - default: /* CRVE */ - format2 = NEXT_BYTE(pointer); - pointer = sp_get_args(pointer, format1, &P1); - pointer = sp_get_args(pointer, format2, &P2); - pointer = sp_get_args(pointer, (ufix8)(format2 >> 4), &P3); - depth = (format1 >> 4) & 0x07; -#if DEBUG - printf("CRVE %6.1f, %6.1f, %6.1f, %6.1f, %6.1f, %6.1f, %d\n", - (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, - (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix, - (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix, - depth); -#endif - depth += sp_globals.depth_adj; - if (sp_globals.curves_out) - { - fn_curve(P1, P2, P3, depth); - sp_globals.P0 = P3; - continue; - } - if (depth <= 0) - { - fn_line(P3); - sp_globals.P0 = P3; - continue; - } - sp_split_curve(P1, P2, P3, depth); - continue; - } - } -} - -FUNCTION static void sp_split_curve( -GDECL -point_t P1, /* First control point of Bezier curve */ -point_t P2, /* Second control point of Bezier curve */ -point_t P3, /* End point of Bezier curve */ -fix15 depth) /* Levels of recursive subdivision required */ -/* - * Called by proc_outl_data() to subdivide Bezier curves into an - * appropriate number of vectors, whenever curves are not enabled - * for output to the currently selected output module. - * sp_split_curve() calls itself recursively to the depth specified - * at which point it calls line() to deliver each vector resulting - * from the spliting process. - */ -{ -fix31 X0 = (fix31)sp_globals.P0.x; -fix31 Y0 = (fix31)sp_globals.P0.y; -fix31 X1 = (fix31)P1.x; -fix31 Y1 = (fix31)P1.y; -fix31 X2 = (fix31)P2.x; -fix31 Y2 = (fix31)P2.y; -fix31 X3 = (fix31)P3.x; -fix31 Y3 = (fix31)P3.y; -point_t Pmid; -point_t Pctrl1; -point_t Pctrl2; - -#if DEBUG -printf("CRVE(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n", - (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, - (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix, - (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix); -#endif - - -Pmid.x = (X0 + (X1 + X2) * 3 + X3 + 4) >> 3; -Pmid.y = (Y0 + (Y1 + Y2) * 3 + Y3 + 4) >> 3; -if ((--depth) <= 0) - { - fn_line(Pmid); - sp_globals.P0 = Pmid; - fn_line(P3); - sp_globals.P0 = P3; - } -else - { - Pctrl1.x = (X0 + X1 + 1) >> 1; - Pctrl1.y = (Y0 + Y1 + 1) >> 1; - Pctrl2.x = (X0 + (X1 << 1) + X2 + 2) >> 2; - Pctrl2.y = (Y0 + (Y1 << 1) + Y2 + 2) >> 2; - sp_split_curve(Pctrl1, Pctrl2, Pmid, depth); - Pctrl1.x = (X1 + (X2 << 1) + X3 + 2) >> 2; - Pctrl1.y = (Y1 + (Y2 << 1) + Y3 + 2) >> 2; - Pctrl2.x = (X2 + X3 + 1) >> 1; - Pctrl2.y = (Y2 + Y3 + 1) >> 1; - sp_split_curve(Pctrl1, Pctrl2, P3, depth); - } -} - -FUNCTION static ufix8 FONTFAR *sp_get_args( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */ -ufix8 format, /* Format specifiaction of argument pair */ -point_t STACKFAR *pP) /* Resulting transformed point */ -/* - * Called by read_bbox() and proc_outl_data() to read an X Y argument - * pair from the font. - * The format is specified as follows: - * Bits 0-1: Type of X argument. - * Bits 2-3: Type of Y argument. - * where the 4 possible argument types are: - * Type 0: Controlled coordinate represented by one byte - * index into the X or Y controlled coordinate table. - * Type 1: Interpolated coordinate represented by a two-byte - * signed integer. - * Type 2: Interpolated coordinate represented by a one-byte - * signed increment/decrement relative to the - * proceding X or Y coordinate. - * Type 3: Repeat of preceding X or Y argument value and type. - * The units of P are sub-pixels. - * Updates *ppointer to point to the byte following the - * argument pair. - */ -{ -ufix8 edge; - -/* Read X argument */ -switch(format & 0x03) - { -case 0: /* Index to controlled oru */ - edge = NEXT_BYTE(pointer); - sp_globals.x_orus = sp_plaid.orus[edge]; -#if INCL_RULES - sp_globals.x_pix = sp_plaid.pix[edge]; -#endif - break; - -case 1: /* 2 byte interpolated oru value */ - sp_globals.x_orus = NEXT_WORD(pointer); - goto L1; - -case 2: /* 1 byte signed oru increment */ - sp_globals.x_orus += (fix15)((fix7)NEXT_BYTE(pointer)); -L1: -#if INCL_RULES - sp_globals.x_pix = TRANS(sp_globals.x_orus, sp_plaid.mult[sp_globals.x_int], sp_plaid.offset[sp_globals.x_int], sp_globals.mpshift); -#endif - break; - -default: /* No change in X value */ - break; - } - -/* Read Y argument */ -switch((format >> 2) & 0x03) - { -case 0: /* Index to controlled oru */ - edge = sp_globals.Y_edge_org + NEXT_BYTE(pointer); - sp_globals.y_orus = sp_plaid.orus[edge]; -#if INCL_RULES - sp_globals.y_pix = sp_plaid.pix[edge]; -#endif - break; - -case 1: /* 2 byte interpolated oru value */ - sp_globals.y_orus = NEXT_WORD(pointer); - goto L2; - -case 2: /* 1 byte signed oru increment */ - sp_globals.y_orus += (fix15)((fix7)NEXT_BYTE(pointer)); -L2: -#if INCL_RULES - sp_globals.y_pix = TRANS(sp_globals.y_orus, sp_plaid.mult[sp_globals.y_int], sp_plaid.offset[sp_globals.y_int], sp_globals.mpshift); -#endif - break; - -default: /* No change in X value */ - break; - } - -#if INCL_RULES -switch(sp_globals.tcb.xmode) - { -case 0: /* X mode 0 */ - pP->x = sp_globals.x_pix; - break; - -case 1: /* X mode 1 */ - pP->x = -sp_globals.x_pix; - break; - -case 2: /* X mode 2 */ - pP->x = sp_globals.y_pix; - break; - -case 3: /* X mode 3 */ - pP->x = -sp_globals.y_pix; - break; - -default: /* X mode 4 */ -#endif - pP->x = (MULT16(sp_globals.x_orus, sp_globals.tcb.xxmult) + - MULT16(sp_globals.y_orus, sp_globals.tcb.xymult) + - sp_globals.tcb.xoffset) >> sp_globals.mpshift; -#if INCL_RULES - break; - } - -switch(sp_globals.tcb.ymode) - { -case 0: /* Y mode 0 */ - pP->y = sp_globals.y_pix; - break; - -case 1: /* Y mode 1 */ - pP->y = -sp_globals.y_pix; - break; - -case 2: /* Y mode 2 */ - pP->y = sp_globals.x_pix; - break; - -case 3: /* Y mode 3 */ - pP->y = -sp_globals.x_pix; - break; - -default: /* Y mode 4 */ -#endif - pP->y = (MULT16(sp_globals.x_orus, sp_globals.tcb.yxmult) + - MULT16(sp_globals.y_orus, sp_globals.tcb.yymult) + - sp_globals.tcb.yoffset) >> sp_globals.mpshift; -#if INCL_RULES - break; - } -#endif - -return pointer; -} - - - diff --git a/nx-X11/lib/font/Speedo/htest.c b/nx-X11/lib/font/Speedo/htest.c deleted file mode 100644 index 235b765..0000000 --- a/nx-X11/lib/font/Speedo/htest.c +++ /dev/null @@ -1,361 +0,0 @@ -/* $Xorg: htest.c,v 1.3 2000/08/17 19:46:25 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ - -/****************************** H T E S T . C ******************************** - * * - * SPEEDO FONT HEADER TEST MODULE * - * * - ****************************************************************************/ - - -#include "speedo.h" /* General definition for make_bmap */ -#include <stdio.h> - -#define DEBUG 0 - -#if DEBUG -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -#define FONT_BUFFER_SIZE 1000 - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ -static char pathname[100]; /* Name of font file to be output */ -static ufix8 font_buffer[FONT_BUFFER_SIZE]; /* Font buffer */ -static FILE *fdescr; /* Speedo outline file descriptor */ - - - -FUNCTION main(argc,argv) -int argc; -char *argv[]; -{ -int bytes_read; /* Number of bytes read from font file */ -ufix8 tmpufix8; /* Temporary workspace */ -fix15 tmpfix15; /* Temporary workspace */ -ufix16 tmpufix16; /* Temporary workspace */ -ufix32 tmpufix32; /* Temporary workspace */ -ufix8 *pvt_header_org; /* Origin of provate header data */ - -ufix8 read_1b(); /* Read 1 byte field from font header */ -fix15 read_2b(); /* Read 2 byte field from font header */ -fix31 read_4b(); /* Read 4 byte field from font header */ - -if (argc != 2) - { - fprintf(stderr,"Usage: htest {fontfile}\n\n"); - exit (1); - } - -sprintf(pathname, argv[1]); - -/* Initialization */ -printf("\n SPEEDO FONT FILE HEADER DATA\n"); -printf(" -------------------------\n\n"); -/* Load Speedo outline file */ -fdescr = fopen (pathname, "rb"); -if (fdescr == NULL) - { - printf("****** Cannot open file %s\n", pathname); - return; - } - -bytes_read = fread(font_buffer, sizeof(ufix8), sizeof(font_buffer), fdescr); -if (bytes_read == 0) - { - printf("****** Error on reading %s: %x\n", pathname, bytes_read); - fclose(fdescr); - return; - } - -printf("Format Identifier ...................... %.4s\n", font_buffer + FH_FMVER); - -tmpufix32 = (ufix32)read_4b(font_buffer + FH_FMVER + 4); -printf("CR-LF-NULL-NULL data ............... %8.8lx %s\n", tmpufix32, (tmpufix32 != 0x0d0a0000)? "(incorrect)": " "); - -printf("Font Size .............................. %4ld\n", (ufix32)read_4b(font_buffer + FH_FNTSZ)); - -printf("Minimum Font Buffer Size ............... %4ld\n", (ufix32)read_4b(font_buffer + FH_FBFSZ)); - -printf("Minimum Character Buffer Size .......... %4d\n", (ufix16)read_2b(font_buffer + FH_CBFSZ)); - -printf("Header Size ............................ %4d\n", (ufix16)read_2b(font_buffer + FH_HEDSZ)); - -printf("Font ID ................................ %4.4d\n", (ufix16)read_2b(font_buffer + FH_FNTID)); - -printf("Font Version Number .................... %4d\n", (ufix16)read_1b(font_buffer + FH_SFVNR)); - -printf("Font Full Name:\n %.70s\n", font_buffer + FH_FNTNM); - -printf("Manufacturing Date ................ %10.10s\n", font_buffer + FH_MDATE); - -printf("Character Set Name:\n %s\n", font_buffer + FH_LAYNM); - -printf("Character Set ID: ...................... %.4s\n", font_buffer + FH_LAYNM + 66); - -printf("Copyright Notice:\n %.70s\n", font_buffer + FH_CPYRT); - -printf("Number of Char. Indexes in Char. Set ... %4d\n", (ufix16)read_2b(font_buffer + FH_NCHRL)); - -printf("Total number of Char. Indexes in Font .. %4d\n", (ufix16)read_2b(font_buffer + FH_NCHRF)); - -printf("Index of First Character ............... %4d\n", (ufix16)read_2b(font_buffer + FH_FCHRF)); - -printf("Number of Kerning Tracks ............... %4d\n", (ufix16)read_2b(font_buffer + FH_NKTKS)); - -printf("Number of Kerning Pairs ................ %4d\n", (ufix16)read_2b(font_buffer + FH_NKPRS)); - -printf("Font Flags:\n"); -tmpufix8 = read_1b(font_buffer + FH_FLAGS); -printf(" Extended font ...................... %s\n", (tmpufix8 & BIT0)? " Yes": " No"); - -printf("Classification Flags:\n"); -tmpufix8 = read_1b(font_buffer + FH_CLFGS); -printf(" Italic ............................. %s\n", (tmpufix8 & BIT0)? " Yes": " No"); -printf(" Monospace .......................... %s\n", (tmpufix8 & BIT1)? " Yes": " No"); -printf(" Serif .............................. %s\n", (tmpufix8 & BIT2)? " Yes": " No"); -printf(" Display ............................ %s\n", (tmpufix8 & BIT3)? " Yes": " No"); - -tmpufix8 = read_1b(font_buffer + FH_FAMCL); -printf("Family Classification .................. %4d ", tmpufix8); -switch (tmpufix8) - { -case 0: - printf("(Don't care)\n"); - break; -case 1: - printf("(Serif)\n"); - break; -case 2: - printf("(Sans serif)\n"); - break; -case 3: - printf("(Monospace)\n"); - break; -case 4: - printf("(Script or calligraphic)\n"); - break; -case 5: - printf("(Decorative)\n"); - break; -default: - printf("\n"); - break; - } - -printf("Font Form Classification:\n"); -tmpufix8 = read_1b(font_buffer + FH_FRMCL); -printf(" Width Type ......................... %4d ", (tmpufix8 & 0x0f)); -switch (tmpufix8 & 0x0f) - { -case 4: - printf("(Condensed)\n"); - break; -case 6: - printf("(Semi-condensed)\n"); - break; -case 8: - printf("(Normal)\n"); - break; -case 10: - printf("(Semi-expanded)\n"); - break; -case 12: - printf("(Expanded)\n"); - break; -default: - printf("\n"); - break; - } -printf(" Weight ............................. %4d ", (tmpufix8 >> 4)); -switch (tmpufix8 >> 4) - { -case 1: - printf("(Thin)\n"); - break; -case 2: - printf("(Ultralight)\n"); - break; -case 3: - printf("(Extra light)\n"); - break; -case 4: - printf("(Light)\n"); - break; -case 5: - printf("(Book)\n"); - break; -case 6: - printf("(Normal)\n"); - break; -case 7: - printf("(Medium)\n"); - break; -case 8: - printf("(Semibold)\n"); - break; -case 9: - printf("(Demibold)\n"); - break; -case 10: - printf("(Bold)\n"); - break; -case 11: - printf("(Extrabold)\n"); - break; -case 12: - printf("(Ultrabold)\n"); - break; -case 13: - printf("(Heavy)\n"); - break; -case 14: - printf("(Black)\n"); - break; -default: - printf("\n"); - break; - } - -printf("Short Font Name ........................ %.16s\n", font_buffer + FH_SFNTN); - -printf("Short Face Name ........................ %.16s\n", font_buffer + FH_SFACN); - -printf("Font Form .............................. %.14s\n", font_buffer + FH_FNTFM); - -printf("Italic Angle ........................... %7.2f\n", ((real)read_2b(font_buffer + FH_ITANG) / 256.0)); - -printf("ORUs per Em ............................ %4d\n", (ufix16)read_2b(font_buffer + FH_ORUPM)); - -printf("Width of Word Space .................... %4d\n", (ufix16)read_2b(font_buffer + FH_WDWTH)); - -printf("Width of Em Space ...................... %4d\n", (ufix16)read_2b(font_buffer + FH_EMWTH)); - -printf("Width of En Space ...................... %4d\n", (ufix16)read_2b(font_buffer + FH_ENWTH)); - -printf("Width of Thin Space .................... %4d\n", (ufix16)read_2b(font_buffer + FH_TNWTH)); - -printf("Width of Figure Space .................. %4d\n", (ufix16)read_2b(font_buffer + FH_FGWTH)); - -printf("Min X coordinate in font ............... %4d\n", (fix15)read_2b(font_buffer + FH_FXMIN)); - -printf("Min Y coordinate in font ............... %4d\n", (fix15)read_2b(font_buffer + FH_FYMIN)); - -printf("Max X coordinate in font ............... %4d\n", (fix15)read_2b(font_buffer + FH_FXMAX)); - -printf("Max Y coordinate in font ............... %4d\n", (fix15)read_2b(font_buffer + FH_FYMAX)); - -printf("Underline Position ..................... %4d\n", (fix15)read_2b(font_buffer + FH_ULPOS)); - -printf("Underline Thickness .................... %4d\n", (fix15)read_2b(font_buffer + FH_ULTHK)); - -printf("Small Caps Y position .................. %4d\n", (fix15)read_2b(font_buffer + FH_SMCTR)); -printf("Small Caps X scale ..................... %7.2f\n", ((real)read_2b(font_buffer + FH_SMCTR + 2) / 4096.0)); -printf("Small Caps Y scale ..................... %7.2f\n", ((real)(fix15)read_2b(font_buffer + FH_SMCTR + 4) / 4096.0)); - -printf("Display Superiors Y position ........... %4d\n", (fix15)read_2b(font_buffer + FH_SMCTR)); -printf("Display Superiors X scale .............. %7.2f\n", ((real)read_2b(font_buffer + FH_SMCTR + 2) / 4096.0)); -printf("Display Superiors Y scale .............. %7.2f\n", ((real)read_2b(font_buffer + FH_SMCTR + 4) / 4096.0)); - -printf("Footnote Superiors Y position .......... %4d\n", (fix15)read_2b(font_buffer + FH_FNSTR)); -printf("Footnote Superiors X scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_FNSTR + 2) / 4096.0)); -printf("Footnote Superiors Y scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_FNSTR + 4) / 4096.0)); - -printf("Alpha Superiors Y position ............. %4d\n", (fix15)read_2b(font_buffer + FH_ALSTR)); -printf("Alpha Superiors X scale ................ %7.2f\n", ((real)read_2b(font_buffer + FH_ALSTR + 2) / 4096.0)); -printf("Alpha Superiors Y scale ................ %7.2f\n", ((real)read_2b(font_buffer + FH_ALSTR + 4) / 4096.0)); - -printf("Chemical Inferiors Y position .......... %4d\n", (fix15)read_2b(font_buffer + FH_CMITR)); -printf("Chemical Inferiors X scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_CMITR + 2) / 4096.0)); -printf("Chemical Inferiors Y scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_CMITR + 4) / 4096.0)); - -printf("Small Numerators Y position ............ %4d\n", (fix15)read_2b(font_buffer + FH_SNMTR)); -printf("Small Numerators X scale ............... %7.2f\n", ((real)read_2b(font_buffer + FH_SNMTR + 2) / 4096.0)); -printf("Small Numerators Y scale ............... %7.2f\n", ((real)read_2b(font_buffer + FH_SNMTR + 4) / 4096.0)); - -printf("Small Denominators Y position .......... %4d\n", (fix15)read_2b(font_buffer + FH_SDNTR)); -printf("Small Denominators X scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_SDNTR + 2) / 4096.0)); -printf("Small Denominators Y scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_SDNTR + 4) / 4096.0)); - -printf("Medium Numerators Y position ........... %4d\n", (fix15)read_2b(font_buffer + FH_MNMTR)); -printf("Medium Numerators X scale .............. %7.2f\n", ((real)read_2b(font_buffer + FH_MNMTR + 2) / 4096.0)); -printf("Medium Numerators Y scale .............. %7.2f\n", ((real)read_2b(font_buffer + FH_MNMTR + 4) / 4096.0)); - -printf("Medium Denominators Y position ......... %4d\n", (fix15)read_2b(font_buffer + FH_MDNTR)); -printf("Medium Denominators X scale ............ %7.2f\n", ((real)read_2b(font_buffer + FH_MDNTR + 2) / 4096.0)); -printf("Medium Denominators Y scale ............ %7.2f\n", ((real)read_2b(font_buffer + FH_MDNTR + 4) / 4096.0)); - -printf("Large Numerators Y position ............ %4d\n", (fix15)read_2b(font_buffer + FH_LNMTR)); -printf("Large Numerators X scale ............... %7.2f\n", ((real)read_2b(font_buffer + FH_LNMTR + 2) / 4096.0)); -printf("Large Numerators Y scale ............... %7.2f\n", ((real)read_2b(font_buffer + FH_LNMTR + 4) / 4096.0)); - -printf("Large Denominators Y position .......... %4d\n", (fix15)read_2b(font_buffer + FH_LDNTR)); -printf("Large Denominators X scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_LDNTR + 2) / 4096.0)); -printf("Large Denominators Y scale ............. %7.2f\n", ((real)read_2b(font_buffer + FH_LDNTR + 4) / 4096.0)); - -fclose(fdescr); -} - - -FUNCTION ufix8 read_1b(pointer) -ufix8 *pointer; -/* - * Reads 1-byte field from font buffer - */ -{ -return *pointer; -} - -FUNCTION fix15 read_2b(pointer) -ufix8 *pointer; -/* - * Reads 2-byte field from font buffer - */ -{ -fix31 temp; - -temp = *pointer++; -temp = (temp << 8) + *(pointer); -return temp; -} - -FUNCTION fix31 read_4b(pointer) -ufix8 *pointer; -/* - * Reads 4-byte field from font buffer - */ -{ -fix31 temp; - -temp = *pointer++; -temp = (temp << 8) + *(pointer++); -temp = (temp << 8) + *(pointer++); -temp = (temp << 8) + *(pointer); -return temp; -} - diff --git a/nx-X11/lib/font/Speedo/iface.c b/nx-X11/lib/font/Speedo/iface.c deleted file mode 100644 index 1dad5ae..0000000 --- a/nx-X11/lib/font/Speedo/iface.c +++ /dev/null @@ -1,650 +0,0 @@ -/* $Xorg: iface.c,v 1.3 2000/08/17 19:46:25 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/iface.c,v 1.2 1998/07/25 06:56:53 dawes Exp $ */ - -/***************************** I F A C E . C ********************************* - * * - * This module provides a layer to make Speedo function calls to and * - * from it compatible with Fontware 2.X function calls. * - * * - ****************************************************************************/ - -#include "speedo.h" /* General definitions for Speedo */ -#ifndef FONTMODULE -#include <math.h> -#else -#include "xf86_ansic.h" -#endif - -#define DEBUG 0 - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -#define PI 3.1415926536 /* pi */ -#define PTPERINCH 72.2892 /* nbr points per inch, exactly! */ - -#define BIT8 0x0100 -#define BIT9 0x0200 -#define BIT10 0x0400 -#define BIT11 0x0800 -#define BIT12 0x1000 -#define BIT13 0x2000 -#define BIT14 0x4000 -#define BIT15 0x8000 - -#define READ 0 - -typedef short bool16; -typedef int bool; - -typedef -struct - { - bool16 left; - bool16 right; - bool16 top; - bool16 bottom; - } lrtb; - - -typedef -struct - { - buff_t *pfont; /* Pointer to font data */ - ufix16 mode; /* what mode is the font generator in */ - real point_size_x; /* Point size in X dimension */ - real point_size_y; /* Point size in Y dimension */ - real res_hor; /* Horizontal resolution of output device */ - real res_ver; /* Vertical resolution of output device */ - real rot_angle; /* Rotation angle in degrees (clockwise) */ - real obl_angle; /* Obliquing angle in degrees (clockwise) */ - bool16 whitewrite; /* if T, generate bitmaps for whitewriters */ - fix15 thresh; /* Scan conversion threshold * - * Thickens characters on each edge by * - * <thresh> sub-pixels */ - bool16 import_widths; /* Use imported width table */ - lrtb clip; /* Clip to standard character cell */ - lrtb squeeze; /* Squeeze to standard character cell */ - bool16 bogus_mode; /* if T, ignore plaid data */ - } comp_char_desc; /* character attributes for scan conv */ - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - fw_reset(); /* Fontware 2.X reset call */ - fw_set_specs(); /* Fontware 2.X set specs call */ -bool fw_make_char(); /* Fontware 2.X make character call */ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ -void _open_bitmap(); -void _close_bitmap(); -void _set_bitmap_bits(); -void _open_outline(); -void _open_outline(); -void _start_new_char(); -void _start_curve(); -void _line_to(); -void _close_curve(); -void _close_outline(); - -/***** STATIC VARIABLES *****/ -static specs_t *pspecs; -static buff_t *pfont; -static buff_t char_data; -static fix15 set_width_x; -static specs_t specsarg; - -/***** STATIC FUNCTIONS *****/ -static fix31 make_mult(); - - -FUNCTION fw_reset() -{ -sp_reset(); -} - -FUNCTION fw_set_specs(pspecs) -comp_char_desc *pspecs; /* Pointer to scan conversion parameters structure */ - -/* Fontware 2.X character generator call to set font specifications - * compc -- pointer to structure containing scan conversion parameters. - * ->compf -- compressed font data structure - * ->point_size_x -- x pointsize - * ->point_size_y -- y pointsize - * ->res_hor -- horizontal pixels per inch - * ->res_ver -- vertical pixels per inch - * ->rot_angle -- rotation angle in degrees (clockwise) - * ->obl_angle -- obliquing angle in degrees (clockwise) - * ->whitewrite -- if true, generate bitmaps for whitewriters - * ->thresh -- scan-conversion threshold - * ->import_widths -- if true, use external width table - * ->clip.left -- clips min x at left of emsquare - * ->clip.right -- clips max x at right of emsquare - * ->clip.bottom -- clips min x at bottom of emsquare - * ->clip.top -- clips max x at top of emsquare - * ->squeeze.left -- squeezes min x at left of emsquare - * ->squeeze.right, .top, .bottom &c - * ->sw_fixed -- if TRUE, match pixel widths to scaled outline widths - * ->bogus_mode -- ignore plaid data if TRUE - */ - -{ -fix15 irot; -fix15 iobl; -fix15 x_trans_type; -fix15 y_trans_type; -fix31 xx_mult; -fix31 xy_mult; -fix31 yx_mult; -fix31 yy_mult; -real sinrot, cosrot, tanobl; -real x_distortion; -real pixperem_h; -real pixperem_v; -real point_size_x; -real point_size_y; -real res_hor; -real res_ver; -fix15 mode; - -specsarg.pfont = pspecs->pfont; - -irot = floor(pspecs->rot_angle + 0.5); -iobl = floor(pspecs->obl_angle + 0.5); -if (iobl > 85) - iobl = 85; -if (iobl < -85) - iobl = -85; -if ((irot % 90) == 0) - { - x_trans_type = y_trans_type = irot / 90 & 0x0003; - if (iobl != 0) - { - if (x_trans_type & 0x01) - y_trans_type = 4; - else - x_trans_type = 4; - } - } -else if (((irot + iobl) % 90) == 0) - { - x_trans_type = y_trans_type = (irot + iobl) / 90 & 0x0003; - if (iobl != 0) - { - if (x_trans_type & 0x01) - x_trans_type = 4; - else - y_trans_type = 4; - } - } -else - { - x_trans_type = y_trans_type = 4; - } - -point_size_x = pspecs->point_size_x; -point_size_y = pspecs->point_size_y; -res_hor = pspecs->res_hor; -res_ver = pspecs->res_ver; - -switch (x_trans_type) - { -case 0: - xx_mult = make_mult(point_size_x, res_hor); - xy_mult = 0; - break; - -case 1: - xx_mult = 0; - xy_mult = make_mult(point_size_y, res_hor); - break; - -case 2: - xx_mult = -make_mult(point_size_x, res_hor); - xy_mult = 0; - break; - -case 3: - xx_mult = 0; - xy_mult = -make_mult(point_size_y, res_hor); - break; - -default: - sinrot = sin((real)irot * PI / 180.); - cosrot = cos((real)irot * PI / 180.); - tanobl = tan((real)iobl * PI / 180.); - x_distortion = point_size_x / point_size_y; - pixperem_h = point_size_y * res_hor / (real)PTPERINCH; /* this is NOT a bug */ - xx_mult = floor(cosrot * x_distortion * pixperem_h * 65536.0 + 0.5); - xy_mult = floor((sinrot + cosrot * tanobl) * pixperem_h * 65536.0 + 0.5); - break; - } - -switch (y_trans_type) - { -case 0: - yx_mult = 0; - yy_mult = make_mult(point_size_y, res_ver); - break; - -case 1: - yx_mult = -make_mult(point_size_x, res_hor); - yy_mult = 0; - break; - -case 2: - yx_mult = 0; - yy_mult = -make_mult(point_size_y, res_ver); - break; - -case 3: - yx_mult = make_mult(point_size_x, res_ver); - yy_mult = 0; - break; - -default: - sinrot = sin((real)irot * PI / 180.); - cosrot = cos((real)irot * PI / 180.); - tanobl = tan((real)iobl * PI / 180.); - x_distortion = point_size_x / point_size_y; - pixperem_v = point_size_y * res_ver / (real)PTPERINCH; - yx_mult = floor(-sinrot * x_distortion * pixperem_v * 65536.0 + 0.5); - yy_mult = floor((cosrot - sinrot * tanobl) * pixperem_v * 65536.0 + 0.5); - break; - } - -specsarg.xxmult = xx_mult; -specsarg.xymult = xy_mult; -specsarg.xoffset = 0; -specsarg.yxmult = yx_mult; -specsarg.yymult = yy_mult; -specsarg.yoffset = 0; -specsarg.out_info = 0; - -/* Select processing mode */ -switch (pspecs->mode) - { -case 1: - if (pspecs->whitewrite) /* White-write requested? */ - { - mode = 1; - } - else - { - mode = 0; - } - break; - -case 2: - mode = 2; - break; - -default: - mode = pspecs->mode; - break; - } - -if (pspecs->bogus_mode) /* Linear transformation requested? */ - { - mode |= BIT4; /* Set linear tranformation flag */ - } - -if (pspecs->import_widths) /* Imported widths requested? */ - { - mode |= BIT6; /* Set imported width flag */ - } - -if (pspecs->clip.left) /* Clip left requested? */ - { - mode |= BIT8; /* Set clip left flag */ - } - -if (pspecs->clip.right) /* Clip right requested? */ - { - mode |= BIT9; /* Set clip right flag */ - } - -if (pspecs->clip.top) /* Clip top requested? */ - { - mode |= BIT10; /* Set clip top flag */ - } - -if (pspecs->clip.bottom) /* Clip bottom requested? */ - { - mode |= BIT11; /* Set clip bottom flag */ - } - -if (pspecs->squeeze.left) /* Squeeze left requested? */ - { - mode |= BIT12; /* Set squeeze left flag */ - } - -if (pspecs->squeeze.right) /* Squeeze right requested? */ - { - mode |= BIT13; /* Set squeeze right flag */ - } - -if (pspecs->squeeze.top) /* Squeeze top requested? */ - { - mode |= BIT14; /* Set squeeze top flag */ - } - -if (pspecs->squeeze.bottom) /* Squeeze bottom requested? */ - { - mode |= BIT15; /* Set squeeze bottom flag */ - } - -specsarg.flags = mode; - -sp_set_specs(&specsarg); -} - -FUNCTION static fix31 make_mult(point_size, resolution) -real point_size; -real resolution; -{ -real ms_factor; - -return (fix31)floor((point_size * resolution * 65536.0) / (real)PTPERINCH + 0.5); -} - -FUNCTION bool fw_make_char(char_index) -ufix16 char_index; -{ -return sp_make_char(char_index); -} - -FUNCTION buff_t *sp_load_char_data(file_offset, no_bytes, cb_offset) -fix31 file_offset; -fix15 no_bytes; -fix15 cb_offset; -/* - * Called by Speedo character generator to request that character - * data be loaded from the font file. - * This is a dummy function that assumes that the entire font has - * been loaded. - */ -{ -#if DEBUG -printf("load_char_data(%d, %d, %d)\n", file_offset, no_bytes, char_offset); -#endif -char_data.org = pfont->org + file_offset; -char_data.no_bytes = no_bytes; -return &char_data; -} - -FUNCTION void sp_report_error(n) -fix15 n; /* Error identification number */ -/* - * Called by Speedo character generator to report an error. - */ -{ -switch(n) - { -case 1: - printf("Insufficient font data loaded\n"); - break; - -case 3: - printf("Transformation matrix out of range\n"); - break; - -case 4: - printf("Font format error\n"); - break; - -case 5: - printf("Requested specs not compatible with output module\n"); - break; - -case 7: - printf("Intelligent transformation requested but not supported\n"); - break; - -case 8: - printf("Unsupported output mode requested\n"); - break; - -case 9: - printf("Extended font loaded but only compact fonts supported\n"); - break; - -case 10: - printf("Font specs not set prior to use of font\n"); - break; - -case 12: - printf("Character data not available()\n"); - break; - -case 13: - printf("Track kerning data not available()\n"); - break; - -case 14: - printf("Pair kerning data not available()\n"); - break; - -default: - printf("report_error(%d)\n", n); - break; - } -} - - - -FUNCTION void sp_open_bitmap(sw_x, sw_y, xorg, yorg, xsize, ysize) -fix31 sw_x; /* X component of escapement vector */ -fix31 sw_y; /* Y component of escapement vector */ -fix31 xorg; /* X origin */ -fix31 yorg; /* Y origin */ -fix15 xsize; /* width of bitmap */ -fix15 ysize; /* height of bitmap */ -/* - * Called by Speedo character generator to initialize a buffer prior - * to receiving bitmap data. - */ -{ - -fix15 xmin,xmax,ymin,ymax; - -#if DEBUG -printf("sp_open_bitmap:\n"); -printf(" X component of set width vector = %3.1f\n", (real)sw_x / 65536.0); -printf(" Y component of set width vector = %3.1f\n", (real)sw_y / 65536.0); -printf(" Bounding box is (%d, %d, %d, %d)\n", xmin, ymin, xmax, ymax); -#endif - -xmin = xorg >> 16; -ymin = yorg >> 16; -xmax = xmin + xsize; -ymax = ymin + ysize; - -set_width_x = ((sw_x >> 15) + 1) >> 1; -open_bitmap(set_width_x, xmin, xmax, ymin, ymax); -} - -FUNCTION void sp_set_bitmap_bits(y, x1, x2) -fix15 y, x1, x2; -/* - * Called by Speedo character generator to write one row of pixels - * into the generated bitmap character. - */ -{ -#if DEBUG -printf("set_bitmap_bits(%d, %d, %d)\n", y, x1, x2); -#endif - -set_bitmap_bits(y, x1, x2); -} - -FUNCTION void sp_close_bitmap() -/* - * Called by Speedo character generator to indicate all bitmap data - * has been generated. - */ -{ -#if DEBUG -printf("close_bitmap()\n"); -#endif - -close_bitmap(); -} - -FUNCTION void sp_open_outline(sw_x, sw_y, xmin, xmax, ymin, ymax) -fix31 sw_x; /* X component of escapement vector */ -fix31 sw_y; /* Y component of escapement vector */ -fix31 xmin; /* Minimum X value in outline */ -fix31 xmax; /* Maximum X value in outline */ -fix31 ymin; /* Minimum Y value in outline */ -fix31 ymax; /* Maximum Y value in outline */ -/* - * Called by Speedo character generator to initialize prior to - * outputting scaled outline data. - */ -{ -#if DEBUG -printf("open_outline(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n", - (real)sw_x / 65536.0, (real)sw_y / 65536.0, - (real)xmin / 65536.0, (real)xmax / 65536.0, (real)ymin / 65536.0, (real)ymax / 65536.0); -#endif - -set_width_x = ((sw_x >> 15) + 1) >> 1; -open_outline(set_width_x); -} - -FUNCTION void sp_start_new_char() -/* - * Called by Speedo character generator to initialize prior to - * outputting scaled outline data for a sub-character in a compound - * character. - */ -{ -#if DEBUG -printf("start_new_char()\n"); -#endif - -start_new_char(); -} - -FUNCTION void sp_start_contour(x, y, outside) -fix31 x; /* X coordinate of start point in 1/65536 pixels */ -fix31 y; /* Y coordinate of start point in 1/65536 pixels */ -boolean outside; /* TRUE if curve encloses ink (Counter-clockwise) */ -/* - * Called by Speedo character generator at the start of each contour - * in the outline data of the character. - */ -{ -real realx, realy; - -realx = (real)x / 65536.0; -realy = (real)y / 65536.0; - -#if DEBUG -printf("start_curve(%3.1f, %3.1f, %s)\n", - realx, realy, - outside? "outside": "inside"); -#endif - -start_curve(realx, realy, outside); -} - -FUNCTION void sp_curve_to(x1, y1, x2, y2, x3, y3) -fix31 x1; /* X coordinate of first control point in 1/65536 pixels */ -fix31 y1; /* Y coordinate of first control point in 1/65536 pixels */ -fix31 x2; /* X coordinate of second control point in 1/65536 pixels */ -fix31 y2; /* Y coordinate of second control point in 1/65536 pixels */ -fix31 x3; /* X coordinate of curve end point in 1/65536 pixels */ -fix31 y3; /* Y coordinate of curve end point in 1/65536 pixels */ -/* - * Called by Speedo character generator once for each curve in the - * scaled outline data of the character. This function is only called if curve - * output is enabled in the set_specs() call. - */ -{ -#if DEBUG -printf("curve_to(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n", - (real)x1 / 65536.0, (real)y1 / 65536.0, - (real)x2 / 65536.0, (real)y2 / 65536.0, - (real)x3 / 65536.0, (real)y3 / 65536.0); -#endif -} - -FUNCTION void sp_line_to(x, y) -fix31 x; /* X coordinate of vector end point in 1/65536 pixels */ -fix31 y; /* Y coordinate of vector end point in 1/65536 pixels */ -/* - * Called by Speedo character generator onece for each vector in the - * scaled outline data for the character. This include curve data that has - * been sub-divided into vectors if curve output has not been enabled - * in the set_specs() call. - */ -{ -real realx, realy; - -realx = (real)x / 65536.0; -realy = (real)y / 65536.0; - -#if DEBUG -printf("line_to(%3.1f, %3.1f)\n", - realx, realy); -#endif - -line_to(realx, realy); -} - -FUNCTION void sp_close_contour() -/* - * Called by Speedo character generator at the end of each contour - * in the outline data of the character. - */ -{ -#if DEBUG -printf("close_curve()\n"); -#endif - -close_curve(); -} - -FUNCTION void sp_close_outline() -/* - * Called by Speedo character generator at the end of output of the - * scaled outline of the character. - */ -{ -#if DEBUG -printf("close_outline()\n"); -#endif - -close_outline(set_width_x); -} - diff --git a/nx-X11/lib/font/Speedo/keys.h b/nx-X11/lib/font/Speedo/keys.h deleted file mode 100644 index dd9d0bf..0000000 --- a/nx-X11/lib/font/Speedo/keys.h +++ /dev/null @@ -1,56 +0,0 @@ -/* $Xorg: keys.h,v 1.3 2000/08/17 19:46:25 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ - - -/***** DECRYPTION KEY CONSTANTS (PC Platform) *****/ - -#define CUS0 432 /* Customer number */ - -#define KEY0 0 /* Decryption key 0 */ -#define KEY1 72 /* Decryption key 1 */ -#define KEY2 123 /* Decryption key 2 */ -#define KEY3 1 /* Decryption key 3 */ -#define KEY4 222 /* Decryption key 4 */ -#define KEY5 194 /* Decryption key 5 */ -#define KEY6 113 /* Decryption key 6 */ -#define KEY7 119 /* Decryption key 7 */ -#define KEY8 52 /* Decryption key 8 */ - -/***** DECRYPTION KEY CONSTANTS (Sample) *****/ - -#define XSAMPLEFONTS - -#define XCUS0 0 /* Customer number */ - -#define XKEY0 0 /* Decryption key 0 */ -#define XKEY1 0 /* Decryption key 1 */ -#define XKEY2 0 /* Decryption key 2 */ -#define XKEY3 0 /* Decryption key 3 */ -#define XKEY4 0 /* Decryption key 4 */ -#define XKEY5 0 /* Decryption key 5 */ -#define XKEY6 0 /* Decryption key 6 */ -#define XKEY7 0 /* Decryption key 7 */ -#define XKEY8 0 /* Decryption key 8 */ - - diff --git a/nx-X11/lib/font/Speedo/module/Imakefile b/nx-X11/lib/font/Speedo/module/Imakefile deleted file mode 100644 index e517707..0000000 --- a/nx-X11/lib/font/Speedo/module/Imakefile +++ /dev/null @@ -1,47 +0,0 @@ -XCOMM $XFree86: xc/lib/font/Speedo/module/Imakefile,v 1.5 1999/08/14 10:49:18 dawes Exp $ - -#define IHaveModules -#include <Server.tmpl> - - INCLUDES = -I$(FONTINCSRC) -I../../include -I$(SERVERSRC)/include \ - -I$(XINCLUDESRC) -I../ - HEADERS = - DEFINES = -DFONTMODULE - - SPEEDOSRCS = do_char.c do_trns.c out_bl2d.c out_blk.c speedomod.c \ - out_scrn.c out_util.c reset.c set_spcs.c set_trns.c - SPEEDOOBJS = do_char.o do_trns.o out_bl2d.o out_blk.o speedomod.o \ - out_scrn.o out_util.o reset.o set_spcs.o set_trns.o - - SRCS = spfuncs.c spfile.c spinfo.c sperr.c spfont.c spglyph.c \ - spencode.c bics-unicode.c \ - $(SPEEDOSRCS) - OBJS = spfuncs.o spfile.o spinfo.o sperr.o spfont.o spglyph.o \ - spencode.o bics-unicode.o \ - $(SPEEDOOBJS) - -LinkSourceFile(bics-unicode.c,..) -LinkSourceFile(do_char.c,..) -LinkSourceFile(do_trns.c,..) -LinkSourceFile(out_bl2d.c,..) -LinkSourceFile(out_blk.c,..) -LinkSourceFile(out_scrn.c,..) -LinkSourceFile(out_util.c,..) -LinkSourceFile(reset.c,..) -LinkSourceFile(set_spcs.c,..) -LinkSourceFile(set_trns.c,..) -LinkSourceFile(spfuncs.c,..) -LinkSourceFile(spfile.c,..) -LinkSourceFile(spinfo.c,..) -LinkSourceFile(sperr.c,..) -LinkSourceFile(spfont.c,..) -LinkSourceFile(spglyph.c,..) -LinkSourceFile(spencode.c,..) - -ModuleObjectRule() -LibraryModuleTarget(speedo,$(OBJS)) -InstallLibraryModule(speedo,$(MODULEDIR),fonts) - -DependTarget() - -InstallDriverSDKLibraryModule(speedo,$(DRIVERSDKMODULEDIR),fonts) diff --git a/nx-X11/lib/font/Speedo/module/speedomod.c b/nx-X11/lib/font/Speedo/module/speedomod.c deleted file mode 100644 index 94820fe..0000000 --- a/nx-X11/lib/font/Speedo/module/speedomod.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 1998 The XFree86 Project, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the XFree86 Project shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization from the - * XFree86 Project. - */ -/* $XFree86: xc/lib/font/Speedo/module/speedomod.c,v 1.8 2001/09/04 13:49:16 dawes Exp $ */ - -#include "misc.h" - -#include <X11/fonts/fontmod.h> -#include "xf86Module.h" - -static MODULESETUPPROTO(speedoSetup); - - /* - * This is the module data function that is accessed when loading - * libspeedo as a module. - */ - -static XF86ModuleVersionInfo VersRec = -{ - "speedo", - MODULEVENDORSTRING, - MODINFOSTRING1, - MODINFOSTRING2, - XORG_VERSION_CURRENT, - 1, 0, 1, - ABI_CLASS_FONT, /* A font module */ - ABI_FONT_VERSION, - MOD_CLASS_FONT, - {0,0,0,0} /* signature, to be patched into the file by a tool */ -}; - -XF86ModuleData speedoModuleData = { &VersRec, speedoSetup, NULL }; - -extern void SpeedoRegisterFontFileFunctions(void); - -FontModule speedoModule = { - SpeedoRegisterFontFileFunctions, - "Speedo", - NULL -}; - -static pointer -speedoSetup(pointer module, pointer opts, int *errmaj, int *errmin) -{ - speedoModule.module = module; - LoadFont(&speedoModule); - - /* Need a non-NULL return */ - return (pointer)1; -} diff --git a/nx-X11/lib/font/Speedo/nsample.c b/nx-X11/lib/font/Speedo/nsample.c deleted file mode 100644 index a90367f..0000000 --- a/nx-X11/lib/font/Speedo/nsample.c +++ /dev/null @@ -1,745 +0,0 @@ -/* $Xorg: nsample.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ - - -/*************************** N S A M P L E . C ******************************* - * * - * SPEEDO CHARACTER GENERATOR TEST MODULE * - * * - * This is an illustration of what external resources are required to * - * load a Speedo outline and use the Speedo character generator to generate * - * bitmaps or scaled outlines according to the desired specification. * * - * * - * This program loads a Speedo outline, defines a set of character * - * generation specifications, generates bitmap (or outline) data for each * - * character in the font and prints them on the standard output. * - * * - * If the font buffer is too small to hold the entire font, the first * - * part of the font is loaded. Character data is then loaded dynamically * - * as required. * - * * - ****************************************************************************/ - -#include <stdio.h> -#if PROTOS_AVAIL -#include <stddef.h> -#include <malloc.h> -#include <stdlib.h> -void main(int argc,char *argv[]); -#else -void* malloc(); -#endif - -#include "speedo.h" /* General definition for make_bmap */ -#include "keys.h" /* Font decryption keys */ - -#define DEBUG 0 - -#if DEBUG -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -#define MAX_BITS 256 /* Max line length of generated bitmap */ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC FUNCTIONS *****/ - -#if PROTOS_AVAIL -fix31 read_4b(ufix8 FONTFAR *ptr); -fix15 read_2b(ufix8 FONTFAR *ptr); -#else -fix31 read_4b(); -fix15 read_2b(); -#endif -/***** STATIC VARIABLES *****/ -static char pathname[100]; /* Name of font file to be output */ -static ufix8 FONTFAR *font_buffer; /* Pointer to allocated Font buffer */ -static ufix8 FONTFAR *char_buffer; /* Pointer to allocate Character buffer */ -static buff_t font; /* Buffer descriptor for font data */ -#if INCL_LCD -static buff_t char_data; /* Buffer descriptor for character data */ -#endif -static FILE *fdescr; /* Speedo outline file descriptor */ -static ufix16 char_index; /* Index of character to be generated */ -static ufix16 char_id; /* Character ID */ -static ufix16 minchrsz; /* minimum character buffer size */ - -static ufix8 key[] = - { - KEY0, - KEY1, - KEY2, - KEY3, - KEY4, - KEY5, - KEY6, - KEY7, - KEY8 - }; /* Font decryption key */ - -static fix15 raswid; /* raster width */ -static fix15 rashgt; /* raster height */ -static fix15 offhor; /* horizontal offset from left edge of emsquare */ -static fix15 offver; /* vertical offset from baseline */ -static fix15 set_width; /* character set width */ -static fix15 y_cur; /* Current y value being generated and printed */ -static char line_of_bits[2 * MAX_BITS + 1]; /* Buffer for row of generated bits */ - -#if INCL_MULTIDEV -#if INCL_BLACK || INCL_SCREEN || INCL_2D -bitmap_t bfuncs = { sp_open_bitmap, sp_set_bitmap_bits, sp_close_bitmap }; -#endif -#if INCL_OUTLINE -outline_t ofuncs = { sp_open_outline, sp_start_new_char, sp_start_contour, sp_curve_to, - sp_line_to, sp_close_contour, sp_close_outline }; -#endif -#endif - - -ufix8 temp[16]; /* temp buffer for first 16 bytes of font */ - - -FUNCTION void main(argc,argv) -int argc; -char *argv[]; -{ -ufix16 bytes_read; /* Number of bytes read from font file */ -specs_t specs; /* Bundle of character generation specs */ -int first_char_index; /* Index of first character in font */ -int no_layout_chars; /* number of characters in layout */ -ufix32 i; -ufix32 minbufsz; /* minimum font buffer size to allocate */ -ufix16 cust_no; -ufix8 FONTFAR *byte_ptr; - -#if REENTRANT_ALLOC -SPEEDO_GLOBALS* sp_global_ptr; -#endif - - -if (argc != 2) - { - fprintf(stderr,"Usage: nsample {fontfile}\n\n"); - exit (1); - } - -sprintf(pathname, argv[1]); - -/* Load Speedo outline file */ -fdescr = fopen (pathname, "rb"); -if (fdescr == NULL) - { - printf("****** Cannot open file %s\n", pathname); - return; - } - -/* get minimum font buffer size - read first 16 bytes to get the minimum - size field from the header, then allocate buffer dynamically */ - -bytes_read = fread(temp, sizeof(ufix8), 16, fdescr); - -if (bytes_read != 16) - { - printf("****** Error on reading %s: %x\n", pathname, bytes_read); - fclose(fdescr); - return; - } -#if INCL_LCD -minbufsz = (ufix32)read_4b(temp+FH_FBFSZ); -#else -minbufsz = (ufix32)read_4b(temp+FH_FNTSZ); -if (minbufsz >= 0x10000) - { - printf("****** Cannot process fonts greater than 64K - use dynamic character loading configuration option\n"); - fclose(fdescr); - return; - } -#endif - -#if (defined(M_I86SM) || defined(M_I86MM)) -font_buffer = (ufix8 FONTFAR *)_fmalloc((ufix16)minbufsz); -#else -font_buffer = (ufix8 *)malloc((ufix16)minbufsz); -#endif - -if (font_buffer == NULL) - { - printf("****** Unable to allocate memory for font buffer\n"); - fclose(fdescr); - return; - } - -#if DEBUG -printf("Loading font file %s\n", pathname); -#endif - -fseek(fdescr, (ufix32)0, 0); -#if (defined(M_I86SM) || (defined(M_I86MM))) -byte_ptr = font_buffer; -for (i=0; i< minbufsz; i++){ - int ch; - ch = getc(fdescr); - if (ch == EOF) - {printf ("Premature EOF in reading font buffer, %ld bytes read\n",i); - exit(2);} - *byte_ptr=(ufix8)ch; - byte_ptr++; - } -bytes_read = i; -#else -bytes_read = fread((ufix8 *)font_buffer, sizeof(ufix8), (ufix16)minbufsz, fdescr); -if (bytes_read == 0) - { - printf("****** Error on reading %s: %x\n", pathname, bytes_read); - fclose(fdescr); - return; - } -#endif - -#if INCL_LCD -/* now allocate minimum character buffer */ - -minchrsz = read_2b(font_buffer+FH_CBFSZ); -#if (defined(M_I86SM) || (defined(M_I86MM))) -char_buffer = (ufix8 FONTFAR *)_fmalloc(minchrsz); -#else -char_buffer = (ufix8*)malloc(minchrsz); -#endif - -if (char_buffer == NULL) - { - printf("****** Unable to allocate memory for character buffer\n"); - fclose(fdescr); - return; - } -#endif - -#if DYNAMIC_ALLOC || REENTRANT_ALLOC - sp_global_ptr = (SPEEDO_GLOBALS *)malloc(sizeof(SPEEDO_GLOBALS)); - memset(sp_global_ptr,(ufix8)0,sizeof(SPEEDO_GLOBALS)); -#endif - - -/* Initialization */ -#if REENTRANT_ALLOC -sp_reset(sp_global_ptr); /* Reset Speedo character generator */ -#else -sp_reset(); /* Reset Speedo character generator */ -#endif - -font.org = font_buffer; -font.no_bytes = bytes_read; - -#if REENTRANT_ALLOC -if ((cust_no=sp_get_cust_no(sp_global_ptr,font)) != CUS0 && /* NOT STANDARD ENCRYPTION */ -#else -if ((cust_no=sp_get_cust_no(font)) != CUS0 && /* NOT STANDARD ENCRYPTION */ -#endif - cust_no != 0) - { -#if REENTRANT_ALLOC - printf("Unable to use fonts for customer number %d\n", - sp_get_cust_no(sp_global_ptr(font))); -#else - printf("Unable to use fonts for customer number %d\n", - sp_get_cust_no(font)); -#endif - fclose(fdescr); - return; - } - -#if INCL_KEYS -#if REENTRANT_ALLOC -sp_set_key(sp_global_ptr,key); /* Set decryption key */ -#else -sp_set_key(key); /* Set decryption key */ -#endif -#endif - -#if INCL_MULTIDEV -#if INCL_BLACK || INCL_SCREEN || INCL_2D -#if REENTRANT_ALLOC -sp_set_bitmap_device(sp_global_ptr,&bfuncs,sizeof(bfuncs)); /* Set decryption key */ -#else -sp_set_bitmap_device(&bfuncs,sizeof(bfuncs)); /* Set decryption key */ -#endif -#endif -#if INCL_OUTLINE -#if REENTRANT_ALLOC -sp_set_outline_device(sp_global_ptr,&ofuncs,sizeof(ofuncs)); /* Set decryption key */ -#else -sp_set_outline_device(&ofuncs,sizeof(ofuncs)); /* Set decryption key */ -#endif -#endif -#endif - -first_char_index = read_2b(font_buffer + FH_FCHRF); -no_layout_chars = read_2b(font_buffer + FH_NCHRL); - -/* Set specifications for character to be generated */ -specs.pfont = &font; /* Pointer to Speedo outline structure */ -specs.xxmult = 25L << 16; /* Coeff of X to calculate X pixels */ -specs.xymult = 0L << 16; /* Coeff of Y to calculate X pixels */ -specs.xoffset = 0L << 16; /* Position of X origin */ -specs.yxmult = 0L << 16; /* Coeff of X to calculate Y pixels */ -specs.yymult = 25L << 16; /* Coeff of Y to calculate Y pixels */ -specs.yoffset = 0L << 16; /* Position of Y origin */ -specs.flags = 0; /* Mode flags */ -specs.out_info = NULL; - - -#if REENTRANT_ALLOC -if (!sp_set_specs(sp_global_ptr,&specs)) /* Set character generation specifications */ -#else -if (!sp_set_specs(&specs)) /* Set character generation specifications */ -#endif - { - printf("****** Cannot set requested specs\n"); - } -else - { - for (i = 0; i < no_layout_chars; i++) /* For each character in font */ - { - char_index = i + first_char_index; -#if REENTRANT_ALLOC - char_id = sp_get_char_id(sp_global_ptr,char_index); -#else - char_id = sp_get_char_id(char_index); -#endif - if (char_id != 0) - { -#if REENTRANT_ALLOC - if (!sp_make_char(sp_global_ptr,char_index)) -#else - if (!sp_make_char(char_index)) -#endif - { - printf("****** Cannot generate character %d\n", char_index); - } - } - } - } - -fclose(fdescr); -} - -#if INCL_LCD -#if REENTRANT_ALLOC -FUNCTION buff_t *sp_load_char_data(sp_global_ptr, file_offset, no_bytes, cb_offset) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION buff_t *sp_load_char_data(file_offset, no_bytes, cb_offset) -#endif -fix31 file_offset; /* Offset in bytes from the start of the font file */ -fix15 no_bytes; /* Number of bytes to be loaded */ -fix15 cb_offset; /* Offset in bytes from start of char buffer */ -/* - * Called by Speedo character generator to request that character - * data be loaded from the font file into a character data buffer. - * The character buffer offset is zero for all characters except elements - * of compound characters. If a single buffer is allocated for character - * data, cb_offset ensures that sub-character data is loaded after the - * top-level compound character. - * Returns a pointer to a buffer descriptor. - */ -{ -int bytes_read; - -#if DEBUG -printf("\nCharacter data(%d, %d, %d) requested\n", file_offset, no_bytes, cb_offset); -#endif -if (fseek(fdescr, (long)file_offset, (int)0) != 0) - { - printf("****** Error in seeking character\n"); - fclose(fdescr); - exit(1); - } - -if ((no_bytes + cb_offset) > minchrsz) - { - printf("****** Character buffer overflow\n"); - fclose(fdescr); - exit(3); - } - -bytes_read = fread((char_buffer + cb_offset), sizeof(ufix8), no_bytes, fdescr); -if (bytes_read != no_bytes) - { - printf("****** Error on reading character data\n"); - fclose(fdescr); - exit(2); - } - -#if DEBUG -printf("Character data loaded\n"); -#endif - -char_data.org = (ufix8 FONTFAR *)char_buffer + cb_offset; -char_data.no_bytes = no_bytes; -return &char_data; -} -#endif - - -#if REENTRANT_ALLOC -FUNCTION void sp_report_error(sp_global_ptr,n) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_report_error(n) -#endif -fix15 n; /* Error identification number */ -/* - * Called by Speedo character generator to report an error. - * - * Since character data not available is one of those errors - * that happens many times, don't report it to user - */ -{ - -switch(n) - { -case 1: - printf("Insufficient font data loaded\n"); - break; - -case 3: - printf("Transformation matrix out of range\n"); - break; - -case 4: - printf("Font format error\n"); - break; - -case 5: - printf("Requested specs not compatible with output module\n"); - break; - -case 7: - printf("Intelligent transformation requested but not supported\n"); - break; - -case 8: - printf("Unsupported output mode requested\n"); - break; - -case 9: - printf("Extended font loaded but only compact fonts supported\n"); - break; - -case 10: - printf("Font specs not set prior to use of font\n"); - break; - -case 12: - break; - -case 13: - printf("Track kerning data not available()\n"); - break; - -case 14: - printf("Pair kerning data not available()\n"); - break; - -default: - printf("report_error(%d)\n", n); - break; - } -} - -#if REENTRANT_ALLOC -FUNCTION void sp_open_bitmap(sp_global_ptr, x_set_width, y_set_width, xorg, yorg, xsize, ysize) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_open_bitmap(x_set_width, y_set_width, xorg, yorg, xsize, ysize) -#endif -fix31 x_set_width; -fix31 y_set_width; /* Set width vector */ -fix31 xorg; /* Pixel boundary at left extent of bitmap character */ -fix31 yorg; /* Pixel boundary at right extent of bitmap character */ -fix15 xsize; /* Pixel boundary of bottom extent of bitmap character */ -fix15 ysize; /* Pixel boundary of top extent of bitmap character */ -/* - * Called by Speedo character generator to initialize a buffer prior - * to receiving bitmap data. - */ -{ -fix15 i; - -#if DEBUG -printf("open_bitmap(%3.1f, %3.1f, %3.1f, %3.1f, %d, %d)\n", - (real)x_set_width / 65536.0, (real)y_set_width / 65536.0, - (real)xorg / 65536.0, (real)yorg / 65536.0, (int)xsize, (int)ysize); -#endif -raswid = xsize; -rashgt = ysize; -offhor = (fix15)(xorg >> 16); -offver = (fix15)(yorg >> 16); - -if (raswid > MAX_BITS) - raswid = MAX_BITS; - -printf("\nCharacter index = %d, ID = %d\n", char_index, char_id); -printf("set width = %3.1f, %3.1f\n", (real)x_set_width / 65536.0, (real)y_set_width / 65536.0); -printf("X offset = %d\n", offhor); -printf("Y offset = %d\n\n", offver); -for (i = 0; i < raswid; i++) - { - line_of_bits[i << 1] = '.'; - line_of_bits[(i << 1) + 1] = ' '; - } -line_of_bits[raswid << 1] = '\0'; -y_cur = 0; -} - -#if REENTRANT_ALLOC -FUNCTION void sp_set_bitmap_bits (sp_global_ptr, y, xbit1, xbit2) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_set_bitmap_bits (y, xbit1, xbit2) -#endif - fix15 y; /* Scan line (0 = first row above baseline) */ - fix15 xbit1; /* Pixel boundary where run starts */ - fix15 xbit2; /* Pixel boundary where run ends */ - -/* - * Called by Speedo character generator to write one row of pixels - * into the generated bitmap character. - */ - -{ -fix15 i; - -#if DEBUG -printf("set_bitmap_bits(%d, %d, %d)\n", (int)y, (int)xbit1, (int)xbit2); -#endif -/* Clip runs beyond end of buffer */ -if (xbit1 > MAX_BITS) - xbit1 = MAX_BITS; - -if (xbit2 > MAX_BITS) - xbit2 = MAX_BITS; - -/* Output backlog lines if any */ -while (y_cur != y) - { - printf(" %s\n", line_of_bits); - for (i = 0; i < raswid; i++) - { - line_of_bits[i << 1] = '.'; - } - y_cur++; - } - -/* Add bits to current line */ -for (i = xbit1; i < xbit2; i++) - { - line_of_bits[i << 1] = 'X'; - } -} - -#if REENTRANT_ALLOC -FUNCTION void sp_close_bitmap(sp_global_ptr) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_close_bitmap() -#endif -/* - * Called by Speedo character generator to indicate all bitmap data - * has been generated. - */ -{ -#if DEBUG -printf("close_bitmap()\n"); -#endif -printf(" %s\n", line_of_bits); -} - -#if INCL_OUTLINE -#if REENTRANT_ALLOC -FUNCTION void sp_open_outline(sp_global_ptr, x_set_width, y_set_width, xmin, xmax, ymin, ymax) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#endif -fix31 x_set_width; -fix31 y_set_width; /* Transformed escapement vector */ -fix31 xmin; /* Minimum X value in outline */ -fix31 xmax; /* Maximum X value in outline */ -fix31 ymin; /* Minimum Y value in outline */ -fix31 ymax; /* Maximum Y value in outline */ -/* - * Called by Speedo character generator to initialize prior to - * outputting scaled outline data. - */ -{ -printf("\nopen_outline(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n", - (real)x_set_width / 65536.0, (real)y_set_width / 65536.0, - (real)xmin / 65536.0, (real)xmax / 65536.0, (real)ymin / 65536.0, (real)ymax / 65536.0); -} - - -#if REENTRANT_ALLOC -FUNCTION void sp_start_new_char(sp_global_ptr) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_start_new_char() -#endif -/* - * Called by Speedo character generator to initialize prior to - * outputting scaled outline data for a sub-character in a compound - * character. - */ -{ -printf("start_new_char()\n"); -} - -#if REENTRANT_ALLOC -FUNCTION void sp_start_contour(sp_global_ptr, x, y, outside) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_start_contour(x, y, outside) -#endif -fix31 x; /* X coordinate of start point in 1/65536 pixels */ -fix31 y; /* Y coordinate of start point in 1/65536 pixels */ -boolean outside; /* TRUE if curve encloses ink (Counter-clockwise) */ -/* - * Called by Speedo character generator at the start of each contour - * in the outline data of the character. - */ -{ -printf("start_contour(%3.1f, %3.1f, %s)\n", - (real)x / 65536.0, (real)y / 65536.0, - outside? "outside": "inside"); -} - -#if REENTRANT_ALLOC -FUNCTION void sp_curve_to(sp_global_ptr, x1, y1, x2, y2, x3, y3) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_curve_to(x1, y1, x2, y2, x3, y3) -#endif -fix31 x1; /* X coordinate of first control point in 1/65536 pixels */ -fix31 y1; /* Y coordinate of first control point in 1/65536 pixels */ -fix31 x2; /* X coordinate of second control point in 1/65536 pixels */ -fix31 y2; /* Y coordinate of second control point in 1/65536 pixels */ -fix31 x3; /* X coordinate of curve end point in 1/65536 pixels */ -fix31 y3; /* Y coordinate of curve end point in 1/65536 pixels */ -/* - * Called by Speedo character generator onece for each curve in the - * scaled outline data of the character. This function is only called if curve - * output is enabled in the set_specs() call. - */ -{ -printf("curve_to(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n", - (real)x1 / 65536.0, (real)y1 / 65536.0, - (real)x2 / 65536.0, (real)y2 / 65536.0, - (real)x3 / 65536.0, (real)y3 / 65536.0); -} - -#if REENTRANT_ALLOC -FUNCTION void sp_line_to(sp_global_ptr, x, y) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_line_to(x, y) -#endif -fix31 x; /* X coordinate of vector end point in 1/65536 pixels */ -fix31 y; /* Y coordinate of vector end point in 1/65536 pixels */ -/* - * Called by Speedo character generator onece for each vector in the - * scaled outline data for the character. This include curve data that has - * been sub-divided into vectors if curve output has not been enabled - * in the set_specs() call. - */ -{ -printf("line_to(%3.1f, %3.1f)\n", - (real)x / 65536.0, (real)y / 65536.0); -} - - -#if REENTRANT_ALLOC -FUNCTION void sp_close_contour(sp_global_ptr) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_close_contour() -#endif -/* - * Called by Speedo character generator at the end of each contour - * in the outline data of the character. - */ -{ -printf("close_contour()\n"); -} - -#if REENTRANT_ALLOC -FUNCTION void sp_close_outline(sp_global_ptr) -SPEEDO_GLOBALS *sp_global_ptr; -#else -FUNCTION void sp_close_outline() -#endif -/* - * Called by Speedo character generator at the end of output of the - * scaled outline of the character. - */ -{ -printf("close_outline()\n"); -} - -#endif - -FUNCTION fix15 read_2b(pointer) -ufix8 FONTFAR *pointer; -/* - * Reads 2-byte field from font buffer - */ -{ -fix15 temp; - -temp = *pointer++; -temp = (temp << 8) + *(pointer); -return temp; -} - - -FUNCTION fix31 read_4b(pointer) -ufix8 FONTFAR *pointer; -/* - * Reads 4-byte field from font buffer - */ -{ -fix31 temp; - -temp = *pointer++; -temp = (temp << 8) + *(pointer++); -temp = (temp << 8) + *(pointer++); -temp = (temp << 8) + *(pointer); -return temp; -} - - diff --git a/nx-X11/lib/font/Speedo/out_bl2d.c b/nx-X11/lib/font/Speedo/out_bl2d.c deleted file mode 100644 index 6c38cb3..0000000 --- a/nx-X11/lib/font/Speedo/out_bl2d.c +++ /dev/null @@ -1,772 +0,0 @@ -/* $Xorg: out_bl2d.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/out_bl2d.c,v 1.3 1999/02/07 11:47:14 dawes Exp $ */ - -/*************************** O U T _ B L 2 D . C ***************************** - * * - * This is an output module for screen writer using two dimensional scanning * - ****************************************************************************/ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for speedo */ - -#define CLOCKWISE 1 -#define DEBUG 0 -#define ABS(X) ( (X < 0) ? -X : X) - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - -#if INCL_2D -static void sp_draw_vector_to_2d(PROTO_DECL2 fix15 x0,fix15 y0,fix15 x1,fix15 y1,band_t GLOBALFAR *band); -static void sp_add_intercept_2d(PROTO_DECL2 fix15 y,fix15 x); -static void sp_proc_intercepts_2d(PROTO_DECL1); -#endif - -#if INCL_2D -FUNCTION boolean init_2d( -GDECL -specs_t GLOBALFAR *specsarg) -/* - * init_out_2d() is called by sp_set_specs() to initialize the output module. - * Returns TRUE if output module can accept requested specifications. - * Returns FALSE otherwise. - */ -{ - -if (specsarg->flags & CURVES_OUT) - return FALSE; /* Curves out, clipping not supported */ - -#if DEBUG -printf("INIT_OUT__2d()\n"); -#endif -return TRUE; -} -#endif - -#if INCL_2D -FUNCTION boolean begin_char_2d( -GDECL -point_t Psw, -point_t Pmin, -point_t Pmax) -/* Called once at the start of the character generation process - * Initializes intercept table, either calculates pixel maxima or - * decides that they need to be collected - */ -{ -#if DEBUG -printf("BEGIN_CHAR__2d(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n", - (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix, - (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix, - (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix); -#endif -/* Convert PIX.FRAC to 16.16 form */ -sp_globals.x_scan_active = TRUE; /* Assume x-scanning from the start */ - -init_char_out(Psw,Pmin,Pmax); -return TRUE; -} -#endif - - -#if INCL_2D -FUNCTION void begin_contour_2d( -GDECL -point_t P1, -boolean outside) -/* Called at the start of each contour - */ -{ - -#if DEBUG -printf("BEGIN_CONTOUR__2d(%3.4f, %3.4f, %s)\n", - (real)P1.x / (real)sp_globals.onepix, - (real)P1.y / (real)sp_globals.onepix, - outside? "outside": "inside"); -#endif -sp_globals.x0_spxl = P1.x; -sp_globals.y0_spxl = P1.y; -} -#endif - -#if INCL_2D -FUNCTION void line_2d( -GDECL -point_t P1) -/* - * Called for each vector in the transformed character - * "draws" vector into intercept table - */ -{ - -#if DEBUG -printf("LINE_0(%3.4f, %3.4f)\n", - (real)P1.x / (real)sp_globals.onepix, - (real)P1.y / (real)sp_globals.onepix); -#endif - -if (sp_globals.extents_running) - { - if (sp_globals.x0_spxl > sp_globals.bmap_xmax) - sp_globals.bmap_xmax = sp_globals.x0_spxl; - if (sp_globals.x0_spxl < sp_globals.bmap_xmin) - sp_globals.bmap_xmin = sp_globals.x0_spxl; - if (sp_globals.y0_spxl > sp_globals.bmap_ymax) - sp_globals.bmap_ymax = sp_globals.y0_spxl; - if (sp_globals.y0_spxl < sp_globals.bmap_ymin) - sp_globals.bmap_ymin = sp_globals.y0_spxl; - } - -if (!sp_globals.intercept_oflo) - { - sp_draw_vector_to_2d(sp_globals.x0_spxl, - sp_globals.y0_spxl, - P1.x, - P1.y, - &sp_globals.y_band); /* y-scan */ - - if (sp_globals.x_scan_active) - sp_draw_vector_to_2d(sp_globals.y0_spxl, - sp_globals.x0_spxl, - P1.y, - P1.x, - &sp_globals.x_band); /* x-scan if selected */ - } - -sp_globals.x0_spxl = P1.x; -sp_globals.y0_spxl = P1.y; /* update endpoint */ -} - -FUNCTION static void sp_draw_vector_to_2d( -GDECL -fix15 x0, /* X coordinate */ -fix15 y0, /* Y coordinate */ -fix15 x1, -fix15 y1, -band_t GLOBALFAR *band) -{ -register fix15 how_many_y; /* # of intercepts at y = n + 1/2 */ -register fix15 yc; /* Current scan-line */ - fix15 temp1; /* various uses */ - fix15 temp2; /* various uses */ -register fix31 dx_dy; /* slope of line in 16.16 form */ -register fix31 xc; /* high-precision (16.16) x coordinate */ - fix15 y_pxl; - -yc = (y0 + sp_globals.pixrnd) >> sp_globals.pixshift; /* current scan line = end of last line */ -y_pxl = (y1 + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan line */ - -if ((how_many_y = y_pxl - yc) == 0) return; /* Don't draw a null line */ - -if (how_many_y < 0) yc--; /* Predecrment downward lines */ - -if (yc > band->band_max) /* Is start point above band? */ - { - if (y_pxl > band->band_max) return; /* line has to go down! */ - how_many_y = y_pxl - (yc = band->band_max) - 1; /* Yes, limit it */ - } - -if (yc < band->band_min) /* Is start point below band? */ - { - if (y_pxl < band->band_min) return; /* line has to go up! */ - how_many_y = y_pxl - (yc = band->band_min); /* Yes, limit it */ - } - -xc = (fix31)(x0 + sp_globals.pixrnd) << 16; /* Original x coordinate with built in */ - /* rounding. int.16 + pixshift form */ - -if ( (temp1 = (x1 - x0)) == 0) /* check for vertical line */ - { - dx_dy = 0L; /* Zero slope, leave xc alone */ - goto skip_calc; - } - -/* calculate dx_dy at 16.16 fixed point */ - -dx_dy = ( (fix31)temp1 << 16 )/(fix31)(y1 - y0); - -/* We have to check for a @#$%@# possible multiply overflow */ -/* by doing another @#$*& multiply. In assembly language, */ -/* the program could just check the OVerflow flag or whatever*/ -/* works on the particular processor. This C code is meant */ -/* to be processor independent. */ - -temp1 = (yc << sp_globals.pixshift) - y0 + sp_globals.pixrnd; -/* This sees if the sign bits start at bit 15 */ -/* if they do, no overflow has occurred */ - -temp2 = (fix15)(MULT16(temp1,(fix15)(dx_dy >> 16)) >> 15); - -if ( (temp2 != (fix15)0xFFFF) && - (temp2 != 0x0000) ) - { /* Overflow. Pick point closest to yc + .5 */ - if (ABS(temp1) < ABS((yc << sp_globals.pixshift) - y1 + sp_globals.pixrnd)) - { /* use x1 instead of x0 */ - xc = (fix31)(x1 + sp_globals.pixrnd) << (16 - sp_globals.pixshift); - } - goto skip_calc; - } -/* calculate new xc at the center of the *current* scan line */ -/* due to banding, yc may be several lines away from y0 */ -/* xc += (yc + .5 - y0) * dx_dy */ -/* This multiply generates a subpixel delta. */ -/* So we leave it as an int.pixshift + 16 delta */ - -xc += (fix31)temp1 * dx_dy; -dx_dy <<= sp_globals.pixshift; -skip_calc: - -yc -= band->band_array_offset; /* yc is now an offset relative to the band */ - -if (how_many_y < 0) - { /* Vector down */ - if ((how_many_y += yc + 1) < band->band_floor) - how_many_y = band->band_floor; /* can't go below floor */ - while(yc >= how_many_y) - { - temp1 = (fix15)(xc >> 16); - sp_add_intercept_2d(yc--,temp1); - xc -= dx_dy; - } - } - else - { /* Vector up */ - /* check to see that line doesn't extend beyond top of band */ - if ((how_many_y += yc) > band->band_ceiling) - how_many_y = band->band_ceiling; - while(yc < how_many_y) - { - temp1 = (fix15)(xc >> 16); - sp_add_intercept_2d(yc++,temp1); - xc += dx_dy; - } - } -} - -#endif - -#if INCL_2D -FUNCTION boolean end_char_2d() -/* Called when all character data has been output - * Return TRUE if output process is complete - * Return FALSE to repeat output of the transformed data beginning - * with the first contour - */ -{ - -fix31 xorg; -fix31 yorg; -#if INCL_CLIPPING -fix31 em_max, em_min, bmap_max, bmap_min; -#endif - -#if DEBUG -printf("END_CHAR__2d()\n"); -#endif - -if (sp_globals.first_pass) - { - if (sp_globals.bmap_xmax >= sp_globals.bmap_xmin) - { - sp_globals.xmin = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - sp_globals.xmax = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - } - else - { - sp_globals.xmin = sp_globals.xmax = 0; - } - if (sp_globals.bmap_ymax >= sp_globals.bmap_ymin) - { - -#if INCL_CLIPPING - switch(sp_globals.tcb0.xtype) - { - case 1: /* 180 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - sp_globals.clip_ymin = -1 * sp_globals.clip_ymin; - if (bmap_min < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - else - sp_globals.ymin = bmap_min; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max < sp_globals.clip_ymax) - sp_globals.ymax = bmap_max; - else - sp_globals.ymax = sp_globals.clip_ymax; - } - sp_globals.clip_xmax = -sp_globals.xmin; - sp_globals.clip_xmin = ((sp_globals.set_width.x+32768L) >> 16) - - sp_globals.xmin; - break; - case 2: /* 90 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_xmin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift; - sp_globals.clip_xmin = -1 * sp_globals.clip_xmin; - bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - if (bmap_min > sp_globals.clip_xmin) - sp_globals.clip_xmin = bmap_min; - - /* normalize to x origin */ - sp_globals.clip_xmin -= sp_globals.xmin; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_xmax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max < sp_globals.clip_xmax) - sp_globals.xmax = bmap_max; - else - sp_globals.xmax = sp_globals.clip_xmax; - sp_globals.clip_ymax = 0; - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - /* normalize to x origin */ - sp_globals.clip_xmax -= sp_globals.xmin; - } - break; - case 3: /* 270 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_xmin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift; - sp_globals.clip_xmin = -1 * sp_globals.clip_xmin; - bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - - /* let the minimum be the larger of these two values */ - if (bmap_min > sp_globals.clip_xmin) - sp_globals.clip_xmin = bmap_min; - - /* normalize the x value to new xorgin */ - sp_globals.clip_xmin -= sp_globals.xmin; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_xmax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - - /* let the max be the lesser of these two values */ - if (bmap_max < sp_globals.clip_xmax) - { - sp_globals.xmax = bmap_max; - sp_globals.clip_xmax = bmap_max; - } - else - sp_globals.xmax = sp_globals.clip_xmax; - - /* normalize the x value to new x origin */ - sp_globals.clip_xmax -= sp_globals.xmin; - } - /* compute y clip values */ - sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = 0; - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - break; - default: /* this is for zero degree rotation and arbitrary rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max > sp_globals.clip_ymax) - sp_globals.ymax = bmap_max; - else - sp_globals.ymax = sp_globals.clip_ymax; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - sp_globals.clip_ymin = - sp_globals.clip_ymin; - bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - if (bmap_min < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - else - sp_globals.ymin = bmap_min; - } - sp_globals.clip_xmin = -sp_globals.xmin; - sp_globals.clip_xmax = ((sp_globals.set_width.x+32768L) >> 16) - - sp_globals.xmin; - break; - } -if ( !(sp_globals.specs.flags & CLIP_TOP)) -#endif - sp_globals.ymax = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - -#if INCL_CLIPPING -if ( !(sp_globals.specs.flags & CLIP_BOTTOM)) -#endif - sp_globals.ymin = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - } - else - { - sp_globals.ymin = sp_globals.ymax = 0; - } - - /* add in the rounded out part (from xform.) of the left edge */ - if (sp_globals.tcb.xmode == 0) /* for X pix is function of X orus only add the round */ - xorg = (((fix31)sp_globals.xmin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift)); - else - if (sp_globals.tcb.xmode == 1) /* for X pix is function of -X orus only, subtr. round */ - xorg = (((fix31)sp_globals.xmin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)) ; - else - xorg = (fix31)sp_globals.xmin << 16; /* for other cases don't use round on x */ - - if (sp_globals.tcb.ymode == 2) /* for Y pix is function of X orus only, add round error */ - yorg = (((fix31)sp_globals.ymin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift)); - else - if (sp_globals.tcb.ymode == 3) /* for Y pix is function of -X orus only, sub round */ - yorg = (((fix31)sp_globals.ymin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)); - else /* all other cases have no round error on yorg */ - yorg = (fix31)sp_globals.ymin << 16; - - open_bitmap(sp_globals.set_width.x, sp_globals.set_width.y, xorg, yorg, - sp_globals.xmax - sp_globals.xmin, sp_globals.ymax - sp_globals.ymin); - if (sp_globals.intercept_oflo) - { - sp_globals.y_band.band_min = sp_globals.ymin; - sp_globals.y_band.band_max = sp_globals.ymax; - sp_globals.x_scan_active = FALSE; - sp_globals.no_x_lists = 0; - init_intercepts_out(); - sp_globals.first_pass = FALSE; - sp_globals.extents_running = FALSE; - return FALSE; - } - else - { - sp_proc_intercepts_2d(); - close_bitmap(); - return TRUE; - } - } -else - { - if (sp_globals.intercept_oflo) - { - reduce_band_size_out(); - init_intercepts_out(); - return FALSE; - } - else - { - sp_proc_intercepts_2d(); - if (next_band_out()) - { - init_intercepts_out(); - return FALSE; - } - close_bitmap(); - return TRUE; - } - } -} -#endif - -#if INCL_2D -FUNCTION static void sp_add_intercept_2d( -GDECL -fix15 y, /* Y coordinate in relative pixel units */ - /* (0 is lowest sample in band) */ -fix15 x) /* X coordinate of intercept in subpixel units */ - -/* Called by line() to add an intercept to the intercept list structure - */ - -{ -register fix15 from; /* Insertion pointers for the linked list sort */ -register fix15 to; - -#if DEBUG -/* Bounds checking IS done in debug mode */ -if ((y >= MAX_INTERCEPTS) || (y < 0)) - { - printf("Intercept out of table!!!!! (%d)\n",y); - return; - } - -if (y >= sp_globals.no_y_lists) - { - printf(" Add x intercept(%2d, %f)\n", - y + sp_globals.x_band.band_min - sp_globals.no_y_lists, - (real)x/(real)sp_globals.onepix); - if (y > (sp_globals.no_x_lists + sp_globals.no_y_lists)) - { - printf(" Intercept too big for band!!!!!\007\n"); - return; - } - } - else - { - printf(" Add y intercept(%2d, %f)\n", y + sp_globals.y_band.band_min,(real)x/(real)sp_globals.onepix); - } - -if (y < 0) /* Y value below bottom of current band? */ - { - printf(" Intecerpt less than 0!!!\007\n"); - return; - } -#endif - -/* Store new values */ - -sp_intercepts.car[sp_globals.next_offset] = x; - -/* Find slot to insert new element (between from and to) */ - -from = y; /* Start at list head */ - -while( (to = sp_intercepts.cdr[from]) >= sp_globals.first_offset) /* Until to == end of list */ - { - if (x <= sp_intercepts.car[to]) /* If next item is larger than or same as this one... */ - goto insert_element; /* ... drop out and insert here */ - from = to; /* move forward in list */ - } - -insert_element: /* insert element "next_offset" between elements "from" */ - /* and "to" */ - -sp_intercepts.cdr[from] = sp_globals.next_offset; -sp_intercepts.cdr[sp_globals.next_offset] = to; - -if (++sp_globals.next_offset >= MAX_INTERCEPTS) /* Intercept buffer full? */ - { - sp_globals.intercept_oflo = TRUE; -/* There may be a few more calls to "add_intercept" from the current line */ -/* To avoid problems, we set next_offset to a safe value. We don't care */ -/* if the intercept table gets trashed at this point */ - sp_globals.next_offset = sp_globals.first_offset; - } -} - -#endif - -#if INCL_2D -FUNCTION static void sp_proc_intercepts_2d() -/* Called by sp_make_char to output accumulated intercept lists - * Clips output to xmin, xmax, sp_globals.ymin, ymax boundaries - */ -{ -register fix15 i; -register fix15 from, to; /* Start and end of run in pixel units - relative to left extent of character */ -register fix15 y; -register fix15 scan_line; - fix15 local_bmap_xmin; - fix15 local_bmap_xmax; - fix15 first_y, last_y; - fix15 j,k; - -#if INCL_CLIPPING -if ((sp_globals.specs.flags & CLIP_LEFT) != 0) - clipleft = TRUE; -else - clipleft = FALSE; -if ((sp_globals.specs.flags & CLIP_RIGHT) != 0) - clipright = TRUE; -else - clipright = FALSE; -if (clipleft || clipright) - { - xmax = sp_globals.clip_xmax << sp_globals.pixshift; - xmin = sp_globals.clip_xmin << sp_globals.pixshift; - } -if (!clipright) - xmax = ((sp_globals.set_width.x+32768L) >> 16); -#endif - -if (sp_globals.x_scan_active) /* If xscanning, we need to make sure we don't miss any important pixels */ - { - first_y = sp_globals.x_band.band_floor; /* start of x lists */ - last_y = sp_globals.x_band.band_ceiling; /* end of x lists */ - for (y = first_y; y != last_y; y++) /* scan all xlists */ - { - i = sp_intercepts.cdr[y]; /* Index head of intercept list */ - while (i != 0) /* Link to next intercept if present */ - { - from = sp_intercepts.car[i]; - j = i; - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - if (i == 0) /* End of list? */ - { -#if DEBUG - printf("****** proc_intercepts: odd number of intercepts in x list\n"); -#endif - break; - } - to = sp_intercepts.car[i]; - k = sp_intercepts.cdr[i]; - if (((to >> sp_globals.pixshift) >= (from >> sp_globals.pixshift)) && - ((to - from) < (sp_globals.onepix + 1))) - { - from = ((fix31)to + (fix31)from - (fix31)sp_globals.onepix) >> (sp_globals.pixshift + 1); - if (from > sp_globals.y_band.band_max) - from = sp_globals.y_band.band_max; - if ((from -= sp_globals.y_band.band_min) < 0) - from = 0; - to = ((y - sp_globals.x_band.band_floor + sp_globals.x_band.band_min) - << sp_globals.pixshift) - + sp_globals.pixrnd; - sp_intercepts.car[j] = to; - sp_intercepts.car[i] = to + sp_globals.onepix; - sp_intercepts.cdr[i] = sp_intercepts.cdr[from]; - sp_intercepts.cdr[from] = j; - } - i = k; - } - } - } -#if DEBUG -printf("\nIntercept lists:\n"); -#endif - -if ((first_y = sp_globals.y_band.band_max) >= sp_globals.ymax) - first_y = sp_globals.ymax - 1; /* Clip to ymax boundary */ - -if ((last_y = sp_globals.y_band.band_min) < sp_globals.ymin) - last_y = sp_globals.ymin; /* Clip to sp_globals.ymin boundary */ - -last_y -= sp_globals.y_band.band_array_offset; - -local_bmap_xmin = sp_globals.xmin << sp_globals.pixshift; -local_bmap_xmax = (sp_globals.xmax << sp_globals.pixshift) + sp_globals.pixrnd; - -#if DEBUG -/* Print out all of the intercept info */ -scan_line = sp_globals.ymax - first_y - 1; - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++) - { - i = y; /* Index head of intercept list */ - while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */ - { - if ((from = sp_intercepts.car[i] - local_bmap_xmin) < 0) - from = 0; /* Clip to xmin boundary */ - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - if (i == 0) /* End of list? */ - { - printf("****** proc_intercepts: odd number of intercepts\n"); - break; - } - if ((to = sp_intercepts.car[i]) > sp_globals.bmap_xmax) - to = sp_globals.bmap_xmax - local_bmap_xmin; /* Clip to xmax boundary */ - else - to -= local_bmap_xmin; - printf(" Y = %2d (scanline %2d): %3.4f %3.4f:\n", - y + sp_globals.y_band.band_min, - scan_line, - (real)from / (real)sp_globals.onepix, - (real)to / (real)sp_globals.onepix); - } - } -#endif - -/* Draw the image */ -scan_line = sp_globals.ymax - first_y - 1; - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++) - { - i = y; /* Index head of intercept list */ - while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */ - { - if ((from = sp_intercepts.car[i] - local_bmap_xmin) < 0) - from = 0; /* Clip to xmin boundary */ - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - - if ((to = sp_intercepts.car[i]) > local_bmap_xmax) - to = sp_globals.bmap_xmax - local_bmap_xmin; /* Clip to xmax boundary */ - else - to -= local_bmap_xmin; -#if INCL_CLIPPING - if (clipleft) - { - if (to <= xmin) - continue; - if (from < xmin) - from = xmin; - } - if (clipright) - { - if (from >= xmax) - continue; - if (to > xmax) - to = xmax; - } -#endif - if ( (to - from) <= sp_globals.onepix) - { - from = (to + from - sp_globals.onepix) >> (sp_globals.pixshift + 1); - set_bitmap_bits(scan_line, from, from + 1); - } - else - { - set_bitmap_bits(scan_line, from >> sp_globals.pixshift, to >> sp_globals.pixshift); - } - } - } -} - -#endif diff --git a/nx-X11/lib/font/Speedo/out_blk.c b/nx-X11/lib/font/Speedo/out_blk.c deleted file mode 100644 index a5b669b..0000000 --- a/nx-X11/lib/font/Speedo/out_blk.c +++ /dev/null @@ -1,706 +0,0 @@ -/* $Xorg: out_blk.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/out_blk.c,v 1.2 1999/02/07 06:18:16 dawes Exp $ */ - - -/*************************** O U T _ B L K . C ********************************* - * * - * This is an output module for black-writer mode. * - * * - *****************************************************************************/ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for Speedo */ - -#define DEBUG 0 -#define LOCAL static -#define ABS(X) ( (X < 0) ? -X : X) - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - -#if INCL_BLACK -static void sp_add_intercept_black(PROTO_DECL2 fix15 y, fix15 x); -static void sp_proc_intercepts_black(PROTO_DECL1); -#endif - - -#if INCL_BLACK -FUNCTION boolean init_black( -GDECL -specs_t GLOBALFAR *specsarg) -/* - * init_out0() is called by sp_set_specs() to initialize the output module. - * Returns TRUE if output module can accept requested specifications. - * Returns FALSE otherwise. - */ -{ -#if DEBUG -printf("INIT_BLK()\n"); -#endif -if (specsarg->flags & CURVES_OUT) - return FALSE; /* Curves out not supported */ -return (TRUE); -} -#endif - - -#if INCL_BLACK -FUNCTION boolean begin_char_black( -GDECL -point_t Psw, -point_t Pmin, -point_t Pmax) -/* Called once at the start of the character generation process - */ -{ -#if DEBUG -printf("BEGIN_CHAR_BLACK(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n", - (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix, - (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix, - (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix); -#endif -init_char_out(Psw,Pmin,Pmax); -return TRUE; -} -#endif - - -#if INCL_BLACK -FUNCTION void begin_contour_black( -GDECL -point_t P1, -boolean outside) -/* Called at the start of each contour - */ -{ - -#if DEBUG -printf("BEGIN_CONTOUR_BLACK(%3.1f, %3.1f, %s)\n", - (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, outside? "outside": "inside"); -#endif -sp_globals.x0_spxl = P1.x; -sp_globals.y0_spxl = P1.y; -sp_globals.y_pxl = (sp_globals.y0_spxl + sp_globals.pixrnd) >> sp_globals.pixshift; -} -#endif - -#if INCL_BLACK -FUNCTION void line_black( -GDECL -point_t P1) -/* Called for each vector in the transformed character - */ -{ -register fix15 how_many_y; /* # of intercepts at y = n + 1/2 */ -register fix15 yc, i; /* Current scan-line */ - fix15 temp1; /* various uses */ - fix15 temp2; /* various uses */ -register fix31 dx_dy; /* slope of line in 16.16 form */ -register fix31 xc; /* high-precision (16.16) x coordinate */ - fix15 x0,y0,x1,y1; /* PIX.FRAC start and endpoints */ - -x0 = sp_globals.x0_spxl; /* get start of line (== current point) */ -y0 = sp_globals.y0_spxl; -sp_globals.x0_spxl = x1 = P1.x; /* end of line */ -sp_globals.y0_spxl = y1 = P1.y; /* (also update current point to end of line) */ - -yc = sp_globals.y_pxl; /* current scan line = end of last line */ -sp_globals.y_pxl = (y1 + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan sp_globals.line */ - - -#if DEBUG -printf("LINE_BLACK(%3.4f, %3.4f)\n", - (real)P1.x/(real)sp_globals.onepix, - (real)P1.y/(real)sp_globals.onepix); -#endif - -if (sp_globals.extents_running) - { - if (sp_globals.x0_spxl > sp_globals.bmap_xmax) - sp_globals.bmap_xmax = sp_globals.x0_spxl; - if (sp_globals.x0_spxl < sp_globals.bmap_xmin) - sp_globals.bmap_xmin = sp_globals.x0_spxl; - if (sp_globals.y0_spxl > sp_globals.bmap_ymax) - sp_globals.bmap_ymax = sp_globals.y0_spxl; - if (sp_globals.y0_spxl < sp_globals.bmap_ymin) - sp_globals.bmap_ymin = sp_globals.y0_spxl; - } - -if (sp_globals.intercept_oflo) return; - -if ((how_many_y = sp_globals.y_pxl - yc) == 0) return; /* Don't draw a null line */ - -if (how_many_y < 0) yc--; /* Predecrment downward lines */ - -if (yc > sp_globals.y_band.band_max) /* Is start point above band? */ - { - if (sp_globals.y_pxl > sp_globals.y_band.band_max) return; /* line has to go down! */ - how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_max) - 1; /* Yes, limit it */ - } - -if (yc < sp_globals.y_band.band_min) /* Is start point below band? */ - { - if (sp_globals.y_pxl < sp_globals.y_band.band_min) return; /* line has to go up! */ - how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_min); /* Yes, limit it */ - } - -xc = (fix31)(x0 + sp_globals.pixrnd) << (16 - sp_globals.pixshift); /* Original x coordinate with built in */ - /* rounding. 16.16 form */ - - -if ( (temp1 = (x1 - x0)) == 0) /* check for vertical line */ - { - yc -= sp_globals.y_band.band_min; /* yc is now an offset relative to the band */ - temp1 = (fix15)(xc >> 16); - if (how_many_y < 0) - { /* Vector down */ - if ((how_many_y += yc + 1) < 0) how_many_y = 0; /* can't go below 0 */ - for (i = yc; i >= how_many_y; i--) - sp_add_intercept_black(i,temp1); - } - else - { /* Vector up */ - /* check to see that line doesn't extend beyond top of band */ - if ((how_many_y += yc) > sp_globals.no_y_lists) how_many_y = sp_globals.no_y_lists; - for (i = yc; i != how_many_y; i++) - sp_add_intercept_black(i,temp1); - } - return; - } - -/* calculate dx_dy at 16.16 fixed point */ - -dx_dy = ( (fix31)temp1 << 16 )/(fix31)(y1 - y0); - -/* We have to check for a @#$%@# possible multiply overflow */ -/* by doing another @#$*& multiply. In assembly language, */ -/* the program could just check the OVerflow flag or whatever*/ -/* works on the particular processor. This C code is meant */ -/* to be processor independant. */ - -temp1 = (yc << sp_globals.pixshift) - y0 + sp_globals.pixrnd; -/* This sees if the sign bits start at bit 15 */ -/* if they do, no overflow has occurred */ - -temp2 = (fix15)(MULT16(temp1,(fix15)(dx_dy >> 16)) >> 15); - -if ( (temp2 != (fix15)0xFFFF) && - (temp2 != 0x0000) && - /* Overflow. Pick point closest to yc + .5 */ - (ABS(temp1) < ABS((yc << sp_globals.pixshift) - y1 + sp_globals.pixrnd)) ) - { /* use x1 instead of x0 */ - xc = (fix31)(x1 + sp_globals.pixrnd) << (16 - sp_globals.pixshift); - } -else - { -/* calculate new xc at the center of the *current* scan line */ -/* due to banding, yc may be several lines away from y0 */ -/* xc += (yc + .5 - y0) * dx_dy */ -/* This multiply generates a subpixel delta. */ -/* So we shift it to be a 16.16 delta */ - - xc += ((fix31)temp1 * dx_dy) >> sp_globals.pixshift; - } - -yc -= sp_globals.y_band.band_min; /* yc is now an offset relative to the band */ - -if (how_many_y < 0) - { /* Vector down */ - if (how_many_y == -1) - sp_add_intercept_black(yc, (fix15) (xc >> 16)); - else - { - if ((how_many_y += yc + 1) < 0) how_many_y = 0; /* can't go below 0 */ - for (i = yc; i >= how_many_y; i--) - { - temp1 = (fix15)(xc >> 16); - sp_add_intercept_black(i,temp1); - xc -= dx_dy; - } - } - } - else - { /* Vector up */ - /* check to see that line doesn't extend beyond top of band */ - if (how_many_y == 1) - sp_add_intercept_black(yc, (fix15) (xc >> 16)); - else - { - if ((how_many_y += yc) > sp_globals.no_y_lists) how_many_y = sp_globals.no_y_lists; - for (i = yc; i != how_many_y; i++) - { - temp1 = (fix15)(xc >> 16); - sp_add_intercept_black(i,temp1); - xc += dx_dy; - } - } - } -} -#endif -#if INCL_BLACK -FUNCTION boolean end_char_black() -GDECL -/* Called when all character data has been output - * Return TRUE if output process is complete - * Return FALSE to repeat output of the transformed data beginning - * with the first contour - */ -{ - -fix31 xorg; -fix31 yorg; -#if INCL_CLIPPING -fix31 bmap_max, bmap_min; -#endif - -#if DEBUG -printf("END_CHAR_BLACK()\n"); -#endif - -if (sp_globals.first_pass) - { - if (sp_globals.bmap_xmax >= sp_globals.bmap_xmin) - { - sp_globals.xmin = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - sp_globals.xmax = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - } - else - { - sp_globals.xmin = sp_globals.xmax = 0; - } - if (sp_globals.bmap_ymax >= sp_globals.bmap_ymin) - { - -#if INCL_CLIPPING - switch(sp_globals.tcb0.xtype) - { - case 1: /* 180 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - sp_globals.clip_ymin = -1 * sp_globals.clip_ymin; - if (bmap_min < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - else - sp_globals.ymin = bmap_min; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max < sp_globals.clip_ymax) - sp_globals.ymax = bmap_max; - else - sp_globals.ymax = sp_globals.clip_ymax; - } - sp_globals.clip_xmax = -sp_globals.xmin; - sp_globals.clip_xmin = ((sp_globals.set_width.x+32768L) >> 16) - - sp_globals.xmin; - break; - case 2: /* 90 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_xmin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift; - sp_globals.clip_xmin = -1 * sp_globals.clip_xmin; - bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - if (bmap_min > sp_globals.clip_xmin) - sp_globals.clip_xmin = bmap_min; - - /* normalize to x origin */ - sp_globals.clip_xmin -= sp_globals.xmin; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_xmax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max < sp_globals.clip_xmax) - sp_globals.xmax = bmap_max; - else - sp_globals.xmax = sp_globals.clip_xmax; - sp_globals.clip_ymax = 0; - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - /* normalize to x origin */ - sp_globals.clip_xmax -= sp_globals.xmin; - } - break; - case 3: /* 270 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_xmin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift; - sp_globals.clip_xmin = -1 * sp_globals.clip_xmin; - bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - - /* let the minimum be the larger of these two values */ - if (bmap_min > sp_globals.clip_xmin) - sp_globals.clip_xmin = bmap_min; - - /* normalize the x value to new xorgin */ - sp_globals.clip_xmin -= sp_globals.xmin; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_xmax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - - /* let the max be the lesser of these two values */ - if (bmap_max < sp_globals.clip_xmax) - { - sp_globals.xmax = bmap_max; - sp_globals.clip_xmax = bmap_max; - } - else - sp_globals.xmax = sp_globals.clip_xmax; - - /* normalize the x value to new x origin */ - sp_globals.clip_xmax -= sp_globals.xmin; - } - /* compute y clip values */ - sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = 0; - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - break; - default: /* this is for zero degree rotation and arbitrary rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max > sp_globals.clip_ymax) - sp_globals.ymax = bmap_max; - else - sp_globals.ymax = sp_globals.clip_ymax; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - sp_globals.clip_ymin = - sp_globals.clip_ymin; - bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - if (bmap_min < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - else - sp_globals.ymin = bmap_min; - } - sp_globals.clip_xmin = -sp_globals.xmin; - sp_globals.clip_xmax = ((sp_globals.set_width.x+32768L) >> 16) - - sp_globals.xmin; - break; - } -if ( !(sp_globals.specs.flags & CLIP_TOP)) -#endif - sp_globals.ymax = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - -#if INCL_CLIPPING -if ( !(sp_globals.specs.flags & CLIP_BOTTOM)) -#endif - - sp_globals.ymin = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - } - else - { - sp_globals.ymin = sp_globals.ymax = 0; - } - - /* add in the rounded out part (from xform.) of the left edge */ - if (sp_globals.tcb.xmode == 0) /* for X pix is function of X orus only add the round */ - xorg = (((fix31)sp_globals.xmin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift)); - else - if (sp_globals.tcb.xmode == 1) /* for X pix is function of -X orus only, subtr. round */ - xorg = (((fix31)sp_globals.xmin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)) ; - else - xorg = (fix31)sp_globals.xmin << 16; /* for other cases don't use round on x */ - - if (sp_globals.tcb.ymode == 2) /* for Y pix is function of X orus only, add round error */ - yorg = (((fix31)sp_globals.ymin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift)); - else - if (sp_globals.tcb.ymode == 3) /* for Y pix is function of -X orus only, sub round */ - yorg = (((fix31)sp_globals.ymin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)); - else /* all other cases have no round error on yorg */ - yorg = (fix31)sp_globals.ymin << 16; - - open_bitmap(sp_globals.set_width.x, sp_globals.set_width.y, xorg, yorg, - sp_globals.xmax - sp_globals.xmin, sp_globals.ymax - sp_globals.ymin); - if (sp_globals.intercept_oflo) - { - sp_globals.y_band.band_min = sp_globals.ymin; - sp_globals.y_band.band_max = sp_globals.ymax; - init_intercepts_out(); - sp_globals.first_pass = FALSE; - sp_globals.extents_running = FALSE; - return FALSE; - } - else - { - sp_proc_intercepts_black(); - close_bitmap(); - return TRUE; - } - } -else - { - if (sp_globals.intercept_oflo) - { - reduce_band_size_out(); - init_intercepts_out(); - return FALSE; - } - else - { - sp_proc_intercepts_black(); - if (next_band_out()) - { - init_intercepts_out(); - return FALSE; - } - close_bitmap(); - return TRUE; - } - } -} -#endif - -#if INCL_BLACK -FUNCTION LOCAL void sp_add_intercept_black( -GDECL -fix15 y, /* Y coordinate in relative pixel units */ - /* (0 is lowest sample in band) */ -fix15 x) /* X coordinate of intercept in subpixel units */ - -/* Called by line() to add an intercept to the intercept list structure - */ - -{ -register fix15 from; /* Insertion pointers for the linked list sort */ -register fix15 to; - -#if DEBUG -printf(" Add intercept(%2d, %d)\n", y + sp_globals.y_band.band_min,x); - -/* Bounds checking IS done in debug mode */ -if (y < 0) /* Y value below bottom of current band? */ - { - printf(" Intecerpt less than 0!!!\007\n"); - return; - } - -if (y > (sp_globals.no_y_lists - 1)) /* Y value above top of current band? */ - { - printf(" Intercept too big for band!!!!!\007\n"); - return; - } -#endif - -/* Store new values */ - -sp_intercepts.car[sp_globals.next_offset] = x; - -/* Find slot to insert new element (between from and to) */ - -from = y; /* Start at list head */ - -while( (to = sp_intercepts.cdr[from]) >= sp_globals.first_offset) /* Until to == end of list */ - { - if (x <= sp_intercepts.car[to]) /* If next item is larger than or same as this one... */ - goto insert_element; /* ... drop out and insert here */ - from = to; /* move forward in list */ - } - -insert_element: /* insert element "sp_globals.next_offset" between elements "from" */ - /* and "to" */ - -sp_intercepts.cdr[from] = sp_globals.next_offset; -sp_intercepts.cdr[sp_globals.next_offset] = to; - -if (++sp_globals.next_offset >= MAX_INTERCEPTS) /* Intercept buffer full? */ - { - sp_globals.intercept_oflo = TRUE; -/* There may be a few more calls to "add_intercept" from the current line */ -/* To avoid problems, we set next_offset to a safe value. We don't care */ -/* if the intercept table gets trashed at this point */ - sp_globals.next_offset = sp_globals.first_offset; - } -} - -#endif - -#if INCL_BLACK -FUNCTION LOCAL void sp_proc_intercepts_black() -GDECL - -/* Called by sp_make_char to output accumulated intercept lists - * Clips output to sp_globals.xmin, sp_globals.xmax, sp_globals.ymin, sp_globals.ymax boundaries - */ -{ -register fix15 i; -register fix15 from, to; /* Start and end of run in pixel units - relative to left extent of character */ -register fix15 y; -register fix15 scan_line; - fix15 first_y, last_y; - -#if DEBUG -printf("\nIntercept lists:\n"); -#endif - -#if INCL_CLIPPING -if ((sp_globals.specs.flags & CLIP_LEFT) != 0) - clipleft = TRUE; -else - clipleft = FALSE; -if ((sp_globals.specs.flags & CLIP_RIGHT) != 0) - clipright = TRUE; -else - clipright = FALSE; -if (clipleft || clipright) - { - xmax = sp_globals.clip_xmax; - xmin = sp_globals.clip_xmin; - } -if (!clipright) - xmax = ((sp_globals.set_width.x+32768L) >> 16); -#endif - -if ((first_y = sp_globals.y_band.band_max) >= sp_globals.ymax) - first_y = sp_globals.ymax - 1; /* Clip to sp_globals.ymax boundary */ - -if ((last_y = sp_globals.y_band.band_min) < sp_globals.ymin) - last_y = sp_globals.ymin; /* Clip to sp_globals.ymin boundary */ - -last_y -= sp_globals.y_band.band_min; -#if DEBUG -/* Print out all of the intercept info */ -scan_line = sp_globals.ymax - first_y - 1; - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++) - { - i = y; /* Index head of intercept list */ - while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */ - { - if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0) - from = 0; /* Clip to sp_globals.xmin boundary */ - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - if (i == 0) /* End of list? */ - { - printf("****** proc_intercepts: odd number of intercepts\n"); - break; - } - if ((to = sp_intercepts.car[i]) > sp_globals.xmax) - to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */ - else - to -= sp_globals.xmin; - printf(" Y = %2d (scanline %2d): %d %d:\n", - y + sp_globals.y_band.band_min, scan_line, from, to); - } - } -#endif - -/* Draw the image */ -scan_line = sp_globals.ymax - first_y - 1; - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++) - { - i = y; /* Index head of intercept list */ - while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */ - { - if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0) - from = 0; /* Clip to sp_globals.xmin boundary */ - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - - if ((to = sp_intercepts.car[i]) > sp_globals.xmax) - to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */ - else - to -= sp_globals.xmin; - if (from >= to) - { - if (from >= sp_globals.xmax - sp_globals.xmin) - { - --from ; - } - to = from+1; - } -#if INCL_CLIPPING - if (clipleft) - { - if (to <= xmin) - continue; - if (from < xmin) - from = xmin; - } - if (clipright) - { - if (from >= xmax) - continue; - if (to > xmax) - to = xmax; - } -#endif - set_bitmap_bits(scan_line, from, to); - } - } -} - -#endif - - - - diff --git a/nx-X11/lib/font/Speedo/out_outl.c b/nx-X11/lib/font/Speedo/out_outl.c deleted file mode 100644 index 0139010..0000000 --- a/nx-X11/lib/font/Speedo/out_outl.c +++ /dev/null @@ -1,290 +0,0 @@ -/* $Xorg: out_outl.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ - - -/**************************** O U T _ 2 _ 1 . C ****************************** - * * - * This is the standard output module for vector output mode. * - * * - ****************************************************************************/ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for Speedo */ - - -#define DEBUG 0 - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -/* the following macro is used to limit points on the outline to the bounding box */ - -#define RANGECHECK(value,min,max) (((value) >= (min) ? (value) : (min)) < (max) ? (value) : (max)) -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - - -#if INCL_OUTLINE -FUNCTION boolean init_outline(specsarg) -GDECL -specs_t GLOBALFAR *specsarg; -/* - * init_out2() is called by sp_set_specs() to initialize the output module. - * Returns TRUE if output module can accept requested specifications. - * Returns FALSE otherwise. - */ -{ -#if DEBUG -printf("INIT_OUT_2()\n"); -#endif -if (specsarg->flags & (CLIP_LEFT + CLIP_RIGHT + CLIP_TOP + CLIP_BOTTOM)) - return FALSE; /* Clipping not supported */ -return (TRUE); -} -#endif - -#if INCL_OUTLINE -FUNCTION boolean begin_char_outline(Psw, Pmin, Pmax) -GDECL -point_t Psw; /* End of escapement vector (sub-pixels) */ -point_t Pmin; /* Bottom left corner of bounding box */ -point_t Pmax; /* Top right corner of bounding box */ -/* - * If two or more output modules are included in the configuration, begin_char2() - * is called by begin_char() to signal the start of character output data. - * If only one output module is included in the configuration, begin_char() is - * called by make_simp_char() and make_comp_char(). - */ -{ -fix31 set_width_x; -fix31 set_width_y; -fix31 xmin; -fix31 xmax; -fix31 ymin; -fix31 ymax; - -#if DEBUG -printf("BEGIN_CHAR_2(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n", - (real)Psw.x / (real)onepix, (real)Psw.y / (real)onepix, - (real)Pmin.x / (real)onepix, (real)Pmin.y / (real)onepix, - (real)Pmax.x / (real)onepix, (real)Pmax.y / (real)onepix); -#endif -sp_globals.poshift = 16 - sp_globals.pixshift; -set_width_x = (fix31)Psw.x << sp_globals.poshift; -set_width_y = (fix31)Psw.y << sp_globals.poshift; -xmin = (fix31)Pmin.x << sp_globals.poshift; -xmax = (fix31)Pmax.x << sp_globals.poshift; -ymin = (fix31)Pmin.y << sp_globals.poshift; -ymax = (fix31)Pmax.y << sp_globals.poshift; -sp_globals.xmin = Pmin.x; -sp_globals.xmax = Pmax.x; -sp_globals.ymin = Pmin.y; -sp_globals.ymax = Pmax.y; -open_outline(set_width_x, set_width_y, xmin, xmax, ymin, ymax); -return TRUE; -} -#endif - -#if INCL_OUTLINE -FUNCTION void begin_sub_char_outline(Psw, Pmin, Pmax) -GDECL -point_t Psw; /* End of sub-char escapement vector */ -point_t Pmin; /* Bottom left corner of sub-char bounding box */ -point_t Pmax; /* Top right corner of sub-char bounding box */ -/* - * If two or more output modules are included in the configuration, begin_sub_char2() - * is called by begin_sub_char() to signal the start of sub-character output data. - * If only one output module is included in the configuration, begin_sub_char() is - * called by make_comp_char(). - */ -{ -#if DEBUG -printf("BEGIN_SUB_CHAR_2(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n", - (real)Psw.x / (real)onepix, (real)Psw.y / (real)onepix, - (real)Pmin.x / (real)onepix, (real)Pmin.y / (real)onepix, - (real)Pmax.x / (real)onepix, (real)Pmax.y / (real)onepix); -#endif -start_new_char(); -} -#endif - - -#if INCL_OUTLINE -FUNCTION void begin_contour_outline(P1, outside) -GDECL -point_t P1; /* Start point of contour */ -boolean outside; /* TRUE if outside (counter-clockwise) contour */ -/* - * If two or more output modules are included in the configuration, begin_contour2() - * is called by begin_contour() to define the start point of a new contour - * and to indicate whether it is an outside (counter-clockwise) contour - * or an inside (clockwise) contour. - * If only one output module is included in the configuration, begin_sub_char() is - * called by proc_outl_data(). - */ -{ -fix15 x,y; -#if DEBUG -printf("BEGIN_CONTOUR_2(%3.1f, %3.1f, %s)\n", - (real)P1.x / (real)onepix, (real)P1.y / (real)onepix, outside? "outside": "inside"); -#endif -x = RANGECHECK(P1.x,sp_globals.xmin,sp_globals.xmax); -y = RANGECHECK(P1.y,sp_globals.ymin,sp_globals.ymax); - -start_contour((fix31)x << sp_globals.poshift, (fix31)y << sp_globals.poshift, outside); -} -#endif - -#if INCL_OUTLINE -FUNCTION void curve_outline(P1, P2, P3,depth) -GDECL -point_t P1; /* First control point of Bezier curve */ -point_t P2; /* Second control point of Bezier curve */ -point_t P3; /* End point of Bezier curve */ -fix15 depth; -/* - * If two or more output modules are included in the configuration, curve2() - * is called by curve() to output one curve segment. - * If only one output module is included in the configuration, curve() is - * called by proc_outl_data(). - * This function is only called when curve output is enabled. - */ -{ -fix15 x1,y1,x2,y2,x3,y3; -#if DEBUG -printf("CURVE_2(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n", - (real)P1.x / (real)onepix, (real)P1.y / (real)onepix, - (real)P2.x / (real)onepix, (real)P2.y / (real)onepix, - (real)P3.x / (real)onepix, (real)P3.y / (real)onepix); -#endif -x1= RANGECHECK(P1.x,sp_globals.xmin,sp_globals.xmax); -y1= RANGECHECK(P1.y,sp_globals.ymin,sp_globals.ymax); - -x2= RANGECHECK(P2.x,sp_globals.xmin,sp_globals.xmax); -y2= RANGECHECK(P2.y,sp_globals.ymin,sp_globals.ymax); - -x3= RANGECHECK(P3.x,sp_globals.xmin,sp_globals.xmax); -y3= RANGECHECK(P3.y,sp_globals.ymin,sp_globals.ymax); - -curve_to((fix31)x1 << sp_globals.poshift, (fix31)y1 << sp_globals.poshift, - (fix31)x2<< sp_globals.poshift, (fix31)y2 << sp_globals.poshift, - (fix31)x3 << sp_globals.poshift, (fix31)y3 << sp_globals.poshift); -} -#endif - -#if INCL_OUTLINE -FUNCTION void line_outline(P1) -GDECL -point_t P1; /* End point of vector */ -/* - * If two or more output modules are included in the configuration, line2() - * is called by line() to output one vector. - * If only one output module is included in the configuration, line() is - * called by proc_outl_data(). If curve output is enabled, line() is also - * called by split_curve(). - */ -{ -fix15 x1,y1; -#if DEBUG -printf("LINE_2(%3.1f, %3.1f)\n", (real)P1.x / (real)onepix, (real)P1.y / (real)onepix); -#endif -x1= RANGECHECK(P1.x,sp_globals.xmin,sp_globals.xmax); -y1= RANGECHECK(P1.y,sp_globals.ymin,sp_globals.ymax); - -line_to((fix31)x1 << sp_globals.poshift, (fix31)y1 << sp_globals.poshift); -} -#endif - -#if INCL_OUTLINE -FUNCTION void end_contour_outline() -GDECL -/* - * If two or more output modules are included in the configuration, end_contour2() - * is called by end_contour() to signal the end of a contour. - * If only one output module is included in the configuration, end_contour() is - * called by proc_outl_data(). - */ -{ -#if DEBUG -printf("END_CONTOUR_2()\n"); -#endif -close_contour(); -} -#endif - - -#if INCL_OUTLINE -FUNCTION void end_sub_char_outline() -GDECL -/* - * If two or more output modules are included in the configuration, end_sub_char2() - * is called by end_sub_char() to signal the end of sub-character data. - * If only one output module is included in the configuration, end_sub_char() is - * called by make_comp_char(). - */ -{ -#if DEBUG -printf("END_SUB_CHAR_2()\n"); -#endif -} -#endif - - -#if INCL_OUTLINE -FUNCTION boolean end_char_outline() -GDECL -/* - * If two or more output modules are included in the configuration, end_char2() - * is called by end_char() to signal the end of the character data. - * If only one output module is included in the configuration, end_char() is - * called by make_simp_char() and make_comp_char(). - * Returns TRUE if output process is complete - * Returns FALSE to repeat output of the transformed data beginning - * with the first contour (of the first sub-char if compound). - */ -{ -#if DEBUG -printf("END_CHAR_2()\n"); -#endif -close_outline(); -return TRUE; -} -#endif - diff --git a/nx-X11/lib/font/Speedo/out_scrn.c b/nx-X11/lib/font/Speedo/out_scrn.c deleted file mode 100644 index 0ea3b19..0000000 --- a/nx-X11/lib/font/Speedo/out_scrn.c +++ /dev/null @@ -1,1090 +0,0 @@ -/* $Xorg: out_scrn.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/out_scrn.c,v 1.4 1999/12/27 00:39:25 robin Exp $ */ - - -/*************************** O U T _ S C R N . C ***************************** - * * - * This is an output module for screen-writer mode. * - * * - *****************************************************************************/ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for Speedo */ - -#define DEBUG 0 -#define LOCAL static -#define ABS(X) ( (X < 0) ? -X : X) - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - -static void sp_add_intercept_screen(PROTO_DECL2 fix15 y,fix31 x); -static void sp_proc_intercepts_screen(PROTO_DECL1); - - -#if INCL_SCREEN -FUNCTION boolean init_screen( -GDECL -specs_t FONTFAR *specsarg) -/* - * init_out0() is called by sp_set_specs() to initialize the output module. - * Returns TRUE if output module can accept requested specifications. - * Returns FALSE otherwise. - */ -{ -#if DEBUG -printf("INIT_SCREEN()\n"); -#endif -return (TRUE); -} -#endif - - -#if INCL_SCREEN -FUNCTION boolean begin_char_screen( -GDECL -point_t Psw, -point_t Pmin, -point_t Pmax) -/* Called once at the start of the character generation process - */ -{ -#if DEBUG -printf("BEGIN_CHAR_SCREEN(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n", - (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix, - (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix, - (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix); -#endif -if (sp_globals.pixshift > 8) - sp_intercepts.fracpix = sp_globals.onepix << (8 - sp_globals.pixshift); -else - sp_intercepts.fracpix = sp_globals.onepix >> (sp_globals.pixshift - 8); - -init_char_out(Psw,Pmin,Pmax); - -return TRUE; -} -#endif - - -#if INCL_SCREEN -FUNCTION void begin_contour_screen( -GDECL -point_t P1, -boolean outside) -/* Called at the start of each contour - */ -{ - -#if DEBUG -printf("BEGIN_CONTOUR_SCREEN(%3.1f, %3.1f, %s)\n", - (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, outside? "outside": "inside"); -#endif -sp_globals.x0_spxl = P1.x; -sp_globals.y0_spxl = P1.y; -sp_globals.y_pxl = (sp_globals.y0_spxl + sp_globals.pixrnd) >> sp_globals.pixshift; -} -#endif - -#if INCL_SCREEN -FUNCTION void curve_screen( -GDECL -point_t P1, point_t P2, point_t P3, -fix15 depth) -{ -fix31 X0; -fix31 Y0; -fix31 X1; -fix31 Y1; -fix31 X2; -fix31 Y2; -fix31 X3; -fix31 Y3; -#if DEBUG -printf("CURVE_SCREEN(%6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f)\n", - (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, - (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix, - (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix); -#endif - - -if (sp_globals.extents_running) /* Accumulate actual character extents if required */ - { - if (P3.x > sp_globals.bmap_xmax) - sp_globals.bmap_xmax = P3.x; - if (P3.x < sp_globals.bmap_xmin) - sp_globals.bmap_xmin = P3.x; - if (P3.y > sp_globals.bmap_ymax) - sp_globals.bmap_ymax = P3.y; - if (P3.y < sp_globals.bmap_ymin) - sp_globals.bmap_ymin = P3.y; - } - -X0 = ((fix31)sp_globals.x0_spxl << sp_globals.poshift) + (fix31)32768; -Y0 = ((fix31)sp_globals.y0_spxl << sp_globals.poshift) + (fix31)32768; -X1 = ((fix31)P1.x << sp_globals.poshift) + (fix31)32768; -Y1 = ((fix31)P1.y << sp_globals.poshift) + (fix31)32768; -X2 = ((fix31)P2.x << sp_globals.poshift) + (fix31)32768; -Y2 = ((fix31)P2.y << sp_globals.poshift) + (fix31)32768; -X3 = ((fix31)P3.x << sp_globals.poshift) + (fix31)32768; -Y3 = ((fix31)P3.y << sp_globals.poshift) + (fix31)32768; - -if (((Y0 - Y3) * sp_globals.tcb.mirror) > 0) - { - sp_intercepts.leftedge = LEFT_INT; - } -else - { - sp_intercepts.leftedge = 0; - } - -scan_curve_screen(X0,Y0,X1,Y1,X2,Y2,X3,Y3); -sp_globals.x0_spxl = P3.x; -sp_globals.y0_spxl = P3.y; -sp_globals.y_pxl = (P3.y + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan sp_globals.line */ -} - -FUNCTION void scan_curve_screen( -GDECL -fix31 X0, fix31 Y0, fix31 X1, fix31 Y1, fix31 X2, fix31 Y2, fix31 X3, fix31 Y3) -/* Called for each curve in the transformed character if curves out enabled - */ -{ -fix31 Pmidx; -fix31 Pmidy; -fix31 Pctrl1x; -fix31 Pctrl1y; -fix31 Pctrl2x; -fix31 Pctrl2y; - -#ifdef DBGCRV -printf("SCAN_CURVE_SCREEN(%6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f)\n", - (real)(X0-32768) / 65536.0, (real)(Y0-32768) / 65536.0, - (real)(X1-32768) / 65536.0, (real)(Y1-32768) / 65536.0, - (real)(X2-32768) / 65536.0, (real)(Y2-32768) / 65536.0, - (real)(X3-32768) / 65536.0, (real)(Y3-32768) / 65536.0); -#endif - -if (((Y3 >> 16)) == (Y0 >> 16) || (Y3+1) == Y0 || Y3 == (Y0+1)) - { - return; - } -if ((X3 >> 16) == (X0 >> 16)) - { - vert_line_screen(X3,(fix15)(Y0>>16),(fix15)(Y3>>16)); - return; - } -Pmidx = (X0 + (X1 + X2) * 3 + X3 + 4 ) >> 3; -Pmidy = (Y0 + (Y1 + Y2) * 3 + Y3 + 4 ) >> 3; - -Pctrl1x = (X0 + X1 + 1 ) >> 1; -Pctrl1y = (Y0 + Y1 + 1) >> 1; -Pctrl2x = (X0 + (X1 << 1) + X2 + 2 ) >> 2; -Pctrl2y = (Y0 + (Y1 << 1) + Y2 + 2 ) >> 2; -scan_curve_screen(X0,Y0, Pctrl1x, Pctrl1y, Pctrl2x,Pctrl2y, Pmidx,Pmidy); - -Pctrl1x = (X1 + (X2 << 1) + X3 + 2 ) >> 2; -Pctrl1y = (Y1 + (Y2 << 1) + Y3 + 2 ) >> 2; -Pctrl2x = (X2 + X3 + 1 ) >> 1; -Pctrl2y = (Y2 + Y3 + 1 ) >> 1; -scan_curve_screen(Pmidx,Pmidy, Pctrl1x,Pctrl1y, Pctrl2x,Pctrl2y, X3,Y3); -} - -FUNCTION void vert_line_screen( -GDECL -fix31 x, -fix15 y1, fix15 y2) -{ - -#ifdef DBGCRV -printf("VERT_LINE_SCREEN(%6.4f, %6.4f, %6.4f)\n", - (real)(x - 32768) / 65536.0, - (real)(y1 - 32768) / 65536.0, - (real)(y2 - 32768) / 65536.0); -#endif - -if (sp_globals.intercept_oflo) - return; - -if (y1 > y2) /* Line goes downwards ? */ - { - if (y1 > (sp_globals.y_band.band_max + 1)) /* Start point above top of band? */ - y1 = sp_globals.y_band.band_max + 1; /* Adjust start point to top of band */ - if (y2 < sp_globals.y_band.band_min) /* End point below bottom of band? */ - y2 = sp_globals.y_band.band_min; /* Adjust end point bottom of band */ - - y1 -= sp_globals.y_band.band_min; /* Translate start point to band origin */ - y2 -= sp_globals.y_band.band_min; /* Translate end point to band origin */ - - while (y2 < y1) /* At least one intercept left? */ - { - sp_add_intercept_screen(--y1, x); /* Add intercept */ - } - } -else if (y2 > y1) /* Line goes upwards ? */ - { - if (y1 < sp_globals.y_band.band_min) /* Start point below bottom of band? */ - y1 = sp_globals.y_band.band_min; /* Adjust start point to bottom of band */ - if (y2 > (sp_globals.y_band.band_max + 1)) /* End point above top of band? */ - y2 = sp_globals.y_band.band_max + 1; /* Adjust end point to top of band */ - - y1 -= sp_globals.y_band.band_min; /* Translate start point to band origin */ - y2 -= sp_globals.y_band.band_min; /* Translate end point to band origin */ - - while (y1 < y2) /* At least one intercept left? */ - { - sp_add_intercept_screen(y1++, x); /* Add intercept */ - } - } - - -} - -#endif - - -#if INCL_SCREEN -FUNCTION void line_screen( -GDECL -point_t P1) -/* Called for each vector in the transformed character - */ -{ -register fix15 how_many_y; /* # of intercepts at y = n + 1/2 */ -register fix15 yc; /* Current scan-line */ - fix15 temp1; /* various uses */ - fix15 temp2; /* various uses */ -register fix31 dx_dy; /* slope of line in 16.16 form */ -register fix31 xc; /* high-precision (16.16) x coordinate */ - fix15 x0,y0,x1,y1; /* PIX.FRAC start and endpoints */ - -x0 = sp_globals.x0_spxl; /* get start of line (== current point) */ -y0 = sp_globals.y0_spxl; -sp_globals.x0_spxl = x1 = P1.x; /* end of line */ -sp_globals.y0_spxl = y1 = P1.y; /* (also update current point to end of line) */ - -yc = sp_globals.y_pxl; /* current scan line = end of last line */ -sp_globals.y_pxl = (y1 + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan sp_globals.line */ - - -#if DEBUG -printf("LINE_SCREEN(%3.4f, %3.4f)\n", - (real)P1.x/(real)sp_globals.onepix, - (real)P1.y/(real)sp_globals.onepix); -#endif - -if (sp_globals.extents_running) - { - if (sp_globals.x0_spxl > sp_globals.bmap_xmax) - sp_globals.bmap_xmax = sp_globals.x0_spxl; - if (sp_globals.x0_spxl < sp_globals.bmap_xmin) - sp_globals.bmap_xmin = sp_globals.x0_spxl; - if (sp_globals.y0_spxl > sp_globals.bmap_ymax) - sp_globals.bmap_ymax = sp_globals.y0_spxl; - if (sp_globals.y0_spxl < sp_globals.bmap_ymin) - sp_globals.bmap_ymin = sp_globals.y0_spxl; - } - -if (sp_globals.intercept_oflo) return; - -if ((how_many_y = sp_globals.y_pxl - yc) == 0) return; /* Don't draw a null line */ - -xc = (fix31)(x0 + sp_globals.pixrnd) << (16 - sp_globals.pixshift); /* Original x coordinate with built in */ - /* rounding. 16.16 form */ - -if (how_many_y < 0) - { - yc--; /* Predecrment downward lines */ - } - -if ((how_many_y * sp_globals.tcb.mirror) < 0) - { - sp_intercepts.leftedge = LEFT_INT; - } -else - { - sp_intercepts.leftedge = 0; - } - -if (yc > sp_globals.y_band.band_max) /* Is start point above band? */ - { - if (sp_globals.y_pxl > sp_globals.y_band.band_max) return; /* line has to go down! */ - how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_max) - 1; /* Yes, limit it */ - } - -if (yc < sp_globals.y_band.band_min) /* Is start point below band? */ - { - if (sp_globals.y_pxl < sp_globals.y_band.band_min) return; /* line has to go up! */ - how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_min); /* Yes, limit it */ - } - -if ( (temp1 = (x1 - x0)) == 0) /* check for vertical line */ - { - dx_dy = 0L; /* Zero slope, leave xc alone */ - goto skip_calc; - } - -/* calculate dx_dy at 16.16 fixed point */ - -dx_dy = ( (fix31)temp1 << 16 )/(fix31)(y1 - y0); - -/* We have to check for a @#$%@# possible multiply overflow */ -/* by doing another @#$*& multiply. In assembly language, */ -/* the program could just check the OVerflow flag or whatever*/ -/* works on the particular processor. This C code is meant */ -/* to be processor independant. */ - -temp1 = (yc << sp_globals.pixshift) - y0 + sp_globals.pixrnd; -/* This sees if the sign bits start at bit 15 */ -/* if they do, no overflow has occurred */ - -temp2 = (fix15)(MULT16(temp1,(fix15)(dx_dy >> 16)) >> 15); - -if ( (temp2 != (fix15)-1) && - (temp2 != 0x0000) ) - { /* Overflow. Pick point closest to yc + .5 */ - if (ABS(temp1) < ABS((yc << sp_globals.pixshift) - y1 + sp_globals.pixrnd)) - { /* use x1 instead of x0 */ - xc = (fix31)(x1 + sp_globals.pixrnd) << (16 - sp_globals.pixshift); - } - goto skip_calc; - } -/* calculate new xc at the center of the *current* scan line */ -/* due to banding, yc may be several lines away from y0 */ -/* xc += (yc + .5 - y0) * dx_dy */ -/* This multiply generates a subpixel delta. */ -/* So we shift it to be a 16.16 delta */ - -xc += ((fix31)temp1 * dx_dy) >> sp_globals.pixshift; - -skip_calc: - -yc -= sp_globals.y_band.band_min; /* yc is now an offset relative to the band */ - -if (how_many_y < 0) - { /* Vector down */ - if ((how_many_y += yc + 1) < 0) how_many_y = 0; /* can't go below 0 */ - while(yc >= how_many_y) - { - sp_add_intercept_screen(yc--,xc); - xc -= dx_dy; - } - } - else - { /* Vector up */ - /* check to see that line doesn't extend beyond top of band */ - if ((how_many_y += yc) > sp_globals.no_y_lists) how_many_y = sp_globals.no_y_lists; - while(yc != how_many_y) - { - sp_add_intercept_screen(yc++,xc); - xc += dx_dy; - } - } -} -#endif - -#if INCL_SCREEN -FUNCTION void end_contour_screen() -GDECL -/* Called after the last vector in each contour - */ -{ -#if DEBUG -printf("END_CONTOUR_SCREEN()\n"); -#endif -sp_intercepts.inttype[sp_globals.next_offset-1] |= END_INT; -} -#endif - - - -#if INCL_SCREEN -FUNCTION boolean end_char_screen() -GDECL -/* Called when all character data has been output - * Return TRUE if output process is complete - * Return FALSE to repeat output of the transformed data beginning - * with the first contour - */ -{ - -fix31 xorg; -fix31 yorg; - -#if INCL_CLIPPING -fix31 em_max, em_min, bmap_max, bmap_min; -#endif - -#if DEBUG -printf("END_CHAR_SCREEN()\n"); -#endif - -if (sp_globals.first_pass) - { - if (sp_globals.bmap_xmax >= sp_globals.bmap_xmin) - { - sp_globals.xmin = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - sp_globals.xmax = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - } - else - { - sp_globals.xmin = sp_globals.xmax = 0; - } - if (sp_globals.bmap_ymax >= sp_globals.bmap_ymin) - { - -#if INCL_CLIPPING - switch(sp_globals.tcb0.xtype) - { - case 1: /* 180 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - sp_globals.clip_ymin = -1 * sp_globals.clip_ymin; - if (bmap_min < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - else - sp_globals.ymin = bmap_min; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max < sp_globals.clip_ymax) - sp_globals.ymax = bmap_max; - else - sp_globals.ymax = sp_globals.clip_ymax; - } - sp_globals.clip_xmax = -sp_globals.xmin; - sp_globals.clip_xmin = ((sp_globals.set_width.x+32768L) >> 16) - - sp_globals.xmin; - break; - case 2: /* 90 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_xmin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift; - sp_globals.clip_xmin = -1 * sp_globals.clip_xmin; - bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - if (bmap_min > sp_globals.clip_xmin) - sp_globals.clip_xmin = bmap_min; - - /* normalize to x origin */ - sp_globals.clip_xmin -= sp_globals.xmin; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_xmax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max < sp_globals.clip_xmax) - sp_globals.xmax = bmap_max; - else - sp_globals.xmax = sp_globals.clip_xmax; - sp_globals.clip_ymax = 0; - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - /* normalize to x origin */ - sp_globals.clip_xmax -= sp_globals.xmin; - } - break; - case 3: /* 270 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_xmin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift; - sp_globals.clip_xmin = -1 * sp_globals.clip_xmin; - bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - - /* let the minimum be the larger of these two values */ - if (bmap_min > sp_globals.clip_xmin) - sp_globals.clip_xmin = bmap_min; - - /* normalize the x value to new xorgin */ - sp_globals.clip_xmin -= sp_globals.xmin; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_xmax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift; - - /* let the max be the lesser of these two values */ - if (bmap_max < sp_globals.clip_xmax) - { - sp_globals.xmax = bmap_max; - sp_globals.clip_xmax = bmap_max; - } - else - sp_globals.xmax = sp_globals.clip_xmax; - - /* normalize the x value to new x origin */ - sp_globals.clip_xmax -= sp_globals.xmin; - } - /* compute y clip values */ - sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = 0; - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - break; - default: /* this is for zero degree rotation and arbitrary rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - if (bmap_max > sp_globals.clip_ymax) - sp_globals.ymax = bmap_max; - else - sp_globals.ymax = sp_globals.clip_ymax; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - sp_globals.clip_ymin = - sp_globals.clip_ymin; - bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - if (bmap_min < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - else - sp_globals.ymin = bmap_min; - } - sp_globals.clip_xmin = -sp_globals.xmin; - sp_globals.clip_xmax = ((sp_globals.set_width.x+32768L) >> 16) - - sp_globals.xmin; - break; - } -if ( !(sp_globals.specs.flags & CLIP_TOP)) -#endif - sp_globals.ymax = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift; - -#if INCL_CLIPPING -if ( !(sp_globals.specs.flags & CLIP_BOTTOM)) -#endif - - sp_globals.ymin = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift; - } - else - { - sp_globals.ymin = sp_globals.ymax = 0; - } - - /* add in the rounded out part (from xform.) of the left edge */ - if (sp_globals.tcb.xmode == 0) /* for X pix is function of X orus only add the round */ - xorg = (((fix31)sp_globals.xmin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift)); - else - if (sp_globals.tcb.xmode == 1) /* for X pix is function of -X orus only, subtr. round */ - xorg = (((fix31)sp_globals.xmin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)) ; - else - xorg = (fix31)sp_globals.xmin << 16; /* for other cases don't use round on x */ - - if (sp_globals.tcb.ymode == 2) /* for Y pix is function of X orus only, add round error */ - yorg = (((fix31)sp_globals.ymin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift)); - else - if (sp_globals.tcb.ymode == 3) /* for Y pix is function of -X orus only, sub round */ - yorg = (((fix31)sp_globals.ymin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)); - else /* all other cases have no round error on yorg */ - yorg = (fix31)sp_globals.ymin << 16; - - open_bitmap(sp_globals.set_width.x, sp_globals.set_width.y, xorg, yorg, - sp_globals.xmax - sp_globals.xmin, sp_globals.ymax - sp_globals.ymin); - if (sp_globals.intercept_oflo) - { - sp_globals.y_band.band_min = sp_globals.ymin; - sp_globals.y_band.band_max = sp_globals.ymax; - init_intercepts_out(); - sp_globals.first_pass = FALSE; - sp_globals.extents_running = FALSE; - return FALSE; - } - else - { - sp_proc_intercepts_screen(); - close_bitmap(); - return TRUE; - } - } -else - { - if (sp_globals.intercept_oflo) - { - reduce_band_size_out(); - init_intercepts_out(); - return FALSE; - } - else - { - sp_proc_intercepts_screen(); - if (next_band_out()) - { - init_intercepts_out(); - return FALSE; - } - close_bitmap(); - return TRUE; - } - } -} -#endif - -#if INCL_SCREEN -FUNCTION LOCAL void sp_add_intercept_screen( -GDECL -fix15 y, /* Y coordinate in relative pixel units */ - /* (0 is lowest sample in band) */ -fix31 x) /* X coordinate of intercept in subpixel units */ - -/* Called by line() to add an intercept to the intercept list structure - */ - -{ -register fix15 from; /* Insertion pointers for the linked list sort */ -register fix15 to; -register fix15 xloc; -register fix15 xfrac; - -#if DEBUG -printf(" Add intercept(%2d, %x)\n", y + sp_globals.y_band.band_min, x); - -/* Bounds checking IS done in debug mode */ -if (y < 0) /* Y value below bottom of current band? */ - { - printf(" Intecerpt less than 0!!!\007\n"); - return; - } - -if (y > (sp_globals.no_y_lists - 1)) /* Y value above top of current band? */ - { - printf(" Intercept too big for band!!!!!\007\n"); - return; - } -#endif - -/* Store new values */ - -sp_intercepts.car[sp_globals.next_offset] = xloc = (fix15)(x >> 16); -sp_intercepts.inttype[sp_globals.next_offset] = sp_intercepts.leftedge | (xfrac = ((x >> 8) & FRACTION)); - -/* Find slot to insert new element (between from and to) */ - -from = y; /* Start at list head */ - -while( (to = sp_intercepts.cdr[from]) != 0) /* Until to == end of list */ - { - if (xloc < sp_intercepts.car[to]) /* If next item is larger than or same as this one... */ - goto insert_element; /* ... drop out and insert here */ - else if (xloc == sp_intercepts.car[to] && xfrac < (sp_intercepts.inttype[to] & FRACTION)) - goto insert_element; /* ... drop out and insert here */ - from = to; /* move forward in list */ - } - -insert_element: /* insert element "sp_globals.next_offset" between elements "from" */ - /* and "to" */ - -sp_intercepts.cdr[from] = sp_globals.next_offset; -sp_intercepts.cdr[sp_globals.next_offset] = to; - -if (++sp_globals.next_offset >= MAX_INTERCEPTS) /* Intercept buffer full? */ - { - sp_globals.intercept_oflo = TRUE; -/* There may be a few more calls to "add_intercept" from the current line */ -/* To avoid problems, we set next_offset to a safe value. We don't care */ -/* if the intercept table gets trashed at this point */ - sp_globals.next_offset = sp_globals.first_offset; - } -} - -#endif - -#if INCL_SCREEN -FUNCTION LOCAL void sp_proc_intercepts_screen() -GDECL - -/* Called by sp_make_char to output accumulated intercept lists - * Clips output to sp_globals.xmin, sp_globals.xmax, sp_globals.ymin, sp_globals.ymax boundaries - */ -{ -register fix15 i,j, jplus1, iminus1; -fix15 k,nextk, previ; -register fix15 from, to; /* Start and end of run in pixel units - relative to left extent of character */ -register fix15 y; -register fix15 scan_line; - fix15 first_y, last_y; - fix15 xsave; - - -fix15 diff; - -#if DEBUG -printf("\nPROC_INTERCEPTS_SCREEN: Intercept lists before:\n"); -#endif - -#if INCL_CLIPPING -if ((sp_globals.specs.flags & CLIP_LEFT) != 0) - clipleft = TRUE; -else - clipleft = FALSE; -if ((sp_globals.specs.flags & CLIP_RIGHT) != 0) - clipright = TRUE; -else - clipright = FALSE; -if (clipleft || clipright) - { - xmax = sp_globals.clip_xmax + sp_globals.xmin; - xmin = sp_globals.clip_xmin + sp_globals.xmin; - } -if (!clipright) - xmax = ((sp_globals.set_width.x+32768L) >> 16); -#endif - -if ((first_y = sp_globals.y_band.band_max) >= sp_globals.ymax) - first_y = sp_globals.ymax - 1; /* Clip to sp_globals.ymax boundary */ - -if ((last_y = sp_globals.y_band.band_min) < sp_globals.ymin) - last_y = sp_globals.ymin; /* Clip to sp_globals.ymin boundary */ - -last_y -= sp_globals.y_band.band_min; - -#if DEBUG -/* Print out all of the intercept info */ -scan_line = sp_globals.ymax - first_y - 1; - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++) - { - i = y; /* Index head of intercept list */ - while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */ - { - if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0) - from = 0; /* Clip to sp_globals.xmin boundary */ - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - if (i == 0) /* End of list? */ - { - printf("****** proc_intercepts: odd number of intercepts\n"); - break; - } - if ((to = sp_intercepts.car[i]) > sp_globals.xmax) - to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */ - else - to -= sp_globals.xmin; - printf(" Y = %2d (scanline %2d): %d %d:\n", - y + sp_globals.y_band.band_min, scan_line, from, to); - } - } -#endif - -/* CHECK INTERCEPT LIST FOR DROPOUT AND WINDING, FIX IF NECESSARY */ - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--) - { - previ = y; - i = sp_intercepts.cdr[y]; /* Index head of intercept list */ - while (i != 0) /* Link to next intercept if present */ - { - j = i; - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - if (sp_intercepts.inttype[i] & LEFT_INT) - { - if (sp_intercepts.inttype[j] & LEFT_INT) - { - do { i = sp_intercepts.cdr[i]; } while (sp_intercepts.inttype[i] & LEFT_INT); - do { i = sp_intercepts.cdr[i]; } while (sp_intercepts.cdr[i] && !(sp_intercepts.inttype[sp_intercepts.cdr[i]] & LEFT_INT)); - sp_intercepts.cdr[j] = i; - } - else - { - xsave = sp_intercepts.car[j]; - sp_intercepts.car[j] = sp_intercepts.car[i]; - sp_intercepts.car[i] = xsave; - - xsave = sp_intercepts.inttype[j]; - sp_intercepts.inttype[j] = sp_intercepts.inttype[i] & FRACTION; - sp_intercepts.inttype[i] = xsave | LEFT_INT; - - sp_intercepts.cdr[previ] = i; - sp_intercepts.cdr[j] = sp_intercepts.cdr[i]; - sp_intercepts.cdr[i] = j; - i = j; - j = sp_intercepts.cdr[previ]; - } - } - - if (sp_intercepts.car[j] < sp_globals.xmin) - sp_intercepts.car[j] = sp_globals.xmin; /* Clip to sp_globals.xmin boundary */ - - if (sp_intercepts.car[i] > sp_globals.xmax) - sp_intercepts.car[i] = sp_globals.xmax; - - if (sp_intercepts.car[j] >= sp_intercepts.car[i]) - { - if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) + (ufix16)(sp_intercepts.inttype[i] & FRACTION) > sp_intercepts.fracpix) - ++sp_intercepts.car[i]; - else - --sp_intercepts.car[j]; - } - if (sp_globals.first_pass) - { - if (sp_intercepts.inttype[i-1] & END_INT) - { - for (iminus1 = i+1; !(sp_intercepts.inttype[iminus1] & END_INT); iminus1++) - ; - } - else - iminus1 = i-1; - - if (sp_intercepts.inttype[j] & END_INT) - { - for (jplus1 = j-1; !(sp_intercepts.inttype[jplus1] & END_INT); jplus1--) - ; - jplus1++; - } - else - jplus1 = j+1; - - if ((sp_intercepts.inttype[iminus1] & LEFT_INT)) - { - if ( sp_intercepts.car[jplus1] > sp_intercepts.car[i]) - { - diff = sp_intercepts.car[jplus1] - sp_intercepts.car[i]; - sp_intercepts.car[i] += diff/2; - sp_intercepts.car[jplus1] -= diff/2; - if (diff & 1) - { - if ((ufix16)(sp_intercepts.inttype[i] & FRACTION) + (ufix16)(sp_intercepts.inttype[jplus1] & FRACTION) > sp_intercepts.fracpix) - sp_intercepts.car[i] ++; - else - sp_intercepts.car[jplus1]--; - } - } - } - else if (!(sp_intercepts.inttype[jplus1] & LEFT_INT)) - { - if (sp_intercepts.car[iminus1] < sp_intercepts.car[j]) - { - diff = sp_intercepts.car[j] - sp_intercepts.car[iminus1]; - sp_intercepts.car[j] -= diff/2; - sp_intercepts.car[iminus1] += diff/2; - if (diff & 1) - { - if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) + - (ufix16)(sp_intercepts.inttype[iminus1] & FRACTION) > sp_intercepts.fracpix) - sp_intercepts.car[iminus1]++; - else - sp_intercepts.car[j]--; - } - } - } - if (sp_globals.tcb.mirror == -1) - { - if (sp_intercepts.inttype[j-1] & END_INT) - { - for (jplus1 = j+1; !(sp_intercepts.inttype[jplus1] & END_INT); jplus1++) - ; - } - else - { - jplus1 = j-1; - } - } - - if (!(sp_intercepts.inttype[jplus1] & LEFT_INT) && - sp_intercepts.car[j] > sp_intercepts.car[jplus1]) - { - k = sp_intercepts.cdr[y - 1]; - while (k > 0) - { - nextk = sp_intercepts.cdr[k]; - if (!(sp_intercepts.inttype[k] & LEFT_INT) && - (sp_intercepts.inttype[nextk] & LEFT_INT) && - sp_intercepts.car[nextk] > sp_intercepts.car[jplus1]) - { - if ((diff=sp_intercepts.car[j] - sp_intercepts.car[k]) > 0) - { - if (diff <= (sp_intercepts.car[nextk] - sp_intercepts.car[jplus1])) - { - sp_intercepts.car[j] -= diff/2; - sp_intercepts.car[k] += diff/2; - if (diff & 1) - { - if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) + - (ufix16)(sp_intercepts.inttype[k] & FRACTION) > sp_intercepts.fracpix) - sp_intercepts.car[j]--; - else - sp_intercepts.car[k]++; - } - } - else - { - diff = sp_intercepts.car[nextk] - sp_intercepts.car[jplus1]; - sp_intercepts.car[nextk] -= diff/2; - sp_intercepts.car[jplus1] += diff/2; - if (diff & 1) - { - if ((ufix16)(sp_intercepts.inttype[jplus1] & FRACTION) + - (ufix16)(sp_intercepts.inttype[nextk] & FRACTION) > sp_intercepts.fracpix) - sp_intercepts.car[nextk]--; - else - sp_intercepts.car[jplus1]++; - } - } - } - break; - } - k = nextk; - } - } - if (j > 0 && sp_intercepts.car[j-1] > sp_intercepts.car[i] && !(sp_intercepts.inttype[j-1] & END_INT)) - { - diff = sp_intercepts.car[j-1] - sp_intercepts.car[i]; - sp_intercepts.car[i] += diff/2; - sp_intercepts.car[j-1] -= diff/2; - if (diff & 1) - { - if ((ufix16)(sp_intercepts.inttype[i] & FRACTION) + (ufix16)(sp_intercepts.inttype[j-1] & FRACTION) > sp_intercepts.fracpix) - sp_intercepts.car[i]++; - else - sp_intercepts.car[j-1]--; - } - } - if (sp_intercepts.car[i+1] < sp_intercepts.car[j] && !(sp_intercepts.inttype[i] & END_INT)) - { - diff = sp_intercepts.car[j] - sp_intercepts.car[i+1]; - sp_intercepts.car[j] -= diff/2; - sp_intercepts.car[i+1] += diff/2; - if (diff & 1) - { - if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) + (ufix16)(sp_intercepts.inttype[i+1] & FRACTION) > sp_intercepts.fracpix) - sp_intercepts.car[i+1]++; - else - sp_intercepts.car[j]--; - } - - } - previ = i; - } - i = sp_intercepts.cdr[i]; - } - } - -#if DEBUG -printf("\nPROC_INTERCEPTS_SCREEN: Intercept lists after:\n"); -/* Print out all of the intercept info */ -scan_line = sp_globals.ymax - first_y - 1; - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++) - { - i = y; /* Index head of intercept list */ - while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */ - { - if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0) - from = 0; /* Clip to sp_globals.xmin boundary */ - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - if (i == 0) /* End of list? */ - { - printf("****** proc_intercepts: odd number of intercepts\n"); - break; - } - if ((to = sp_intercepts.car[i]) > sp_globals.xmax) - to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */ - else - to -= sp_globals.xmin; - printf(" Y = %2d (scanline %2d): %d %d:\n", - y + sp_globals.y_band.band_min, scan_line, from, to); - } - } -#endif - -/* INTERCEPTS ALL PATCHED, NOW DRAW THE IMAGE */ -scan_line = sp_globals.ymax - first_y - 1; - -for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++) - { - i = sp_intercepts.cdr[y]; /* Index head of intercept list */ - while (i != 0) /* Link to next intercept if present */ - { - from = sp_intercepts.car[i]; - i = sp_intercepts.cdr[i]; /* Link to next intercept */ - to = sp_intercepts.car[i]; -#if INCL_CLIPPING - if (clipleft) - { - if (to <= xmin) - { - i = sp_intercepts.cdr[i]; - continue; - } - if (from < xmin) - from = xmin; - } - if (clipright) - { - if (from >= xmax) - { - i = sp_intercepts.cdr[i]; - continue; - } - if (to > xmax) - to = xmax; - } -#endif - set_bitmap_bits(scan_line, from-sp_globals.xmin, to-sp_globals.xmin); - i = sp_intercepts.cdr[i]; - } - } -} - -#endif diff --git a/nx-X11/lib/font/Speedo/out_util.c b/nx-X11/lib/font/Speedo/out_util.c deleted file mode 100644 index 1712410..0000000 --- a/nx-X11/lib/font/Speedo/out_util.c +++ /dev/null @@ -1,341 +0,0 @@ -/* $Xorg: out_util.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/out_util.c,v 1.2 1999/02/07 06:18:17 dawes Exp $ */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#define DEBUG 0 - -/*************************** O U T _ U T I L . C ***************************** - * * - * This is a utility module share by all bitmap output modules * - * * - *****************************************************************************/ - - -#include "spdo_prv.h" /* General definitions for Speedo */ -/* absolute value function */ -#define ABS(X) ( (X < 0) ? -X : X) -#if INCL_BLACK || INCL_2D || INCL_SCREEN - -FUNCTION void init_char_out( -GDECL -point_t Psw, point_t Pmin, point_t Pmax) -{ -sp_globals.set_width.x = (fix31)Psw.x << sp_globals.poshift; -sp_globals.set_width.y = (fix31)Psw.y << sp_globals.poshift; -set_first_band_out(Pmin, Pmax); -init_intercepts_out(); -if (sp_globals.normal) - { - sp_globals.bmap_xmin = Pmin.x; - sp_globals.bmap_xmax = Pmax.x; - sp_globals.bmap_ymin = Pmin.y; - sp_globals.bmap_ymax = Pmax.y; - sp_globals.extents_running = FALSE; - } -else - { - sp_globals.bmap_xmin = 32000; - sp_globals.bmap_xmax = -32000; - sp_globals.bmap_ymin = 32000; - sp_globals.bmap_ymax = -32000; - sp_globals.extents_running = TRUE; - } -sp_globals.first_pass = TRUE; -} - -FUNCTION void begin_sub_char_out( -GDECL -point_t Psw, -point_t Pmin, -point_t Pmax) -/* Called at the start of each sub-character in a composite character - */ -{ -#if DEBUG -printf("BEGIN_SUB_CHAR_out(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n", - (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix, - (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix, - (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix); -#endif -restart_intercepts_out(); -if (!sp_globals.extents_running) - { - sp_globals.bmap_xmin = 32000; - sp_globals.bmap_xmax = -32000; - sp_globals.bmap_ymin = 32000; - sp_globals.bmap_ymax = -32000; - sp_globals.extents_running = TRUE; - } -} - -FUNCTION void curve_out( -GDECL -point_t P1, point_t P2, point_t P3, -fix15 depth) -/* Called for each curve in the transformed character if curves out enabled - */ -{ -#if DEBUG -printf("CURVE_OUT(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n", - (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, - (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix, - (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix); -#endif -} - - - -FUNCTION void end_contour_out() -GDECL -/* Called after the last vector in each contour - */ -{ -#if DEBUG -printf("END_CONTOUR_OUT()\n"); -#endif -} - - -FUNCTION void end_sub_char_out() -GDECL -/* Called after the last contour in each sub-character in a compound character - */ -{ -#if DEBUG -printf("END_SUB_CHAR_OUT()\n"); -#endif -} - - -FUNCTION void init_intercepts_out() -GDECL -/* Called to initialize intercept storage data structure - */ - -{ -fix15 i; -fix15 no_lists; - -#if DEBUG -printf(" Init intercepts (Y band from %d to %d)\n", sp_globals.y_band.band_min, sp_globals.y_band.band_max); -if (sp_globals.x_scan_active) - printf(" (X band from %d to %d)\n", sp_globals.x_band.band_min, sp_globals.x_band.band_max); -#endif - -sp_globals.intercept_oflo = FALSE; - -sp_globals.no_y_lists = sp_globals.y_band.band_max - sp_globals.y_band.band_min + 1; -#if INCL_2D -if (sp_globals.output_mode == MODE_2D) - { - sp_globals.no_x_lists = sp_globals.x_scan_active ? - sp_globals.x_band.band_max - sp_globals.x_band.band_min + 1 : 0; - no_lists = sp_globals.no_y_lists + sp_globals.no_x_lists; - } -else -#endif - no_lists = sp_globals.no_y_lists; - -#if INCL_2D -sp_globals.y_band.band_floor = 0; -sp_globals.y_band.band_ceiling = sp_globals.no_y_lists; -#endif - -if (no_lists >= MAX_INTERCEPTS) /* Not enough room for list table? */ - { - no_lists = sp_globals.no_y_lists = MAX_INTERCEPTS; - sp_globals.intercept_oflo = TRUE; - sp_globals.y_band.band_min = sp_globals.y_band.band_max - sp_globals.no_y_lists + 1; -#if INCL_2D - sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min; - sp_globals.y_band.band_ceiling = sp_globals.no_y_lists; - sp_globals.no_x_lists = 0; - sp_globals.x_scan_active = FALSE; -#endif - } - -for (i = 0; i < no_lists; i++) /* For each active value... */ - { -#if INCL_SCREEN - if (sp_globals.output_mode == MODE_SCREEN) - sp_intercepts.inttype[i]=0; -#endif - sp_intercepts.cdr[i] = 0; /* Mark each intercept list empty */ - } - -sp_globals.first_offset = sp_globals.next_offset = no_lists; - -#if INCL_2D -sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min; -sp_globals.x_band.band_array_offset = sp_globals.x_band.band_min - sp_globals.no_y_lists; -sp_globals.x_band.band_floor = sp_globals.no_y_lists; -sp_globals.x_band.band_ceiling = no_lists; -#endif -#if INCL_SCREEN -sp_intercepts.inttype[sp_globals.no_y_lists-1] = END_INT; -#endif - -} - - -FUNCTION void restart_intercepts_out() -GDECL - -/* Called by sp_make_char when a new sub character is started - * Freezes current sorted lists - */ - -{ - -#if DEBUG -printf(" Restart intercepts:\n"); -#endif -sp_globals.first_offset = sp_globals.next_offset; -} - - - -FUNCTION void set_first_band_out( -GDECL -point_t Pmin, -point_t Pmax) -{ - -sp_globals.ymin = Pmin.y; -sp_globals.ymax = Pmax.y; - -sp_globals.ymin = (sp_globals.ymin - sp_globals.onepix + 1) >> sp_globals.pixshift; -sp_globals.ymax = (sp_globals.ymax + sp_globals.onepix - 1) >> sp_globals.pixshift; - -#if INCL_CLIPPING - switch(sp_globals.tcb0.xtype) - { - case 1: /* 180 degree rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - sp_globals.clip_ymin = -1* sp_globals.clip_ymin; - if (sp_globals.ymin < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - if (sp_globals.ymax > sp_globals.clip_ymax) - sp_globals.ymax = sp_globals.clip_ymax; - } - break; - case 2: /* 90 degree rotation */ - sp_globals.clip_ymax = 0; - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - break; - case 3: /* 270 degree rotation */ - sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16); - if ((sp_globals.specs.flags & CLIP_TOP) && - (sp_globals.ymax > sp_globals.clip_ymax)) - sp_globals.ymax = sp_globals.clip_ymax; - sp_globals.clip_ymin = 0; - if ((sp_globals.specs.flags & CLIP_BOTTOM) && - (sp_globals.ymin < sp_globals.clip_ymin)) - sp_globals.ymin = sp_globals.clip_ymin; - break; - default: /* this is for zero degree rotation and arbitrary rotation */ - if (sp_globals.specs.flags & CLIP_TOP) - { - sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift; - if (sp_globals.ymax > sp_globals.clip_ymax) - sp_globals.ymax = sp_globals.clip_ymax; - } - if (sp_globals.specs.flags & CLIP_BOTTOM) - { - sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2)); - sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift; - sp_globals.clip_ymin = - sp_globals.clip_ymin; - if (sp_globals.ymin < sp_globals.clip_ymin) - sp_globals.ymin = sp_globals.clip_ymin; - } - break; - } -#endif -sp_globals.y_band.band_min = sp_globals.ymin; -sp_globals.y_band.band_max = sp_globals.ymax - 1; - -sp_globals.xmin = (Pmin.x + sp_globals.pixrnd) >> sp_globals.pixshift; -sp_globals.xmax = (Pmax.x + sp_globals.pixrnd) >> sp_globals.pixshift; - - -#if INCL_2D -sp_globals.x_band.band_min = sp_globals.xmin - 1; /* subtract one pixel of "safety margin" */ -sp_globals.x_band.band_max = sp_globals.xmax /* - 1 + 1 */; /* Add one pixel of "safety margin" */ -#endif -} - - - - - - - -FUNCTION void reduce_band_size_out() -GDECL -{ -sp_globals.y_band.band_min = sp_globals.y_band.band_max - ((sp_globals.y_band.band_max - sp_globals.y_band.band_min) >> 1); -#if INCL_2D -sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min; -#endif -} - - -FUNCTION boolean next_band_out() -GDECL -{ -fix15 tmpfix15; - -if (sp_globals.y_band.band_min <= sp_globals.ymin) - return FALSE; -tmpfix15 = sp_globals.y_band.band_max - sp_globals.y_band.band_min; -sp_globals.y_band.band_max = sp_globals.y_band.band_min - 1; -sp_globals.y_band.band_min = sp_globals.y_band.band_max - tmpfix15; -if (sp_globals.y_band.band_min < sp_globals.ymin) - sp_globals.y_band.band_min = sp_globals.ymin; -#if INCL_2D -sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min; -#endif -return TRUE; -} -#endif - diff --git a/nx-X11/lib/font/Speedo/reset.c b/nx-X11/lib/font/Speedo/reset.c deleted file mode 100644 index 4cb9f7d..0000000 --- a/nx-X11/lib/font/Speedo/reset.c +++ /dev/null @@ -1,131 +0,0 @@ -/* $Xorg: reset.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/reset.c,v 1.2 1999/02/07 06:18:17 dawes Exp $ */ - - - -/******************************* R E S E T . C ******************************* - * * - * This module provides initialization functions. * - * * - ****************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for Speedo */ -#include "keys.h" /* Font decryption keys */ - -#define DEBUG 0 - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - - -FUNCTION void reset() -GDECL -/* - * Called by the host software to intialize the Speedo mechanism - */ -{ -sp_globals.specs_valid = FALSE; /* Flag specs not valid */ - -/* Reset decryption key */ -sp_globals.key32 = (KEY3 << 8) | KEY2; -sp_globals.key4 = KEY4; -sp_globals.key6 = KEY6; -sp_globals.key7 = KEY7; -sp_globals.key8 = KEY8; - -#if INCL_RULES -sp_globals.constr.font_id_valid = FALSE; -#endif - -#if INCL_MULTIDEV -#if INCL_BLACK || INCL_SCREEN || INCL_2D -sp_globals.bitmap_device_set = FALSE; -#endif -#if INCL_OUTLINE -sp_globals.outline_device_set = FALSE; -#endif -#endif -} - -#if INCL_KEYS -FUNCTION void set_key( -GDECL -ufix8 key[]) /* Specified decryption key */ -/* - * Dynamically sets font decryption key. - */ -{ -sp_globals.key32 = ((ufix16)key[3] << 8) | key[2]; -sp_globals.key4 = key[4]; -sp_globals.key6 = key[6]; -sp_globals.key7 = key[7]; -sp_globals.key8 = key[8]; -} -#endif - - - -FUNCTION ufix16 get_cust_no( -GDECL -buff_t font_buff) -/* - returns customer number from font -*/ -{ -ufix8 FONTFAR *hdr2_org; -ufix16 private_off; - -private_off = read_word_u(font_buff.org + FH_HEDSZ); -if (private_off + FH_CUSNR > font_buff.no_bytes) - { - report_error(1); /* Insufficient font data loaded */ - return FALSE; - } - -hdr2_org = font_buff.org + private_off; - -return (read_word_u(hdr2_org + FH_CUSNR)); -} - - diff --git a/nx-X11/lib/font/Speedo/set_spcs.c b/nx-X11/lib/font/Speedo/set_spcs.c deleted file mode 100644 index b69b13f..0000000 --- a/nx-X11/lib/font/Speedo/set_spcs.c +++ /dev/null @@ -1,773 +0,0 @@ -/* $Xorg: set_spcs.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/set_spcs.c,v 1.3 2001/01/17 19:43:17 dawes Exp $ */ - - -/*************************** S E T _ S P C S . C ***************************** - * * - * This module implements all sp_set_specs() functionality. * - * * - ****************************************************************************/ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#define SET_SPCS -#include "spdo_prv.h" /* General definitions for Speedo */ -#include "keys.h" - -#define DEBUG 0 - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/****** EXTERNAL VARIABLES *****/ - -/***** STATIC VARIABLES *****/ - - -/****** STATIC FUNCTIONS *****/ - -static boolean sp_setup_consts(PROTO_DECL2 fix15 xmin, fix15 xmax, - fix15 ymin, fix15 ymax); -static void sp_setup_tcb(PROTO_DECL2 tcb_t GLOBALFAR *ptcb); -static fix15 sp_setup_mult(PROTO_DECL2 fix31 input_mult); -static fix31 sp_setup_offset(PROTO_DECL2 fix31 input_offset); - - - -FUNCTION boolean set_specs( -GDECL -specs_t STACKFAR *specsarg) /* Bundle of conversion specifications */ -/* - * Called by host software to set character generation specifications - */ -{ -fix31 offcd; /* Offset to start of character directory */ -fix31 ofcns; /* Offset to start of constraint data */ -fix31 cd_size; /* Size of character directory */ -fix31 no_bytes_min; /* Min number of bytes in font buffer */ -ufix16 font_id; /* Font ID */ -ufix16 private_off; /* offset to private header */ -fix15 xmin; /* Minimum X ORU value in font */ -fix15 xmax; /* Maximum X ORU value in font */ -fix15 ymin; /* Minimum Y ORU value in font */ -fix15 ymax; /* Maximum Y ORU value in font */ - -sp_globals.specs_valid = FALSE; /* Flag specs not valid */ - -sp_globals.specs = *specsarg; /* copy specs structure into sp_globals */ -sp_globals.pspecs = &sp_globals.specs; -sp_globals.font = *sp_globals.pspecs->pfont; -sp_globals.pfont = &sp_globals.font; -sp_globals.font_org = sp_globals.font.org; - -if (read_word_u(sp_globals.font_org + FH_FMVER + 4) != 0x0d0a) - { - report_error(4); /* Font format error */ - return FALSE; - } -if (read_word_u(sp_globals.font_org + FH_FMVER + 6) != 0x0000) - { - report_error(4); /* Font format error */ - return FALSE; - } - -if (get_cust_no(*specsarg->pfont) == 0) - { - sp_globals.key32 = 0; - sp_globals.key4 = 0; - sp_globals.key6 = 0; - sp_globals.key7 = 0; - sp_globals.key8 = 0; - } -else - { - sp_globals.key32 = (KEY3 << 8) | KEY2; - sp_globals.key4 = KEY4; - sp_globals.key6 = KEY6; - sp_globals.key7 = KEY7; - sp_globals.key8 = KEY8; - } - - -sp_globals.no_chars_avail = read_word_u(sp_globals.font_org + FH_NCHRF); - -/* Read sp_globals.orus per em from font header */ -sp_globals.orus_per_em = read_word_u(sp_globals.font_org + FH_ORUPM); - -/* compute address of private header */ -private_off = read_word_u(sp_globals.font_org + FH_HEDSZ); -sp_globals.hdr2_org = sp_globals.font_org + private_off; - -/* set metric resolution if specified, default to outline res otherwise */ -if (private_off > EXP_FH_METRES) - { - sp_globals.metric_resolution = read_word_u(sp_globals.font_org + EXP_FH_METRES); - } -else - { - sp_globals.metric_resolution = sp_globals.orus_per_em; - } - -#if INCL_METRICS -sp_globals.kern.tkorg = sp_globals.font_org + read_long(sp_globals.hdr2_org + FH_OFFTK); -sp_globals.kern.pkorg = sp_globals.font_org + read_long(sp_globals.hdr2_org + FH_OFFPK); -sp_globals.kern.no_tracks = read_word_u(sp_globals.font_org + FH_NKTKS); -sp_globals.kern.no_pairs = read_word_u(sp_globals.font_org + FH_NKPRS); -#endif - -offcd = read_long(sp_globals.hdr2_org + FH_OFFCD); /* Read offset to character directory */ -ofcns = read_long(sp_globals.hdr2_org + FH_OFCNS); /* Read offset to constraint data */ -cd_size = ofcns - offcd; -if ((((sp_globals.no_chars_avail << 1) + 3) != cd_size) && - (((sp_globals.no_chars_avail * 3) + 4) != cd_size)) - { - report_error(4); /* Font format error */ - return FALSE; - } - -#if INCL_LCD /* Dynamic character data load suppoorted? */ -#if INCL_METRICS -no_bytes_min = read_long(sp_globals.hdr2_org + FH_OCHRD); /* Offset to character data */ -#else /* Dynamic character data load not supported? */ -no_bytes_min = read_long(sp_globals.hdr2_org + FH_OFFTK); /* Offset to track kerning data */ -#endif -#else /* Dynamic character data load not supported? */ -no_bytes_min = read_long(sp_globals.hdr2_org + FH_NBYTE); /* Offset to EOF + 1 */ -#endif - -sp_globals.font_buff_size = sp_globals.pfont->no_bytes; -if (sp_globals.font_buff_size < no_bytes_min) /* Minimum data not loaded? */ - { - report_error(1); /* Insufficient font data loaded */ - return FALSE; - } - -sp_globals.pchar_dir = sp_globals.font_org + offcd; -sp_globals.first_char_idx = read_word_u(sp_globals.font_org + FH_FCHRF); - -/* Register font name with sp_globals.constraint mechanism */ -#if INCL_RULES -font_id = read_word_u(sp_globals.font_org + FH_FNTID); -if (!(sp_globals.constr.font_id_valid) || (sp_globals.constr.font_id != font_id)) - { - sp_globals.constr.font_id = font_id; - sp_globals.constr.font_id_valid = TRUE; - sp_globals.constr.data_valid = FALSE; - } -sp_globals.constr.org = sp_globals.font_org + ofcns; -sp_globals.constr.active = ((sp_globals.pspecs->flags & CONSTR_OFF) == 0); -#endif - -/* Set up sliding point constants */ -/* Set pixel shift to accomodate largest transformed pixel value */ -xmin = read_word_u(sp_globals.font_org + FH_FXMIN); -xmax = read_word_u(sp_globals.font_org + FH_FXMAX); -ymin = read_word_u(sp_globals.font_org + FH_FYMIN); -ymax = read_word_u(sp_globals.font_org + FH_FYMAX); - -if (!sp_setup_consts(xmin,xmax,ymin,ymax)) - { - report_error(3); /* Requested specs out of range */ - return FALSE; - } -#if INCL_ISW -/* save the value of the max x oru that the fixed point constants are based on*/ -sp_globals.isw_xmax = xmax; -#endif - -/* Setup transformation control block */ -sp_setup_tcb(&sp_globals.tcb0); - - -/* Select output module */ -sp_globals.output_mode = sp_globals.pspecs->flags & 0x0007; - -#if INCL_USEROUT -if (!init_userout(sp_globals.pspecs)) -#endif - -switch (sp_globals.output_mode) - { -#if INCL_BLACK -case MODE_BLACK: /* Output mode 0 (Black writer) */ - sp_globals.init_out = sp_init_black; - sp_globals.begin_char = sp_begin_char_black; - sp_globals.begin_sub_char = sp_begin_sub_char_out; - sp_globals.begin_contour = sp_begin_contour_black; - sp_globals.curve = sp_curve_out; - sp_globals.line = sp_line_black; - sp_globals.end_contour = sp_end_contour_out; - sp_globals.end_sub_char = sp_end_sub_char_out; - sp_globals.end_char = sp_end_char_black; - break; -#endif - -#if INCL_SCREEN -case MODE_SCREEN: /* Output mode 1 (Screen writer) */ - sp_globals.init_out = sp_init_screen; - sp_globals.begin_char = sp_begin_char_screen; - sp_globals.begin_sub_char = sp_begin_sub_char_out; - sp_globals.begin_contour = sp_begin_contour_screen; - sp_globals.curve = sp_curve_screen; - sp_globals.line = sp_line_screen; - sp_globals.end_contour = sp_end_contour_screen; - sp_globals.end_sub_char = sp_end_sub_char_out; - sp_globals.end_char = sp_end_char_screen; - break; -#endif - -#if INCL_OUTLINE -case MODE_OUTLINE: /* Output mode 2 (Vector) */ - sp_globals.init_out = sp_init_outline; - sp_globals.begin_char = sp_begin_char_outline; - sp_globals.begin_sub_char = sp_begin_sub_char_outline; - sp_globals.begin_contour = sp_begin_contour_outline; - sp_globals.curve = sp_curve_outline; - sp_globals.line = sp_line_outline; - sp_globals.end_contour = sp_end_contour_outline; - sp_globals.end_sub_char = sp_end_sub_char_outline; - sp_globals.end_char = sp_end_char_outline; - break; -#endif - -#if INCL_2D -case MODE_2D: /* Output mode 3 */ - sp_globals.init_out = sp_init_2d; - sp_globals.begin_char = sp_begin_char_2d; - sp_globals.begin_sub_char = sp_begin_sub_char_out; - sp_globals.begin_contour = sp_begin_contour_2d; - sp_globals.curve = sp_curve_out; - sp_globals.line = sp_line_2d; - sp_globals.end_contour = sp_end_contour_out; - sp_globals.end_sub_char = sp_end_sub_char_out; - sp_globals.end_char = sp_end_char_2d; - break; -#endif - -default: - report_error(8); /* Unsupported mode requested */ - return FALSE; - } - - if (!fn_init_out(sp_globals.pspecs)) - { - report_error(5); - return FALSE; - } - - -sp_globals.curves_out = sp_globals.pspecs->flags & CURVES_OUT; - -if (sp_globals.pspecs->flags & BOGUS_MODE) /* Linear transformation requested? */ - { - sp_globals.tcb0.xtype = sp_globals.tcb0.ytype = 4; - } -else /* Intelligent transformation requested? */ - { -#if INCL_RULES -#else - report_error(7); /* Rules requested; not supported */ - return FALSE; -#endif - } - -if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) || - (sp_globals.pspecs->flags & SQUEEZE_RIGHT) || - (sp_globals.pspecs->flags & SQUEEZE_TOP) || - (sp_globals.pspecs->flags & SQUEEZE_BOTTOM) ) - { -#if (INCL_SQUEEZING) -#else - report_error(11); - return FALSE; -#endif - } - -if ((sp_globals.pspecs->flags & CLIP_LEFT) || - (sp_globals.pspecs->flags & CLIP_RIGHT) || - (sp_globals.pspecs->flags & CLIP_TOP) || - (sp_globals.pspecs->flags & CLIP_BOTTOM) ) - { -#if (INCL_CLIPPING) -#else - report_error(11); - return FALSE; -#endif - } - -sp_globals.specs_valid = TRUE; -return TRUE; -} - - - -#if INCL_MULTIDEV -#if INCL_BLACK || INCL_SCREEN || INCL_2D -FUNCTION boolean set_bitmap_device( -GDECL -bitmap_t *bfuncs, -ufix16 size) -{ - -if (size != sizeof(sp_globals.bitmap_device)) - return FALSE; - -sp_globals.bitmap_device = *bfuncs; -sp_globals.bitmap_device_set = TRUE; -} -#endif - -#if INCL_OUTLINE -FUNCTION boolean set_outline_device( -GDECL -outline_t *ofuncs, -ufix16 size) -{ - -if (size != sizeof(sp_globals.outline_device)) - return FALSE; - -sp_globals.outline_device = *ofuncs; -sp_globals.outline_device_set = TRUE; -} -#endif -#endif - - -#ifdef old -FUNCTION boolean sp_setup_consts( -GDECL -fix15 xmin, /* Minimum X ORU value in font */ -fix15 xmax, /* Maximum X ORU value in font */ -fix15 ymin, /* Minimum Y ORU value in font */ -fix15 ymax) /* Maximum Y ORU value in font */ -#else -static FUNCTION boolean sp_setup_consts( -GDECL -fix15 xmin, /* Minimum X ORU value in font */ -fix15 xmax, /* Maximum X ORU value in font */ -fix15 ymin, /* Minimum Y ORU value in font */ -fix15 ymax) /* Maximum Y ORU value in font */ -#endif -/* - * Sets the following constants used for fixed point arithmetic: - * sp_globals.multshift multipliers and products; range is 14 to 8 - * sp_globals.pixshift pixels: range is 0 to 8 - * sp_globals.mpshift shift from product to sub-pixels (sp_globals.multshift - sp_globals.pixshift) - * sp_globals.multrnd rounding for products - * sp_globals.pixrnd rounding for pixels - * sp_globals.mprnd rounding for sub-pixels - * sp_globals.onepix 1 pixel in shifted pixel units - * sp_globals.pixfix mask to eliminate fractional bits of shifted pixels - * sp_globals.depth_adj curve splitting depth adjustment - * Returns FALSE if specs are out of range - */ -{ -fix31 mult; /* Successive multiplier values */ -ufix32 num; /* Numerator of largest multiplier value */ -ufix32 numcopy; /* Copy of numerator */ -ufix32 denom; /* Denominator of largest multiplier value */ -ufix32 denomcopy; /* Copy of denominator */ -ufix32 pix_max; /* Maximum pixel rounding error */ -fix31 xmult; /* Coefficient of X oru value in transformation */ -fix31 ymult; /* Coefficient of Y oru value in transformation */ -fix31 offset; /* Constant in transformation */ -fix15 i; /* Loop counter */ -fix15 x, y; /* Successive corners of bounding box in ORUs */ -fix31 pixval; /* Successive pixel values multiplied by orus per em */ -fix15 xx = 0, yy = 0;/* Bounding box corner that produces max pixel value */ - -/* Determine numerator and denominator of largest multiplier value */ -mult = sp_globals.pspecs->xxmult >> 16; -if (mult < 0) - mult = -mult; -num = mult; - -mult = sp_globals.pspecs->xymult >> 16; -if (mult < 0) - mult = -mult; -if (mult > num) - num = mult; - -mult = sp_globals.pspecs->yxmult >> 16; -if (mult < 0) - mult = -mult; -if (mult > num) - num = mult; - -mult = sp_globals.pspecs->yymult >> 16; -if (mult < 0) - mult = -mult; -if (mult > num) - num = mult; -num++; /* Max absolute pixels per em (rounded up) */ -denom = (ufix32)sp_globals.orus_per_em; - -/* Set curve splitting depth adjustment to accomodate largest multiplier value */ -sp_globals.depth_adj = 0; /* 0 = 0.5 pel, 1 = 0.13 pel, 2 = 0.04 pel accuracy */ -denomcopy = denom; -/* The following two occurances of a strange method of shifting twice by 1 - are intentional and should not be changed to a single shift by 2. - It prevents MicroSoft C 5.1 from generating functions calls to do the shift. - Worse, using the REENTRANT_ALLOC option in conjunction with the /AC compiler - option, the function appears to be called incorrectly, causing depth_adj to always - be set to -7, causing very angular characters. */ - -while ((num > denomcopy) && (sp_globals.depth_adj < 5)) /* > 1, 4, 16, ... pixels per oru? */ - { - denomcopy <<= 1; - denomcopy <<= 1; - sp_globals.depth_adj++; /* Add 1, 2, 3, ... to depth adjustment */ - } -numcopy = num << 2; -while ((numcopy <= denom) && (sp_globals.depth_adj > -4)) /* <= 1/4, 1/16, 1/64 pix per oru? */ - { - numcopy <<= 1; - numcopy <<= 1; - sp_globals.depth_adj--; /* Subtract 1, 2, 3, ... from depth adjustment */ - } -SHOW(sp_globals.depth_adj); - -/* Set multiplier shift to accomodate largest multiplier value */ -sp_globals.multshift = 14; -numcopy = num; -while (numcopy >= denom) /* More than 1, 2, 4, ... pix per oru? */ - { - numcopy >>= 1; - sp_globals.multshift--; /* sp_globals.multshift is 13, 12, 11, ... */ - } - -sp_globals.multrnd = ((fix31)1 << sp_globals.multshift) >> 1; -SHOW(sp_globals.multshift); - - -pix_max = (ufix32)( 0xffff & read_word_u(sp_globals.hdr2_org + FH_PIXMX)); - -num = 0; -xmult = ((sp_globals.pspecs->xxmult >> 16) + 1) >> 1; -ymult = ((sp_globals.pspecs->xymult >> 16) + 1) >> 1; -offset = ((sp_globals.pspecs->xoffset >> 16) + 1) >> 1; -for (i = 0; i < 8; i++) - { - if (i == 4) - { - xmult = ((sp_globals.pspecs->yxmult >> 16) + 1) >> 1; - ymult = ((sp_globals.pspecs->yymult >> 16) + 1) >> 1; - offset = ((sp_globals.pspecs->yoffset >> 16) + 1) >> 1; - } - x = (i & BIT1)? xmin: xmax; - y = (i & BIT0)? ymin: ymax; - pixval = (fix31)x * xmult + (fix31)y * ymult + offset * denom; - if (pixval < 0) - pixval = -pixval; - if (pixval > num) - { - num = pixval; - xx = x; - yy = y; - } - } -if (xx < 0) - xx = -xx; -if (yy < 0) - yy = -yy; -num += xx + yy + ((pix_max + 2) * denom); - /* Allow (with 2:1 safety margin) for 1 pixel rounding errors in */ - /* xmult, ymult and offset values, pix_max pixel expansion */ - /* due to intelligent scaling, and */ - /* 1 pixel rounding of overall character position */ -denom = denom << 14; /* Note num is in units of half pixels times orus per em */ - -sp_globals.pixshift = -1; -while ((num <= denom) && (sp_globals.pixshift < 8)) /* Max pixels <= 32768, 16384, 8192, ... pixels? */ - { - num <<= 1; - sp_globals.pixshift++; /* sp_globals.pixshift = 0, 1, 2, ... */ - } -if (sp_globals.pixshift < 0) - return FALSE; - -SHOW(sp_globals.pixshift); -sp_globals.poshift = 16 - sp_globals.pixshift; - -sp_globals.onepix = (fix15)1 << sp_globals.pixshift; -sp_globals.pixrnd = sp_globals.onepix >> 1; -sp_globals.pixfix = ~0 << sp_globals.pixshift; - -sp_globals.mpshift = sp_globals.multshift - sp_globals.pixshift; -if (sp_globals.mpshift < 0) - return FALSE; -sp_globals.mprnd = ((fix31)1 << sp_globals.mpshift) >> 1; - -return TRUE; -} - -#ifdef old -FUNCTION void sp_setup_tcb( -GDECL -tcb_t GLOBALFAR *ptcb) /* Pointer to transformation control bloxk */ -#else -static FUNCTION void sp_setup_tcb( -GDECL -tcb_t GLOBALFAR *ptcb) /* Pointer to transformation control bloxk */ -#endif -/* - * Convert transformation coeffs to internal form - */ -{ - -ptcb->xxmult = sp_setup_mult(sp_globals.pspecs->xxmult); -ptcb->xymult = sp_setup_mult(sp_globals.pspecs->xymult); -ptcb->xoffset = sp_setup_offset(sp_globals.pspecs->xoffset); -ptcb->yxmult = sp_setup_mult(sp_globals.pspecs->yxmult); -ptcb->yymult = sp_setup_mult(sp_globals.pspecs->yymult); -ptcb->yoffset = sp_setup_offset(sp_globals.pspecs->yoffset); - -SHOW(ptcb->xxmult); -SHOW(ptcb->xymult); -SHOW(ptcb->xoffset); -SHOW(ptcb->yxmult); -SHOW(ptcb->yymult); -SHOW(ptcb->yoffset); - -type_tcb(ptcb); /* Classify transformation type */ -} - -FUNCTION static fix15 sp_setup_mult( -GDECL -fix31 input_mult) /* Multiplier in input format */ -/* - * Called by sp_setup_tcb() to convert multiplier in transformation - * matrix from external to internal form. - */ -{ -fix15 imshift; /* Right shift to internal format */ -fix31 imdenom; /* Divisor to internal format */ -fix31 imrnd; /* Rounding for division operation */ - -imshift = 15 - sp_globals.multshift; -imdenom = (fix31)sp_globals.orus_per_em << imshift; -imrnd = imdenom >> 1; - -input_mult >>= 1; -if (input_mult >= 0) - return (fix15)((input_mult + imrnd) / imdenom); -else - return -(fix15)((-input_mult + imrnd) / imdenom); -} - -FUNCTION static fix31 sp_setup_offset( -GDECL -fix31 input_offset) /* Multiplier in input format */ -/* - * Called by sp_setup_tcb() to convert offset in transformation - * matrix from external to internal form. - */ -{ -fix15 imshift; /* Right shift to internal format */ -fix31 imrnd; /* Rounding for right shift operation */ - -imshift = 15 - sp_globals.multshift; -imrnd = ((fix31)1 << imshift) >> 1; - -return (((input_offset >> 1) + imrnd) >> imshift) + sp_globals.mprnd; -} - -FUNCTION void type_tcb( -GDECL -tcb_t GLOBALFAR *ptcb) /* Pointer to transformation control bloxk */ -{ -fix15 x_trans_type; -fix15 y_trans_type; -fix15 xx_mult; -fix15 xy_mult; -fix15 yx_mult; -fix15 yy_mult; -fix15 h_pos; -fix15 v_pos; -fix15 x_ppo; -fix15 y_ppo; -fix15 x_pos; -fix15 y_pos; - -/* check for mirror image transformations */ -xx_mult = ptcb->xxmult; -xy_mult = ptcb->xymult; -yx_mult = ptcb->yxmult; -yy_mult = ptcb->yymult; - -ptcb->mirror = ((((fix31)xx_mult*(fix31)yy_mult)- - ((fix31)xy_mult*(fix31)yx_mult)) < 0) ? -1 : 1; - -if (sp_globals.pspecs->flags & BOGUS_MODE) /* Linear transformation requested? */ - { - ptcb->xtype = 4; - ptcb->ytype = 4; - - ptcb->xppo = 0; - ptcb->yppo = 0; - ptcb->xpos = 0; - ptcb->ypos = 0; - } -else /* Intelligent tranformation requested? */ - { - h_pos = ((ptcb->xoffset >> sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix; - v_pos = ((ptcb->yoffset >> sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix; - - x_trans_type = 4; - x_ppo = 0; - x_pos = 0; - - y_trans_type = 4; - y_ppo = 0; - y_pos = 0; - - if (xy_mult == 0) - { - if (xx_mult >= 0) - { - x_trans_type = 0; /* X pix is function of X orus only */ - x_ppo = xx_mult; - x_pos = h_pos; - } - else - { - x_trans_type = 1; /* X pix is function of -X orus only */ - x_ppo = -xx_mult; - x_pos = -h_pos; - } - } - - else if (xx_mult == 0) - { - if (xy_mult >= 0) - { - x_trans_type = 2; /* X pix is function of Y orus only */ - y_ppo = xy_mult; - y_pos = h_pos; - } - else - { - x_trans_type = 3; /* X pix is function of -Y orus only */ - y_ppo = -xy_mult; - y_pos = -h_pos; - } - } - - if (yx_mult == 0) - { - if (yy_mult >= 0) - { - y_trans_type = 0; /* Y pix is function of Y orus only */ - y_ppo = yy_mult; - y_pos = v_pos; - } - else - { - y_trans_type = 1; /* Y pix is function of -Y orus only */ - y_ppo = -yy_mult; - y_pos = -v_pos; - } - } - else if (yy_mult == 0) - { - if (yx_mult >= 0) - { - y_trans_type = 2; /* Y pix is function of X orus only */ - x_ppo = yx_mult; - x_pos = v_pos; - } - else - { - y_trans_type = 3; /* Y pix is function of -X orus only */ - x_ppo = -yx_mult; - x_pos = -v_pos; - } - } - - ptcb->xtype = x_trans_type; - ptcb->ytype = y_trans_type; - - ptcb->xppo = x_ppo; - ptcb->yppo = y_ppo; - ptcb->xpos = x_pos; - ptcb->ypos = y_pos; - } - -sp_globals.normal = (ptcb->xtype != 4) && (ptcb->ytype != 4); - -ptcb->xmode = 4; -ptcb->ymode = 4; - -SHOW(ptcb->xtype); -SHOW(ptcb->ytype); -SHOW(ptcb->xppo); -SHOW(ptcb->yppo); -SHOW(ptcb->xpos); -SHOW(ptcb->ypos); -} - -FUNCTION fix31 read_long( -GDECL -ufix8 FONTFAR *pointer) /* Pointer to first byte of encrypted 3-byte integer */ -/* - * Reads a 3-byte encrypted integer from the byte string starting at - * the specified point. - * Returns the decrypted value read as a signed integer. - */ -{ -fix31 tmpfix31; - -tmpfix31 = (fix31)((*pointer++) ^ sp_globals.key4) << 8; /* Read middle byte */ -tmpfix31 += (fix31)(*pointer++) << 16; /* Read most significant byte */ -tmpfix31 += (fix31)((*pointer) ^ sp_globals.key6); /* Read least significant byte */ -return tmpfix31; -} - -FUNCTION fix15 read_word_u( -GDECL -ufix8 FONTFAR *pointer) /* Pointer to first byte of unencrypted 2-byte integer */ -/* - * Reads a 2-byte unencrypted integer from the byte string starting at - * the specified point. - * Returns the decrypted value read as a signed integer. - */ -{ -fix15 tmpfix15; - -tmpfix15 = (fix15)(*pointer++) << 8; /* Read most significant byte */ -tmpfix15 += (fix15)(*pointer); /* Add least significant byte */ -return tmpfix15; -} - - diff --git a/nx-X11/lib/font/Speedo/set_trns.c b/nx-X11/lib/font/Speedo/set_trns.c deleted file mode 100644 index 3b8f603..0000000 --- a/nx-X11/lib/font/Speedo/set_trns.c +++ /dev/null @@ -1,1324 +0,0 @@ -/* $Xorg: set_trns.c,v 1.3 2000/08/17 19:46:27 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/set_trns.c,v 1.5tsi Exp $ */ - - - -/*************************** S E T _ T R N S . C ***************************** - * * - * This module is called from do_char.c to set up the intelligent * - * transformation for one character (or sub-character of a composite * - * character. - * * - ****************************************************************************/ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spdo_prv.h" /* General definitions for Speedo */ - -#define DEBUG 0 - -#if DEBUG -#include <stdio.h> -#define SHOW(X) printf("X = %d\n", X) -#else -#define SHOW(X) -#endif -/***** LOCAL MACROS *****/ - -#define SQUEEZE_X_ORU(A,B,C) ((((fix31)A * (fix31)B) + C) >> 16) -#define ABS(A) ((A < 0)? -A:A) /* absolute value */ -#define IMPORT_FACTOR \ - shift = 16;\ - while (*x_factor > (0x7fffffffL / (isw_scale >> (16 - shift))))\ - shift--;\ - *x_factor = (*x_factor * (isw_scale>>(16-shift))) >> shift; - -/***** GLOBAL VARIABLES *****/ - -/***** GLOBAL FUNCTIONS *****/ - -/***** EXTERNAL VARIABLES *****/ - -/***** EXTERNAL FUNCTIONS *****/ - -/***** STATIC VARIABLES *****/ - -/***** STATIC FUNCTIONS *****/ - -static void sp_constr_update(PROTO_DECL1); -static ufix8 FONTFAR *sp_setup_pix_table(PROTO_DECL2 ufix8 FONTFAR *pointer,boolean short_form,fix15 no_X_ctrl_zones,fix15 no_Y_ctrl_zones); -static ufix8 FONTFAR *sp_setup_int_table(PROTO_DECL2 ufix8 FONTFAR *pointer,fix15 no_X_int_zones,fix15 no_Y_int_zones); - - -FUNCTION void init_tcb() -GDECL -/* - * Called by sp_make_char() and make_comp_char() to initialize the current - * transformation control block to the top level transformation. - */ -{ -sp_globals.tcb = sp_globals.tcb0; -} - -FUNCTION void scale_tcb( -GDECL -tcb_t GLOBALFAR *ptcb, /* Transformation control block */ -fix15 x_pos, /* X position (outline res units) */ -fix15 y_pos, /* Y position (outline res units) */ -fix15 x_scale, /* X scale factor * ONE_SCALE */ -fix15 y_scale) /* Y scale factor * ONE_SCALE */ -/* - * Called by make_comp_char() to apply position and scale for each of the - * components of a compound character. - */ -{ -fix15 xx_mult = ptcb->xxmult; -fix15 xy_mult = ptcb->xymult; -fix31 x_offset = ptcb->xoffset; -fix15 yx_mult = ptcb->yxmult; -fix15 yy_mult = ptcb->yymult; -fix31 y_offset = ptcb->yoffset; - -ptcb->xxmult = TRANS(xx_mult, x_scale, (fix31)SCALE_RND, SCALE_SHIFT); -ptcb->xymult = TRANS(xy_mult, y_scale, (fix31)SCALE_RND, SCALE_SHIFT); -ptcb->xoffset = MULT16(xx_mult, x_pos) + MULT16(xy_mult, y_pos) + x_offset; -ptcb->yxmult = TRANS(yx_mult, x_scale, (fix31)SCALE_RND, SCALE_SHIFT); -ptcb->yymult = TRANS(yy_mult, y_scale, (fix31)SCALE_RND, SCALE_SHIFT); -ptcb->yoffset = MULT16(yx_mult, x_pos) + MULT16(yy_mult, y_pos) + y_offset; - -type_tcb(ptcb); /* Reclassify transformation types */ -} - -FUNCTION ufix8 FONTFAR *skip_interpolation_table( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */ -ufix8 format) /* Character format byte */ -{ -fix15 i,n; -ufix8 intsize[9]; - -intsize[0] = 1; -intsize[1] = 2; -intsize[2] = 3; -intsize[3] = 1; -intsize[4] = 2; -intsize[5] = 1; -intsize[6] = 2; -intsize[7] = 0; -intsize[8] = 0; - -n = ((format & BIT6)? (fix15)NEXT_BYTE(pointer): 0); -n += ((format & BIT7)? (fix15)NEXT_BYTE(pointer): 0); -for (i = 0; i < n; i++) /* For each entry in int table ... */ - { - format = NEXT_BYTE(pointer); /* Read format byte */ - if (format & BIT7) /* Short Start/End point spec? */ - { - pointer++; /* Skip Start/End point byte */ - } - else - { - pointer += intsize[format & 0x7]; /* Skip Start point spec */ - pointer += intsize[(format >> 3) & 0x7]; /* Skip End point spec */ - } - } -return pointer; -} -FUNCTION ufix8 FONTFAR *skip_control_zone( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */ -ufix8 format) /* Character format byte */ -{ -fix15 i,n; -ufix16 tmpufix16; - -n = sp_globals.no_X_orus + sp_globals.no_Y_orus - 2; -for (i = 0; i < n; i++) /* For each entry in control table ... */ - { - if (format & BIT4) - pointer++; /* Skip short form From/To fields */ - else - pointer += 2; /* Skip FROM and TO fields */ - /* skip constraints field */ - NEXT_BYTES (pointer, tmpufix16); - - } -return pointer; -} - -#if INCL_RULES -#else -FUNCTION ufix8 FONTFAR *plaid_tcb( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */ -ufix8 format) /* Character format byte */ -/* - * Called by make_simp_char() and make_comp_char() to set up the controlled - * coordinate table and skip all other intelligent scaling rules embedded - * in the character data. - * Updates pointer to first byte after plaid data. - * This is used only if intelligent scaling is not supported in the - * configuration definitions. - */ -{ -fix15 i, n; - - - -sp_globals.no_X_orus = (format & BIT2)? - (fix15)NEXT_BYTE(pointer): - 0; -sp_globals.no_Y_orus = (format & BIT3)? - (fix15)NEXT_BYTE(pointer): - 0; -pointer = read_oru_table(pointer); /* Updates no_X/Y/orus */ -sp_globals.Y_edge_org = sp_globals.no_X_orus; - -/* Skip over control zone table */ -pointer = skip_control_zone(pointer,format); - -/* Skip over interpolation table */ -pointer = skip_interpolation_table(pointer,format); -return pointer; -} -#endif - -#if INCL_RULES -FUNCTION ufix8 FONTFAR *plaid_tcb( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */ -ufix8 format) /* Character format byte */ -/* - * Called by make_simp_char() and make_comp_char() to set up the controlled - * coordinate table and process all intelligent scaling rules embedded - * in the character data. - * Updates pointer to first byte after plaid data. - * This is used only if intelligent scaling is enabled in the - * configuration definitions. - */ -{ -fix15 no_X_ctrl_zones; -fix15 no_Y_ctrl_zones; -fix15 no_X_int_zones; -fix15 no_Y_int_zones; - -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -begin_plaid_data(); -#endif - -sp_constr_update(); /* Update constraint table if required */ - -sp_globals.no_X_orus = (format & BIT2)? - (fix15)NEXT_BYTE(pointer): - 0; -sp_globals.no_Y_orus = (format & BIT3)? - (fix15)NEXT_BYTE(pointer): - 0; -pointer = read_oru_table(pointer); /* Updates no_X/Y/orus to include zero values */ -sp_globals.Y_edge_org = sp_globals.no_X_orus; -if (sp_globals.no_X_orus > 1) /* 2 or more controlled X coordinates? */ - sp_globals.tcb.xmode = sp_globals.tcb.xtype; /* Enable intelligent scaling in X */ - -if (sp_globals.no_Y_orus > 1) /* 2 or more controlled Y coordinates? */ - sp_globals.tcb.ymode = sp_globals.tcb.ytype; /* Enable intelligent scaling in Y */ - -no_X_ctrl_zones = sp_globals.no_X_orus - 1; -no_Y_ctrl_zones = sp_globals.no_Y_orus - 1; -pointer = sp_setup_pix_table(pointer, (boolean)(format & BIT4), - no_X_ctrl_zones, no_Y_ctrl_zones); - -no_X_int_zones = (format & BIT6)? - (fix15)NEXT_BYTE(pointer): - 0; -no_Y_int_zones = (format & BIT7)? - (fix15)NEXT_BYTE(pointer): - 0; -sp_globals.Y_int_org = no_X_int_zones; -pointer = sp_setup_int_table(pointer, no_X_int_zones, no_Y_int_zones); - -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -end_plaid_data(); -#endif - -return pointer; -} -#endif - -#if INCL_RULES -FUNCTION static void sp_constr_update() -GDECL -/* - * Called by plaid_tcb() to update the constraint table for the current - * transformation. - * This is always carried out whenever a character is generated following - * a change of font or scale factor or after initialization. - */ -{ -fix31 ppo; -fix15 xppo; -fix15 yppo; -ufix8 FONTFAR *pointer; -fix15 no_X_constr; -fix15 no_Y_constr; -fix15 i, j, k, l, n; -fix15 ppm; -ufix8 format; -ufix8 format1; -fix15 limit; -ufix16 constr_org; -fix15 constr_nr; -fix15 size; -fix31 off; -fix15 min; -fix15 orus; -fix15 pix; -ufix16 tmpufix16; /* in extended mode, macro uses secnd term */ - -if (sp_globals.constr.data_valid && /* Constr table already done and ... */ - (sp_globals.tcb.xppo == sp_globals.constr.xppo) && /* ... X pix per oru unchanged and ... */ - (sp_globals.tcb.yppo == sp_globals.constr.yppo)) /* ... Y pix per oru unchanged? */ - { - return; /* No need to update constraint table */ - } - -sp_globals.constr.xppo = xppo = sp_globals.tcb.xppo; /* Update X pixels per oru indicator */ -sp_globals.constr.yppo = yppo = sp_globals.tcb.yppo; /* Update Y pixels per oru indicator */ -sp_globals.constr.data_valid = TRUE; /* Mark constraint table valid */ - -pointer = sp_globals.constr.org; /* Point to first byte of constraint data */ -no_X_constr = NEXT_BYTES(pointer, tmpufix16); /* Read nmbr of X constraints */ -no_Y_constr = NEXT_BYTES(pointer, tmpufix16); /* Read nmbr of Y constraints */ - -i = 0; -constr_org = 0; -n = no_X_constr; -ppo = xppo; -for (j = 0; ; j++) - { - sp_globals.c_act[i] = FALSE; /* Flag constraint 0 not active */ - sp_globals.c_pix[i++] = 0; /* Constraint 0 implies no minimum */ - sp_globals.c_act[i] = FALSE; /* Flag constraint 1 not active */ - sp_globals.c_pix[i++] = sp_globals.onepix; /* Constraint 1 implies min 1 pixel*/ - ppm = (ppo * (fix31)sp_globals.orus_per_em) >> sp_globals.multshift; - for (k = 0; k < n; k++) - { - format = NEXT_BYTE(pointer); /* Read format byte */ - limit = (fix15)NEXT_BYTE(pointer); /* Read limit field */ - sp_globals.c_act[i] = - ((ppm < limit) || (limit == 255)) && - sp_globals.constr.active; - if (sp_globals.c_act[i]) /* Constraint active? */ - { - if ((format & BIT1) && /* Constraint specified and ... */ - (constr_nr = constr_org + - ((format & BIT0)? /* Read unsigned constraint value */ - NEXT_WORD(pointer): - (fix15)NEXT_BYTE(pointer)), - sp_globals.c_act[constr_nr])) /* ... and specified constraint active? */ - { - pix = sp_globals.c_pix[constr_nr]; /* Use constrained pixel value */ - format1 = format; - for (l = 2; l > 0; l--) /* Skip 2 arguments */ - { - format1 >>= 2; - if ((size = format1 & 0x03)) - pointer += size - 1; - } - } - else /* Constraint absent or inactive? */ - { - orus = (format & BIT2)? /* Read unsigned oru value */ - NEXT_WORD(pointer): - (fix15)NEXT_BYTE(pointer); - - if (format & BIT5) /* Specified offset value? */ - { - off = (fix31)((format & BIT4)? /* Read offset value */ - NEXT_WORD(pointer): - (fix7)NEXT_BYTE(pointer)); - off = (off << (sp_globals.multshift - 6)) + sp_globals.multrnd; - } - else /* Unspecified (zero) offset value? */ - { - off = sp_globals.multrnd; - } - - pix = (fix15)(((fix31)orus * ppo + off) / (1 << sp_globals.mpshift)) & sp_globals.pixfix; - } - } - else /* Constraint inactive? */ - { - format1 = format; - for (l = 3; l > 0; l--) /* Skip over 3 arguments */ - { - if ((size = format1 & 0x03)) - pointer += size - 1; - format1 >>= 2; - } - pix = 0; - } - - if (format & 0xc0) /* Specified minimum value? */ - { - min = (format & BIT7)? /* Read unsigned minimum value */ - (fix15)NEXT_BYTE(pointer) << sp_globals.pixshift: - sp_globals.onepix; - } - else /* Unspecified (zero) minimum value? */ - { - min = 0; - } - - sp_globals.c_pix[i] = (pix < min)? min: pix; - i++; - } - if (j) break; /* Finished if second time around loop */ - constr_org = sp_globals.Y_constr_org = i; - n = no_Y_constr; - ppo = yppo; - } - -#if DEBUG -printf("\nCONSTRAINT TABLE\n"); -n = no_X_constr + 2; -for (i = 0; i < n; i++) - { - printf("%3d ", i); - if (sp_globals.c_act[i]) - { - printf("T "); - } - else - { - printf("F "); - } - printf("%5.1f\n", ((real)sp_globals.c_pix[i] / (real)sp_globals.onepix)); - } -printf("--------------\n"); -n = no_Y_constr + 2; -for (i = 0; i < n; i++) - { - j = i + sp_globals.Y_constr_org; - printf("%3d ", i); - if (sp_globals.c_act[j]) - { - printf("T "); - } - else - { - printf("F "); - } - printf("%5.1f\n", ((real)sp_globals.c_pix[j] / (real)sp_globals.onepix)); - } -#endif - -} -#endif - -FUNCTION ufix8 FONTFAR *read_oru_table( -GDECL -ufix8 FONTFAR *pointer) /* Pointer to first byte in controlled coord table */ -/* - * Called by plaid_tcb() to read the controlled coordinate table from the - * character data in the font. - * Updates the pointer to the byte following the controlled coordinate - * data. - */ -{ -fix15 i, j, k, n; -boolean zero_not_in; -boolean zero_added; -fix15 oru; - -#if INCL_RULES -fix15 pos; -#endif - -i = 0; -n = sp_globals.no_X_orus; -#if INCL_RULES -pos = sp_globals.tcb.xpos; -#endif -for (j = 0; ; j++) - { - zero_not_in = TRUE; - zero_added = FALSE; - for (k = 0; k < n; k++) - { - oru = NEXT_WORD(pointer); - if (zero_not_in && (oru >= 0)) /* First positive oru value? */ - { -#if INCL_RULES - sp_plaid.pix[i] = pos; /* Insert position in pix array */ -#endif - if (oru != 0) /* Zero oru value omitted? */ - { - sp_plaid.orus[i++] = 0; /* Insert zero value in oru array */ - zero_added = TRUE; /* Remember to increment size of array */ - } - zero_not_in = FALSE; /* Inhibit further testing for zero ins */ - } - sp_plaid.orus[i++] = oru; /* Add specified oru value to array */ - } - if (zero_not_in) /* All specified oru values negative? */ - { -#if INCL_RULES - sp_plaid.pix[i] = pos; /* Insert position in pix array */ -#endif - sp_plaid.orus[i++] = 0; /* Add zero oru value */ - zero_added = TRUE; /* Remember to increment size of array */ - } - if (j) /* Both X and Y orus read? */ - break; - if (zero_added) - sp_globals.no_X_orus++; /* Increment X array size */ - n = sp_globals.no_Y_orus; /* Prepare to read Y oru values */ -#if INCL_RULES - pos = sp_globals.tcb.ypos; -#endif - } -if (zero_added) /* Zero Y oru value added to array? */ - sp_globals.no_Y_orus++; /* Increment Y array size */ - -#if DEBUG -printf("\nX ORUS\n"); -n = sp_globals.no_X_orus; -for (i = 0; i < n; i++) - { - printf("%2d %4d\n", i, sp_plaid.orus[i]); - } -printf("\nY ORUS\n"); -n = sp_globals.no_Y_orus; -for (i = 0; i < n; i++) - { - printf("%2d %4d\n", i, sp_plaid.orus[i + sp_globals.no_X_orus]); - } -#endif - -return pointer; /* Update pointer */ -} -#if INCL_SQUEEZING || INCL_ISW -FUNCTION static void calculate_x_pix( -GDECL -ufix8 start_edge, ufix8 end_edge, -ufix16 constr_nr, -fix31 x_scale, -fix31 x_offset, -fix31 ppo, -fix15 setwidth_pix) -/* - * Called by sp_setup_pix_table() when X squeezing is necessary - * to insert the correct edge in the global pix array - */ -{ -fix15 zone_pix; -fix15 start_oru, end_oru; - -/* compute scaled oru coordinates */ -start_oru= (fix15)(SQUEEZE_X_ORU(sp_plaid.orus[start_edge], x_scale, x_offset)); -end_oru = (fix15)(SQUEEZE_X_ORU(sp_plaid.orus[end_edge], x_scale, x_offset)); - -if (!sp_globals.c_act[constr_nr]) /* constraint inactive */ - { - /* calculate zone width */ - zone_pix = (fix15)(((((fix31)end_oru - (fix31)start_oru) * ppo) / - (1<<sp_globals.mpshift)) + sp_globals.pixrnd) & sp_globals.pixfix; - /* check for overflow */ - if (((end_oru-start_oru) > 0) && (zone_pix < 0)) - zone_pix = 0x7ffff; - /* check for minimum */ - if ((ABS(zone_pix)) >= sp_globals.c_pix[constr_nr]) - goto Lx; - } -/* use the zone size from the constr table - scale it */ -zone_pix = (fix15)(((SQUEEZE_MULT(x_scale,sp_globals.c_pix[constr_nr])) - + sp_globals.pixrnd) & sp_globals.pixfix); - -/* look for overflow */ -if ((sp_globals.c_pix[constr_nr] > 0) && (zone_pix < 0)) - zone_pix = 0x7fff; - -if (start_edge > end_edge) - { - zone_pix = -zone_pix; - } -Lx: -/* assign pixel value to global pix array */ -sp_plaid.pix[end_edge]=sp_plaid.pix[start_edge] + zone_pix; - -/* check for overflow */ -if (((sp_plaid.pix[start_edge] >0) && (zone_pix >0)) && - (sp_plaid.pix[end_edge] < 0)) - sp_plaid.pix[end_edge] = 0x7fff; /* set it to the max */ - -/* be sure to be in the setwidth !*/ -#if INCL_ISW -if (!sp_globals.import_setwidth_act) /* only check left edge if not isw only */ -#endif -if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) && (sp_plaid.pix[end_edge] < 0)) - sp_plaid.pix[end_edge] = 0; -if ((sp_globals.pspecs->flags & SQUEEZE_RIGHT) && - (sp_plaid.pix[end_edge] > setwidth_pix)) - sp_plaid.pix[end_edge] = setwidth_pix; - -} -#endif - -#if INCL_SQUEEZING -FUNCTION static void calculate_y_pix( -GDECL -ufix8 start_edge, ufix8 end_edge, -ufix16 constr_nr, -fix31 top_scale, fix31 bottom_scale, -fix31 ppo, -fix15 em_top_pix, fix15 em_bot_pix) - -/* - * Called by sp_setup_pix_table() when Y squeezing is necessary - * to insert the correct edge in the global pix array - */ -{ -fix15 zone_pix; -fix15 start_oru, end_oru; -fix31 zone_width, above_base, below_base; - -/* check whether edge is above or below the baseline */ -/* and apply appropriate scale factor to get scaled oru coordinates */ -if (sp_plaid.orus[start_edge] < 0) - start_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[start_edge], bottom_scale)); -else - start_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[start_edge], top_scale)); - -if (sp_plaid.orus[end_edge] < 0) - end_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[end_edge], bottom_scale)); -else - end_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[end_edge], top_scale)); - -if (!sp_globals.c_act[constr_nr]) /* Constraint inactive? */ - { - /* calculate zone width */ - zone_pix = (fix15)(((((fix31)end_oru - (fix31)start_oru) * ppo) - >> sp_globals.mpshift)+ sp_globals.pixrnd) & sp_globals.pixfix; - /* check minimum */ - if ((ABS(zone_pix)) >= sp_globals.c_pix[constr_nr]) - goto Ly; - } - -/* Use zone size from constr table */ -if ((end_oru >= 0) && (start_oru >=0)) - /* all above baseline */ - zone_pix = (fix15)(SQUEEZE_MULT(top_scale, sp_globals.c_pix[constr_nr])); -else if ((end_oru <= 0) && (start_oru <=0)) - /* all below baseline */ - zone_pix = (fix15)(SQUEEZE_MULT(bottom_scale, sp_globals.c_pix[constr_nr])); -else - { - /* mixture */ - if (start_oru > 0) - { - zone_width = start_oru - end_oru; - /* get % above baseline in 16.16 fixed point */ - above_base = (((fix31)start_oru) << 16) / - ((fix31)zone_width) ; - /* get % below baseline in 16.16 fixed point */ - below_base = (((fix31)-end_oru) << 16) / - ((fix31)zone_width) ; - } - else - { - zone_width = end_oru - start_oru; - /* get % above baseline in 16.16 fixed point */ - above_base = (((fix31)-start_oru) << 16) / - ((fix31)zone_width) ; - /* get % below baseline in 16.16 fixed point */ - below_base = (((fix31)end_oru) << 16) / - ((fix31)zone_width) ; - } - /* % above baseline * total zone * top_scale + */ - /* % below baseline * total zone * bottom_scale */ - zone_pix = ((((above_base * (fix31)sp_globals.c_pix[constr_nr]) >> 16) * - top_scale) + - (((below_base * (fix31)sp_globals.c_pix[constr_nr]) >> 16) * - bottom_scale)) >> 16; - } - -/* make this zone pix fall on a pixel boundary */ -zone_pix = (zone_pix + sp_globals.pixrnd) & sp_globals.pixfix; - -/* if minimum is in effect make the zone one pixel */ -if ((sp_globals.c_pix[constr_nr] != 0) && (zone_pix < sp_globals.onepix)) - zone_pix = sp_globals.onepix; - -if (start_edge > end_edge) - { - zone_pix = -zone_pix; /* Use negatve zone size */ - } -Ly: -/* assign global pix value */ -sp_plaid.pix[end_edge] = sp_plaid.pix[start_edge] + zone_pix; /* Insert end pixels */ - -/* make sure it is in the EM !*/ -if ((sp_globals.pspecs->flags & SQUEEZE_TOP) && - (sp_plaid.pix[end_edge] > em_top_pix)) - sp_plaid.pix[end_edge] = em_top_pix; -if ((sp_globals.pspecs->flags & SQUEEZE_BOTTOM) && - (sp_plaid.pix[end_edge] < em_bot_pix)) - sp_plaid.pix[end_edge] = em_bot_pix; -} - -FUNCTION boolean calculate_x_scale(x_factor, x_offset, no_X_ctrl_zones) -GDECL -fix31 *x_factor, -fix31 *x_offset, -fix15 no_X_ctrl_zones) /* Number of X control zones */ -/* - * Called by sp_setup_pix_table() when squeezing is included - * to determine whether X scaling is necessary. If it is, the - * scale factor and offset are computed. This function returns - * a boolean value TRUE = X squeezind is necessary, FALSE = no - * X squeezing is necessary. - */ -{ -boolean squeeze_left, squeeze_right; -boolean out_on_right, out_on_left; -fix15 bbox_width,set_width; -fix15 bbox_xmin, bbox_xmax; -fix15 x_offset_pix; -fix15 i; -#if INCL_ISW -fix31 isw_scale; -fix15 shift; -#endif - - -/* set up some flags and common calculations */ -squeeze_left = (sp_globals.pspecs->flags & SQUEEZE_LEFT)? TRUE:FALSE; -squeeze_right = (sp_globals.pspecs->flags & SQUEEZE_RIGHT)? TRUE:FALSE; -bbox_xmin = sp_globals.bbox_xmin_orus; -bbox_xmax = sp_globals.bbox_xmax_orus; -set_width = sp_globals.setwidth_orus; - -if (bbox_xmax > set_width) - out_on_right = TRUE; -else - out_on_right = FALSE; -if (bbox_xmin < 0) - out_on_left = TRUE; -else - out_on_left = FALSE; -bbox_width =bbox_xmax - bbox_xmin; - -/* - * don't need X squeezing if: - * - X squeezing not enabled - * - bbox doesn't violate on left or right - * - left squeezing only is enabled and char isn't out on left - * - right squeezing only is enabled and char isn't out on right - */ - -if ((!squeeze_left && !squeeze_right) || - (!out_on_right && !out_on_left) || - (squeeze_left && !squeeze_right && !out_on_left) || - (squeeze_right && !squeeze_left && !out_on_right)) - return FALSE; - -#if INCL_ISW -if (sp_globals.import_setwidth_act) - { - /* if both isw and squeezing is going on - let the imported */ - /* setwidth factor be factored in with the squeeze */ - isw_scale = compute_isw_scale(); - /*sp_globals.setwidth_orus = sp_globals.imported_width;*/ - } -else - isw_scale = 0x10000L; /* 1 in 16.16 notation */ -#endif - -/* squeezing on left and right ? */ -if (squeeze_left && squeeze_right) - { - /* calculate scale factor */ - if (bbox_width < set_width) - *x_factor = 0x10000L; /* 1 in 16.16 notation */ - else - *x_factor = ((fix31)set_width<<16)/(fix31)bbox_width; -#if INCL_ISW - IMPORT_FACTOR -#endif - /* calculate offset */ - if (out_on_left) /* fall out on left ? */ - *x_offset = -(fix31)*x_factor * (fix31)bbox_xmin; - /* fall out on right and I am shifting only ? */ - else if (out_on_right && (*x_factor == 0x10000L)) - *x_offset = -(fix31)*x_factor * (fix31)(bbox_xmax - set_width); - else - *x_offset = 0x0L; /* 0 in 16.16 notation */ - } -/* squeezing on left only and violates left */ -else if (squeeze_left) - { - if (bbox_width < set_width) /* will it fit if I shift it ? */ - *x_factor = 0x10000L; /* 1 in 16.16 notation */ - else if (out_on_right) - *x_factor = ((fix31)set_width<<16)/(fix31)bbox_width; - else - *x_factor = ((fix31)set_width<<16)/ - (fix31)(bbox_width - (bbox_xmax-set_width)); -#if INCL_ISW - IMPORT_FACTOR -#endif - *x_offset = (fix31)-*x_factor * (fix31)bbox_xmin; - } - -/* I must be squeezing on right, and violates right */ -else - { - if (bbox_width < set_width) /* will it fit if I shift it ? */ - { /* just shift it left - it will fit in the bbox */ - *x_factor = 0x10000L; /* 1 in 16.16 notation */ -#if INCL_ISW - IMPORT_FACTOR -#endif - *x_offset = (fix31)-*x_factor * (fix31)bbox_xmin; - } - else if (out_on_left) - { - *x_factor = ((fix31)set_width<<16)/(fix31)bbox_width; -#if INCL_ISW - IMPORT_FACTOR -#endif - *x_offset = 0x0L; /* 0 in 16.16 notation */ - } - else - { - *x_factor = ((fix31)set_width<<16)/(fix31)bbox_xmax; -#if INCL_ISW - IMPORT_FACTOR -#endif - *x_offset = 0x0L; /* 0 in 16.16 notation */ - } - } - -x_offset_pix = (fix15)(((*x_offset >> 16) * sp_globals.tcb0.xppo) - / (1<<sp_globals.mpshift)); - -if ((x_offset_pix >0) && (x_offset_pix < sp_globals.onepix)) - x_offset_pix = sp_globals.onepix; - -/* look for the first non-negative oru value, scale and add the offset */ -/* to the corresponding pixel value - note that the pixel value */ -/* is set in read_oru_table. */ - -/* look at all the X edges */ -for (i=0; i < (no_X_ctrl_zones+1); i++) - if (sp_plaid.orus[i] >= 0) - { - sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], *x_factor) - +sp_globals.pixrnd + x_offset_pix) & sp_globals.pixfix; - break; - } - -return TRUE; -} - -FUNCTION boolean calculate_y_scale( -GDECL -fix31 *top_scale, fix31 *bottom_scale, -fix15 first_Y_zone, -fix15 no_Y_ctrl_zones) -/* - * Called by sp_setup_pix_table() when squeezing is included - * to determine whether Y scaling is necessary. If it is, - * two scale factors are computed, one for above the baseline, - * and one for below the basline. - * This function returns a boolean value TRUE = Y squeezind is necessary, - * FALSE = no Y squeezing is necessary. - */ -{ -boolean squeeze_top, squeeze_bottom; -boolean out_on_top, out_on_bottom; -fix15 bbox_top, bbox_bottom; -fix15 bbox_height; -fix15 i; - -/* set up some flags and common calculations */ -squeeze_top = (sp_globals.pspecs->flags & SQUEEZE_TOP)? TRUE:FALSE; -squeeze_bottom = (sp_globals.pspecs->flags & SQUEEZE_BOTTOM)? TRUE:FALSE; -bbox_top = sp_globals.bbox_ymax_orus; -bbox_bottom = sp_globals.bbox_ymin_orus; -bbox_height = bbox_top - bbox_bottom; - -if (bbox_top > EM_TOP) - out_on_top = TRUE; -else - out_on_top = FALSE; - -if (bbox_bottom < EM_BOT) - out_on_bottom = TRUE; -else - out_on_bottom = FALSE; - -/* - * don't need Y squeezing if: - * - Y squeezing not enabled - * - bbox doesn't violate on top or bottom - * - top squeezing only is enabled and char isn't out on top - * - bottom squeezing only is enabled and char isn't out on bottom - */ -if ((!squeeze_top && !squeeze_bottom) || - (!out_on_top && !out_on_bottom) || - (squeeze_top && !squeeze_bottom && !out_on_top) || - (squeeze_bottom && !squeeze_top && !out_on_bottom)) - return FALSE; - -if (squeeze_top && (bbox_top > EM_TOP)) - *top_scale = ((fix31)EM_TOP << 16)/(fix31)(bbox_top); -else - *top_scale = 0x10000L; /* 1 in 16.16 fixed point */ - -if (squeeze_bottom && (bbox_bottom < EM_BOT)) - *bottom_scale = ((fix31)-(EM_BOT) << 16)/(fix31)-bbox_bottom; -else - *bottom_scale = 0x10000L; - -if (sp_globals.squeezing_compound) - { - for (i=first_Y_zone; i < (first_Y_zone + no_Y_ctrl_zones + 1); i++) - { - if (sp_plaid.orus[i] >= 0) - sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], *top_scale) - +sp_globals.pixrnd) & sp_globals.pixfix; - else - sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], *bottom_scale) - +sp_globals.pixrnd) & sp_globals.pixfix; - } - } -return TRUE; -} -#endif - -#if INCL_RULES -FUNCTION static ufix8 FONTFAR *sp_setup_pix_table( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to first byte in control zone table */ -boolean short_form, /* TRUE if 1 byte from/to specification */ -fix15 no_X_ctrl_zones, /* Number of X control zones */ -fix15 no_Y_ctrl_zones) /* Number of Y control zones */ -/* - * Called by plaid_tcb() to read the control zone table from the - * character data in the font. - * Sets up a table of pixel values for all controlled coordinates. - * Updates the pointer to the byte following the control zone - * data. - */ -{ -fix15 i, j, n; -fix31 ppo; -#if INCL_SQUEEZING || INCL_ISW -fix31 xppo0; /* top level pixels per oru */ -fix31 yppo0; /* top level pixels per oru */ -#endif -ufix8 edge_org; -ufix8 edge; -ufix8 start_edge; -ufix8 end_edge; -ufix16 constr_org; -fix15 constr_nr; -fix15 zone_pix; -fix31 whole_zone; /* non-transformed value of the first X zone */ -ufix16 tmpufix16; /* in extended mode, macro uses secnd term */ -#if INCL_SQUEEZING -fix31 x_scale; -fix31 y_top_scale, y_bottom_scale; -fix31 x_offset; -boolean squeezed_y; -fix15 setwidth_pix, em_top_pix, em_bot_pix; -#endif - -#if INCL_ISW -boolean imported_width; -fix31 isw_scale; -fix15 isw_setwidth_pix; -#endif - -#if INCL_ISW || INCL_SQUEEZING -boolean squeezed_x; -#endif - -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -begin_ctrl_zones(no_X_ctrl_zones, no_Y_ctrl_zones); -#endif - - -edge_org = 0; -constr_org = 0; -sp_globals.rnd_xmin = 0; /* initialize the error for chars with no zone */ -n = no_X_ctrl_zones; -ppo = sp_globals.tcb.xppo; -#if INCL_SQUEEZING || INCL_ISW -xppo0 = sp_globals.tcb0.xppo; -yppo0 = sp_globals.tcb0.yppo; -squeezed_x = FALSE; -#endif - -#if INCL_SQUEEZING -squeezed_x = calculate_x_scale (&x_scale, &x_offset, no_X_ctrl_zones); -squeezed_y = calculate_y_scale(&y_top_scale,&y_bottom_scale,(n+1), - no_Y_ctrl_zones); -#if INCL_ISW -if (sp_globals.import_setwidth_act == TRUE) -setwidth_pix = ((fix15)(((fix31)sp_globals.imported_width * xppo0) >> - sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix; - -else -#endif -setwidth_pix = ((fix15)(((fix31)sp_globals.setwidth_orus * xppo0) >> - sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix; -/* check for overflow */ -if (setwidth_pix < 0) - setwidth_pix = 0x7fff; /* set to maximum */ -em_bot_pix = ((fix15)(((fix31)EM_BOT * yppo0) >> - sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix; -em_top_pix = ((fix15)(((fix31)EM_TOP * yppo0) >> - sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix; -#endif - -#if INCL_ISW -/* convert to pixels */ -isw_setwidth_pix = ((fix15)(((fix31)sp_globals.imported_width * xppo0) >> - sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix; -/* check for overflow */ -if (isw_setwidth_pix < 0) - isw_setwidth_pix = 0x7fff; /* set to maximum */ -if (!squeezed_x && ((imported_width = sp_globals.import_setwidth_act) == TRUE)) - { - isw_scale = compute_isw_scale(); - - /* look for the first non-negative oru value, scale and add the offset */ - /* to the corresponding pixel value - note that the pixel value */ - /* is set in read_oru_table. */ - - /* look at all the X edges */ - for (i=0; i < (no_X_ctrl_zones+1); i++) - if (sp_plaid.orus[i] >= 0) - { - sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], isw_scale) - +sp_globals.pixrnd) & sp_globals.pixfix; - break; - } - - } -#endif - -for (i = 0; ; i++) /* For X and Y control zones... */ - { - for (j = 0; j < n; j++) /* For each zone in X or Y... */ - { - if (short_form) /* 1 byte from/to specification? */ - { - edge = NEXT_BYTE(pointer); /* Read packed from/to spec */ - start_edge = edge_org + (edge & 0x0f); /* Extract start edge */ - end_edge = edge_org + (edge >> 4); /* Extract end edge */ - } - else /* 2 byte from/to specification? */ - { - start_edge = edge_org + NEXT_BYTE(pointer); /* Read start edge */ - end_edge = edge_org + NEXT_BYTE(pointer); /* read end edge */ - } - constr_nr = constr_org + - NEXT_BYTES(pointer, tmpufix16); /* Read constraint number */ -#if INCL_SQUEEZING - if (i == 0 && squeezed_x) - calculate_x_pix(start_edge, end_edge, constr_nr, - x_scale, x_offset, ppo, setwidth_pix); - else if (i == 1 && squeezed_y) - calculate_y_pix(start_edge, end_edge,constr_nr, - y_top_scale, y_bottom_scale, ppo, em_top_pix, em_bot_pix); - else - { -#endif -#if INCL_ISW - if (i==0 && imported_width) - calculate_x_pix(start_edge, end_edge, constr_nr, - isw_scale, 0, ppo, isw_setwidth_pix); - else - { -#endif - if (!sp_globals.c_act[constr_nr]) /* Constraint inactive? */ - { - zone_pix = ((fix15)((((fix31)sp_plaid.orus[end_edge] - - (fix31)sp_plaid.orus[start_edge]) * ppo) / - (1<<sp_globals.mpshift)) + sp_globals.pixrnd) & - sp_globals.pixfix; - if ((ABS(zone_pix)) >= sp_globals.c_pix[constr_nr]) - goto L1; - } - zone_pix = sp_globals.c_pix[constr_nr]; /* Use zone size from constr table */ - if (start_edge > end_edge) /* sp_plaid.orus[start_edge] > sp_plaid.orus[end_edge]? */ - { - zone_pix = -zone_pix; /* Use negatve zone size */ - } - L1: - /* inter-character spacing fix */ - if ((j == 0) && (i == 0)) /* if this is the 1st X zone, save rounding error */ - { /* get the non-xformed - xformed zone, in right direction */ - whole_zone = (((fix31)sp_plaid.orus[end_edge] - - (fix31)sp_plaid.orus[start_edge]) * - ppo) / (1<<sp_globals.mpshift); - sp_globals.rnd_xmin = whole_zone - zone_pix; - } - sp_plaid.pix[end_edge] = sp_plaid.pix[start_edge] + zone_pix; /* Insert end pixels */ -#if INCL_SQUEEZING - if (i == 0) /* in the x direction */ - { /* brute force squeeze */ - if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) && - (sp_plaid.pix[end_edge] < 0)) - sp_plaid.pix[end_edge] = 0; - if ((sp_globals.pspecs->flags & SQUEEZE_RIGHT) && - (sp_plaid.pix[end_edge] > setwidth_pix)) - sp_plaid.pix[end_edge] = setwidth_pix; - } - if (i == 1) /* in the y direction */ - { /* brute force squeeze */ - if ((sp_globals.pspecs->flags & SQUEEZE_TOP) && - (sp_plaid.pix[end_edge] > em_top_pix)) - sp_plaid.pix[end_edge] = em_top_pix; - if ((sp_globals.pspecs->flags & SQUEEZE_BOTTOM) && - (sp_plaid.pix[end_edge] < em_bot_pix)) - sp_plaid.pix[end_edge] = em_bot_pix; - } -#endif -#if INCL_SQUEEZING - } -#endif -#if INCL_ISW - } -#endif -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ - record_ctrl_zone( - (fix31)sp_plaid.pix[start_edge] << (16 - sp_globals.pixshift), - (fix31)sp_plaid.pix[end_edge] << (16 - sp_globals.pixshift), - (fix15)(constr_nr - constr_org)); -#endif - } - if (i) /* Y pixels done? */ - break; - edge_org = sp_globals.Y_edge_org; /* Prepare to process Y ctrl zones */ - constr_org = sp_globals.Y_constr_org; - n = no_Y_ctrl_zones; - ppo = sp_globals.tcb.yppo; - } - -#if DEBUG -printf("\nX PIX TABLE\n"); -n = no_X_ctrl_zones + 1; -for (i = 0; i < n; i++) - printf("%2d %6.1f\n", i, (real)sp_plaid.pix[i] / (real)sp_globals.onepix); -printf("\nY PIX TABLE\n"); -n = no_Y_ctrl_zones + 1; -for (i = 0; i < n; i++) - { - j = i + no_X_ctrl_zones + 1; - printf("%2d %6.1f\n", i, (real)sp_plaid.pix[j] / (real)sp_globals.onepix); - } -#endif - -return pointer; -} -#endif - - -#if INCL_RULES -FUNCTION static ufix8 FONTFAR *sp_setup_int_table( -GDECL -ufix8 FONTFAR *pointer, /* Pointer to first byte in interpolation zone table */ -fix15 no_X_int_zones, /* Number of X interpolation zones */ -fix15 no_Y_int_zones) /* Number of X interpolation zones */ -/* - * Called by plaid_tcb() to read the interpolation zone table from the - * character data in the font. - * Sets up a table of interpolation coefficients with one entry for - * every X or Y interpolation zone. - * Updates the pointer to the byte following the interpolation zone - * data. - */ -{ -fix15 i, j, k, l, n; -ufix8 format; -ufix8 format_copy; -ufix8 tmpufix8; -fix15 start_orus = 0; -ufix8 edge_org; -ufix8 edge; -ufix16 adj_factor; -fix15 adj_orus; -fix15 end_orus = 0; -fix31 zone_orus; -fix15 start_pix = 0; -fix15 end_pix = 0; - - -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -begin_int_zones(no_X_int_zones, no_Y_int_zones); -#endif - -i = 0; -edge_org = 0; -n = no_X_int_zones; -for (j = 0; ; j++) - { - for (k = 0; k < n; k++) - { - format = NEXT_BYTE(pointer); - if (format & BIT7) /* Short start/end point spec? */ - { - tmpufix8 = NEXT_BYTE(pointer); - edge = edge_org + (tmpufix8 & 0xf); - start_orus = sp_plaid.orus[edge]; - start_pix = sp_plaid.pix[edge]; - edge = edge_org + (tmpufix8 >> 4); - end_orus = sp_plaid.orus[edge]; - end_pix = sp_plaid.pix[edge]; - } - else /* Standard start and end point spec? */ - { - format_copy = format; - for (l = 0; ; l++) /* Loop for start and end point */ - { - switch (format_copy & 0x7) /* Decode start/end point format */ - { - - case 0: /* Index to control edge */ - edge = edge_org + NEXT_BYTE(pointer); - end_orus = sp_plaid.orus[edge]; - end_pix = sp_plaid.pix[edge]; - break; - - case 1: /* 1 byte fractional distance to next edge */ - adj_factor = 0xffff & NEXT_BYTE(pointer) << 8; - goto L1; - - - case 2: /* 2 byte fractional distance to next edge */ - adj_factor = 0xffff & NEXT_WORD(pointer); - L1: edge = edge_org + NEXT_BYTE(pointer); - end_orus = sp_plaid.orus[edge] + - ((((fix31)sp_plaid.orus[edge + 1] - (fix31)sp_plaid.orus[edge]) * - (ufix32)adj_factor + (fix31)32768) >> 16); - end_pix = sp_plaid.pix[edge] + - ((((fix31)sp_plaid.pix[edge + 1] - (fix31)sp_plaid.pix[edge]) * - (ufix32)adj_factor + (fix31)32768) >> 16); - break; - - case 3: /* 1 byte delta orus before first edge */ - adj_orus = -(fix15)NEXT_BYTE(pointer); - goto L2; - - case 4: /* 2 byte delta orus before first edge */ - adj_orus = -NEXT_WORD(pointer); - L2: edge = edge_org; - goto L4; - - case 5: /* 1 byte delta orus after last edge */ - adj_orus = (fix15)NEXT_BYTE(pointer); - goto L3; - - case 6: /* 2 byte delta orus after last edge */ - adj_orus = NEXT_WORD(pointer); - L3: edge = j? sp_globals.Y_edge_org + sp_globals.no_Y_orus - 1: sp_globals.no_X_orus - 1; - L4: end_orus = sp_plaid.orus[edge] + adj_orus; - end_pix = sp_plaid.pix[edge] + - (((fix31)adj_orus * (fix31)(j? sp_globals.tcb.yppo: sp_globals.tcb.xppo) + - sp_globals.mprnd) / (1<<sp_globals.mpshift)); - break; - - } - - if (l) /* Second time round loop? */ - break; - format_copy >>= 3; /* Adj format to decode end point format */ - start_orus = end_orus; /* Save start point oru value */ - start_pix = end_pix; /* Save start point pixel value */ - } - } -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ - record_int_zone( - (fix31)start_pix << (16 - sp_globals.pixshift), - (fix31)end_pix << (16 - sp_globals.pixshift)); -#endif - zone_orus = (fix31)end_orus - (fix31)start_orus; - sp_plaid.mult[i] = ((((fix31)end_pix - (fix31)start_pix) << sp_globals.mpshift) + - (zone_orus / 2)) / zone_orus; - sp_plaid.offset[i] = - (((((fix31)start_pix + (fix31)end_pix) << sp_globals.mpshift) - - ((fix31)sp_plaid.mult[i] * ((fix31)start_orus + (fix31)end_orus))) / 2) + - sp_globals.mprnd; - i++; - } - if (j) /* Finished? */ - break; - edge_org = sp_globals.Y_edge_org; /* Prepare to process Y ctrl zones */ - n = no_Y_int_zones; - } - -#if DEBUG -printf("\nX INT TABLE\n"); -n = no_X_int_zones; -for (i = 0; i < n; i++) - { - printf("%2d %7.4f %7.4f\n", i, - (real)sp_plaid.mult[i] / (real)(1 << sp_globals.multshift), - (real)sp_plaid.offset[i] / (real)(1 << sp_globals.multshift)); - } -printf("\nY INT TABLE\n"); -n = no_Y_int_zones; -for (i = 0; i < n; i++) - { - j = i + no_X_int_zones; - printf("%2d %7.4f %7.4f\n", i, - (real)sp_plaid.mult[j] / (real)(1 << sp_globals.multshift), - (real)sp_plaid.offset[j] / (real)(1 << sp_globals.multshift)); - } -#endif - -return pointer; -} -#endif -#if INCL_ISW -FUNCTION fix31 compute_isw_scale() -GDECL -{ -fix31 isw_scale; - -if (sp_globals.setwidth_orus == 0) - isw_scale = 0x00010000; -else - isw_scale = ((fix31)sp_globals.imported_width << 16)/ - (fix31)sp_globals.setwidth_orus; -return isw_scale; -} -#endif diff --git a/nx-X11/lib/font/Speedo/spdo_prv.h b/nx-X11/lib/font/Speedo/spdo_prv.h deleted file mode 100644 index 162c0fd..0000000 --- a/nx-X11/lib/font/Speedo/spdo_prv.h +++ /dev/null @@ -1,421 +0,0 @@ -/* $Xorg: spdo_prv.h,v 1.3 2000/08/17 19:46:27 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/spdo_prv.h,v 1.4 1999/03/14 03:21:17 dawes Exp $ */ - - - -/***************************** S P D O _ P R V . H *******************************/ - -#include "speedo.h" /* include public definitions */ - -/***** CONFIGURATION DEFINITIONS *****/ - - -/***** PRIVATE FONT HEADER OFFSET CONSTANTS *****/ -#define FH_ORUMX 0 /* U Max ORU value 2 bytes */ -#define FH_PIXMX 2 /* U Max Pixel value 2 bytes */ -#define FH_CUSNR 4 /* U Customer Number 2 bytes */ -#define FH_OFFCD 6 /* E Offset to Char Directory 3 bytes */ -#define FH_OFCNS 9 /* E Offset to Constraint Data 3 bytes */ -#define FH_OFFTK 12 /* E Offset to Track Kerning 3 bytes */ -#define FH_OFFPK 15 /* E Offset to Pair Kerning 3 bytes */ -#define FH_OCHRD 18 /* E Offset to Character Data 3 bytes */ -#define FH_NBYTE 21 /* E Number of Bytes in File 3 bytes */ - - -/***** MODE FLAGS CONSTANTS *****/ -#define CURVES_OUT 0X0008 /* Output module accepts curves */ -#define BOGUS_MODE 0X0010 /* Linear scaling mode */ -#define CONSTR_OFF 0X0020 /* Inhibit constraint table */ -#define IMPORT_WIDTHS 0X0040 /* Imported width mode */ -#define SQUEEZE_LEFT 0X0100 /* Squeeze left mode */ -#define SQUEEZE_RIGHT 0X0200 /* Squeeze right mode */ -#define SQUEEZE_TOP 0X0400 /* Squeeze top mode */ -#define SQUEEZE_BOTTOM 0X0800 /* Squeeze bottom mode */ -#define CLIP_LEFT 0X1000 /* Clip left mode */ -#define CLIP_RIGHT 0X2000 /* Clip right mode */ -#define CLIP_TOP 0X4000 /* Clip top mode */ -#define CLIP_BOTTOM 0X8000 /* Clip bottom mode */ - - -/***** MACRO DEFINITIONS *****/ - -#define SQUEEZE_MULT(A,B) (((fix31)A * (fix31)B) / (1 << 16)) - -#define NEXT_BYTE(A) (*(A)++) - -#define NEXT_WORD(A) \ - ((fix15)(sp_globals.key32 ^ ((A) += 2, \ - ((fix15)((A)[-1]) << 8) | (fix15)((A)[-2]) | \ - ((A)[-1] & 0x80? ~0xFFFF : 0)))) - -#if INCL_EXT /* Extended fonts supported? */ - -#define NEXT_BYTES(A, B) \ - (((B = (ufix16)(*(A)++) ^ sp_globals.key7) >= 248)? \ - ((ufix16)(B & 0x07) << 8) + ((*(A)++) ^ sp_globals.key8) + 248: \ - B) - -#else /* Compact fonts only supported? */ - -#define NEXT_BYTES(A, B) ((*(A)++) ^ sp_globals.key7) - -#endif - - -#define NEXT_BYTE_U(A) (*(A)++) - -#define NEXT_WORD_U(A, B) \ - (fix15)(B = (*(A)++) << 8, (fix15)(*(A)++) + B) - -#define NEXT_CHNDX(A, B) \ - ((B)? (ufix16)NEXT_WORD(A): (ufix16)NEXT_BYTE(A)) - -/* Multiply (fix15)X by (fix15)Y to produce (fix31)product */ -#define MULT16(X, Y) \ - ((fix31)X * (fix31)Y) - -/* Multiply (fix15)X by (fix15)MULT, add (fix31)OFFSET, - * shift right SHIFT bits to produce (fix15)result */ -#define TRANS(X, MULT, OFFSET, SHIFT) \ - ((fix15)((((fix31)X * (fix31)MULT) + OFFSET) / (1 << SHIFT))) - -/****************************************************************************** - * - * the following block of definitions redefines every function - * reference to be prefixed with an "sp_". In addition, if this - * is a reentrant version, the parameter sp_globals will be added - * as the first parameter. - * - *****************************************************************************/ - -#if STATIC_ALLOC || DYNAMIC_ALLOC - -#define GDECL - -#define get_char_id(char_index) sp_get_char_id(char_index) -#define get_char_width(char_index) sp_get_char_width(char_index) -#define get_track_kern(track,point_size) sp_get_track_kern(track,point_size) -#define get_pair_kern(char_index1,char_index2) sp_get_pair_kern(char_index1,char_index2) -#define get_char_bbox(char_index,bbox) sp_get_char_bbox(char_index,bbox) -#define make_char(char_index) sp_make_char(char_index) -#if INCL_ISW -#define compute_isw_scale() sp_compute_isw_scale() -#define do_make_char(char_index) sp_do_make_char(char_index) -#define make_char_isw(char_index,imported_width) sp_make_char_isw(char_index,imported_width) -#define reset_xmax(xmax) sp_reset_xmax(xmax) -#endif -#if INCL_ISW || INCL_SQUEEZING -#define preview_bounding_box(pointer,format) sp_preview_bounding_box(pointer,format) -#endif -#define make_simp_char(pointer,format) sp_make_simp_char(pointer,format) -#define make_comp_char(pointer) sp_make_comp_char(pointer) -#define get_char_org(char_index,top_level) sp_get_char_org(char_index,top_level) -#define get_posn_arg(ppointer,format) sp_get_posn_arg(ppointer,format) -#define get_scale_arg(ppointer,format) sp_get_scale_arg(ppointer,format) -#define read_bbox(ppointer,pPmin,pPmax,set_flag) sp_read_bbox(ppointer,pPmin,pPmax,set_flag) -#define proc_outl_data(pointer) sp_proc_outl_data(pointer) -#define split_curve(P1,P2,P3,depth) sp_split_curve(P1,P2,P3,depth) -#define get_args(ppointer,format,pP) sp_get_args(ppointer,format,pP) - -#define init_black(specsarg) sp_init_black(specsarg) -#define begin_char_black(Psw,Pmin,Pmax) sp_begin_char_black(Psw,Pmin,Pmax) -#define begin_contour_black(P1,outside) sp_begin_contour_black(P1,outside) -#define line_black(P1) sp_line_black(P1) -#define end_char_black() sp_end_char_black() -#define add_intercept_black(y,x) sp_add_intercept_black(y,x) -#define proc_intercepts_black() sp_proc_intercepts_black() - -#define init_screen(specsarg) sp_init_screen(specsarg) -#define begin_char_screen(Psw,Pmin,Pmax) sp_begin_char_screen(Psw,Pmin,Pmax) -#define begin_contour_screen(P1,outside) sp_begin_contour_screen(P1,outside) -#define curve_screen(P1,P2,P3,depth) sp_curve_screen(P1,P2,P3,depth) -#define scan_curve_screen(X0,Y0,X1,Y1,X2,Y2,X3,Y3) sp_scan_curve_screen(X0,Y0,X1,Y1,X2,Y2,X3,Y3) -#define vert_line_screen(x,y1,y2) sp_vert_line_screen(x,y1,y2) -#define line_screen(P1) sp_line_screen(P1) -#define end_contour_screen() sp_end_contour_screen() -#define end_char_screen() sp_end_char_screen() -#define add_intercept_screen(y,x) sp_add_intercept_screen(y,x) -#define proc_intercepts_screen() sp_proc_intercepts_screen() - -#define init_outline(specsarg) sp_init_outline(specsarg) -#define begin_char_outline(Psw,Pmin,Pmax) sp_begin_char_outline(Psw,Pmin,Pmax) -#define begin_sub_char_outline(Psw,Pmin,Pmax) sp_begin_sub_char_outline(Psw,Pmin,Pmax) -#define begin_contour_outline(P1,outside) sp_begin_contour_outline(P1,outside) -#define curve_outline(P1,P2,P3,depth) sp_curve_outline(P1,P2,P3,depth) -#define line_outline(P1) sp_line_outline(P1) -#define end_contour_outline() sp_end_contour_outline() -#define end_sub_char_outline() sp_end_sub_char_outline() -#define end_char_outline() sp_end_char_outline() - -#define init_2d(specsarg) sp_init_2d(specsarg) -#define begin_char_2d(Psw, Pmin, Pmax) sp_begin_char_2d(Psw, Pmin, Pmax) -#define begin_contour_2d(P1, outside) sp_begin_contour_2d(P1, outside) -#define line_2d(P1) sp_line_2d(P1) -#define end_char_2d() sp_end_char_2d() -#define add_intercept_2d(y, x) sp_add_intercept_2d(y, x) -#define proc_intercepts_2d() sp_proc_intercepts_2d() -#define draw_vector_to_2d(x0, y0, x1, y1, band) sp_draw_vector_to_2d(x0, y0, x1, y1, band) - -#define init_char_out(Psw,Pmin,Pmax) sp_init_char_out(Psw,Pmin,Pmax) -#define begin_sub_char_out(Psw,Pmin,Pmax) sp_begin_sub_char_out(Psw,Pmin,Pmax) -#define curve_out(P1,P2,P3,depth) sp_curve_out(P1,P2,P3,depth) -#define end_contour_out() sp_end_contour_out() -#define end_sub_char_out() sp_end_sub_char_out() -#define init_intercepts_out() sp_init_intercepts_out() -#define restart_intercepts_out() sp_restart_intercepts_out() -#define set_first_band_out(Pmin,Pmax) sp_set_first_band_out(Pmin,Pmax) -#define reduce_band_size_out() sp_reduce_band_size_out() -#define next_band_out() sp_next_band_out() - -#define init_userout(specsarg) sp_init_userout(specsarg) - -#define reset() sp_reset() -#define set_key(key) sp_set_key(key) -#define get_cust_no(font_buff) sp_get_cust_no(font_buff) -#define set_specs(specsarg) sp_set_specs(specsarg) -#define setup_consts(xmin,xmax,ymin,ymax) sp_setup_consts(xmin,xmax,ymin,ymax) -#define setup_tcb(ptcb) sp_setup_tcb(ptcb) -#define setup_mult(input_mult) sp_setup_mult(input_mult) -#define setup_offset(input_offset) sp_setup_offset(input_offset) -#define type_tcb(ptcb) sp_type_tcb(ptcb) -#define read_long(pointer) sp_read_long(pointer) -#define read_word_u(pointer) sp_read_word_u(pointer) -#define init_tcb() sp_init_tcb() -#define scale_tcb(ptcb,x_pos,y_pos,x_scale,y_scale) sp_scale_tcb(ptcb,x_pos,y_pos,x_scale,y_scale) -#define plaid_tcb(ppointer,format) sp_plaid_tcb(ppointer,format) -#define skip_orus(ppointer,short_form,no_ctrl_zones) sp_skip_orus(ppointer,short_form,no_ctrl_zones) -#define skip_interpolation_table(ppointer,format) sp_skip_interpolation_table(ppointer,format) -#define skip_control_zone(ppointer,format) sp_skip_control_zone(ppointer,format) -#define constr_update() sp_constr_update() -#define read_oru_table(ppointer) sp_read_oru_table(ppointer) -#define calculate_x_pix(start_edge,end_edge,constr_nr,x_scale,x_offset,ppo,setwidth_pix) sp_calculate_x_pix(start_edge,end_edge,constr_nr,x_scale,x_offset,ppo,setwidth_pix) -#define calculate_y_pix(start_edge,end_edge,constr_nr,top_scale,bottom_scale,ppo,emtop_pix,embot_pix) sp_calculate_y_pix(start_edge,end_edge,constr_nr,top_scale,bottom_scale,ppo,emtop_pix,embot_pix) -#define calculate_x_scale(x_factor,x_offset,no_x_ctrl_zones) sp_calculate_x_scale(x_factor,x_offset,no_x_ctrl_zones) -#define calculate_y_scale(top_scale,bottom_scale,first_y_zone,no_Y_ctrl_zones) sp_calculate_y_scale(top_scale,bottom_scale,first_y_zone,no_Y_ctrl_zones) -#define setup_pix_table(ppointer,short_form,no_X_ctrl_zones,no_Y_ctrl_zones) sp_setup_pix_table(ppointer,short_form,no_X_ctrl_zones,no_Y_ctrl_zones) -#define setup_int_table(ppointer,no_X_int_zones, no_Y_int_zones) sp_setup_int_table(ppointer,no_X_int_zones, no_Y_int_zones) - -#define fn_init_out(specsarg) (*sp_globals.init_out)(specsarg) -#define fn_begin_char(Psw,Pmin,Pmax) (*sp_globals.begin_char)(Psw,Pmin,Pmax) -#define fn_begin_sub_char(Psw,Pmin,Pmax) (*sp_globals.begin_sub_char)(Psw,Pmin,Pmax) -#define fn_end_sub_char() (*sp_globals.end_sub_char)() -#define fn_end_char() (*sp_globals.end_char)() -#define fn_line(P1) (*sp_globals.line)(P1) -#define fn_end_contour() (*sp_globals.end_contour)() -#define fn_begin_contour(P0,fmt) (*sp_globals.begin_contour)(P0,fmt) -#define fn_curve(P1,P2,P3,depth) (*sp_globals.curve)(P1,P2,P3,depth) - -#define load_char_data(offset, no_bytes, buff_off) sp_load_char_data(offset, no_bytes, buff_off) -#define report_error(n) sp_report_error(n) - -#if INCL_MULTIDEV - -#define set_bitmap_device(bfuncs,size) sp_set_bitmap_device(bfuncs,size) -#define set_outline_device(ofuncs,size) sp_set_outline_device(ofuncs,size) - -#define open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax) (*sp_globals.bitmap_device.p_open_bitmap)(x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define set_bitmap_bits(y, xbit1, xbit2) (*sp_globals.bitmap_device.p_set_bits)(y, xbit1, xbit2) -#define close_bitmap() (*sp_globals.bitmap_device.p_close_bitmap)() - -#define open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax) (*sp_globals.outline_device.p_open_outline)(x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define start_new_char() (*sp_globals.outline_device.p_start_char)() -#define start_contour(x,y,outside) (*sp_globals.outline_device.p_start_contour)(x,y,outside) -#define curve_to(x1,y1,x2,y2,x3,y3) (*sp_globals.outline_device.p_curve)(x1,y1,x2,y2,x3,y3) -#define line_to(x,y) (*sp_globals.outline_device.p_line)(x,y) -#define close_contour() (*sp_globals.outline_device.p_close_contour)() -#define close_outline() (*sp_globals.outline_device.p_close_outline)() - -#else - -#define open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax) sp_open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define set_bitmap_bits(y, xbit1, xbit2) sp_set_bitmap_bits(y, xbit1, xbit2) -#define close_bitmap() sp_close_bitmap() - -#define open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax) sp_open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define start_new_char() sp_start_new_char() -#define start_contour(x,y,outside) sp_start_contour(x,y,outside) -#define curve_to(x1,y1,x2,y2,x3,y3) sp_curve_to(x1,y1,x2,y2,x3,y3) -#define line_to(x,y) sp_line_to(x,y) -#define close_contour() sp_close_contour() -#define close_outline() sp_close_outline() - -#endif - -#else - -#define GDECL SPEEDO_GLOBALS* sp_global_ptr, - -#define get_char_id(char_index) sp_get_char_id(sp_global_ptr,char_index) -#define get_char_width(char_index) sp_get_char_width(sp_global_ptr,char_index) -#define get_track_kern(track,point_size) sp_get_track_kern(sp_global_ptr,track,point_size) -#define get_pair_kern(char_index1,char_index2) sp_get_pair_kern(sp_global_ptr,char_index1,char_index2) -#define get_char_bbox(char_index,bbox) sp_get_char_bbox(sp_global_ptr,char_index,bbox) -#define make_char(char_index) sp_make_char(sp_global_ptr,char_index) -#if INCL_ISW -#define compute_isw_scale() sp_compute_isw_scale(sp_global_ptr) -#define do_make_char(char_index) sp_do_make_char(sp_global_ptr,char_index) -#define make_char_isw(char_index,imported_width) sp_make_char_isw(sp_global_ptr,char_index,imported_width) -#define reset_xmax(xmax) sp_reset_xmax(sp_global_ptr,xmax) -#endif -#if INCL_ISW || INCL_SQUEEZING -#define preview_bounding_box(pointer,format) sp_preview_bounding_box(sp_global_ptr,pointer,format) -#endif -#define make_simp_char(pointer,format) sp_make_simp_char(sp_global_ptr,pointer,format) -#define make_comp_char(pointer) sp_make_comp_char(sp_global_ptr,pointer) -#define get_char_org(char_index,top_level) sp_get_char_org(sp_global_ptr,char_index,top_level) -#define get_posn_arg(ppointer,format) sp_get_posn_arg(sp_global_ptr,ppointer,format) -#define get_scale_arg(ppointer,format) sp_get_scale_arg(sp_global_ptr,ppointer,format) -#define read_bbox(ppointer,pPmin,pPmax,set_flag) sp_read_bbox(sp_global_ptr,ppointer,pPmin,pPmax,set_flag) -#define proc_outl_data(pointer) sp_proc_outl_data(sp_global_ptr,pointer) -#define split_curve(P1,P2,P3,depth) sp_split_curve(sp_global_ptr,P1,P2,P3,depth) -#define get_args(ppointer,format,pP) sp_get_args(sp_global_ptr,ppointer,format,pP) - -#define init_black(specsarg) sp_init_black(sp_global_ptr,specsarg) -#define begin_char_black(Psw,Pmin,Pmax) sp_begin_char_black(sp_global_ptr,Psw,Pmin,Pmax) -#define begin_contour_black(P1,outside) sp_begin_contour_black(sp_global_ptr,P1,outside) -#define line_black(P1) sp_line_black(sp_global_ptr,P1) -#define end_char_black() sp_end_char_black(sp_global_ptr) -#define add_intercept_black(y,x) sp_add_intercept_black(sp_global_ptr,y,x) -#define proc_intercepts_black() sp_proc_intercepts_black(sp_global_ptr) - -#define init_screen(specsarg) sp_init_screen(sp_global_ptr,specsarg) -#define begin_char_screen(Psw,Pmin,Pmax) sp_begin_char_screen(sp_global_ptr,Psw,Pmin,Pmax) -#define begin_contour_screen(P1,outside) sp_begin_contour_screen(sp_global_ptr,P1,outside) -#define curve_screen(P1,P2,P3,depth) sp_curve_screen(sp_global_ptr,P1,P2,P3,depth) -#define scan_curve_screen(X0,Y0,X1,Y1,X2,Y2,X3,Y3) sp_scan_curve_screen(sp_global_ptr,X0,Y0,X1,Y1,X2,Y2,X3,Y3) -#define vert_line_screen(x,y1,y2) sp_vert_line_screen(sp_global_ptr,x,y1,y2) -#define line_screen(P1) sp_line_screen(sp_global_ptr,P1) -#define end_char_screen() sp_end_char_screen(sp_global_ptr) -#define end_contour_screen() sp_end_contour_screen(sp_global_ptr) -#define add_intercept_screen(y,x) sp_add_intercept_screen(sp_global_ptr,y,x) -#define proc_intercepts_screen() sp_proc_intercepts_screen(sp_global_ptr) - -#define init_outline(specsarg) sp_init_outline(sp_global_ptr,specsarg) -#define begin_char_outline(Psw,Pmin,Pmax) sp_begin_char_outline(sp_global_ptr,Psw,Pmin,Pmax) -#define begin_sub_char_outline(Psw,Pmin,Pmax) sp_begin_sub_char_outline(sp_global_ptr,Psw,Pmin,Pmax) -#define begin_contour_outline(P1,outside) sp_begin_contour_outline(sp_global_ptr,P1,outside) -#define curve_outline(P1,P2,P3,depth) sp_curve_outline(sp_global_ptr,P1,P2,P3,depth) -#define line_outline(P1) sp_line_outline(sp_global_ptr,P1) -#define end_contour_outline() sp_end_contour_outline(sp_global_ptr) -#define end_sub_char_outline() sp_end_sub_char_outline(sp_global_ptr) -#define end_char_outline() sp_end_char_outline(sp_global_ptr) - -#define init_2d(specsarg) sp_init_2d(sp_global_ptr,specsarg) -#define begin_char_2d(Psw, Pmin, Pmax) sp_begin_char_2d(sp_global_ptr,Psw, Pmin, Pmax) -#define begin_contour_2d(P1, outside) sp_begin_contour_2d(sp_global_ptr,P1, outside) -#define line_2d(P1) sp_line_2d(sp_global_ptr,P1) -#define end_char_2d() sp_end_char_2d(sp_global_ptr) -#define add_intercept_2d(y, x) sp_add_intercept_2d(sp_global_ptr,y, x) -#define proc_intercepts_2d() sp_proc_intercepts_2d(sp_global_ptr) -#define draw_vector_to_2d(x0, y0, x1, y1, band) sp_draw_vector_to_2d(sp_global_ptr,x0, y0, x1, y1, band) - -#define init_char_out(Psw,Pmin,Pmax) sp_init_char_out(sp_global_ptr,Psw,Pmin,Pmax) -#define begin_sub_char_out(Psw,Pmin,Pmax) sp_begin_sub_char_out(sp_global_ptr,Psw,Pmin,Pmax) -#define curve_out(P1,P2,P3,depth) sp_curve_out(sp_global_ptr,P1,P2,P3,depth) -#define end_contour_out() sp_end_contour_out(sp_global_ptr) -#define end_sub_char_out() sp_end_sub_char_out(sp_global_ptr) -#define init_intercepts_out() sp_init_intercepts_out(sp_global_ptr) -#define restart_intercepts_out() sp_restart_intercepts_out(sp_global_ptr) -#define set_first_band_out(Pmin,Pmax) sp_set_first_band_out(sp_global_ptr,Pmin,Pmax) -#define reduce_band_size_out() sp_reduce_band_size_out(sp_global_ptr) -#define next_band_out() sp_next_band_out(sp_global_ptr) - -#define init_userout(specsarg) sp_init_userout(sp_global_ptr,specsarg) - -#define reset() sp_reset(sp_global_ptr) -#define set_key(key) sp_set_key(sp_global_ptr,key) -#define get_cust_no(font_buff) sp_get_cust_no(sp_global_ptr,font_buff) -#define set_specs(specsarg) sp_set_specs(sp_global_ptr,specsarg) -#define setup_consts(xmin,xmax,ymin,ymax) sp_setup_consts(sp_global_ptr,xmin,xmax,ymin,ymax) -#define setup_tcb(ptcb) sp_setup_tcb(sp_global_ptr,ptcb) -#define setup_mult(input_mult) sp_setup_mult(sp_global_ptr,input_mult) -#define setup_offset(input_offset) sp_setup_offset(sp_global_ptr,input_offset) -#define type_tcb(ptcb) sp_type_tcb(sp_global_ptr,ptcb) -#define read_long(pointer) sp_read_long(sp_global_ptr,pointer) -#define read_word_u(pointer) sp_read_word_u(sp_global_ptr,pointer) -#define init_tcb() sp_init_tcb(sp_global_ptr) -#define scale_tcb(ptcb,x_pos,y_pos,x_scale,y_scale) sp_scale_tcb(sp_global_ptr,ptcb,x_pos,y_pos,x_scale,y_scale) -#define plaid_tcb(ppointer,format) sp_plaid_tcb(sp_global_ptr,ppointer,format) -#define skip_orus(ppointer,short_form,no_ctrl_zones) sp_skip_orus(sp_global_ptr,ppointer,short_form,no_ctrl_zones) -#define skip_interpolation_table(ppointer,format) sp_skip_interpolation_table(sp_global_ptr,ppointer,format) -#define skip_control_zone(ppointer,format) sp_skip_control_zone(sp_global_ptr,ppointer,format) -#define constr_update() sp_constr_update(sp_global_ptr) -#define read_oru_table(ppointer) sp_read_oru_table(sp_global_ptr,ppointer) -#define calculate_x_pix(start_edge,end_edge,constr_nr,x_scale,x_offset,ppo,setwidth_pix) sp_calculate_x_pix(sp_global_ptr,start_edge,end_edge,constr_nr,x_scale,x_offset,ppo,setwidth_pix) -#define calculate_y_pix(start_edge,end_edge,constr_nr,top_scale,bottom_scale,ppo,emtop_pix,embot_pix) sp_calculate_y_pix(sp_global_ptr,start_edge,end_edge,constr_nr,top_scale,bottom_scale,ppo,emtop_pix,embot_pix) -#define calculate_x_scale(x_factor,x_offset,no_x_ctrl_zones) sp_calculate_x_scale(sp_global_ptr,x_factor,x_offset,no_x_ctrl_zones) -#define calculate_y_scale(top_scale,bottom_scale,first_y_zone,no_Y_ctrl_zones) sp_calculate_y_scale(sp_global_ptr,top_scale,bottom_scale,first_y_zone,no_Y_ctrl_zones) -#define setup_pix_table(ppointer,short_form,no_X_ctrl_zones,no_Y_ctrl_zones) sp_setup_pix_table(sp_global_ptr,ppointer,short_form,no_X_ctrl_zones,no_Y_ctrl_zones) -#define setup_int_table(ppointer,no_X_int_zones, no_Y_int_zones) sp_setup_int_table(sp_global_ptr,ppointer,no_X_int_zones, no_Y_int_zones) - -#define fn_init_out(specsarg) (*sp_globals.init_out)(sp_global_ptr,specsarg) -#define fn_begin_char(Psw,Pmin,Pmax) (*sp_globals.begin_char)(sp_global_ptr,Psw,Pmin,Pmax) -#define fn_begin_sub_char(Psw,Pmin,Pmax) (*sp_globals.begin_sub_char)(sp_global_ptr,Psw,Pmin,Pmax) -#define fn_end_sub_char() (*sp_globals.end_sub_char)(sp_global_ptr) -#define fn_end_char() (*sp_globals.end_char)(sp_global_ptr) -#define fn_line(P1) (*sp_globals.line)(sp_global_ptr,P1) -#define fn_end_contour() (*sp_globals.end_contour)(sp_global_ptr) -#define fn_begin_contour(P0,fmt) (*sp_globals.begin_contour)(sp_global_ptr,P0,fmt) -#define fn_curve(P1,P2,P3,depth) (*sp_globals.curve)(sp_global_ptr,P1,P2,P3,depth) - - -#define load_char_data(offset, no_bytes, buff_off) sp_load_char_data(sp_global_ptr, offset, no_bytes, buff_off) -#define report_error(n) sp_report_error(sp_global_ptr, n) - -#if INCL_MULTIDEV - -#define set_bitmap_device(bfuncs,size) sp_set_bitmap_device(sp_global_ptr,bfuncs,size) -#define set_outline_device(ofuncs,size) sp_set_outline_device(sp_global_ptr,ofuncs,size) - -#define open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax)(*sp_globals.bitmap_device.p_open_bitmap)(sp_global_ptr,x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define set_bitmap_bits(y, xbit1, xbit2)(*sp_globals.bitmap_device.p_set_bits)(sp_global_ptr,y, xbit1, xbit2) -#define close_bitmap()(*sp_globals.bitmap_device.p_close_bitmap)(sp_global_ptr) - -#define open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax)(*sp_globals.outline_device.p_open_outline)(sp_global_ptr,x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define start_new_char()(*sp_globals.outline_device.p_start_char)(sp_global_ptr) -#define start_contour(x,y,outside)(*sp_globals.outline_device.p_start_contour)(sp_global_ptr,x,y,outside) -#define curve_to(x1,y1,x2,y2,x3,y3)(*sp_globals.outline_device.p_curve)(sp_global_ptr,x1,y1,x2,y2,x3,y3) -#define line_to(x,y)(*sp_globals.outline_device.p_line)(sp_global_ptr,x,y) -#define close_contour()(*sp_globals.outline_device.p_close_contour)(sp_global_ptr) -#define close_outline()(*sp_globals.outline_device.p_close_outline)(sp_global_ptr) - -#else - -#define open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax) sp_open_bitmap(sp_global_ptr, x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define set_bitmap_bits(y, xbit1, xbit2) sp_set_bitmap_bits(sp_global_ptr, y, xbit1, xbit2) -#define close_bitmap() sp_close_bitmap(sp_global_ptr) - -#define open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax) sp_open_outline(sp_global_ptr, x_set_width, y_set_width, xmin, xmax, ymin, ymax) -#define start_new_char() sp_start_new_char(sp_global_ptr ) -#define start_contour(x,y,outside) sp_start_contour(sp_global_ptr, x,y,outside) -#define curve_to(x1,y1,x2,y2,x3,y3) sp_curve_to(sp_global_ptr, x1,y1,x2,y2,x3,y3) -#define line_to(x,y) sp_line_to(sp_global_ptr, x,y) -#define close_contour() sp_close_contour(sp_global_ptr) -#define close_outline() sp_close_outline(sp_global_ptr) - -#endif -#endif - - diff --git a/nx-X11/lib/font/Speedo/speedo.h b/nx-X11/lib/font/Speedo/speedo.h deleted file mode 100644 index 5eb516c..0000000 --- a/nx-X11/lib/font/Speedo/speedo.h +++ /dev/null @@ -1,890 +0,0 @@ -/* $Xorg: speedo.h,v 1.3 2000/08/17 19:46:27 cpqbld Exp $ */ - -/* - -Copyright 1989-1991, Bitstream Inc., Cambridge, MA. -You are hereby granted permission under all Bitstream propriety rights to -use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo -software and the Bitstream Charter outline font for any purpose and without -restrictions; provided, that this notice is left intact on all copies of such -software or font and that Bitstream's trademark is acknowledged as shown below -on all unmodified copies of such font. - -BITSTREAM CHARTER is a registered trademark of Bitstream Inc. - - -BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT -DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER -INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED -WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT. - -*/ -/* $XFree86: xc/lib/font/Speedo/speedo.h,v 3.5 2001/01/17 19:43:18 dawes Exp $ */ - -#ifndef _SPEEDO_H_ -#define _SPEEDO_H_ - -#include <X11/Xmd.h> - -/***************************** S P E E D O . H ******************************* - ****************************************************************************/ - -/***** USER OPTIONS OVERRIDE DEFAULTS ******/ -#include "useropt.h" - -/***** CONFIGURATION DEFINITIONS *****/ - -#ifndef INCL_CLIPPING -#define INCL_CLIPPING 0 /* 0 indicates CLIPPING code is not compiled in*/ -#endif - -#ifndef INCL_SQUEEZING -#define INCL_SQUEEZING 0 /* 0 indicates SQUEEZE code is not compiled in*/ -#endif - -#ifndef INCL_EXT -#define INCL_EXT 1 /* 1 to include extended font support */ -#endif /* 0 to omit extended font support */ - -#ifndef INCL_RULES -#define INCL_RULES 1 /* 1 to include intelligent scaling support */ -#endif /* 0 to omit intelligent scaling support */ - -#ifndef INCL_BLACK -#define INCL_BLACK 1 /* 1 to include blackwriter output support */ -#endif /* 0 to omit output mode 0 support */ - -#ifndef INCL_SCREEN -#define INCL_SCREEN 0 /* 1 to include screen writeroutput support */ -#endif /* 0 to omit support */ - -#ifndef INCL_OUTLINE -#define INCL_OUTLINE 0 /* 1 to include outline output support */ -#endif /* 0 to omit output mode 2 support */ - -#ifndef INCL_2D -#define INCL_2D 0 /* 1 to include 2d blackwriter output support */ -#endif /* 0 to omit output mode 3 support */ - -#ifndef INCL_USEROUT -#define INCL_USEROUT 0 /* 1 to include user defined output module support */ -#endif /* 0 to omit user defined output module support */ - -#ifndef INCL_LCD -#define INCL_LCD 1 /* 1 to include load char data support*/ -#endif /* 0 to omit load char data support */ -#ifndef INCL_ISW -#define INCL_ISW 0 /* 1 to include imported width support */ -#endif /* 0 to omit imported width support */ - -#ifndef INCL_METRICS -#define INCL_METRICS 1 /* 1 to include metrics support */ -#endif /* 0 to omit metrics support */ - -#ifndef INCL_KEYS -#define INCL_KEYS 0 /* 1 to include multi key support */ -#endif /* 0 to omit multi key support */ - -#ifndef INCL_MULTIDEV -#define INCL_MULTIDEV 0 /* 1 to include multiple output device support */ -#endif /* 0 to omit multi device support */ - -#ifndef SHORT_LISTS -#define SHORT_LISTS 1 /* 1 to allocate small intercept lists */ -#endif - -#ifndef INCL_PLAID_OUT -#define INCL_PLAID_OUT 0 /* 1 to include plaid data monitoring */ -#endif /* 0 to omit plaid data monitoring */ - -#ifndef FONTFAR /* if Intel mixed memory model implementation */ -#define FONTFAR /* pointer type modifier for font buffer */ -#endif - -#ifndef STACKFAR /* if Intel mixed memory model implementation */ -#define STACKFAR /* pointer type modifier for font buffer */ -#endif - -#ifndef GLOBALFAR -#define GLOBALFAR -#endif - -#define MODE_BLACK 0 -#define MODE_SCREEN MODE_BLACK + INCL_BLACK -#define MODE_OUTLINE MODE_SCREEN + INCL_SCREEN -#define MODE_2D MODE_OUTLINE + INCL_OUTLINE - -#ifdef DYNAMIC_ALLOC -#if DYNAMIC_ALLOC -#define STATIC_ALLOC 0 -#endif -#endif - -#ifdef REENTRANT_ALLOC -#if REENTRANT_ALLOC -#define STATIC_ALLOC 0 -#endif -#endif - -#ifndef STATIC_ALLOC -#define STATIC_ALLOC 1 -#endif - -#ifndef DYNAMIC_ALLOC -#define DYNAMIC_ALLOC 0 -#endif - -#ifndef REENTRANT_ALLOC -#define REENTRANT_ALLOC 0 -#endif - -/***** TYPE DEFINITIONS *****/ - -#ifndef STDEF -#ifndef SPD_BMAP - -typedef INT8 fix7; - -typedef double real; - -typedef CARD8 ufix8; -#ifndef VFONT -typedef CARD8 boolean; -#endif -#endif - -typedef INT16 fix15; - -typedef CARD16 ufix16; - -typedef INT32 fix31; - -typedef CARD32 ufix32; -#endif - -/***** GENERAL CONSTANTS *****/ - -#ifndef FALSE -#define FALSE 0 -#define TRUE 1 -#endif - -#ifndef NULL -#include <stddef.h> -#endif - -#define FUNCTION - -#define BIT0 0x01 -#define BIT1 0x02 -#define BIT2 0x04 -#define BIT3 0x08 -#define BIT4 0x10 -#define BIT5 0x20 -#define BIT6 0x40 -#define BIT7 0x80 - -#if INCL_EXT /* Extended fonts supported? */ - -#define MAX_CONSTR 750 /* Max constraints (incl 4 dummies) */ -#define MAX_CTRL_ZONES 256 /* Max number of controlled orus */ -#define MAX_INT_ZONES 256 /* Max number of interpolation zones */ - -#else /* Compact fonts only supported */ - -#define MAX_CONSTR 512 /* Max constraints (incl 4 dummies) */ -#define MAX_CTRL_ZONES 64 /* Max number of controlled orus */ -#define MAX_INT_ZONES 64 /* Max number of interpolation zones */ - -#endif - -#define SCALE_SHIFT 12 /* Binary point positiion for scale values */ -#define SCALE_RND 2048 /* Rounding bit for scaling transformation */ -#define ONE_SCALE 4096 /* Unity scale value */ - -#ifdef INCL_SCREEN /* constants used by Screenwriter module */ -#define LEFT_INT 1 /* left intercept */ -#define END_INT 2 /* last intercept */ -#define FRACTION 0xFC /* fractional portion of intercept type list */ -#endif - -#if INCL_SQUEEZING || INCL_CLIPPING /* constants used by SQUEEZEing code */ -#define EM_TOP 764 -#define EM_BOT -236 -#endif - -/***** STRUCTURE DEFINITIONS *****/ -#if REENTRANT_ALLOC -#define PROTO_DECL1 struct speedo_global_data GLOBALFAR *sp_global_ptr -#define PROTO_DECL2 PROTO_DECL1 , -#else -#define PROTO_DECL1 void -#define PROTO_DECL2 -#endif - -typedef -struct buff_tag - { - ufix8 FONTFAR *org; /* Pointer to start of buffer */ - ufix32 no_bytes; /* Size of buffer in bytes */ - } -buff_t; /* Buffer descriptor */ - -typedef struct constr_tag - { - ufix8 FONTFAR *org; /* Pointer to first byte in constr data */ - ufix16 font_id; /* Font id for calculated data */ - fix15 xppo; /* X pixels per oru for calculated data */ - fix15 yppo; /* Y pixels per oru for calculated data */ - boolean font_id_valid; /* TRUE if font id valid */ - boolean data_valid; /* TRUE if calculated data valid */ - boolean active; /* TRUE if constraints enabled */ - } -constr_t; /* Constraint data state */ - -typedef struct kern_tag - { - ufix8 FONTFAR *tkorg; /* First byte of track kerning data */ - ufix8 FONTFAR *pkorg; /* First byte of pair kerning data */ - fix15 no_tracks; /* Number of kerning tracks */ - fix15 no_pairs; /* Number of kerning pairs */ - } -kern_t; /* Kerning control block */ - -typedef struct specs_tag - { - buff_t STACKFAR *pfont; /* Pointer to font data */ - fix31 xxmult; /* Coeff of X orus to compute X pix */ - fix31 xymult; /* Coeff of Y orus to compute X pix */ - fix31 xoffset; /* Constant to compute X pix */ - fix31 yxmult; /* Coeff of X orus to compute Y pix */ - fix31 yymult; /* Coeff of Y orus to compute Y pix */ - fix31 yoffset; /* Constant to compute Y pix */ - ufix32 flags; /* Mode flags: */ - /* Bit 0 - 2: Output module selector: */ - /* Bit 3: Send curves to output module*/ - /* Bit 4: Use linear scaling if set */ - /* Bit 5: Inhibit constraint table */ - /* Bit 6: Import set width if set */ - /* Bit 7: not used */ - /* Bit 8: Squeeze left if set */ - /* Bit 9: Squeeze right if set */ - /* Bit 10: Squeeze top if set */ - /* Bit 11: Squeeze bottom if set */ - /* Bit 12: Clip left if set */ - /* Bit 13: Clip right if set */ - /* Bit 14: Clip top if set */ - /* Bit 15: Clip bottom if set */ - /* Bits 16-31 not used */ - void *out_info; /* information for output module */ - } -specs_t; /* Specs structure for fw_set_specs */ - -typedef struct tcb_tag - { - fix15 xxmult; /* Linear coeff of Xorus to compute Xpix */ - fix15 xymult; /* Linear coeff of Yorus to compute Xpix */ - fix31 xoffset; /* Linear constant to compute Xpix */ - fix15 yxmult; /* Linear coeff of Xorus to compute Ypix */ - fix15 yymult; /* Linear coeff of Yorus to compute Ypix */ - fix31 yoffset; /* Linear constant to compute Ypix */ - fix15 xppo; /* Pixels per oru in X dimension of char */ - fix15 yppo; /* Pixels per oru in Y dimension of char */ - fix15 xpos; /* Origin in X dimension of character */ - fix15 ypos; /* Origin in Y dimension of character */ - ufix16 xtype; /* Transformation type for X oru coords */ - ufix16 ytype; /* Transformation type for Y oru coords */ - ufix16 xmode; /* Transformation mode for X oru coords */ - ufix16 ymode; /* Transformation mode for Y oru coords */ - fix15 mirror; /* Transformation creates mirror image */ - } -tcb_t; /* Transformation control block */ - -typedef struct point_tag - { - fix15 x; /* X coord of point (shifted pixels) */ - fix15 y; /* Y coord of point (shifted pixels) */ - } -point_t; /* Point in device space */ - -typedef struct band_tag - { - fix15 band_max; - fix15 band_min; - fix15 band_array_offset; - fix15 band_floor; - fix15 band_ceiling; - } band_t; - -typedef struct bbox_tag - { - fix31 xmin; - fix31 xmax; - fix31 ymin; - fix31 ymax; - } bbox_t; - -#if SHORT_LISTS -#define MAX_INTERCEPTS 256 /* Max storage for intercepts */ -typedef ufix8 cdr_t; /* 8 bit links in intercept chains */ -#else -#define MAX_INTERCEPTS 1000 /* Max storage for intercepts */ -typedef ufix16 cdr_t; /* 16 bit links in intercept chains */ -#endif - -#if REENTRANT_ALLOC - -typedef struct intercepts_tag - { - fix15 car[MAX_INTERCEPTS]; - fix15 cdr[MAX_INTERCEPTS]; -#if INCL_SCREEN - ufix8 inttype[MAX_INTERCEPTS]; - ufix8 leftedge; - ufix16 fracpix; -#endif - } intercepts_t; - -typedef struct plaid_tag - { - fix15 orus[MAX_CTRL_ZONES]; /* Controlled coordinate table (orus) */ -#if INCL_RULES - fix15 pix[MAX_CTRL_ZONES]; /* Controlled coordinate table (sub-pixels) */ - fix15 mult[MAX_INT_ZONES]; /* Interpolation multiplier table */ - fix31 offset[MAX_INT_ZONES]; /* Interpolation offset table */ -#endif - } plaid_t; -#endif - -#if INCL_MULTIDEV -typedef struct bitmap_tag - { - void (*p_open_bitmap)(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xorg, fix31 yorg, fix15 xsize,fix15 ysize); - void (*p_set_bits)(PROTO_DECL2 fix15 y, fix15 xbit1, fix15 xbit2); - void (*p_close_bitmap)(PROTO_DECL1); - } bitmap_t; - -typedef struct outline_tag - { - void (*p_open_outline)(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xmin, fix31 xmax, fix31 ymin,fix31 ymax); - void (*p_start_char)(PROTO_DECL1); - void (*p_start_contour)(PROTO_DECL2 fix31 x,fix31 y,boolean outside); - void (*p_curve)(PROTO_DECL2 fix31 x1, fix31 y1, fix31 x2, fix31 y2, fix31 x3, fix31 y3); - void (*p_line)(PROTO_DECL2 fix31 x, fix31 y); - void (*p_close_contour)(PROTO_DECL1); - void (*p_close_outline)(PROTO_DECL1); - } outline_t; -#endif - -/* ---------------------------------------------------*/ -/**** MAIN GLOBAL DATA STRUCTURE, SPEEDO_GLOBALS *****/ - -typedef struct speedo_global_data - { -/* do_char.c data definitions */ -#if INCL_METRICS /* Metrics functions supported? */ - kern_t kern; /* Kerning control block */ -#endif /* endif incl_metrics */ - point_t Psw; /* End of escapement vector (1/65536 pixel units) */ - -#if INCL_LCD /* Dynamic load character data supported? */ - fix15 cb_offset; /* Offset to sub-char data in char buffer */ -#endif /* endif incl_lcd */ - -/* do_trns.c data definitions */ - point_t P0; /* Current point (sub-pixels) */ - fix15 x_orus; /* Current X argument (orus) */ - fix15 y_orus; /* Current Y argument (orus) */ - fix15 x_pix; /* Current X argument (sub-pixels) */ - fix15 y_pix; /* Current Y argument (sub-pixels) */ - ufix8 x_int; /* Current X interpolation zone */ - ufix8 y_int; /* Current Y interpolation zone */ - -#if INCL_MULTIDEV && INCL_OUTLINE - outline_t outline_device; - boolean outline_device_set; -#endif - -#if INCL_BLACK || INCL_SCREEN || INCL_2D -#if INCL_MULTIDEV - bitmap_t bitmap_device; - boolean bitmap_device_set; -#endif - band_t y_band; /* Y current band(whole pixels) */ - - struct set_width_tag - { - fix31 x; - fix31 y; - } set_width; /* Character escapement vector */ - - boolean first_pass; /* TRUE during first pass thru outline data */ - boolean extents_running; /* T if extent accumulation for each vector */ - fix15 x0_spxl; /* X coord of current point (sub pixels) */ - fix15 y0_spxl; /* Y coord of current point (sub pixels) */ - fix15 y_pxl; /* Y coord of current point (whole pixels) */ -#if REENTRANT_ALLOC - intercepts_t STACKFAR *intercepts; -#else /* else if not reentrant */ - fix15 car[MAX_INTERCEPTS]; /* Data field of intercept storage */ - cdr_t cdr[MAX_INTERCEPTS]; /* Link field of intercept storage */ -#if INCL_SCREEN - ufix8 inttype[MAX_INTERCEPTS]; - ufix8 leftedge; - ufix16 fracpix; -#endif /* endif incl_screen */ -#endif /* endif reentrant */ - fix15 bmap_xmin; /* Min X value (sub-pixel units) */ - fix15 bmap_xmax; /* Max X value (sub-pixel units) */ - fix15 bmap_ymin; /* Min Y value (sub-pixel units) */ - fix15 bmap_ymax; /* Max Y value (sub-pixel units) */ - fix15 no_y_lists; /* Number of active intercept lists */ - fix15 first_offset; /* Index of first active list cell */ - fix15 next_offset; /* Index of next free list cell */ - boolean intercept_oflo; /* TRUE if intercepts data lost */ -#endif /* endif incl_black, incl_screen, incl_2d */ - -/* bounding box now used by all output modules, including outline */ - fix15 xmin; /* Min X value in whole character */ - fix15 xmax; /* Max X value in whole character */ - fix15 ymin; /* Min Y value in whole character */ - fix15 ymax; /* Max Y value in whole character */ - -#if INCL_2D - fix15 no_x_lists; /* Number of active x intercept lists */ - band_t x_band; /* X current band(whole pixels) */ - boolean x_scan_active; /* X scan flag during scan conversion */ -#endif - -/* reset.c data definitions */ - ufix16 key32; /* Decryption keys 3,2 combined */ - ufix8 key4; /* Decryption key 4 */ - ufix8 key6; /* Decryption key 6 */ - ufix8 key7; /* Decryption key 7 */ - ufix8 key8; /* Decryption key 8 */ - -/* set_spcs.c data definitions */ - buff_t font; - buff_t GLOBALFAR *pfont; /* Pointer to font buffer structure */ - fix31 font_buff_size; /* Number of bytes loaded in font buffer */ - ufix8 FONTFAR *pchar_dir; /* Pointer to character directory */ - fix15 first_char_idx; /* Index to first character in font */ - fix15 no_chars_avail; /* Total characters in font layout */ - fix15 orus_per_em; /* Outline resolution */ - fix15 metric_resolution; /* metric resolution for setwidths, kerning pairs - (defaults to orus_per_em) */ - tcb_t tcb0; /* Top level transformation control block */ - - boolean specs_valid; /* TRUE if fw_set_specs() successful */ - - fix15 depth_adj; /* Curve splitting depth adjustment */ - boolean curves_out; /* Allow curves to output module */ - fix15 output_mode; /* Output module selector */ - fix15 thresh; /* Scan conversion threshold (sub-pixels) */ - boolean normal; /* TRUE if 0 obl and mult of 90 deg rot */ - - fix15 multshift; /* Fixed point shift for multipliers */ - fix15 pixshift; /* Fixed point shift for sub-pixels */ - fix15 poshift; /* Left shift from pixel to output format */ - fix15 mpshift; /* Fixed point shift for mult to sub-pixels */ - fix31 multrnd; /* 0.5 in multiplier units */ - fix15 pixrnd; /* 0.5 in sub-pixel units */ - fix31 mprnd; /* 0.5 sub-pixels in multiplier units */ - fix15 pixfix; /* Mask to remove fractional pixels */ - fix15 onepix; /* 1.0 pixels in sub-pixel units */ - - boolean (*init_out)(PROTO_DECL2 specs_t GLOBALFAR *specsarg); - boolean (*begin_char)(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax); - void (*begin_sub_char)(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax); - void (*begin_contour)(PROTO_DECL2 point_t P1,boolean outside); - void (*curve)(PROTO_DECL2 point_t P1, point_t P2, point_t P3, fix15 depth); - void (*line)(PROTO_DECL2 point_t P1); - void (*end_contour)(PROTO_DECL1); - void (*end_sub_char)(PROTO_DECL1); - boolean (*end_char)(PROTO_DECL1); - specs_t GLOBALFAR *pspecs; /* Pointer to specifications bundle */ - specs_t specs; /* copy specs onto stack */ - ufix8 FONTFAR *font_org; /* Pointer to start of font data */ - ufix8 FONTFAR *hdr2_org; /* Pointer to start of private header data */ - -/* set_trns.c data definitions */ - tcb_t tcb; /* Current transformation control block */ - ufix8 Y_edge_org; /* Index to first Y controlled coordinate */ - ufix8 Y_int_org; /* Index to first Y interpolation zone */ - fix31 rnd_xmin; /* rounded out value of xmin for int-char spac. fix */ - -#if REENTRANT_ALLOC - plaid_t STACKFAR *plaid; -#else /* if not reentrant */ - fix15 orus[MAX_CTRL_ZONES]; /* Controlled coordinate table (orus) */ -#if INCL_RULES - fix15 pix[MAX_CTRL_ZONES]; /* Controlled coordinate table (sub-pixels) */ - fix15 mult[MAX_INT_ZONES]; /* Interpolation multiplier table */ - fix31 offset[MAX_INT_ZONES]; /* Interpolation offset table */ -#endif /* endif incl_rules */ -#endif /* endif not reentrant */ - - fix15 no_X_orus; /* Number of X controlled coordinates */ - fix15 no_Y_orus; /* Number of Y controlled coordinates */ - ufix16 Y_constr_org; /* Origin of constraint table in font data */ - -#if INCL_RULES - constr_t constr; /* Constraint data state */ - boolean c_act[MAX_CONSTR]; /* TRUE if constraint currently active */ - fix15 c_pix[MAX_CONSTR]; /* Size of constrained zone if active */ -#endif -#if INCL_ISW - boolean import_setwidth_act; /* boolean to indicate imported setwidth */ - boolean isw_modified_constants; - ufix32 imported_width; /* value of imported setwidth */ - fix15 isw_xmax; /* maximum oru value for constants*/ -#endif -#if INCL_SQUEEZING || INCL_ISW - fix15 setwidth_orus; /* setwidth value in orus */ - /* bounding box in orus for squeezing */ - fix15 bbox_xmin_orus; /* X minimum in orus */ - fix15 bbox_xmax_orus; /* X maximum in orus */ - fix15 bbox_ymin_orus; /* Y minimum in orus */ - fix15 bbox_ymax_orus; /* Y maximum in orus */ -#endif -#ifdef INCL_SQUEEZING - boolean squeezing_compound; /* flag to indicate a compound character*/ -#endif -#ifdef INCL_CLIPPING - fix31 clip_xmax; - fix31 clip_ymax; - fix31 clip_xmin; - fix31 clip_ymin; -#endif - } SPEEDO_GLOBALS; - -/*********************************************************************************** - * - * Speedo global data structure allocation - * - ***********************************************************************************/ - -#ifdef SET_SPCS -#define EXTERN -#else -#define EXTERN extern -#endif -#if STATIC_ALLOC -EXTERN SPEEDO_GLOBALS GLOBALFAR sp_globals; -#define sp_intercepts sp_globals -#define sp_plaid sp_globals -#else -#if DYNAMIC_ALLOC -EXTERN SPEEDO_GLOBALS GLOBALFAR *sp_global_ptr; -#define sp_globals (*sp_global_ptr) -#define sp_intercepts (*sp_global_ptr) -#define sp_plaid (*sp_global_ptr) -#else -#if REENTRANT_ALLOC -#define sp_globals (*sp_global_ptr) -#define sp_intercepts (*(*sp_global_ptr).intercepts) -#define sp_plaid (*(*sp_global_ptr).plaid) -#endif -#endif -#endif -#ifdef EXTERN -#undef EXTERN -#endif - - -/***** PUBLIC FONT HEADER OFFSET CONSTANTS *****/ -#define FH_FMVER 0 /* U D4.0 CR LF NULL NULL 8 bytes */ -#define FH_FNTSZ 8 /* U Font size (bytes) 4 bytes */ -#define FH_FBFSZ 12 /* U Min font buffer size (bytes) 4 bytes */ -#define FH_CBFSZ 16 /* U Min char buffer size (bytes) 2 bytes */ -#define FH_HEDSZ 18 /* U Header size (bytes) 2 bytes */ -#define FH_FNTID 20 /* U Source Font ID 2 bytes */ -#define FH_SFVNR 22 /* U Source Font Version Number 2 bytes */ -#define FH_FNTNM 24 /* U Source Font Name 70 bytes */ -#define FH_MDATE 94 /* U Manufacturing Date 10 bytes */ -#define FH_LAYNM 104 /* U Layout Name 70 bytes */ -#define FH_CPYRT 174 /* U Copyright Notice 78 bytes */ -#define FH_NCHRL 252 /* U Number of Chars in Layout 2 bytes */ -#define FH_NCHRF 254 /* U Total Number of Chars in Font 2 bytes */ -#define FH_FCHRF 256 /* U Index of first char in Font 2 bytes */ -#define FH_NKTKS 258 /* U Number of kerning tracks in font 2 bytes */ -#define FH_NKPRS 260 /* U Number of kerning pairs in font 2 bytes */ -#define FH_FLAGS 262 /* U Font flags 1 byte: */ - /* Bit 0: Extended font */ - /* Bit 1: not used */ - /* Bit 2: not used */ - /* Bit 3: not used */ - /* Bit 4: not used */ - /* Bit 5: not used */ - /* Bit 6: not used */ - /* Bit 7: not used */ -#define FH_CLFGS 263 /* U Classification flags 1 byte: */ - /* Bit 0: Italic */ - /* Bit 1: Monospace */ - /* Bit 2: Serif */ - /* Bit 3: Display */ - /* Bit 4: not used */ - /* Bit 5: not used */ - /* Bit 6: not used */ - /* Bit 7: not used */ -#define FH_FAMCL 264 /* U Family Classification 1 byte: */ - /* 0: Don't care */ - /* 1: Serif */ - /* 2: Sans serif */ - /* 3: Monospace */ - /* 4: Script or calligraphic */ - /* 5: Decorative */ - /* 6-255: not used */ -#define FH_FRMCL 265 /* U Font form Classification 1 byte: */ - /* Bits 0-3 (width type): */ - /* 0-3: not used */ - /* 4: Condensed */ - /* 5: not used */ - /* 6: Semi-condensed */ - /* 7: not used */ - /* 8: Normal */ - /* 9: not used */ - /* 10: Semi-expanded */ - /* 11: not used */ - /* 12: Expanded */ - /* 13-15: not used */ - /* Bits 4-7 (Weight): */ - /* 0: not used */ - /* 1: Thin */ - /* 2: Ultralight */ - /* 3: Extralight */ - /* 4: Light */ - /* 5: Book */ - /* 6: Normal */ - /* 7: Medium */ - /* 8: Semibold */ - /* 9: Demibold */ - /* 10: Bold */ - /* 11: Extrabold */ - /* 12: Ultrabold */ - /* 13: Heavy */ - /* 14: Black */ - /* 15-16: not used */ -#define FH_SFNTN 266 /* U Short Font Name 32 bytes */ -#define FH_SFACN 298 /* U Short Face Name 16 bytes */ -#define FH_FNTFM 314 /* U Font form 14 bytes */ -#define FH_ITANG 328 /* U Italic angle 2 bytes (1/256th deg) */ -#define FH_ORUPM 330 /* U Number of ORUs per em 2 bytes */ -#define FH_WDWTH 332 /* U Width of Wordspace 2 bytes */ -#define FH_EMWTH 334 /* U Width of Emspace 2 bytes */ -#define FH_ENWTH 336 /* U Width of Enspace 2 bytes */ -#define FH_TNWTH 338 /* U Width of Thinspace 2 bytes */ -#define FH_FGWTH 340 /* U Width of Figspace 2 bytes */ -#define FH_FXMIN 342 /* U Font-wide min X value 2 bytes */ -#define FH_FYMIN 344 /* U Font-wide min Y value 2 bytes */ -#define FH_FXMAX 346 /* U Font-wide max X value 2 bytes */ -#define FH_FYMAX 348 /* U Font-wide max Y value 2 bytes */ -#define FH_ULPOS 350 /* U Underline position 2 bytes */ -#define FH_ULTHK 352 /* U Underline thickness 2 bytes */ -#define FH_SMCTR 354 /* U Small caps transformation 6 bytes */ -#define FH_DPSTR 360 /* U Display sups transformation 6 bytes */ -#define FH_FNSTR 366 /* U Footnote sups transformation 6 bytes */ -#define FH_ALSTR 372 /* U Alpha sups transformation 6 bytes */ -#define FH_CMITR 378 /* U Chemical infs transformation 6 bytes */ -#define FH_SNMTR 384 /* U Small nums transformation 6 bytes */ -#define FH_SDNTR 390 /* U Small denoms transformation 6 bytes */ -#define FH_MNMTR 396 /* U Medium nums transformation 6 bytes */ -#define FH_MDNTR 402 /* U Medium denoms transformation 6 bytes */ -#define FH_LNMTR 408 /* U Large nums transformation 6 bytes */ -#define FH_LDNTR 414 /* U Large denoms transformation 6 bytes */ - /* Transformation data format: */ - /* Y position 2 bytes */ - /* X scale 2 bytes (1/4096ths) */ - /* Y scale 2 bytes (1/4096ths) */ -#define SIZE_FW FH_LDNTR + 6 /* size of nominal font header */ -#define EXP_FH_METRES SIZE_FW /* offset to expansion field metric resolution (optional) */ - - - -/***** MODE FLAGS CONSTANTS *****/ -#define CURVES_OUT 0X0008 /* Output module accepts curves */ -#define BOGUS_MODE 0X0010 /* Linear scaling mode */ -#define CONSTR_OFF 0X0020 /* Inhibit constraint table */ -#define IMPORT_WIDTHS 0X0040 /* Imported width mode */ -#define SQUEEZE_LEFT 0X0100 /* Squeeze left mode */ -#define SQUEEZE_RIGHT 0X0200 /* Squeeze right mode */ -#define SQUEEZE_TOP 0X0400 /* Squeeze top mode */ -#define SQUEEZE_BOTTOM 0X0800 /* Squeeze bottom mode */ -#define CLIP_LEFT 0X1000 /* Clip left mode */ -#define CLIP_RIGHT 0X2000 /* Clip right mode */ -#define CLIP_TOP 0X4000 /* Clip top mode */ -#define CLIP_BOTTOM 0X8000 /* Clip bottom mode */ - -/*********************************************************************************** - * - * Speedo function declarations - use prototypes if available - * - ***********************************************************************************/ - -/* do_char.c functions */ -ufix16 sp_get_char_id(PROTO_DECL2 ufix16 char_index); -boolean sp_make_char(PROTO_DECL2 ufix16 char_index); -#if INCL_ISW -fix31 sp_compute_isw_scale(PROTO_DECL2); -static boolean sp_do_make_char(PROTO_DECL2 ufix16 char_index); -boolean sp_make_char_isw(PROTO_DECL2 ufix16 char_index, ufix32 imported_width); -static boolean sp_reset_xmax(PROTO_DECL2 fix31 xmax); -#endif -#if INCL_ISW || INCL_SQUEEZING -static void sp_preview_bounding_box(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format); -#endif - -#if INCL_METRICS /* Metrics functions supported? */ -fix31 sp_get_char_width(PROTO_DECL2 ufix16 char_index); -fix15 sp_get_track_kern(PROTO_DECL2 fix15 track,fix15 point_size); -fix31 sp_get_pair_kern(PROTO_DECL2 ufix16 char_index1,ufix16 char_index2); -boolean sp_get_char_bbox(PROTO_DECL2 ufix16 char_index, bbox_t *bbox); -#endif - -/* do_trns.c functions */ -ufix8 FONTFAR *sp_read_bbox(PROTO_DECL2 ufix8 FONTFAR *pointer,point_t STACKFAR *pPmin,point_t STACKFAR *pPmax,boolean set_flag); -void sp_proc_outl_data(PROTO_DECL2 ufix8 FONTFAR *pointer); - -/* out_blk.c functions */ -#if INCL_BLACK -boolean sp_init_black(PROTO_DECL2 specs_t GLOBALFAR *specsarg); -boolean sp_begin_char_black(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax); -void sp_begin_contour_black(PROTO_DECL2 point_t P1,boolean outside); -void sp_line_black(PROTO_DECL2 point_t P1); -boolean sp_end_char_black(PROTO_DECL1); -#endif - -/* out_scrn.c functions */ -#if INCL_SCREEN -boolean sp_init_screen(PROTO_DECL2 specs_t GLOBALFAR *specsarg); -boolean sp_begin_char_screen(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax); -void sp_begin_contour_screen(PROTO_DECL2 point_t P1,boolean outside); -void sp_curve_screen(PROTO_DECL2 point_t P1,point_t P2,point_t P3, fix15 depth); -void sp_scan_curve_screen(PROTO_DECL2 fix31 X0,fix31 Y0,fix31 X1,fix31 Y1,fix31 X2,fix31 Y2,fix31 X3,fix31 Y3); -void sp_vert_line_screen(PROTO_DECL2 fix31 x, fix15 y1, fix15 y2); -void sp_line_screen(PROTO_DECL2 point_t P1); -void sp_end_contour_screen(PROTO_DECL1); -boolean sp_end_char_screen(PROTO_DECL1); -#endif - -/* out_outl.c functions */ -#if INCL_OUTLINE -#if INCL_MULTIDEV -boolean sp_set_outline_device(PROTO_DECL2 outline_t *ofuncs, ufix16 size); -#endif - - -boolean sp_init_outline(PROTO_DECL2 specs_t GLOBALFAR *specsarg); -boolean sp_begin_char_outline(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax); -void sp_begin_sub_char_outline(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax); -void sp_begin_contour_outline(PROTO_DECL2 point_t P1,boolean outside); -void sp_curve_outline(PROTO_DECL2 point_t P1,point_t P2,point_t P3, fix15 depth); -void sp_line_outline(PROTO_DECL2 point_t P1); -void sp_end_contour_outline(PROTO_DECL1); -void sp_end_sub_char_outline(PROTO_DECL1); -boolean sp_end_char_outline(PROTO_DECL1); -#endif - -/* out_bl2d.c functions */ -#if INCL_2D -boolean sp_init_2d(PROTO_DECL2 specs_t GLOBALFAR *specsarg); -boolean sp_begin_char_2d(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax); -void sp_begin_contour_2d(PROTO_DECL2 point_t P1,boolean outside); -void sp_line_2d(PROTO_DECL2 point_t P1); -boolean sp_end_char_2d(PROTO_DECL1); -#endif - -/* out_util.c functions */ -#if INCL_BLACK || INCL_SCREEN || INCL_2D - -#if INCL_MULTIDEV -boolean sp_set_bitmap_device(PROTO_DECL2 bitmap_t *bfuncs, ufix16 size); -#endif - -void sp_init_char_out(PROTO_DECL2 point_t Psw, point_t Pmin, point_t Pmax); -void sp_begin_sub_char_out(PROTO_DECL2 point_t Psw, point_t Pmin, point_t Pmax); -void sp_curve_out(PROTO_DECL2 point_t P1, point_t P2, point_t P3, fix15 depth); -void sp_end_contour_out(PROTO_DECL1); -void sp_end_sub_char_out(PROTO_DECL1); -void sp_init_intercepts_out(PROTO_DECL1); -void sp_restart_intercepts_out(PROTO_DECL1); -void sp_set_first_band_out(PROTO_DECL2 point_t Pmin, point_t Pmax); -void sp_reduce_band_size_out(PROTO_DECL1); -boolean sp_next_band_out(PROTO_DECL1); -#endif - -#if INCL_USEROUT -boolean sp_init_userout(specs_t *specsarg); -#endif - - -/* reset.c functions */ -void sp_reset(PROTO_DECL1); -#if INCL_KEYS -void sp_set_key(PROTO_DECL2 ufix8 key[]); -#endif -ufix16 sp_get_cust_no(PROTO_DECL2 buff_t font_buff); - -/* set_spcs.c functions */ -boolean sp_set_specs(PROTO_DECL2 specs_t STACKFAR *specsarg); -void sp_type_tcb(PROTO_DECL2 tcb_t GLOBALFAR *ptcb); - -fix31 sp_read_long(PROTO_DECL2 ufix8 FONTFAR *pointer); -fix15 sp_read_word_u(PROTO_DECL2 ufix8 FONTFAR *pointer); - -/* set_trns.c functions */ -void sp_init_tcb(PROTO_DECL1); -void sp_scale_tcb(PROTO_DECL2 tcb_t GLOBALFAR *ptcb,fix15 x_pos,fix15 y_pos,fix15 x_scale,fix15 y_scale); -ufix8 FONTFAR *sp_plaid_tcb(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format); -ufix8 FONTFAR *sp_skip_interpolation_table(PROTO_DECL2 ufix8 FONTFAR *pointer, ufix8 format); -ufix8 FONTFAR *sp_skip_control_zone(PROTO_DECL2 ufix8 FONTFAR *pointer, ufix8 format); - -ufix8 FONTFAR *sp_read_oru_table(PROTO_DECL2 ufix8 FONTFAR *pointer); -#if INCL_SQUEEZING || INCL_ISW -static void sp_calculate_x_pix(PROTO_DECL2 ufix8 start_edge,ufix8 end_edge,ufix16 constr_nr,fix31 x_scale,fix31 x_offset,fix31 ppo,fix15 setwidth_pix); -#endif -#if INCL_SQUEEZING -static void sp_calculate_y_pix(PROTO_DECL2 ufix8 start_edge,ufix8 end_edge,ufix16 constr_nr,fix31 top_scale,fix31 bottom_scale,fix31 ppo,fix15 emtop_pix,fix15 embot_pix); -boolean sp_calculate_x_scale(PROTO_DECL2 fix31 *x_factor,fix31 *x_offset,fix15 no_x_ctrl_zones); -boolean sp_calculate_y_scale(PROTO_DECL2 fix31 *top_scale,fix31 *bottom_scale,fix15 first_y_zone, fix15 no_Y_ctrl_zones); -#endif - - -/* user defined functions */ - -void sp_report_error(PROTO_DECL2 fix15 n); - -#if INCL_BLACK || INCL_SCREEN || INCL_2D -void sp_open_bitmap(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xorg, fix31 yorg, fix15 xsize,fix15 ysize); -void sp_set_bitmap_bits(PROTO_DECL2 fix15 y, fix15 xbit1, fix15 xbit2); -void sp_close_bitmap(PROTO_DECL1); -#endif - -#if INCL_OUTLINE -void sp_open_outline(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xmin, fix31 xmax, fix31 ymin,fix31 ymax); -void sp_start_new_char(PROTO_DECL1); -void sp_start_contour(PROTO_DECL2 fix31 x,fix31 y,boolean outside); -void sp_curve_to(PROTO_DECL2 fix31 x1, fix31 y1, fix31 x2, fix31 y2, fix31 x3, fix31 y3); -void sp_line_to(PROTO_DECL2 fix31 x, fix31 y); -void sp_close_contour(PROTO_DECL1); -void sp_close_outline(PROTO_DECL1); -#endif - -#if INCL_LCD /* Dynamic load character data supported? */ -buff_t *sp_load_char_data(PROTO_DECL2 fix31 file_offset,fix15 no_bytes,fix15 cb_offset); /* Load character data from font file */ -#endif - -#if INCL_PLAID_OUT /* Plaid data monitoring included? */ -void sp_record_xint(PROTO_DECL2 fix15 int_num); /* Record xint data */ -void sp_record_yint(PROTO_DECL2 fix15 int_num); /* Record yint data */ -void sp_begin_plaid_data(PROTO_DECL1); /* Signal start of plaid data */ -void sp_begin_ctrl_zones(PROTO_DECL2 fix15, no_X_zones, fix15 no_Y_zones); /* Signal start of control zones */ -void sp_record_ctrl_zone(PROTO_DECL2 fix31 start, fix31 end, fix15 constr); /* Record control zone data */ -void sp_begin_int_zones(PROTO_DECL2 fix15 no_X_int_zones, fix15 no_Y_int_zones); /* Signal start of interpolation zones */ -void sp_record_int_zone(PROTO_DECL2 fix31 start, fix31 end); /* Record interpolation zone data */ -void sp_end_plaid_data(PROTO_DECL1); /* Signal end of plaid data */ -#endif - -#endif /* _SPEEDO_H_ */ diff --git a/nx-X11/lib/font/Speedo/spencode.c b/nx-X11/lib/font/Speedo/spencode.c deleted file mode 100644 index 96a1350..0000000 --- a/nx-X11/lib/font/Speedo/spencode.c +++ /dev/null @@ -1,67 +0,0 @@ -/* $Xorg: spencode.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/spencode.c,v 1.6 2001/01/17 19:43:18 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spint.h" - -/* No longer needed with new encoding code */ -/* #include "bics-iso.h" - -int sp_bics_map_size = (sizeof(sp_bics_map) / (sizeof(int) * 2));*/ - -#ifdef EXTRAFONTS -#include "adobe-iso.h" - -int adobe_map_size = (sizeof(adobe_map) / (sizeof(int) * 2)); - -#endif /* EXTRAFONTS */ diff --git a/nx-X11/lib/font/Speedo/sperr.c b/nx-X11/lib/font/Speedo/sperr.c deleted file mode 100644 index 36ce511..0000000 --- a/nx-X11/lib/font/Speedo/sperr.c +++ /dev/null @@ -1,127 +0,0 @@ -/* $Xorg: sperr.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of M.I.T., Network Computing Devices, - * or Digital not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. M.I.T. Network Computing Devices, or Digital - * make no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * NETWORK COMPUTING DEVICES, DIGITAL AND MIT DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES, DIGITAL OR MIT BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ - -/* - -Copyright 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/sperr.c,v 1.6 2001/12/14 19:56:41 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "spint.h" - -#ifndef FONTMODULE -#include <stdarg.h> -#endif - -extern void ErrorF(const char* f, ...); - -void -SpeedoErr(char *str, ...) -{ - va_list v; - int a1; - - va_start(v, str); - ErrorF("Speedo: "); - a1 = va_arg(v, int); - ErrorF(str, a1); - va_end(v); -} - -/* - * Called by Speedo character generator to report an error. - * - * Since character data not available is one of those errors - * that happens many times, don't report it to user - */ -void -sp_report_error(fix15 n) -{ - switch (n) { - case 1: - SpeedoErr("Insufficient font data loaded\n"); - break; - case 3: - SpeedoErr("Transformation matrix out of range\n"); - break; - case 4: - SpeedoErr("Font format error\n"); - break; - case 5: - SpeedoErr("Requested specs not compatible with output module\n"); - break; - case 7: - SpeedoErr("Intelligent transformation requested but not supported\n"); - break; - case 8: - SpeedoErr("Unsupported output mode requested\n"); - break; - case 9: - SpeedoErr("Extended font loaded but only compact fonts supported\n"); - break; - case 10: - SpeedoErr("Font specs not set prior to use of font\n"); - break; - case 12: - break; - case 13: - SpeedoErr("Track kerning data not available()\n"); - break; - case 14: - SpeedoErr("Pair kerning data not available()\n"); - break; - default: - SpeedoErr("report_error(%d)\n", n); - break; - } -} diff --git a/nx-X11/lib/font/Speedo/spfile.c b/nx-X11/lib/font/Speedo/spfile.c deleted file mode 100644 index c58c0e4..0000000 --- a/nx-X11/lib/font/Speedo/spfile.c +++ /dev/null @@ -1,460 +0,0 @@ -/* $Xorg: spfile.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices Inc - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/spfile.c,v 1.13 2001/08/13 21:46:47 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/fontenc.h> -#ifndef FONTMODULE -#include <stdio.h> -#else -#include "xf86_ansic.h" -#endif - -#include "spint.h" -#include "bics-unicode.h" - -SpeedoFontPtr sp_fp_cur = (SpeedoFontPtr) 0; - -#ifdef EXTRAFONTS -#include "ncdkeys.h" -#endif - -#include "keys.h" - -#ifdef EXTRAFONTS -static ufix8 skey[] = -{ - SKEY0, - SKEY1, - SKEY2, - SKEY3, - SKEY4, - SKEY5, - SKEY6, - SKEY7, - SKEY8 -}; /* Sample Font decryption key */ - -static ufix8 rkey[] = -{ - RKEY0, - RKEY1, - RKEY2, - RKEY3, - RKEY4, - RKEY5, - RKEY6, - RKEY7, - RKEY8 -}; /* Retail Font decryption key */ - -#endif /* EXTRAFONTS */ - -#ifdef XSAMPLEFONTS -static ufix8 xkey[] = -{ - XKEY0, - XKEY1, - XKEY2, - XKEY3, - XKEY4, - XKEY5, - XKEY6, - XKEY7, - XKEY8 -}; /* Sample Font decryption key */ -#endif - -static ufix8 mkey[] = -{ - KEY0, - KEY1, - KEY2, - KEY3, - KEY4, - KEY5, - KEY6, - KEY7, - KEY8 -}; /* Font decryption key */ - - -static fix15 -read_2b(ufix8 *ptr) -{ - fix15 tmp; - - tmp = *ptr++; - tmp = (tmp << 8) + *ptr; - return tmp; -} - -static fix31 -read_4b(ufix8 *ptr) -{ - fix31 tmp; - - tmp = *ptr++; - tmp = (tmp << 8) + *ptr++; - tmp = (tmp << 8) + *ptr++; - tmp = (tmp << 8) + *ptr; - return tmp; -} - -/* - * loads the specified char's data - */ -buff_t * -sp_load_char_data(fix31 file_offset, fix15 num, fix15 cb_offset) -{ - SpeedoMasterFontPtr master = sp_fp_cur->master; - - if (fseek(master->fp, (long) file_offset, (int) 0)) { - SpeedoErr("can't seek to char\n"); - } - if ((num + cb_offset) > master->mincharsize) { - SpeedoErr("char buf overflow\n"); - } - if (fread((master->c_buffer + cb_offset), sizeof(ufix8), num, - master->fp) != num) { - SpeedoErr("can't get char data\n"); - } - master->char_data.org = (ufix8 *) master->c_buffer + cb_offset; - master->char_data.no_bytes = num; - - return &master->char_data; -} - -struct speedo_encoding { - char *name; - int *enc; - int enc_size; -}; - -/* Takes care of caching encodings already referenced */ -static int -find_encoding(const char *fontname, const char *filename, - int **enc, int *enc_size) -{ - static struct speedo_encoding *known_encodings=0; - static int number_known_encodings=0; - static int known_encodings_size=0; - - char *encoding_name; - int iso8859_1; - FontMapPtr mapping; - int i, j, k, size; - struct speedo_encoding *temp; - int *new_enc; - char *new_name; - - iso8859_1 = 0; - - encoding_name = FontEncFromXLFD(fontname, strlen(fontname)); - if(!encoding_name) { - encoding_name="iso8859-1"; - iso8859_1=1; - } - /* We don't go through the font library if asked for Latin-1 */ - iso8859_1 = iso8859_1 || !strcmp(encoding_name, "iso8859-1"); - - for(i=0; i<number_known_encodings; i++) { - if(!strcmp(encoding_name, known_encodings[i].name)) { - *enc=known_encodings[i].enc; - *enc_size=known_encodings[i].enc_size; - return Successful; - } - } - - /* it hasn't been cached yet, need to compute it */ - - /* ensure we've got enough storage first */ - - if(known_encodings==0) { - if((known_encodings= - (struct speedo_encoding*)xalloc(2*sizeof(struct speedo_encoding))) - ==0) - return AllocError; - number_known_encodings=0; - known_encodings_size=2; - } - - if(number_known_encodings >= known_encodings_size) { - if((temp= - (struct speedo_encoding*)xrealloc(known_encodings, - 2*sizeof(struct speedo_encoding)* - known_encodings_size))==0) - return AllocError; - known_encodings=temp; - known_encodings_size*=2; - } - - mapping=0; - if(!iso8859_1) { - mapping = FontEncMapFind(encoding_name, - FONT_ENCODING_UNICODE, -1, -1, - filename); - } -#define SPEEDO_RECODE(c) \ - (mapping? \ - unicode_to_bics(FontEncRecode(c, mapping)): \ - unicode_to_bics(c)) - - if((new_name = (char*)xalloc(strlen(encoding_name)))==0) - return AllocError; - strcpy(new_name, encoding_name); - - /* For now, we limit ourselves to 256 glyphs */ - size=0; - for(i=0; i < (mapping?mapping->encoding->size:256) && i < 256; i++) - if(SPEEDO_RECODE(i)>=0) - size++; - new_enc = (int*)xalloc(2*size*sizeof(int)); - if(!new_enc) { - xfree(new_name); - return AllocError; - } - for(i=j=0; i < (mapping?mapping->encoding->size:256) && i < 256; i++) - if((k = SPEEDO_RECODE(i))>=0) { - new_enc[2*j] = i; - new_enc[2*j+1] = k; - j++; - } - known_encodings[number_known_encodings].name = new_name; - known_encodings[number_known_encodings].enc = new_enc; - known_encodings[number_known_encodings].enc_size = size; - number_known_encodings++; - - *enc = new_enc; - *enc_size = size; - return Successful; -#undef SPEEDO_RECODE -} - -int -sp_open_master(const char *fontname, const char *filename, - SpeedoMasterFontPtr *master) -{ - SpeedoMasterFontPtr spmf; - ufix8 tmp[16]; - ufix16 cust_no; - FILE *fp; - ufix32 minbufsize; - ufix16 mincharsize; - ufix8 *f_buffer; - ufix8 *c_buffer; - int ret; - ufix8 *key; - - spmf = (SpeedoMasterFontPtr) xalloc(sizeof(SpeedoMasterFontRec)); - if (!spmf) - return AllocError; - bzero(spmf, sizeof(SpeedoMasterFontRec)); - spmf->entry = NULL; - spmf->f_buffer = NULL; - spmf->c_buffer = NULL; - - /* open font */ - spmf->fname = (char *) xalloc(strlen(filename) + 1); - if (!spmf->fname) - return AllocError; - fp = fopen(filename, "r"); - if (!fp) { - ret = BadFontName; - goto cleanup; - } - strcpy(spmf->fname, filename); - spmf->fp = fp; - spmf->state |= MasterFileOpen; - - if (fread(tmp, sizeof(ufix8), 16, fp) != 16) { - ret = BadFontName; - goto cleanup; - } - minbufsize = (ufix32) read_4b(tmp + FH_FBFSZ); - f_buffer = (ufix8 *) xalloc(minbufsize); - if (!f_buffer) { - ret = AllocError; - goto cleanup; - } - spmf->f_buffer = f_buffer; - - fseek(fp, (ufix32) 0, 0); - - /* read in the font */ - if (fread(f_buffer, sizeof(ufix8), (ufix16) minbufsize, fp) != minbufsize) { - ret = BadFontName; - goto cleanup; - } - spmf->copyright = (char *) (f_buffer + FH_CPYRT); - spmf->mincharsize = mincharsize = read_2b(f_buffer + FH_CBFSZ); - - c_buffer = (ufix8 *) xalloc(mincharsize); - if (!c_buffer) { - ret = AllocError; - goto cleanup; - } - spmf->c_buffer = c_buffer; - - spmf->font.org = spmf->f_buffer; - spmf->font.no_bytes = minbufsize; - - cust_no = sp_get_cust_no(spmf->font); - - /* XXX add custom encryption stuff here */ - -#ifdef EXTRAFONTS - if (cust_no == SCUS0) { - key = skey; - } else if (cust_no == RCUS0) { - key = rkey; - } else -#endif - -#ifdef XSAMPLEFONTS - if (cust_no == XCUS0) { - key = xkey; - } else -#endif - - if (cust_no == CUS0) { - key = mkey; - } else { - SpeedoErr("Non - standard encryption for \"%s\"\n", filename); - ret = BadFontName; - goto cleanup; - } - spmf->key = key; - sp_set_key(key); - - spmf->first_char_id = read_2b(f_buffer + FH_FCHRF); - spmf->num_chars = read_2b(f_buffer + FH_NCHRL); - - - spmf->enc = 0; - spmf->enc_size = 0; - -#ifdef EXTRAFONTS - { /* choose the proper encoding */ - char *f; - - f = strrchr(filename, '/'); - if (f) { - f++; - if (strncmp(f, "bx113", 5) == 0) { - spmf->enc = adobe_map; - spmf->enc_size = adobe_map_size; - } - } - } -#endif - - if(!spmf->enc) - if((ret=find_encoding(fontname, filename, &spmf->enc, &spmf->enc_size)) - !=Successful) - goto cleanup; - - spmf->first_char_id = spmf->enc[0]; - /* size of extents array */ - spmf->max_id = spmf->enc[(spmf->enc_size - 1) * 2]; - spmf->num_chars = spmf->enc_size; - - *master = spmf; - - return Successful; - -cleanup: - *master = (SpeedoMasterFontPtr) 0; - sp_close_master_font(spmf); - return ret; -} - -void -sp_close_master_font(SpeedoMasterFontPtr spmf) -{ - if (!spmf) - return; - if (spmf->state & MasterFileOpen) - fclose(spmf->fp); - if (spmf->entry) - spmf->entry->u.scalable.extra->private = NULL; - xfree(spmf->fname); - xfree(spmf->f_buffer); - xfree(spmf->c_buffer); - xfree(spmf); -} - -void -sp_close_master_file(SpeedoMasterFontPtr spmf) -{ - (void) fclose(spmf->fp); - spmf->state &= ~MasterFileOpen; -} - - -/* - * reset the encryption key, and make sure the file is opened - */ -void -sp_reset_master(SpeedoMasterFontPtr spmf) -{ - sp_set_key(spmf->key); - if (!(spmf->state & MasterFileOpen)) { - spmf->fp = fopen(spmf->fname, "r"); - /* XXX -- what to do if we can't open the file? */ - spmf->state |= MasterFileOpen; - } - fseek(spmf->fp, 0, 0); -} diff --git a/nx-X11/lib/font/Speedo/spfont.c b/nx-X11/lib/font/Speedo/spfont.c deleted file mode 100644 index c209d5a..0000000 --- a/nx-X11/lib/font/Speedo/spfont.c +++ /dev/null @@ -1,453 +0,0 @@ -/* $Xorg: spfont.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices Inc - */ -/* $XFree86: xc/lib/font/Speedo/spfont.c,v 3.12tsi Exp $ */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - -/* - * Speedo font loading - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/FSproto.h> -#include "spint.h" -#include <X11/fonts/fontutil.h> -#ifndef FONTMODULE -#ifdef _XOPEN_SOURCE -#include <math.h> -#else -#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */ -#include <math.h> -#undef _XOPEN_SOURCE -#endif -#else -#include "servermd.h" -#include "xf86_ansic.h" -#endif - -#ifndef M_PI -#define M_PI 3.14159 -#endif /* M_PI */ -#ifndef DEFAULT_BIT_ORDER - -#ifdef BITMAP_BIT_ORDER -#define DEFAULT_BIT_ORDER BITMAP_BIT_ORDER -#else -#define DEFAULT_BIT_ORDER UNKNOWN_BIT_ORDER -#endif - -#endif - -static void SpeedoCloseFont(FontPtr pfont); - -static int -sp_get_glyphs( - FontPtr pFont, - unsigned long count, - register unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - CharInfoPtr *glyphs) /* RETURN */ -{ - SpeedoFontPtr spf; - unsigned int firstCol; - register unsigned int numCols; - unsigned int firstRow; - unsigned int numRows; - CharInfoPtr *glyphsBase; - register unsigned int c; - register CharInfoPtr pci; - unsigned int r; - CharInfoPtr encoding; - CharInfoPtr pDefault; -#ifdef notyet - int itemSize; -#endif - int err = Successful; - - spf = (SpeedoFontPtr) pFont->fontPrivate; - encoding = spf->encoding; - pDefault = spf->pDefault; - firstCol = pFont->info.firstCol; - numCols = pFont->info.lastCol - firstCol + 1; - glyphsBase = glyphs; - - - /* XXX - this should be much smarter */ - /* make sure the glyphs are there */ -#ifdef notyet - if (charEncoding == Linear8Bit || charEncoding == TwoD8Bit) - itemSize = 1; - else - itemSize = 2; - - if (!fsd->complete) - err = fs_load_glyphs(NULL, pFont, count, itemSize, chars); -#endif - - if (err != Successful) - return err; - - switch (charEncoding) { - - case Linear8Bit: - case TwoD8Bit: - if (pFont->info.firstRow > 0) - break; - if (pFont->info.allExist && pDefault) { - while (count--) { - c = (*chars++) - firstCol; - if (c < numCols) - *glyphs++ = &encoding[c]; - else - *glyphs++ = pDefault; - } - } else { - while (count--) { - c = (*chars++) - firstCol; - if (c < numCols && (pci = &encoding[c])->bits) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - } - break; - case Linear16Bit: - if (pFont->info.allExist && pDefault) { - while (count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols) - *glyphs++ = &encoding[c]; - else - *glyphs++ = pDefault; - } - } else { - while (count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols && (pci = &encoding[c])->bits) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - } - break; - - case TwoD16Bit: - firstRow = pFont->info.firstRow; - numRows = pFont->info.lastRow - firstRow + 1; - while (count--) { - r = (*chars++) - firstRow; - c = (*chars++) - firstCol; - if (r < numRows && c < numCols && - (pci = &encoding[r * numCols + c])->bits) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - break; - } - *glyphCount = glyphs - glyphsBase; - return Successful; -} - -static CharInfoRec nonExistantChar; - -static int -sp_get_metrics( - FontPtr pFont, - unsigned long count, - register unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - xCharInfo **glyphs) /* RETURN */ -{ - int ret; - SpeedoFontPtr spf; - CharInfoPtr oldDefault; - - spf = (SpeedoFontPtr) pFont->fontPrivate; - oldDefault = spf->pDefault; - spf->pDefault = &nonExistantChar; - ret = sp_get_glyphs(pFont, count, chars, charEncoding, - glyphCount, (CharInfoPtr *) glyphs); - - spf->pDefault = oldDefault; - return ret; -} - -int -sp_open_font( - char *fontname, - char *filename, - FontEntryPtr entry, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - Mask flags, - SpeedoFontPtr *spfont) -{ - SpeedoFontPtr spf; - SpeedoMasterFontPtr spmf; - int ret; - specs_t specs; - int xx8, xy8, yx8, yy8; - - /* find a master (create it if necessary) */ - spmf = (SpeedoMasterFontPtr) entry->u.scalable.extra->private; - if (!spmf) - { - ret = sp_open_master(fontname, filename, &spmf); - if (ret != Successful) - return ret; - entry->u.scalable.extra->private = (pointer) spmf; - spmf->entry = entry; - } - - spf = (SpeedoFontPtr) xalloc(sizeof(SpeedoFontRec)); - if (!spf) - return AllocError; - bzero((char *) spf, sizeof(SpeedoFontRec)); - - *spfont = spf; - - /* clobber everything -- this may be leaking, but other wise evil - * stuff is left behind -- succesive transformed fonts get mangled */ - bzero((char *)&sp_globals, sizeof(sp_globals)); - - spf->master = spmf; - spf->entry = entry; - spmf->refcount++; - sp_reset_master(spmf); - /* now we've done enough that if we bail out we must call sp_close_font */ - - spf->vals = *vals; - - /* set up specs */ - - specs.pfont = &spmf->font; - - specs.xxmult = (int)(vals->pixel_matrix[0] * (double)(1L << 16)); - specs.xymult = (int)(vals->pixel_matrix[2] * (double)(1L << 16)); - specs.yxmult = (int)(vals->pixel_matrix[1] * (double)(1L << 16)); - specs.yymult = (int)(vals->pixel_matrix[3] * (double)(1L << 16)); - - specs.xoffset = 0L << 16; /* XXX tweak? */ - specs.yoffset = 0L << 16; /* XXX tweak? */ - - specs.flags = MODE_SCREEN; - specs.out_info = NULL; - - /* When Speedo tries to generate a very small font bitmap, it - often crashes or goes into an infinite loop. - Don't know why this is so, but until we can fix it properly, - return BadFontName for anything smaller than 4 pixels. - */ -#define TINY_FACTOR (16 << 16) - xx8 = specs.xxmult >> 8; - xy8 = specs.xymult >> 8; - yx8 = specs.yxmult >> 8; - yy8 = specs.yymult >> 8; - if (xx8 * xx8 + xy8 * xy8 < TINY_FACTOR || - yx8 * yx8 + yy8 * yy8 < TINY_FACTOR) - { - sp_close_font(spf); - return BadFontName; - } - - /* clobber global state to avoid wrecking future transformed fonts */ - bzero ((char *) &sp_globals, sizeof(sp_globals)); - - if (!sp_set_specs(&specs)) - { - sp_close_font(spf); - return BadFontName; - } - - spf->specs = specs; - spf->master = spmf; - - *spfont = spf; - return Successful; -} - -static int -sp_load_font( - char *fontname, - char *filename, - FontEntryPtr entry, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr pfont, - Mask flags) -{ - SpeedoFontPtr spf; - SpeedoMasterFontPtr spmf; - int esize; - int ret; - long sWidth; - - ret = sp_open_font(fontname, filename, entry, vals, format, fmask, - flags, &spf); - - if (ret != Successful) - return ret; - - spmf = spf->master; - sp_reset_master(spmf); - esize = sizeof(CharInfoRec) * (spmf->max_id - spmf->first_char_id + 1); - - spf->encoding = (CharInfoPtr) xalloc(esize); - if (!spf->encoding) { - sp_close_font(spf); - return AllocError; - } - bzero((char *) spf->encoding, esize); - - sp_fp_cur = spf; - - sp_make_header(spf, &pfont->info); - - sp_compute_bounds(spf, &pfont->info, SaveMetrics, &sWidth); - - sp_compute_props(spf, fontname, &pfont->info, sWidth); - - pfont->fontPrivate = (pointer) spf; - -/* XXX */ - flags |= FontLoadBitmaps; - - if (flags & FontLoadBitmaps) { - sp_fp_cur = spf; - ret = sp_build_all_bitmaps(pfont, format, fmask); - } - if (ret != Successful) - return ret; - - /* compute remaining accelerators */ - FontComputeInfoAccelerators(&pfont->info); - - pfont->format = format; - - pfont->get_metrics = sp_get_metrics; - pfont->get_glyphs = sp_get_glyphs; - pfont->unload_font = SpeedoCloseFont; - pfont->unload_glyphs = NULL; - pfont->refcnt = 0; - - /* have to hold on to master for min/max id */ - sp_close_master_file(spmf); - - return ret; -} - -int -SpeedoFontLoad( - FontPtr *ppfont, - char *fontname, - char *filename, - FontEntryPtr entry, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - Mask flags) -{ - FontPtr pfont; - int ret; - - /* Reject ridiculously small sizes that will blow up the math */ - if (hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]) < 1.0 || - hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) < 1.0) - return BadFontName; - - if (!(pfont = CreateFontRec())) - return AllocError; - - ret = sp_load_font(fontname, filename, entry, vals, format, fmask, - pfont, flags); - - if (ret == Successful) - *ppfont = pfont; - else - DestroyFontRec (pfont); - - return ret; -} - -void -sp_close_font(SpeedoFontPtr spf) -{ - SpeedoMasterFontPtr spmf; - - spmf = spf->master; - --spmf->refcount; - if (spmf->refcount == 0) - sp_close_master_font (spmf); - xfree(spf->encoding); - xfree(spf->bitmaps); - xfree(spf); -} - -static void -SpeedoCloseFont(FontPtr pfont) -{ - SpeedoFontPtr spf; - - spf = (SpeedoFontPtr) pfont->fontPrivate; - sp_close_font(spf); - xfree(pfont->info.isStringProp); - xfree(pfont->info.props); - DestroyFontRec(pfont); - -} diff --git a/nx-X11/lib/font/Speedo/spfuncs.c b/nx-X11/lib/font/Speedo/spfuncs.c deleted file mode 100644 index da4d5c5..0000000 --- a/nx-X11/lib/font/Speedo/spfuncs.c +++ /dev/null @@ -1,167 +0,0 @@ -/* $Xorg: spfuncs.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/spfuncs.c,v 1.7 2001/08/27 19:49:51 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifndef FONTMODULE -#include <X11/Xos.h> -#endif -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/fontutil.h> -#include "spint.h" - -/* ARGSUSED */ -static int -SpeedoOpenScalable ( - FontPathElementPtr fpe, - FontPtr *pFont, - int flags, - FontEntryPtr entry, - char *fileName, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font) /* We don't do licensing */ -{ - char fullName[MAXFONTNAMELEN]; - - strcpy (fullName, entry->name.name); - return SpeedoFontLoad (pFont, fullName, fileName, entry, vals, - format, fmask, flags); -} - -/* - * XXX - * - * this does a lot more then i'd like, but it has to get the bitmaps - * in order to get accurate metrics (which it *must* have). - * - * a possible optimization is to avoid allocating the glyph memory - * and to simply save the values without doing the work. - */ -static int -get_font_info( - FontInfoPtr pinfo, - char *fontname, - char *filename, - FontEntryPtr entry, - FontScalablePtr vals, - SpeedoFontPtr *spfont) -{ - SpeedoFontPtr spf; - int err; - long sWidth; - - err = sp_open_font(fontname, filename, entry, vals, - (fsBitmapFormat) 0, (fsBitmapFormatMask) 0, (unsigned long) 0, - &spf); - - if (err != Successful) - return err; - - sp_fp_cur = spf; - sp_reset_master(spf->master); - - sp_make_header(spf, pinfo); - - sp_compute_bounds(spf, pinfo, (unsigned long) 0, &sWidth); - - sp_compute_props(spf, fontname, pinfo, sWidth); - - /* compute remaining accelerators */ - FontComputeInfoAccelerators (pinfo); - - *spfont = spf; - - return Successful; -} - -/* ARGSUSED */ -static int -SpeedoGetInfoScaleable( - FontPathElementPtr fpe, - FontInfoPtr pFontInfo, - FontEntryPtr entry, - FontNamePtr fontName, - char *fileName, - FontScalablePtr vals) -{ - SpeedoFontPtr spf = NULL; - char fullName[MAXFONTNAMELEN]; - int err; - - strcpy(fullName, entry->name.name); - FontParseXLFDName(fullName, vals, FONT_XLFD_REPLACE_VALUE); - - err = get_font_info(pFontInfo, fullName, fileName, entry, vals, &spf); - - if (spf) - sp_close_font(spf); - - return err; -} - -static FontRendererRec renderer = { - ".spd", 4, NULL, SpeedoOpenScalable, - NULL, SpeedoGetInfoScaleable, 0 - , CAP_MATRIX | CAP_CHARSUBSETTING -}; - -void -SpeedoRegisterFontFileFunctions() -{ - sp_make_standard_props(); - sp_reset(); - FontFileRegisterRenderer(&renderer); -} diff --git a/nx-X11/lib/font/Speedo/spglyph.c b/nx-X11/lib/font/Speedo/spglyph.c deleted file mode 100644 index 3577f55..0000000 --- a/nx-X11/lib/font/Speedo/spglyph.c +++ /dev/null @@ -1,399 +0,0 @@ -/* $Xorg: spglyph.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices Inc - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/spglyph.c,v 1.6 2001/01/17 19:43:20 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/X.h> /* for bit order #defines */ -#include "spint.h" -#include <X11/fonts/fontutil.h> - -#undef CLIP_BBOX_NOISE - -static CurrentFontValuesRec current_font_values; -static CurrentFontValuesPtr cfv = ¤t_font_values; -static int bit_order, - byte_order, - scan; - -unsigned long -sp_compute_data_size( - FontPtr pfont, - int mappad, - int scanlinepad, - unsigned long start, - unsigned long end) -{ - unsigned long ch; - unsigned long size = 0; - int bpr; - SpeedoFontPtr spf = (SpeedoFontPtr) pfont->fontPrivate; - FontInfoPtr pinfo = &pfont->info; - int firstChar; - - firstChar = spf->master->first_char_id; - - /* allocate the space */ - switch (mappad) { - int charsize; - CharInfoPtr ci; - xCharInfo *cim; - - case BitmapFormatImageRectMin: - cfv->bpr = 0; - for (ch = start; ch <= end; ch++) { - ci = &spf->encoding[ch - firstChar]; - if (!ci) - ci = spf->pDefault; - cim = &ci->metrics; - charsize = GLYPH_SIZE(ci, scanlinepad); - charsize *= cim->ascent + cim->descent; - size += charsize; - } - break; - case BitmapFormatImageRectMaxWidth: - bpr = GLWIDTHBYTESPADDED(FONT_MAX_WIDTH(pinfo), scanlinepad); - cfv->bpr = bpr; - for (ch = start; ch <= end; ch++) { - ci = &spf->encoding[ch - firstChar]; - if (!ci) - ci = spf->pDefault; - cim = &ci->metrics; - charsize = bpr * (cim->ascent + cim->descent); - size += charsize; - } - break; - case BitmapFormatImageRectMax: - bpr = GLWIDTHBYTESPADDED(FONT_MAX_WIDTH(pinfo), scanlinepad); - cfv->bpr = bpr; - size = (end - start + 1) * bpr * FONT_MAX_HEIGHT(pinfo); - break; - default: - assert(0); - } - - return size; -} - -static void -finish_line(SpeedoFontPtr spf) -{ - int bpr = cfv->bpr; - CharInfoPtr ci = &spf->encoding[cfv->char_id - spf->master->first_char_id]; - - if (bpr == 0) { - bpr = GLYPH_SIZE(ci, cfv->scanpad); - } - if (bpr) { /* char may not have any metrics... */ - cfv->bp = (char *)cfv->bp + bpr; - } - assert(cfv->bp - sp_fp_cur->bitmaps <= sp_fp_cur->bitmap_size); -} - - -void -sp_set_bitmap_bits(fix15 y, fix15 xbit1, fix15 xbit2) -{ - int nmiddle; - CARD8 startmask, - endmask; - CARD8 *dst; - - if (xbit1 > cfv->bit_width) { - -#ifdef CLIP_BBOX_NOISE - SpeedoErr("Run wider than bitmap width -- truncated\n"); -#endif - - xbit1 = cfv->bit_width; - } - if (xbit2 > cfv->bit_width) { - -#ifdef CLIP_BBOX_NOISE - SpeedoErr("Run wider than bitmap width -- truncated\n"); -#endif - - xbit2 = cfv->bit_width; - } - - if (xbit2 < xbit1) { - xbit2 = xbit1; - } - - while (cfv->cur_y != y) { - finish_line(sp_fp_cur); - cfv->cur_y++; - } - - cfv->last_y = y; - if (y >= cfv->bit_height) { - -#ifdef CLIP_BBOX_NOISE - SpeedoErr("Y larger than bitmap height -- truncated\n"); -#endif - - cfv->trunc = 1; - return; - } - if (xbit1 < 0) /* XXX this is more than a little bit rude... */ - xbit1 = 0; - - nmiddle = (xbit1 >> 3); - dst = (CARD8 *)cfv->bp + nmiddle; - xbit2 -= (xbit1 & ~7); - nmiddle = (xbit2 >> 3); - xbit1 &= 7; - xbit2 &= 7; - if (bit_order == MSBFirst) { - startmask = ((CARD8) ~0) >> xbit1; - endmask = ~(((CARD8) ~0) >> xbit2); - } else { - startmask = ((CARD8) ~0) << xbit1; - endmask = ~(((CARD8) ~0) << xbit2); - } - if (nmiddle == 0) - *dst |= endmask & startmask; - else { - *dst++ |= startmask; - while (--nmiddle) - *dst++ = (CARD8)~0; - *dst |= endmask; - } -} - -/* ARGSUSED */ -void -sp_open_bitmap(fix31 x_set_width, fix31 y_set_width, fix31 xorg, fix31 yorg, - fix15 xsize, fix15 ysize) -{ - CharInfoPtr ci = &sp_fp_cur->encoding[cfv->char_id - sp_fp_cur->master->first_char_id]; - -/*- - * this is set to provide better quality bitmaps. since the Speedo - * sp_get_bbox() function returns an approximate (but guarenteed to contain) - * set of metrics, some of the bitmaps can be place poorly inside and - * look bad. - * - * with this set, the actual bitmap values are used instead of the bboxes. - * it makes things look better, but causes two possible problems: - * - * 1 - the reported min & max bounds may not correspond to the extents - * reported - * 2 - if the extents are reported before the character is generated, - * a client could see them change. this currently never happens, - * but will when a desired enhancement (don't reneder till needed) - * is made. - */ - -#define BBOX_FIXUP 1 - -#ifdef BBOX_FIXUP - int off_horz; - int off_vert; - - if (xorg < 0) - off_horz = (fix15) ((xorg - 32768L) / 65536); - else - off_horz = (fix15) ((xorg + 32768L) / 65536); - if (yorg < 0) - off_vert = (fix15) ((yorg - 32768L) / 65536); - else - off_vert = (fix15) ((yorg + 32768L) / 65536); - if (xsize != 0 || ysize != 0 || ci->metrics.characterWidth) - { - ci->metrics.leftSideBearing = off_horz; - ci->metrics.descent = -off_vert; - ci->metrics.rightSideBearing = xsize + off_horz; - ci->metrics.ascent = ysize + off_vert; - } - else - { - /* If setting the proper size would cause the character to appear to - be non-existent, fudge things by giving it a pixel to occupy. */ - xsize = ysize = 1; - ci->metrics.leftSideBearing = ci->metrics.descent = 0; - ci->metrics.rightSideBearing = ci->metrics.ascent = 1; - } - - cfv->bit_width = xsize; - cfv->bit_height = ysize; -#else - cfv->bit_width = ci->metrics.rightSideBearing - - ci->metrics.leftSideBearing; - cfv->bit_height = ci->metrics.ascent + ci->metrics.descent; -#endif - - assert(cfv->bp - sp_fp_cur->bitmaps <= sp_fp_cur->bitmap_size); - ci->bits = (char *) cfv->bp; - - cfv->cur_y = 0; -} - -void -sp_close_bitmap() -{ - CharInfoPtr ci = &sp_fp_cur->encoding[cfv->char_id - sp_fp_cur->master->first_char_id]; - int bpr = cfv->bpr; - - if (bpr == 0) - bpr = GLYPH_SIZE(ci, cfv->scanpad); - if (!cfv->trunc) - finish_line(sp_fp_cur); - cfv->trunc = 0; - cfv->last_y++; - while (cfv->last_y < cfv->bit_height) { - finish_line(sp_fp_cur); - cfv->last_y++; - } - if (byte_order != bit_order) { - switch (scan) { - case 1: - break; - case 2: - TwoByteSwap(cfv->bp, bpr * cfv->bit_height); - break; - case 4: - FourByteSwap(cfv->bp, bpr * cfv->bit_height); - break; - } - } -} - -int -sp_build_all_bitmaps( - FontPtr pfont, - fsBitmapFormat format, - fsBitmapFormatMask fmask) -{ - int ret, - glyph = 1, - image = BitmapFormatImageRectMin; - unsigned long glyph_size; - SpeedoFontPtr spf = (SpeedoFontPtr) pfont->fontPrivate; - SpeedoMasterFontPtr spmf = spf->master; - pointer bitmaps; - int start, - end, - i; - - scan = 1; - ret = CheckFSFormat(format, fmask, - &bit_order, &byte_order, &scan, &glyph, &image); - - pfont->bit = bit_order; - pfont->byte = byte_order; - pfont->glyph = glyph; - pfont->scan = scan; - if (ret != Successful) - return BadFontFormat; - - start = spmf->first_char_id; - end = spmf->max_id; - glyph_size = sp_compute_data_size(pfont, image, glyph, start, end); - - /* XXX -- MONDO KLUDGE -- add some slop */ - /* - * not sure why this is wanted, but it keeps the packer from going off the - * end and toasting us down the line - */ - glyph_size += 20; - -#ifdef DEBUG - spf->bitmap_size = glyph_size; -#endif - - bitmaps = (pointer) xalloc(glyph_size); - if (!bitmaps) - return AllocError; - bzero((char *) bitmaps, glyph_size); - - /* set up some state */ - sp_fp_cur = spf; - spf->bitmaps = bitmaps; - cfv->format = format; - cfv->scanpad = glyph; - cfv->bp = bitmaps; - - for (i = 0; i < spmf->num_chars; i++) { - int j; - cfv->char_index = spmf->enc[i * 2 + 1]; - cfv->char_id = spmf->enc[i * 2]; -#ifdef DEBUG -fprintf(stderr, "build_all_sp_bitmaps:i = %d, Char ID = %d\n", i, cfv->char_id); -#endif - if (!cfv->char_id) - continue; - - /* - * See if this character is in the list of ranges specified in the - * XLFD name - */ - for (j = 0; j < spf->vals.nranges; j++) - if (cfv->char_id >= mincharno(spf->vals.ranges[j]) && - cfv->char_id <= maxcharno(spf->vals.ranges[j])) - break; - - /* If not, don't realize it. */ - if (spf->vals.nranges && j == spf->vals.nranges) - continue; - - if (!sp_make_char(cfv->char_index)) { - -#ifdef DEBUG /* can be very common with some encodings */ - SpeedoErr("Can't make char %d\n", cfv->char_index); -#endif - } - } - - return Successful; -} diff --git a/nx-X11/lib/font/Speedo/spinfo.c b/nx-X11/lib/font/Speedo/spinfo.c deleted file mode 100644 index d7a1edd..0000000 --- a/nx-X11/lib/font/Speedo/spinfo.c +++ /dev/null @@ -1,462 +0,0 @@ -/* $Xorg: spinfo.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/spinfo.c,v 1.12 2001/12/14 19:56:42 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/fontutil.h> -#include "spint.h" -#ifndef FONTMODULE -#include <math.h> -#else -#include "xf86_ansic.h" -#endif - -/* percentage of pointsize used to specify ascent & descent */ -#define STRETCH_FACTOR 120 - -enum scaleType { - atom, truncate_atom, pixel_size, point_size, resolution_x, - resolution_y, average_width -}; - -typedef struct _fontProp { - char *name; - long atom; - enum scaleType type; -} fontProp; - -static fontProp fontNamePropTable[] = { - { "FOUNDRY", 0, atom }, - { "FAMILY_NAME", 0, atom }, - { "WEIGHT_NAME", 0, atom }, - { "SLANT", 0, atom }, - { "SETWIDTH_NAME", 0, atom }, - { "ADD_STYLE_NAME", 0, atom }, - { "PIXEL_SIZE", 0, pixel_size }, - { "POINT_SIZE", 0, point_size }, - { "RESOLUTION_X", 0, resolution_x }, - { "RESOLUTION_Y", 0, resolution_y }, - { "SPACING", 0, atom }, - { "AVERAGE_WIDTH", 0, average_width }, - { "CHARSET_REGISTRY", 0, atom }, - { "CHARSET_ENCODING", 0, truncate_atom } -}; - -/* Warning: following array is closely related to the sequence of - defines after it. */ - -static fontProp extraProps[] = { - { "FONT", 0, }, - { "COPYRIGHT", 0, }, - { "RAW_PIXEL_SIZE", 0, }, - { "RAW_POINT_SIZE", 0, }, - { "RAW_ASCENT", 0, }, - { "RAW_DESCENT", 0, }, - { "RAW_AVERAGE_WIDTH", 0, }, - { "FONT_TYPE", 0, }, - { "RASTERIZER_NAME", 0, } -}; - -/* this is a bit kludgy */ -#define FONTPROP 0 -#define COPYRIGHTPROP 1 -#define RAWPIXELPROP 2 -#define RAWPOINTPROP 3 -#define RAWASCENTPROP 4 -#define RAWDESCENTPROP 5 -#define RAWWIDTHPROP 6 -#define FONT_TYPEPROP 7 -#define RASTERIZER_NAMEPROP 8 - -#define NNAMEPROPS (sizeof(fontNamePropTable) / sizeof(fontProp)) -#define NEXTRAPROPS (sizeof(extraProps) / sizeof(fontProp)) - -#define NPROPS (NNAMEPROPS + NEXTRAPROPS) - -void -sp_make_standard_props() -{ - int i; - fontProp *t; - - i = sizeof(fontNamePropTable) / sizeof(fontProp); - for (t = fontNamePropTable; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); - i = sizeof(extraProps) / sizeof(fontProp); - for (t = extraProps; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); -} - -void -sp_make_header( - SpeedoFontPtr spf, - FontInfoPtr pinfo) -{ - int pixel_size; - SpeedoMasterFontPtr spmf = spf->master; - - pinfo->firstCol = spmf->first_char_id & 0xff; - pinfo->firstRow = spmf->first_char_id >> 8; - pinfo->lastCol = spmf->max_id & 0xff; - pinfo->lastRow = spmf->max_id >> 8; - - /* XXX -- hackery here */ - pinfo->defaultCh = 0; -/* computed by FontComputeInfoAccelerators: - * noOverlap - * constantMetrics - * terminalFont - * constantWidth - * inkInside - */ - pinfo->inkMetrics = 0; - pinfo->allExist = 0; - pinfo->drawDirection = LeftToRight; - pinfo->cachable = 1; - if (spf->specs.xxmult != spf->specs.yymult) - pinfo->anamorphic = TRUE; - else - pinfo->anamorphic = FALSE; -/* computed by sp_compute_bounds: - * maxOverlap - * maxbounds - * minbounds - * ink_maxbounds - * ink_minbounds - */ - pixel_size = spf->vals.pixel_matrix[3] * STRETCH_FACTOR / 100; - pinfo->fontAscent = pixel_size * 764 / 1000; /* 764 == EM_TOP */ - pinfo->fontDescent = pixel_size - pinfo->fontAscent; -} - -static void -adjust_min_max( - xCharInfo *minc, - xCharInfo *maxc, - xCharInfo *tmp) -{ -#define MINMAX(field,ci) \ - if (minc->field > (ci)->field) \ - minc->field = (ci)->field; \ - if (maxc->field < (ci)->field) \ - maxc->field = (ci)->field; - - MINMAX(ascent, tmp); - MINMAX(descent, tmp); - MINMAX(leftSideBearing, tmp); - MINMAX(rightSideBearing, tmp); - MINMAX(characterWidth, tmp); - - if ((INT16)minc->attributes > (INT16)tmp->attributes) - minc->attributes = tmp->attributes; - if ((INT16)maxc->attributes < (INT16)tmp->attributes) - maxc->attributes = tmp->attributes; - -#undef MINMAX -} - - -void -sp_compute_bounds( - SpeedoFontPtr spf, - FontInfoPtr pinfo, - unsigned long flags, - long *sWidth) -{ - int i, - id, - index, - maxOverlap, - overlap, - total_width = 0; - xCharInfo minchar, - maxchar, - tmpchar; - bbox_t bbox; - fix31 width; - double pix_width; - SpeedoMasterFontPtr spmf = spf->master; - int firstChar; - int num_chars = 0; - - firstChar = spmf->first_char_id; - minchar.ascent = minchar.descent = - minchar.leftSideBearing = minchar.rightSideBearing = - minchar.characterWidth = minchar.attributes = 32767; - maxchar.ascent = maxchar.descent = - maxchar.leftSideBearing = maxchar.rightSideBearing = - maxchar.characterWidth = maxchar.attributes = -32767; - maxOverlap = -32767; - *sWidth = 0; - for (i = 0; i < spmf->num_chars; i++) { - int j; - int char_id; - - index = spmf->enc[i * 2 + 1]; - char_id = spmf->enc[i * 2]; - /* - * See if this character is in the list of ranges specified in the - * XLFD name - */ - for (j = 0; j < spf->vals.nranges; j++) - if (char_id >= mincharno(spf->vals.ranges[j]) && - char_id <= maxcharno(spf->vals.ranges[j])) - break; - if (spf->vals.nranges && j == spf->vals.nranges) - continue; - num_chars++; - - if (!(flags & ComputeBoundsOnly)) { - - width = sp_get_char_width(index); - - /* convert to pixel coords */ - pix_width = (int)width * (spf->specs.xxmult / 65536L) + - ((int) width * (spf->specs.xxmult % 65536L)) - / 65536L; - pix_width /= 65536L; - - (void) sp_get_char_bbox(index, &bbox); - bbox.ymax = (bbox.ymax + 32768L) >> 16; - bbox.ymin = (bbox.ymin + 32768L) >> 16; - bbox.xmin = (bbox.xmin + 32768L) >> 16; - bbox.xmax = (bbox.xmax + 32768L) >> 16; - tmpchar.ascent = bbox.ymax; - tmpchar.descent = -bbox.ymin; - tmpchar.characterWidth = (int)(pix_width + /* round */ - (pix_width > 0 ? 0.5 : -0.5)); - tmpchar.rightSideBearing = bbox.xmax; - tmpchar.leftSideBearing = bbox.xmin; - - if (!tmpchar.characterWidth && - tmpchar.ascent == -tmpchar.descent && - tmpchar.rightSideBearing == tmpchar.leftSideBearing) - { - /* Character appears non-existent, probably as a result - of the transformation. Let's give it one pixel in - the universe so it's not mistaken for non-existent. */ - tmpchar.leftSideBearing = tmpchar.descent = 0; - tmpchar.rightSideBearing = tmpchar.ascent = 1; - } - - tmpchar.attributes = (int)((double)(int)width / 65.536 + .5); - } - else - tmpchar = spf->encoding[char_id - firstChar].metrics; - - adjust_min_max(&minchar, &maxchar, &tmpchar); - overlap = tmpchar.rightSideBearing - tmpchar.characterWidth; - if (maxOverlap < overlap) - maxOverlap = overlap; - - total_width += ((int)(INT16)tmpchar.attributes); - *sWidth += abs((int)(INT16)tmpchar.attributes); - - if (flags & SaveMetrics) { - id = spmf->enc[i * 2] - firstChar; - assert(id <= spmf->max_id - firstChar); - spf->encoding[id].metrics = tmpchar; - } - } - - - if (num_chars > 0) - { - *sWidth = (int)(((double)*sWidth * 10.0 + (double)num_chars / 2.0) / - num_chars); - if (total_width < 0) - { - /* Predominant direction is R->L */ - *sWidth = -*sWidth; - } - spf->vals.width = (int)((double)*sWidth * spf->vals.pixel_matrix[0] / - 1000.0 + - (spf->vals.pixel_matrix[0] > 0 ? .5 : -.5)); - } - else - { - spf->vals.width = 0; - } - pinfo->maxbounds = maxchar; - pinfo->minbounds = minchar; - pinfo->ink_maxbounds = maxchar; - pinfo->ink_minbounds = minchar; - pinfo->maxOverlap = maxOverlap; -} - -void -sp_compute_props( - SpeedoFontPtr spf, - char *fontname, - FontInfoPtr pinfo, - long sWidth) -{ - FontPropPtr pp; - int i, - nprops; - fontProp *fpt; - char *is_str; - char *ptr1 = NULL, - *ptr2; - char *ptr3; - char tmpname[1024]; - FontScalableRec tmpvals; - - nprops = pinfo->nprops = NPROPS; - pinfo->isStringProp = (char *) xalloc(sizeof(char) * nprops); - pinfo->props = (FontPropPtr) xalloc(sizeof(FontPropRec) * nprops); - if (!pinfo->isStringProp || !pinfo->props) { - xfree(pinfo->isStringProp); - pinfo->isStringProp = (char *) 0; - xfree(pinfo->props); - pinfo->props = (FontPropPtr) 0; - pinfo->nprops = 0; - return; - } - bzero(pinfo->isStringProp, (sizeof(char) * nprops)); - - ptr2 = fontname; - for (i = NNAMEPROPS, pp = pinfo->props, fpt = fontNamePropTable, - is_str = pinfo->isStringProp; - i; - i--, pp++, fpt++, is_str++) { - - if (*ptr2) - { - ptr1 = ptr2 + 1; - if (!(ptr2 = strchr(ptr1, '-'))) ptr2 = strchr(ptr1, '\0'); - } - - pp->name = fpt->atom; - switch (fpt->type) { - case atom: - *is_str = TRUE; - pp->value = MakeAtom(ptr1, ptr2 - ptr1, TRUE); - break; - case truncate_atom: - *is_str = TRUE; - for (ptr3 = ptr1; *ptr3; ptr3++) - if (*ptr3 == '[') - break; - pp->value = MakeAtom(ptr1, ptr3 - ptr1, TRUE); - break; - case pixel_size: - pp->value = (int)(spf->vals.pixel_matrix[3] + - (spf->vals.pixel_matrix[3] > 0 ? .5 : -.5)); - break; - case point_size: - pp->value = (int)(spf->vals.point_matrix[3] * 10.0 + - (spf->vals.point_matrix[3] > 0 ? .5 : -.5)); - break; - case resolution_x: - pp->value = spf->vals.x; - break; - case resolution_y: - pp->value = spf->vals.y; - break; - case average_width: - pp->value = spf->vals.width; - break; - } - } - - for (i = 0, fpt = extraProps; i < NEXTRAPROPS; i++, is_str++, pp++, fpt++) { - pp->name = fpt->atom; - switch (i) { - case FONTPROP: - *is_str = TRUE; - strcpy(tmpname, fontname); - FontParseXLFDName(tmpname, &tmpvals, FONT_XLFD_REPLACE_ZERO); - FontParseXLFDName(tmpname, &spf->vals, FONT_XLFD_REPLACE_VALUE); - pp->value = MakeAtom(tmpname, strlen(tmpname), TRUE); - break; - case COPYRIGHTPROP: - *is_str = TRUE; - pp->value = MakeAtom(spf->master->copyright, - strlen(spf->master->copyright), TRUE); - break; - case FONT_TYPEPROP: - *is_str = TRUE; - pp->value = MakeAtom("Speedo", strlen("Speedo"), TRUE); - break; - case RASTERIZER_NAMEPROP: - *is_str = TRUE; - pp->value = MakeAtom("X Consortium Speedo Rasterizer", - strlen("X Consortium Speedo Rasterizer"), - TRUE); - break; - case RAWPIXELPROP: - *is_str = FALSE; - pp->value = 1000; - break; - case RAWPOINTPROP: - *is_str = FALSE; - pp->value = (long)(72270.0 / (double)spf->vals.y + .5); - break; - case RAWASCENTPROP: - *is_str = FALSE; - pp->value = STRETCH_FACTOR * 764 / 100; - break; - case RAWDESCENTPROP: - *is_str = FALSE; - pp->value = STRETCH_FACTOR * 236 / 100; - break; - case RAWWIDTHPROP: - *is_str = FALSE; - pp->value = sWidth; - break; - } - } -} diff --git a/nx-X11/lib/font/Speedo/spint.h b/nx-X11/lib/font/Speedo/spint.h deleted file mode 100644 index 118ea8f..0000000 --- a/nx-X11/lib/font/Speedo/spint.h +++ /dev/null @@ -1,180 +0,0 @@ -/* $Xorg: spint.h,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/Speedo/spint.h,v 1.9 2001/01/17 19:43:20 dawes Exp $ */ - -#ifndef _SPINT_H_ -#define _SPINT_H_ - -#include <X11/fonts/fntfilst.h> -#ifndef XFree86LOADER -#include <stdio.h> -#else -#include <xf86_ansic.h> -#endif -#include <X11/Xfuncproto.h> -#include "speedo.h" - -#define SaveMetrics 0x1 -#define ComputeBoundsOnly 0x2 - -#define GLWIDTHBYTESPADDED(bits,nbytes) \ - ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \ - :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \ - :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \ - :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \ - : 0) - -#define GLYPH_SIZE(ch, nbytes) \ - GLWIDTHBYTESPADDED((ch)->metrics.rightSideBearing - \ - (ch)->metrics.leftSideBearing, (nbytes)) - -#define mincharno(p) ((p).min_char_low + ((p).min_char_high << 8)) -#define maxcharno(p) ((p).max_char_low + ((p).max_char_high << 8)) - -#define MasterFileOpen 0x1 - -typedef struct _sp_master { - FontEntryPtr entry; /* back pointer */ - FILE *fp; - char *fname; - ufix8 *f_buffer; - ufix8 *c_buffer; - char *copyright; - ufix8 *key; - buff_t font; - buff_t char_data; - ufix16 mincharsize; - int first_char_id; - int num_chars; - int max_id; - int state; /* open, closed */ - int refcount; /* number of instances */ - int *enc; - int enc_size; -} SpeedoMasterFontRec, *SpeedoMasterFontPtr; - -typedef struct _cur_font_stats { - fsBitmapFormat format; - /* current glyph info */ - ufix16 char_index; - ufix16 char_id; - - fix15 bit_width, - bit_height; - fix15 cur_y; - int bpr; - - /* - * since Speedo returns extents that are not identical to what it feeds to - * the bitmap builder, and we want to be able to use the extents for - * preformance reasons, some of the bitmaps require padding out. the next - * two flags keep track of this. - */ - fix15 last_y; - int trunc; - - pointer bp; - int scanpad; -} CurrentFontValuesRec, *CurrentFontValuesPtr; - - -typedef struct _sp_font { - struct _sp_master *master; - specs_t specs; - - FontEntryPtr entry; - - FontScalableRec vals; - - /* char & metric data */ - CharInfoPtr encoding; - CharInfoPtr pDefault; - pointer bitmaps; - -#ifdef DEBUG - unsigned long bitmap_size; -#endif - -} SpeedoFontRec, *SpeedoFontPtr; - -extern SpeedoFontPtr sp_fp_cur; - -extern int sp_open_font(char *, char *, FontEntryPtr, FontScalablePtr, - fsBitmapFormat, fsBitmapFormatMask, Mask, - SpeedoFontPtr *); -extern int sp_open_master(const char *, const char *, SpeedoMasterFontPtr *); -extern void sp_close_font(SpeedoFontPtr); -extern void sp_close_master_font(SpeedoMasterFontPtr); -extern void sp_close_master_file(SpeedoMasterFontPtr); -extern void sp_reset_master(SpeedoMasterFontPtr); -extern void SpeedoErr(char *fmt, ...); - -extern void sp_make_standard_props(void); -extern void sp_make_header(SpeedoFontPtr, FontInfoPtr); -extern void sp_compute_bounds(SpeedoFontPtr, FontInfoPtr, unsigned long, long *); -extern void sp_compute_props(SpeedoFontPtr, char *, FontInfoPtr, long); -extern int sp_build_all_bitmaps(FontPtr, fsBitmapFormat, fsBitmapFormatMask); -extern unsigned long sp_compute_data_size(FontPtr, int, int, unsigned long, - unsigned long); - -extern int SpeedoFontLoad(FontPtr *, char *, char *, FontEntryPtr, - FontScalablePtr, fsBitmapFormat, fsBitmapFormatMask, - Mask); - -extern int sp_bics_map[]; -extern int sp_bics_map_size; - -#ifdef EXTRAFONTS -extern int adobe_map[]; -extern int adobe_map_size; - -#endif - -#endif /* _SPINT_H_ */ diff --git a/nx-X11/lib/font/Speedo/sptobdf.c b/nx-X11/lib/font/Speedo/sptobdf.c deleted file mode 100644 index ca3caa5..0000000 --- a/nx-X11/lib/font/Speedo/sptobdf.c +++ /dev/null @@ -1,678 +0,0 @@ -/* $Xorg: sptobdf.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices and - * Digital not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior permission. - * Network Computing Devices and Digital make no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Dave Lemke - */ - -/* - -Copyright 1987, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - -/* - * Speedo outline to BFD format converter - */ - -#include <stdio.h> -#include "speedo.h" - -#ifdef EXTRAFONTS -#include "ncdkeys.h" -#else -#include "keys.h" -#endif - -#include "iso8859.h" - -#define MAX_BITS 1024 - -#define BBOX_CLIP - -static char line_of_bits[MAX_BITS + 1]; - -static FILE *fp; -static ufix16 char_index, - char_id; -static buff_t font; -static buff_t char_data; -static ufix8 *f_buffer, - *c_buffer; -static ufix16 mincharsize; -static fix15 cur_y; -static fix15 bit_width, - bit_height; - -static ufix8 key[] = -{ - KEY0, - KEY1, - KEY2, - KEY3, - KEY4, - KEY5, - KEY6, - KEY7, - KEY8 -}; /* Font decryption key */ - - -static char *progname; -static char *fontname = NULL; -static char *fontfile = NULL; - -static int point_size = 120; -static int x_res = 72; -static int y_res = 72; -static int quality = 0; -static int iso_encoding = 1; - -static int num_props = 7; -static int stretch = 120; - -static specs_t specs; - -static void dump_header(); - -static void -usage() -{ - fprintf(stderr, "Usage: %s [-xres x resolution] [-yres y resolution]\n\t[-ptsize pointsize] [-fn fontname] [-q quality (0-1)] fontfile\n", progname); - fprintf(stderr, "Where:\n"); - fprintf(stderr, "-xres specifies the X resolution (72)\n"); - fprintf(stderr, "-yres specifies the Y resolution (72)\n"); - fprintf(stderr, "-pts specifies the pointsize in decipoints (120)\n"); - fprintf(stderr, "-fn specifies the font name (full Bitstream name)\n"); - fprintf(stderr, "-q specifies the font quality [0-1] (0)\n"); - fprintf(stderr, "\n"); - exit(0); -} - -static fix15 -read_2b(ptr) - ufix8 *ptr; -{ - fix15 tmp; - - tmp = *ptr++; - tmp = (tmp << 8) + *ptr; - return tmp; -} - -static fix31 -read_4b(ptr) - ufix8 *ptr; -{ - fix31 tmp; - - tmp = *ptr++; - tmp = (tmp << 8) + *ptr++; - tmp = (tmp << 8) + *ptr++; - tmp = (tmp << 8) + *ptr; - return tmp; -} - -static void -process_args(ac, av) - int ac; - char **av; -{ - int i; - - for (i = 1; i < ac; i++) { - if (!strncmp(av[i], "-xr", 3)) { - if (av[i + 1]) { - x_res = atoi(av[++i]); - } else - usage(); - } else if (!strncmp(av[i], "-yr", 3)) { - if (av[i + 1]) { - y_res = atoi(av[++i]); - } else - usage(); - } else if (!strncmp(av[i], "-pt", 3)) { - if (av[i + 1]) { - point_size = atoi(av[++i]); - } else - usage(); - } else if (!strncmp(av[i], "-fn", 3)) { - if (av[i + 1]) { - fontname = av[++i]; - } else - usage(); - } else if (!strncmp(av[i], "-q", 2)) { - if (av[i + 1]) { - quality = atoi(av[++i]); - } else - usage(); - } else if (!strncmp(av[i], "-st", 3)) { - if (av[i + 1]) { - stretch = atoi(av[++i]); - } else - usage(); - } else if (!strncmp(av[i], "-noni", 5)) { - iso_encoding = 0; - } else if (*av[i] == '-') { - usage(); - } else - fontfile = av[i]; - } - if (!fontfile) - usage(); -} - -void -main(argc, argv) - int argc; - char **argv; -{ - ufix32 i; - ufix8 tmp[16]; - ufix32 minbufsize; - ufix16 cust_no; - int first_char_index, - num_chars; - - progname = argv[0]; - process_args(argc, argv); - fp = fopen(fontfile, "r"); - if (!fp) { - fprintf(stderr, "No such font file, \"%s\"\n", fontfile); - exit(-1); - } - if (fread(tmp, sizeof(ufix8), 16, fp) != 16) { - fprintf(stderr, "error reading \"%s\"\n", fontfile); - exit(-1); - } - minbufsize = (ufix32) read_4b(tmp + FH_FBFSZ); - f_buffer = (ufix8 *) malloc(minbufsize); - if (!f_buffer) { - fprintf(stderr, "can't get %x bytes of memory\n", minbufsize); - exit(-1); - } - fseek(fp, (ufix32) 0, 0); - - if (fread(f_buffer, sizeof(ufix8), (ufix16) minbufsize, fp) != minbufsize) { - fprintf(stderr, "error reading file \"%s\"\n", fontfile); - exit(-1); - } - mincharsize = read_2b(f_buffer + FH_CBFSZ); - - c_buffer = (ufix8 *) malloc(mincharsize); - if (!c_buffer) { - fprintf(stderr, "can't get %x bytes for char buffer\n", mincharsize); - exit(-1); - } - /* init */ - sp_reset(); - - font.org = f_buffer; - font.no_bytes = minbufsize; - - if ((cust_no = sp_get_cust_no(font)) != CUS0) { - fprintf(stderr, "Non-standard encryption for \"%s\"\n", fontfile); - exit(-1); - } - sp_set_key(key); - - first_char_index = read_2b(f_buffer + FH_FCHRF); - num_chars = read_2b(f_buffer + FH_NCHRL); - - /* set up specs */ - /* Note that point size is in decipoints */ - specs.pfont = &font; - /* XXX beware of overflow */ - specs.xxmult = point_size * x_res / 720 * (1 << 16); - specs.xymult = 0L << 16; - specs.xoffset = 0L << 16; - specs.yxmult = 0L << 16; - specs.yymult = point_size * y_res / 720 * (1 << 16); - specs.yoffset = 0L << 16; - switch (quality) { - case 0: - specs.flags = 0; - break; - case 1: - specs.flags = MODE_SCREEN; - break; - case 2: - specs.flags = MODE_2D; - break; - default: - fprintf(stderr, "bogus quality value %d\n", quality); - break; - } - specs.out_info = NULL; - - if (!fontname) { - fontname = (char *) (f_buffer + FH_FNTNM); - } - if (iso_encoding) - num_chars = num_iso_chars; - dump_header(num_chars); - - if (!sp_set_specs(&specs)) { - fprintf(stderr, "can't set specs\n"); - } else { - if (iso_encoding) { - for (i = 0; i < num_iso_chars * 2; i += 2) { - char_index = iso_map[i + 1]; - char_id = iso_map[i]; - if (!sp_make_char(char_index)) { - fprintf(stderr, "can't make char %x\n", char_index); - } - } - } else { - for (i = 0; i < num_chars; i++) { - char_index = i + first_char_index; - char_id = sp_get_char_id(char_index); - if (char_id) { - if (!sp_make_char(char_index)) { - fprintf(stderr, "can't make char %x\n", char_index); - } - } - } - } - } - - (void) fclose(fp); - - printf("ENDFONT\n"); - exit(0); -} - -static void -dump_header(num_chars) - ufix32 num_chars; -{ - fix15 xmin, - ymin, - xmax, - ymax; - fix15 ascent, - descent; - fix15 pixel_size; - - xmin = read_2b(f_buffer + FH_FXMIN); - ymin = read_2b(f_buffer + FH_FYMIN); - xmax = read_2b(f_buffer + FH_FXMAX); - ymax = read_2b(f_buffer + FH_FYMAX); - pixel_size = point_size * x_res / 720; - - printf("STARTFONT 2.1\n"); - printf("COMMENT\n"); - printf("COMMENT Generated from Bitstream Speedo outlines via sptobdf\n"); - printf("COMMENT\n"); - printf("FONT %s\n", fontname); - printf("SIZE %d %d %d\n", pixel_size, x_res, y_res); - printf("FONTBOUNDINGBOX %d %d %d %d\n", xmin, ymin, xmax, ymax); - printf("STARTPROPERTIES %d\n", num_props); - - printf("RESOLUTION_X %d\n", x_res); - printf("RESOLUTION_Y %d\n", y_res); - printf("POINT_SIZE %d\n", point_size); - printf("PIXEL_SIZE %d\n", pixel_size); - printf("COPYRIGHT \"%s\"\n", f_buffer + FH_CPYRT); - - /* do some stretching here so that its isn't too tight */ - pixel_size = pixel_size * stretch / 100; - ascent = pixel_size * 764 / 1000; /* 764 == EM_TOP */ - descent = pixel_size - ascent; - printf("FONT_ASCENT %d\n", ascent); - printf("FONT_DESCENT %d\n", descent); - - printf("ENDPROPERTIES\n"); - printf("CHARS %d\n", num_chars); -} - -buff_t * -sp_load_char_data(file_offset, num, cb_offset) - fix31 file_offset; - fix15 num; - fix15 cb_offset; -{ - if (fseek(fp, (long) file_offset, (int) 0)) { - fprintf(stderr, "can't seek to char\n"); - (void) fclose(fp); - exit(-1); - } - if ((num + cb_offset) > mincharsize) { - fprintf(stderr, "char buf overflow\n"); - (void) fclose(fp); - exit(-2); - } - if (fread((c_buffer + cb_offset), sizeof(ufix8), num, fp) != num) { - fprintf(stderr, "can't get char data\n"); - exit(-1); - } - char_data.org = (ufix8 *) c_buffer + cb_offset; - char_data.no_bytes = num; - - return &char_data; -} - -/* - * Called by Speedo character generator to report an error. - * - * Since character data not available is one of those errors - * that happens many times, don't report it to user - */ -void -sp_report_error(n) - fix15 n; -{ - switch (n) { - case 1: - fprintf(stderr, "Insufficient font data loaded\n"); - break; - case 3: - fprintf(stderr, "Transformation matrix out of range\n"); - break; - case 4: - fprintf(stderr, "Font format error\n"); - break; - case 5: - fprintf(stderr, "Requested specs not compatible with output module\n"); - break; - case 7: - fprintf(stderr, "Intelligent transformation requested but not supported\n"); - break; - case 8: - fprintf(stderr, "Unsupported output mode requested\n"); - break; - case 9: - fprintf(stderr, "Extended font loaded but only compact fonts supported\n"); - break; - case 10: - fprintf(stderr, "Font specs not set prior to use of font\n"); - break; - case 12: - break; - case 13: - fprintf(stderr, "Track kerning data not available()\n"); - break; - case 14: - fprintf(stderr, "Pair kerning data not available()\n"); - break; - default: - fprintf(stderr, "report_error(%d)\n", n); - break; - } -} - -void -sp_open_bitmap(x_set_width, y_set_width, xorg, yorg, xsize, ysize) - fix31 x_set_width; - fix31 y_set_width; - fix31 xorg; - fix31 yorg; - fix15 xsize; - fix15 ysize; -{ - fix15 i; - fix15 off_horz; - fix15 off_vert; - fix31 width, - pix_width; - bbox_t bb; - - bit_width = xsize; - - bit_height = ysize; - off_horz = (fix15) ((xorg + 32768L) >> 16); - off_vert = (fix15) ((yorg + 32768L) >> 16); - - if (bit_width > MAX_BITS) { - -#ifdef DEBUG - fprintf(stderr, "char wider than max bits -- truncated\n"); -#endif - - bit_width = MAX_BITS; - } - width = sp_get_char_width(char_index); - pix_width = width * (specs.xxmult / 65536L) + - ((ufix32) width * ((ufix32) specs.xxmult & 0xffff)) / 65536L; - pix_width /= 65536L; - - width = (pix_width * 7200L) / (point_size * y_res); - - (void) sp_get_char_bbox(char_index, &bb); - bb.xmin >>= 16; - bb.ymin >>= 16; - bb.xmax >>= 16; - bb.ymax >>= 16; - -#ifdef DEBUG - if ((bb.xmax - bb.xmin) != bit_width) - fprintf(stderr, "bbox & width mismatch 0x%x (%d) (%d vs %d)\n", - char_index, char_id, (bb.xmax - bb.xmin), bit_width); - if ((bb.ymax - bb.ymin) != bit_height) - fprintf(stderr, "bbox & height mismatch 0x%x (%d) (%d vs %d)\n", - char_index, char_id, (bb.ymax - bb.ymin), bit_height); - if (bb.xmin != off_horz) - fprintf(stderr, "x min mismatch 0x%x (%d) (%d vs %d)\n", - char_index, char_id, bb.xmin, off_horz); - if (bb.ymin != off_vert) - fprintf(stderr, "y min mismatch 0x%x (%d) (%d vs %d)\n", - char_index, char_id, bb.ymin, off_vert); -#endif - -#ifdef BBOX_CLIP - bit_width = bb.xmax - bb.xmin; - bit_height = bb.ymax - bb.ymin; - off_horz = bb.xmin; - off_vert = bb.ymin; -#endif - - /* XXX kludge to handle space */ - if (bb.xmin == 0 && bb.ymin == 0 && bb.xmax == 0 && bb.ymax == 0 && - width) { - bit_width = 1; - bit_height = 1; - } - printf("STARTCHAR %d\n", char_id); - printf("ENCODING %d\n", char_id); - printf("SWIDTH %d 0\n", width); - printf("DWIDTH %d 0\n", pix_width); - printf("BBX %d %d %d %d\n", bit_width, bit_height, off_horz, off_vert); - printf("BITMAP\n"); - - for (i = 0; i < bit_width; i++) { - line_of_bits[i] = '.'; - } - line_of_bits[bit_width] = '\0'; - cur_y = 0; -} - -static void -dump_line(line) - ufix8 *line; -{ - int bit; - unsigned byte; - - byte = 0; - for (bit = 0; bit < bit_width; bit++) { - if (line[bit] == 'X') - byte |= (1 << (7 - (bit & 7))); - if ((bit & 7) == 7) { - printf("%02X", byte); - byte = 0; - } - } - if ((bit & 7) != 0) - printf("%02X", byte); - printf("\n"); -} - -#ifdef BBOX_CLIP -static fix15 last_y; -static int trunc = 0; - -#endif - -void -sp_set_bitmap_bits(y, xbit1, xbit2) - fix15 y; - fix15 xbit1; - fix15 xbit2; -{ - fix15 i; - - if (xbit1 > MAX_BITS) { - -#ifdef DEBUG - fprintf(stderr, "run wider than max bits -- truncated\n"); -#endif - - xbit1 = MAX_BITS; - } - if (xbit2 > MAX_BITS) { - -#ifdef DEBUG - fprintf(stderr, "run wider than max bits -- truncated\n"); -#endif - - xbit2 = MAX_BITS; - } - while (cur_y != y) { - dump_line(line_of_bits); - for (i = 0; i < bit_width; i++) { - line_of_bits[i] = '.'; - } - cur_y++; - } - -#ifdef BBOX_CLIP - last_y = y; - if (y >= bit_height) { - -#ifdef DEBUG - fprintf(stderr, - "y value is larger than height 0x%x (%d) -- truncated\n", - char_index, char_id); -#endif - - trunc = 1; - return; - } -#endif /* BBOX_CLIP */ - - for (i = xbit1; i < xbit2; i++) { - line_of_bits[i] = 'X'; - } -} - -void -sp_close_bitmap() -{ - -#ifdef BBOX_CLIP - int i; - - if (!trunc) - dump_line(line_of_bits); - trunc = 0; - - - last_y++; - while (last_y < bit_height) { - -#ifdef DEBUG - fprintf(stderr, "padding out height for 0x%x (%d)\n", - char_index, char_id); -#endif - - for (i = 0; i < bit_width; i++) { - line_of_bits[i] = '.'; - } - dump_line(line_of_bits); - last_y++; - } - -#else - dump_line(line_of_bits); -#endif - - printf("ENDCHAR\n"); -} - -/* outline stubs */ -void -sp_open_outline() -{ -} - -void -sp_start_new_char() -{ -} - -void -sp_start_contour() -{ -} - -void -sp_curve_to() -{ -} - -void -sp_line_to() -{ -} - -void -sp_close_contour() -{ -} - -void -sp_close_outline() -{ -} diff --git a/nx-X11/lib/font/Speedo/useropt.h b/nx-X11/lib/font/Speedo/useropt.h deleted file mode 100644 index e879aae..0000000 --- a/nx-X11/lib/font/Speedo/useropt.h +++ /dev/null @@ -1,41 +0,0 @@ -/* $Xorg: useropt.h,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */ -/* - -Copyright 1993, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - -#define INCL_LCD 1 -#define STATIC_ALLOC 1 - -#define INCL_BLACK 1 -#define INCL_SCREEN 1 -#define INCL_2D 1 -#define SHORT_LISTS 0 - -#define INCL_RULES 1 -#define INCL_METRICS 1 - -#define INCL_KEYS 1 diff --git a/nx-X11/lib/font/Type1/AFM.h b/nx-X11/lib/font/Type1/AFM.h deleted file mode 100644 index f2c997a..0000000 --- a/nx-X11/lib/font/Type1/AFM.h +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#if XFONT_CID -#ifndef AFM_H -#define AFM_H - -/* Bounding box definition. Used for the Font BBox as well as the - * Character BBox. - */ -typedef struct -{ - int llx; /* lower left x-position */ - int lly; /* lower left y-position */ - int urx; /* upper right x-position */ - int ury; /* upper right y-position */ -} BBox; - -/* Character Metric Information. This structure is used only if ALL - * character metric information is requested. If only the character - * widths is requested, then only an array of the character x-widths - * is returned. - * - * The key that each field is associated with is in comments. For an - * explanation about each key and its value please refer to the - * Character Metrics section of the AFM documentation (full title - * & version given above). - */ -typedef struct -{ - long code; /* CID code */ - int wx; /* key: WX or W0X */ - BBox charBBox; /* key: B */ -} Metrics; - -typedef struct -{ - int nChars; /* number of entries in char metrics array */ - Metrics *metrics; /* ptr to char metrics array */ -} FontInfo; - -int CIDAFM(FILE *, FontInfo **); -#endif /* AFM_H */ -#endif diff --git a/nx-X11/lib/font/Type1/Imakefile b/nx-X11/lib/font/Type1/Imakefile deleted file mode 100644 index 3b10c03..0000000 --- a/nx-X11/lib/font/Type1/Imakefile +++ /dev/null @@ -1,91 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:28 cpqbld Exp $ - - - - -XCOMM $XFree86: xc/lib/font/Type1/Imakefile,v 1.12 2002/02/13 21:32:48 dawes Exp $ - -#if BuildServer && DoLoadableServer -#define IHaveSubdirs -#define NoLibSubdirs -#define PassCDebugFlags -SUBDIRS = module -#endif - -INCLUDES = -I$(FONTINCSRC) -I../include -I$(XINCLUDESRC) \ - -I$(SERVERSRC)/include - -#if BuildCID -CIDSRCS = cidchar.c afm.c -CIDOBJS = cidchar.o afm.o -#if HasUsableFileMmap -MMAPDEFINES = -DUSE_MMAP -#endif -DEFINES = -DBUILDCID -DHAVE_CFM $(MMAPDEFINES) -#endif - -SRCS = \ - arith.c \ - curves.c \ - fontfcn.c \ - hints.c \ - lines.c \ - objects.c \ - paths.c \ - regions.c \ - scanfont.c \ - spaces.c \ - t1funcs.c \ - t1info.c \ - t1io.c \ - t1malloc.c \ - t1snap.c \ - t1stub.c \ - token.c \ - type1.c \ - util.c \ - $(CIDSRCS) \ - t1unicode.c - - -OBJS = \ - arith.o \ - curves.o \ - fontfcn.o \ - hints.o \ - lines.o \ - objects.o \ - paths.o \ - regions.o \ - scanfont.o \ - spaces.o \ - t1funcs.o \ - t1info.o \ - t1io.o \ - t1malloc.o \ - t1snap.o \ - t1stub.o \ - token.o \ - type1.o \ - util.o \ - $(CIDOBJS) \ - t1unicode.o - -#if BuildFontLib -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont -#include <Library.tmpl> -LibraryObjectRule() - -SubdirLibraryRule($(OBJS)) -NormalLintTarget($(SRCS)) -#endif - -#if BuildServer && DoLoadableServer -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) -#endif - -DependTarget() diff --git a/nx-X11/lib/font/Type1/afm.c b/nx-X11/lib/font/Type1/afm.c deleted file mode 100644 index 9a6dafe..0000000 --- a/nx-X11/lib/font/Type1/afm.c +++ /dev/null @@ -1,200 +0,0 @@ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/afm.c,v 1.2 1999/08/21 13:47:38 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifdef XFONT_CID -#ifndef FONTMODULE -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <limits.h> -#else -#include "Xmd.h" /* For INT32 declaration */ -#include "Xdefs.h" /* For Bool */ -#include "xf86_ansic.h" -#endif -#include <X11/fonts/fontmisc.h> /* for xalloc/xfree */ -#include "AFM.h" - -#define PBUF 256 -#define KBUF 20 - -char *gettoken(FILE *); - -static char *afmbuf = NULL; - -char *gettoken(FILE *fd) { - char *bp; - int c, found; - - bp = afmbuf; - found = 0; - - while((c = getc(fd)) != EOF) { - if (found == 0 && (c == ' ' || c == '\t' || c == '\n' || c == '\r' || - c == ';' || c == ',')) continue; - found = 1; - if (c != ' ' && c != '\t' && c != '\n' && c != '\r' && c != ';') { - *bp++ = c; - if (bp - afmbuf >= PBUF) { - bp = afmbuf; - break; - } - } else - break; - } - - *bp = 0; - return(afmbuf); -} - -int CIDAFM(FILE *fd, FontInfo **pfi) { - char *p = 0; - int i, j, k = 0, found = 0; - FontInfo *fi; - - if (fd == NULL || pfi == NULL) return(1); - - *pfi = NULL; - - if ((afmbuf = (char *)xalloc(PBUF)) == NULL) - return(1); - - while(1) { - if (!(p = gettoken(fd))) { - xfree(afmbuf); - return(1); - } - - if (strncmp(p, "StartFontMetrics", 16) == 0) { - if (!(p = gettoken(fd))) { - xfree(afmbuf); - return(1); - } - if (strncmp(p, "4", 1) < 0) { - free(afmbuf); - return(1); - } - found = 1; - } else if (strncmp(p, "StartCharMetrics", 16) == 0) { - if (!found) { - xfree(afmbuf); - return(1); - } - - if (!(p = gettoken(fd))) { - xfree(afmbuf); - return(1); - } - - fi = (FontInfo *)xalloc(sizeof(FontInfo)); - - if (fi == NULL) { - xfree(afmbuf); - return(1); - } - bzero(fi, sizeof(FontInfo)); - - fi->nChars = atoi(p); - - if (fi->nChars < 0 || fi->nChars > INT_MAX / sizeof(Metrics)) { - xfree(afmbuf); - xfree(fi); - return(1); - } - fi->metrics = (Metrics *)xalloc(fi->nChars * - sizeof(Metrics)); - if (fi->metrics == NULL) { - xfree(afmbuf); - xfree(fi); - return(1); - } - - j = 0; - for (i = 0; i < fi->nChars; i++) { - k = 0; - while(1) { - if (!(p = gettoken(fd))) { - k = KBUF; - break; - } - if (strncmp(p, "W0X", 3) == 0) { - if (!(p = gettoken(fd))) { - k = KBUF; - break; - } - fi->metrics[j].wx = atoi(p); - } else if (strncmp(p, "N", 1) == 0) { - if (!(p = gettoken(fd))) { - k = KBUF; - break; - } - fi->metrics[j].code = (long)atoi(p); - } else if (strncmp(p, "B", 1) == 0) { - if (!(p = gettoken(fd))) { - k = KBUF; - break; - } - fi->metrics[j].charBBox.llx = atoi(p); - if (!(p = gettoken(fd))) { - k = KBUF; - break; - } - fi->metrics[j].charBBox.lly = atoi(p); - if (!(p = gettoken(fd))) { - k = KBUF; - break; - } - fi->metrics[j].charBBox.urx = atoi(p); - if (!(p = gettoken(fd))) { - k = KBUF; - break; - } - fi->metrics[j].charBBox.ury = atoi(p); - j++; - break; - } - k++; - if (k >= KBUF) break; - } - if (k >= KBUF) break; - } - if (k >= KBUF || j != fi->nChars) { - xfree(fi->metrics); - xfree(fi); - xfree(afmbuf); - return(1); - } else { - *pfi = fi; - xfree(afmbuf); - return(0); - } - } - } - - xfree(afmbuf); - return(1); -} -#endif diff --git a/nx-X11/lib/font/Type1/arith.c b/nx-X11/lib/font/Type1/arith.c deleted file mode 100644 index 9611543..0000000 --- a/nx-X11/lib/font/Type1/arith.c +++ /dev/null @@ -1,486 +0,0 @@ -/* $Xorg: arith.c,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/arith.c,v 1.6tsi Exp $ */ - - /* ARITH CWEB V0006 ******** */ -/* -:h1.ARITH Module - Portable Module for Multiple Precision Fixed Point Arithmetic - -This module provides division and multiplication of 64-bit fixed point -numbers. (To be more precise, the module works on numbers that take -two 'longs' to store. That is almost always equivalent to saying 64-bit -numbers.) - -Note: it is frequently easy and desirable to recode these functions in -assembly language for the particular processor being used, because -assembly language, unlike C, will have 64-bit multiply products and -64-bit dividends. This module is offered as a portable version. - -&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) and Sten F. Andler - - -:h3.Include Files - -The included files are: -*/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef FONTMODULE -# include "os.h" -#endif -#include "objects.h" -#include "spaces.h" -#include "arith.h" - - -/* -:h3. -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -Reference for all algorithms: Donald E. Knuth, "The Art of Computer -Programming, Volume 2, Semi-Numerical Algorithms," Addison-Wesley Co., -Massachusetts, 1969, pp. 229-279. - -Knuth talks about a 'digit' being an arbitrary sized unit and a number -being a sequence of digits. We'll take a digit to be a 'short'. -The following assumption must be valid for these algorithms to work: -:ol. -:li.A 'long' is two 'short's. -:eol. -The following code is INDEPENDENT of: -:ol. -:li.The actual size of a short. -:li.Whether shorts and longs are stored most significant byte -first or least significant byte first. -:eol. - -SHORTSIZE is the number of bits in a short; LONGSIZE is the number of -bits in a long; MAXSHORT is the maximum unsigned short: -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -ASSEMBLE concatenates two shorts to form a long: -*/ -#define ASSEMBLE(hi,lo) ((((unsigned long)hi)<<SHORTSIZE)+(lo)) -/* -HIGHDIGIT extracts the most significant short from a long; LOWDIGIT -extracts the least significant short from a long: -*/ -#define HIGHDIGIT(u) ((u)>>SHORTSIZE) -#define LOWDIGIT(u) ((u)&MAXSHORT) - -/* -SIGNBITON tests the high order bit of a long 'w': -*/ -#define SIGNBITON(w) (((long)w)<0) - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h2.Double Long Arithmetic - -:h3.DLmult() - Multiply Two Longs to Yield a Double Long - -The two multiplicands must be positive. -*/ - -void -DLmult(doublelong *product, unsigned long u, unsigned long v) -{ -#ifdef LONG64 -/* printf("DLmult(? ?, %lx, %lx)\n", u, v); */ - *product = u*v; -/* printf("DLmult returns %lx\n", *product); */ -#else - register unsigned long u1, u2; /* the digits of u */ - register unsigned long v1, v2; /* the digits of v */ - register unsigned int w1, w2, w3, w4; /* the digits of w */ - register unsigned long t; /* temporary variable */ -/* printf("DLmult(? ?, %x, %x)\n", u, v); */ - u1 = HIGHDIGIT(u); - u2 = LOWDIGIT(u); - v1 = HIGHDIGIT(v); - v2 = LOWDIGIT(v); - - if (v2 == 0) w4 = w3 = w2 = 0; - else - { - t = u2 * v2; - w4 = LOWDIGIT(t); - t = u1 * v2 + HIGHDIGIT(t); - w3 = LOWDIGIT(t); - w2 = HIGHDIGIT(t); - } - - if (v1 == 0) w1 = 0; - else - { - t = u2 * v1 + w3; - w3 = LOWDIGIT(t); - t = u1 * v1 + w2 + HIGHDIGIT(t); - w2 = LOWDIGIT(t); - w1 = HIGHDIGIT(t); - } - - product->high = ASSEMBLE(w1, w2); - product->low = ASSEMBLE(w3, w4); -#endif /* LONG64 else */ -} - -/* -:h2.DLdiv() - Divide Two Longs by One Long, Yielding Two Longs - -Both the dividend and the divisor must be positive. -*/ - -void -DLdiv(doublelong *quotient, /* also where dividend is, originally */ - unsigned long divisor) -{ -#ifdef LONG64 -/* printf("DLdiv(%lx %lx)\n", quotient, divisor); */ - *quotient /= divisor; -/* printf("DLdiv returns %lx\n", *quotient); */ -#else - register unsigned long u1u2 = quotient->high; - register unsigned long u3u4 = quotient->low; - register long u3; /* single digit of dividend */ - register int v1,v2; /* divisor in registers */ - register long t; /* signed copy of u1u2 */ - register int qhat; /* guess at the quotient digit */ - register unsigned long q3q4; /* low two digits of quotient */ - register int shift; /* holds the shift value for normalizing */ - register int j; /* loop variable */ - -/* printf("DLdiv(%x %x, %x)\n", quotient->high, quotient->low, divisor); */ - /* - * Knuth's algorithm works if the dividend is smaller than the - * divisor. We can get to that state quickly: - */ - if (u1u2 >= divisor) { - quotient->high = u1u2 / divisor; - u1u2 %= divisor; - } - else - quotient->high = 0; - - if (divisor <= MAXSHORT) { - - /* - * This is the case where the divisor is contained in one - * 'short'. It is worthwhile making this fast: - */ - u1u2 = ASSEMBLE(u1u2, HIGHDIGIT(u3u4)); - q3q4 = u1u2 / divisor; - u1u2 %= divisor; - u1u2 = ASSEMBLE(u1u2, LOWDIGIT(u3u4)); - quotient->low = ASSEMBLE(q3q4, u1u2 / divisor); - return; - } - - - /* - * At this point the divisor is a true 'long' so we must use - * Knuth's algorithm. - * - * Step D1: Normalize divisor and dividend (this makes our 'qhat' - * guesses more accurate): - */ - for (shift=0; !SIGNBITON(divisor); shift++, divisor <<= 1) { ; } - shift--; - divisor >>= 1; - - if ((u1u2 >> (LONGSIZE - shift)) != 0 && shift != 0) - Abort("DLdiv: dividend too large"); - u1u2 = (u1u2 << shift) + ((shift == 0) ? 0 : u3u4 >> (LONGSIZE - shift)); - u3u4 <<= shift; - - /* - * Step D2: Begin Loop through digits, dividing u1,u2,u3 by v1,v2, - * then shifting U left by 1 digit: - */ - v1 = HIGHDIGIT(divisor); - v2 = LOWDIGIT(divisor); - q3q4 = 0; - u3 = HIGHDIGIT(u3u4); - - for (j=0; j < 2; j++) { - - /* - * Step D3: make a guess (qhat) at the next quotient denominator: - */ - qhat = (HIGHDIGIT(u1u2) == v1) ? MAXSHORT : u1u2 / v1; - /* - * At this point Knuth would have us further refine our - * guess, since we know qhat is too big if - * - * v2 * qhat > ASSEMBLE(u1u2 % v, u3) - * - * That would make sense if u1u2 % v was easy to find, as it - * would be in assembly language. I ignore this step, and - * repeat step D6 if qhat is too big. - */ - - /* - * Step D4: Multiply v1,v2 times qhat and subtract it from - * u1,u2,u3: - */ - u3 -= qhat * v2; - /* - * The high digit of u3 now contains the "borrow" for the - * rest of the substraction from u1,u2. - * Sometimes we can lose the sign bit with the above. - * If so, we have to force the high digit negative: - */ - t = HIGHDIGIT(u3); - if (t > 0) - t |= -1 << SHORTSIZE; - t += u1u2 - qhat * v1; -/* printf("..>divide step qhat=%x t=%x u3=%x u1u2=%x v1=%x v2=%x\n", - qhat, t, u3, u1u2, v1, v2); */ - while (t < 0) { /* Test is Step D5. */ - - /* - * D6: Oops, qhat was too big. Add back in v1,v2 and - * decrease qhat by 1: - */ - u3 = LOWDIGIT(u3) + v2; - t += HIGHDIGIT(u3) + v1; - qhat--; -/* printf("..>>qhat correction t=%x u3=%x qhat=%x\n", t, u3, qhat); */ - } - /* - * Step D7: shift U left one digit and loop: - */ - u1u2 = t; - if (HIGHDIGIT(u1u2) != 0) - Abort("divide algorithm error"); - u1u2 = ASSEMBLE(u1u2, LOWDIGIT(u3)); - u3 = LOWDIGIT(u3u4); - q3q4 = ASSEMBLE(q3q4, qhat); - } - quotient->low = q3q4; -/* printf("DLdiv returns %x %x\n", quotient->high, quotient->low); */ -#endif /* !LONG64 */ - return; -} - -/* -:h3.DLadd() - Add Two Double Longs - -In this case, the doublelongs may be signed. The algorithm takes the -piecewise sum of the high and low longs, with the possibility that the -high should be incremented if there is a carry out of the low. How to -tell if there is a carry? Alex Harbury suggested that if the sum of -the lows is less than the max of the lows, there must have been a -carry. Conversely, if there was a carry, the sum of the lows must be -less than the max of the lows. So, the test is "if and only if". -*/ - -void -DLadd(doublelong *u, /* u = u + v */ - doublelong *v) -{ -#ifdef LONG64 -/* printf("DLadd(%lx %lx)\n", *u, *v); */ - *u = *u + *v; -/* printf("DLadd returns %lx\n", *u); */ -#else - register unsigned long lowmax = MAX(u->low, v->low); - -/* printf("DLadd(%x %x, %x %x)\n", u->high, u->low, v->high, v->low); */ - u->high += v->high; - u->low += v->low; - if (lowmax > u->low) - u->high++; -#endif -} -/* -:h3.DLsub() - Subtract Two Double Longs - -Testing for a borrow is even easier. If the v.low is greater than -u.low, there must be a borrow. -*/ - -void -DLsub(doublelong *u, /* u = u - v */ - doublelong *v) -{ -#ifdef LONG64 -/* printf("DLsub(%lx %lx)\n", *u, *v); */ - *u = *u - *v; -/* printf("DLsub returns %lx\n", *u); */ -#else -/* printf("DLsub(%x %x, %x %x)\n", u->high, u->low, v->high, v->low);*/ - u->high -= v->high; - if (v->low > u->low) - u->high--; - u->low -= v->low; -#endif -} -/* -:h3.DLrightshift() - Macro to Shift Double Long Right by N -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h2.Fractional Pel Arithmetic -*/ -/* -:h3.FPmult() - Multiply Two Fractional Pel Values - -This funtion first calculates w = u * v to "doublelong" precision. -It then shifts w right by FRACTBITS bits, and checks that no -overflow will occur when the resulting value is passed back as -a fractpel. -*/ - -fractpel -FPmult(fractpel u, fractpel v) -{ - doublelong w; - register int negative = FALSE; /* sign flag */ -#ifdef LONG64 - register fractpel ret; -#endif - - if ((u == 0) || (v == 0)) return (0); - - - if (u < 0) {u = -u; negative = TRUE;} - if (v < 0) {v = -v; negative = !negative;} - - if (u == TOFRACTPEL(1)) return ((negative) ? -v : v); - if (v == TOFRACTPEL(1)) return ((negative) ? -u : u); - - DLmult(&w, u, v); - DLrightshift(w, FRACTBITS); -#ifndef LONG64 - if (w.high != 0 || SIGNBITON(w.low)) { - w.low = TOFRACTPEL(MAXSHORT); - } - - return ((negative) ? -w.low : w.low); -#else - if (w & 0xffffffff80000000L ) { - ret = TOFRACTPEL(MAXSHORT); - } - else - ret = (fractpel)w; - - return ((negative) ? -ret : ret); -#endif -} - -/* -:h3.FPdiv() - Divide Two Fractional Pel Values - -These values may be signed. The function returns the quotient. -*/ - -fractpel -FPdiv(fractpel dividend, fractpel divisor) -{ - doublelong w; /* result will be built here */ - int negative = FALSE; /* flag for sign bit */ -#ifdef LONG64 - register fractpel ret; -#endif - - if (dividend < 0) { - dividend = -dividend; - negative = TRUE; - } - if (divisor < 0) { - divisor = -divisor; - negative = !negative; - } -#ifndef LONG64 - w.low = dividend << FRACTBITS; - w.high = dividend >> (LONGSIZE - FRACTBITS); - DLdiv(&w, divisor); - if (w.high != 0 || SIGNBITON(w.low)) { - w.low = TOFRACTPEL(MAXSHORT); - } - return( (negative) ? -w.low : w.low); -#else - w = ((long)dividend) << FRACTBITS; - DLdiv(&w, divisor); - if (w & 0xffffffff80000000L ) { - ret = TOFRACTPEL(MAXSHORT); - } - else - ret = (fractpel)w; - return( (negative) ? -ret : ret); -#endif -} - -/* -:h3.FPstarslash() - Multiply then Divide - -Borrowing a chapter from the language Forth, it is useful to define -an operator that first multiplies by one constant then divides by -another, keeping the intermediate result in extended precision. -*/ - -fractpel -FPstarslash(fractpel a, /* result = a * b / c */ - fractpel b, - fractpel c) -{ - doublelong w; /* result will be built here */ - int negative = FALSE; -#ifdef LONG64 - register fractpel ret; -#endif - - if (a < 0) { a = -a; negative = TRUE; } - if (b < 0) { b = -b; negative = !negative; } - if (c < 0) { c = -c; negative = !negative; } - - DLmult(&w, a, b); - DLdiv(&w, c); -#ifndef LONG64 - if (w.high != 0 || SIGNBITON(w.low)) { - w.low = TOFRACTPEL(MAXSHORT); - } - return((negative) ? -w.low : w.low); -#else - if (w & 0xffffffff80000000L ) { - ret = TOFRACTPEL(MAXSHORT); - } - else - ret = (fractpel)w; - return( (negative) ? -ret : ret); -#endif -} diff --git a/nx-X11/lib/font/Type1/arith.h b/nx-X11/lib/font/Type1/arith.h deleted file mode 100644 index 6c810b9..0000000 --- a/nx-X11/lib/font/Type1/arith.h +++ /dev/null @@ -1,77 +0,0 @@ -/* $Xorg: arith.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/arith.h,v 1.4 1999/08/21 13:47:39 dawes Exp $ */ - -/*SHARED*/ - -#include <X11/Xmd.h> /* LONG64 */ - -/*END SHARED*/ -/*SHARED*/ - -#undef SHORTSIZE -#define SHORTSIZE (sizeof(short)*8) -#undef LONGSIZE -#define LONGSIZE (SHORTSIZE*2) -#undef MAXSHORT -#define MAXSHORT ((1<<SHORTSIZE)-1) - -/*END SHARED*/ -/*SHARED*/ - -#ifdef LONG64 -typedef long doublelong; -#else -typedef struct { - long high; - unsigned long low; -} doublelong; -#endif /* LONG64 else */ - -/*END SHARED*/ -/*SHARED*/ - -#ifdef LONG64 -#define DLrightshift(dl,N) ((dl) >>= (N)) -#else -#define DLrightshift(dl,N) { \ - dl.low = (dl.low >> N) + (((unsigned long) dl.high) << (LONGSIZE - N)); \ - dl.high >>= N; \ -} -#endif - -extern void DLmult ( doublelong *product, unsigned long u, unsigned long v ); -extern void DLdiv ( doublelong *quotient, unsigned long divisor ); -extern void DLadd ( doublelong *u, doublelong *v ); -extern void DLsub ( doublelong *u, doublelong *v ); -extern fractpel FPmult ( fractpel u, fractpel v ); -extern fractpel FPdiv ( fractpel dividend, fractpel divisor ); -extern fractpel FPstarslash ( fractpel a, fractpel b, fractpel c ); - -/*END SHARED*/ diff --git a/nx-X11/lib/font/Type1/blues.h b/nx-X11/lib/font/Type1/blues.h deleted file mode 100644 index 88602f7..0000000 --- a/nx-X11/lib/font/Type1/blues.h +++ /dev/null @@ -1,95 +0,0 @@ -/* $Xorg: blues.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * Portions Copyright (c) 1990 Adobe Systems Incorporated. - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark or Adobe - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * IBM, LEXMARK, AND ADOBE PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY - * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE - * ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING - * ANY DUTY TO SUPPORT OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY - * PORTION OF THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM, - * LEXMARK, OR ADOBE) ASSUMES THE ENTIRE COST OF ALL SERVICING, REPAIR AND - * CORRECTION. IN NO EVENT SHALL IBM, LEXMARK, OR ADOBE BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/blues.h,v 1.3 1999/08/22 08:58:49 dawes Exp $ */ - - -extern psobj *GetType1CharString ( psfont *fontP, unsigned char code ); - -#define TOPLEFT 1 -#define BOTTOMRIGHT 2 - -#define NUMBLUEVALUES 14 -#define NUMOTHERBLUES 10 -#define NUMFAMILYBLUES 14 -#define NUMFAMILYOTHERBLUES 10 -#define NUMSTEMSNAPH 12 -#define NUMSTEMSNAPV 12 -#define NUMSTDHW 1 -#define NUMSTDVW 1 - -#define DEFAULTBOLDSTEMWIDTH 2.0 - -#define MAXALIGNMENTZONES ((NUMBLUEVALUES+NUMOTHERBLUES)/2) -#define DEFAULTBLUESCALE 0.039625 -#define DEFAULTBLUESHIFT 7 -#define DEFAULTBLUEFUZZ 1 -#define DEFAULTSTDHW 0 -#define DEFAULTSTDVW 0 -#define DEFAULTFORCEBOLD FALSE -#define DEFAULTLANGUAGEGROUP 0 -#define DEFAULTRNDSTEMUP FALSE -#define DEFAULTLENIV 4 -#define DEFAULTEXPANSIONFACTOR 0.06 - -/* see Type 1 Font Format book for explanations of these values */ -/* Note that we're currently doing nothing for minfeature and password. */ -struct blues_struct { - struct blues_struct *next; /* ptr to next Blues structure in list */ - int numBlueValues; /* # of BlueValues in following array */ - int BlueValues[NUMBLUEVALUES]; - int numOtherBlues; /* # of OtherBlues values in following array */ - int OtherBlues[NUMOTHERBLUES]; - int numFamilyBlues; /* # of FamilyBlues values in following array */ - int FamilyBlues[NUMFAMILYBLUES]; - int numFamilyOtherBlues; /* # of FamilyOtherBlues values in */ - int FamilyOtherBlues[NUMFAMILYOTHERBLUES]; /* this array */ - double BlueScale; - int BlueShift; - int BlueFuzz; - double StdHW; - double StdVW; - int numStemSnapH; /* # of StemSnapH values in following array */ - double StemSnapH[NUMSTEMSNAPH]; - int numStemSnapV; /* # of StemSnapV values in following array */ - double StemSnapV[NUMSTEMSNAPV]; - int ForceBold; - int LanguageGroup; - int RndStemUp; - int lenIV; - double ExpansionFactor; -}; - -/* the alignment zone structure -- somewhat similar to the stem structure */ -/* see Adobe Type1 Font Format book about the terms used in this structure */ -struct alignmentzone { - int topzone; /* TRUE if a topzone, FALSE if a bottom zone */ - double bottomy, topy; /* interval of this alignment zone */ -}; diff --git a/nx-X11/lib/font/Type1/cidchar.c b/nx-X11/lib/font/Type1/cidchar.c deleted file mode 100644 index 20d2665..0000000 --- a/nx-X11/lib/font/Type1/cidchar.c +++ /dev/null @@ -1,621 +0,0 @@ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/cidchar.c,v 1.9tsi Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#if XFONT_CID -#ifndef FONTMODULE -#include <stdio.h> -#include <string.h> -#include <sys/stat.h> -#ifdef USE_MMAP -#include <sys/mman.h> -#ifndef MAP_FAILED -#define MAP_FAILED ((caddr_t)(-1)) -#endif -#endif -#else -#include "Xmd.h" /* For INT32 declaration */ -#include "Xdefs.h" /* For Bool */ -#include "xf86_ansic.h" -#endif -#ifndef FONTMODULE -#ifdef _XOPEN_SOURCE -#include <math.h> -#else -#define _XOPEN_SOURCE -#include <math.h> -#undef _XOPEN_SOURCE -#endif -#endif -#include <X11/fonts/fntfilst.h> -#include "objects.h" -#include "spaces.h" -#include "range.h" -#include "util.h" -#include "fontfcn.h" -#include "blues.h" -#include "AFM.h" -#include "t1intf.h" - -#define BSIZE 4096 - -extern cidfont *CIDFontP; -extern psfont *FDArrayP; -extern psfont *FontP; - -static unsigned char sd[] = "StartData"; - -CharInfoPtr -CIDGetGlyphInfo(FontPtr pFont, unsigned int cidcode, CharInfoPtr pci, int *rc) -{ - CharInfoPtr cp = NULL; -#ifdef USE_MMAP - int fd; - unsigned char *buf; - long total_len = 0; -#else - FILE *fp; - unsigned char buf[BSIZE]; - unsigned int count = 0; -#endif - cidglyphs *cid; - unsigned char *p1 = NULL; -#ifndef USE_MMAP - unsigned char *p2; -#endif - register int i = 0, j; - long byteoffset; - int FDindex, FDBytes, GDBytes, SDBytes, SubrCount, CIDMapOffset, len; - psobj *arrayP; - psobj charstring; - long *subroffsets = NULL, cstringoffset, nextcstringoffset; - struct blues_struct *blues; - - cid = (cidglyphs *)pFont->fontPrivate; - -#ifdef USE_MMAP - if (!cid->CIDdata) { - if (!(fd = open(cid->CIDFontName, O_RDONLY, 0))) { - *rc = BadFontName; - return(cp); - } - cid->CIDsize = lseek(fd, 0, SEEK_END); - cid->CIDdata = (unsigned char *) - mmap(0, (size_t)cid->CIDsize, PROT_READ, MAP_SHARED, fd, 0); - close(fd); - if (cid->CIDdata == (unsigned char *)MAP_FAILED) { - *rc = AllocError; - cid->CIDdata = NULL; - return (cp); - } - } -#else - if (!(fp = fopen(cid->CIDFontName,"rb"))) { - *rc = BadFontName; - return(cp); - } -#endif - -#ifdef USE_MMAP - if (cid->dataoffset == 0) { - if ((p1 = (unsigned char *)strstr((char *)cid->CIDdata, (char *)sd)) - != NULL) { - cid->dataoffset = (p1 - cid->CIDdata) + strlen((char *)sd); - } - else { - *rc = BadFontFormat; - return(cp); - } - } -#else /* USE_MMAP */ - if (cid->dataoffset == 0) { - p2 = sd; - - /* find "StartData" */ - while (*p2) { - cid->dataoffset += count; - if ((count = fread(buf, 1, BSIZE, fp)) == 0) - break; - p1 = buf; - for (i=0; i < count && *p2; i++) { - if (*p1 == *p2) - p2++; - else { - p2 = sd; - if (*p1 == *p2) - p2++; - } - p1++; - } - } - - /* if "StartData" not found, or end of file */ - if (*p2 || count == 0) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } - - if (i >= count) { - cid->dataoffset += count; - count = fread(buf, 1, BSIZE, fp); - p1 = buf; - } else { - cid->dataoffset += p1 - buf; - count = count - (p1 - buf); - } - } else { - if (fseek(fp, cid->dataoffset, SEEK_SET)) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } - if ((count = fread(buf, 1, BSIZE, fp)) == 0) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } - p1 = buf; - } - - /* if "StartData" not found, or "Binary" data and the next character */ - /* is not the space character (0x20) */ - - if (count == 0 || (CIDFontP->binarydata && (*p1 != ' '))) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } -#endif /* USE_MMAP */ - - FDBytes = CIDFontP->CIDfontInfoP[CIDFDBYTES].value.data.integer; - GDBytes = CIDFontP->CIDfontInfoP[CIDGDBYTES].value.data.integer; - CIDMapOffset = CIDFontP->CIDfontInfoP[CIDMAPOFFSET].value.data.integer; - byteoffset = cid->dataoffset + 1 + CIDMapOffset + - cidcode * (FDBytes + GDBytes); -#ifdef USE_MMAP - buf = &cid->CIDdata[byteoffset]; -#else - if (fseek(fp, byteoffset, SEEK_SET)) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } - if ((count = fread(buf, 1, BSIZE, fp)) < 2*(FDBytes + GDBytes)) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } -#endif - - /* if FDBytes is equal to 0, the CIDMap contains no FD indices, and the */ - /* FD index of 0 is assumed. */ - if (FDBytes == 0) - FDindex = 0; - else { - FDindex = 0; - for (i = 0; i < FDBytes; i++) - FDindex += (unsigned char)buf[i] << (8 * (FDBytes - 1 - i)); - } - - if (FDindex >= CIDFontP->CIDfontInfoP[CIDFDARRAY].value.len) { - *rc = BadFontFormat; -#ifndef USE_MMAP - fclose(fp); -#endif - return(cp); - } - - cstringoffset = 0; - for (i = 0; i < GDBytes; i++) - cstringoffset += (unsigned char)buf[FDBytes + i] << - (8 * (GDBytes - 1 - i)); - - nextcstringoffset = 0; - for (i = 0; i < GDBytes; i++) - nextcstringoffset += (unsigned char)buf[2*FDBytes + GDBytes + i] << - (8 * (GDBytes - 1 - i)); - - len = nextcstringoffset - cstringoffset; - - if (len <= 0) { /* empty interval, missing glyph */ - *rc = BadFontFormat; -#ifndef USE_MMAP - fclose(fp); -#endif - return(cp); - } - - FontP = &FDArrayP[FDindex]; - - charstring.type = OBJ_INTEGER; - charstring.len = len; - -#ifndef USE_MMAP - if (!(charstring.data.stringP = (unsigned char *)xalloc(len))) { - *rc = AllocError; - fclose(fp); - return(cp); - } -#endif - - byteoffset = cid->dataoffset + 1 + cstringoffset; - -#ifdef USE_MMAP - charstring.data.stringP = &cid->CIDdata[byteoffset]; -#else - if (fseek(fp, byteoffset, SEEK_SET)) { - *rc = BadFontFormat; - xfree(charstring.data.stringP); - fclose(fp); - return(cp); - } - - if ((count = fread(charstring.data.stringP, 1, len, fp)) != len) { - *rc = BadFontFormat; - xfree(charstring.data.stringP); - fclose(fp); - return(cp); - } -#endif - - if (FontP->Subrs.data.arrayP == NULL) { - /* get subroutine data */ - byteoffset = cid->dataoffset + 1 + - FDArrayP[FDindex].Private[CIDT1SUBMAPOFF].value.data.integer; - - SDBytes = FDArrayP[FDindex].Private[CIDT1SDBYTES].value.data.integer; - - SubrCount = FDArrayP[FDindex].Private[CIDT1SUBRCNT].value.data.integer; -#ifdef USE_MMAP - buf = &cid->CIDdata[byteoffset]; -#else - if (fseek(fp, byteoffset, SEEK_SET)) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } - - if ((count = fread(buf, 1, BSIZE, fp)) < SDBytes * (SubrCount + 1)) { - *rc = BadFontFormat; - fclose(fp); - return(cp); - } -#endif - - arrayP = (psobj *)vm_alloc(SubrCount*sizeof(psobj)); - if (!arrayP) { - *rc = AllocError; -#ifndef USE_MMAP - fclose(fp); -#endif - return(cp); - } - - if (!(subroffsets = (long *)xalloc((SubrCount + 1)*sizeof(long)))) { - *rc = AllocError; -#ifndef USE_MMAP - fclose(fp); -#endif - return(cp); - } - - for (i = 0; i <= SubrCount; i++) { - subroffsets[i] = 0; - for (j = 0; j < SDBytes; j++) - subroffsets[i] += (unsigned char)buf[i * SDBytes + j] << - (8 * (SDBytes - 1 - j)); - } - - byteoffset = cid->dataoffset + 1 + subroffsets[0]; - - /* get subroutine info */ -#ifndef USE_MMAP - if (fseek(fp, byteoffset, SEEK_SET)) { - *rc = BadFontFormat; - xfree(subroffsets); - fclose(fp); - return(cp); - } -#else - total_len = byteoffset; -#endif - for (i = 0; i < SubrCount; i++) { - len = subroffsets[i + 1] - subroffsets[i]; -#ifndef USE_MMAP - arrayP[i].data.valueP = vm_alloc(len); - if (!arrayP[i].data.valueP) { - *rc = AllocError; - xfree(subroffsets); - fclose(fp); - return(cp); - } -#endif - arrayP[i].len = len; -#ifdef USE_MMAP - arrayP[i].data.valueP = (char *)&cid->CIDdata[total_len]; - total_len += len; -#else - if ((count = fread(arrayP[i].data.valueP, 1, len, fp)) != len) { - *rc = BadFontFormat; - xfree(subroffsets); - fclose(fp); - return(cp); - } -#endif - } - - FontP->Subrs.len = SubrCount; - FontP->Subrs.data.arrayP = arrayP; - xfree(subroffsets); - } - - if (FontP->BluesP == NULL) { - blues = (struct blues_struct *) vm_alloc(sizeof(struct blues_struct)); - if (!blues) { - *rc = AllocError; -#ifndef USE_MMAP - xfree(subroffsets); - fclose(fp); -#endif - return(cp); - } - bzero(blues, sizeof(struct blues_struct)); - blues->numBlueValues = - FDArrayP[FDindex].Private[CIDT1BLUEVALUES].value.len; - for (i = 0; i < blues->numBlueValues; i++) - blues->BlueValues[i] = - FDArrayP[FDindex].Private[CIDT1BLUEVALUES].value.data.arrayP[i].data.integer; - blues->numOtherBlues = - FDArrayP[FDindex].Private[CIDT1OTHERBLUES].value.len; - for (i = 0; i < blues->numOtherBlues; i++) - blues->OtherBlues[i] = - FDArrayP[FDindex].Private[CIDT1OTHERBLUES].value.data.arrayP[i].data.integer; - blues->numFamilyBlues = - FDArrayP[FDindex].Private[CIDT1FAMBLUES].value.len; - for (i = 0; i < blues->numFamilyBlues; i++) - blues->FamilyBlues[i] = - FDArrayP[FDindex].Private[CIDT1FAMBLUES].value.data.arrayP[i].data.integer; - blues->numFamilyOtherBlues = - FDArrayP[FDindex].Private[CIDT1FAMOTHERBLUES].value.len; - for (i = 0; i < blues->numFamilyOtherBlues; i++) - blues->FamilyOtherBlues[i] = - FDArrayP[FDindex].Private[CIDT1FAMOTHERBLUES].value.data.arrayP[i].data.integer; - blues->BlueScale = FDArrayP[FDindex].Private[CIDT1BLUESCALE].value.data.real; - blues->BlueShift = FDArrayP[FDindex].Private[CIDT1BLUESHIFT].value.data.integer; - blues->BlueFuzz = FDArrayP[FDindex].Private[CIDT1BLUEFUZZ].value.data.integer; - blues->StdHW = (double)FDArrayP[FDindex].Private[CIDT1STDHW].value.data.arrayP[0].data.integer; - blues->StdVW = (double)FDArrayP[FDindex].Private[CIDT1STDVW].value.data.arrayP[0].data.integer; - - blues->numStemSnapH = - FDArrayP[FDindex].Private[CIDT1STEMSNAPH].value.len; - for (i = 0; i < blues->numStemSnapH; i++) - blues->StemSnapH[i] = - FDArrayP[FDindex].Private[CIDT1STEMSNAPH].value.data.arrayP[i].data.integer; - blues->numStemSnapV = - FDArrayP[FDindex].Private[CIDT1STEMSNAPV].value.len; - for (i = 0; i < blues->numStemSnapV; i++) - blues->StemSnapV[i] = - FDArrayP[FDindex].Private[CIDT1STEMSNAPV].value.data.arrayP[i].data.integer; - blues->ForceBold = - FDArrayP[FDindex].Private[CIDT1FORCEBOLD].value.data.boolean; - - blues->LanguageGroup = - FDArrayP[FDindex].Private[CIDT1LANGGROUP].value.data.integer; - - blues->RndStemUp = - FDArrayP[FDindex].Private[CIDT1RNDSTEMUP].value.data.boolean; - - blues->lenIV = - FDArrayP[FDindex].Private[CIDT1LENIV].value.data.integer; - - blues->ExpansionFactor = - FDArrayP[FDindex].Private[CIDT1EXPFACTOR].value.data.real; - - FontP->BluesP = blues; - } - - cp = CIDRenderGlyph(pFont, &charstring, &FontP->Subrs, FontP->BluesP, pci, rc); - -#ifndef USE_MMAP - xfree(charstring.data.stringP); - - fclose(fp); -#endif - return(cp); -} - -static int -node_compare(const void *node1, const void *node2) -{ - return (((Metrics *)node1)->code - ((Metrics *)node2)->code); -} - -static CharInfoRec * -CIDGetCharMetrics(FontPtr pFont, FontInfo *fi, unsigned int charcode, double sxmult) -{ - CharInfoPtr cp; - Metrics *p, node; - unsigned int cidcode; - - cidcode = node.code = getCID(pFont, charcode); - if ((cidcode < fi->nChars) && (cidcode == fi->metrics[cidcode].code)) - p = &fi->metrics[cidcode]; - else - p = (Metrics *)bsearch(&node, fi->metrics, fi->nChars, sizeof(Metrics), node_compare); - - if (!p) - p = &fi->metrics[0]; - - if (!(cp = (CharInfoRec *)Xalloc(sizeof(CharInfoRec)))) - return NULL; - bzero(cp, sizeof(CharInfoRec)); - - /* indicate that character bitmap is not defined */ - cp->bits = (char *)CID_BITMAP_UNDEFINED; - - - /* get metric data for this CID code from the CID AFM file */ - cp->metrics.leftSideBearing = - floor(p->charBBox.llx / sxmult + 0.5); - cp->metrics.rightSideBearing = - floor(p->charBBox.urx / sxmult + 0.5); - cp->metrics.characterWidth = floor(p->wx / sxmult + 0.5); - cp->metrics.ascent = floor(p->charBBox.ury / sxmult + 0.5); - cp->metrics.descent = -floor(p->charBBox.lly / sxmult + 0.5); - - cp->metrics.attributes = p->wx; - - return cp; -} - -int -CIDGetAFM(FontPtr pFont, unsigned long count, unsigned char *chars, FontEncoding charEncoding, unsigned long *glyphCount, CharInfoPtr *glyphs, char *cidafmfile) -{ - FILE *fp; - FontInfo *fi = NULL; - cidglyphs *cid; - CharInfoPtr *glyphsBase; - register unsigned int c; - - register CharInfoPtr pci; - CharInfoPtr pDefault; - unsigned int firstCol, code, char_row, char_col; - double sxmult; - - cid = (cidglyphs *)pFont->fontPrivate; - - if (cid->AFMinfo == NULL) { - if (!(fp = fopen(cidafmfile, "rb"))) - return(BadFontName); - - if (CIDAFM(fp, &fi) != 0) { - fprintf(stderr, - "There is something wrong with Adobe Font Metric file %s.\n", - cidafmfile); - fclose(fp); - return(BadFontName); - } - fclose(fp); - cid->AFMinfo = fi; - } - fi = cid->AFMinfo; - - firstCol = pFont->info.firstCol; - pDefault = cid->pDefault; - glyphsBase = glyphs; - - /* multiplier for computation of raw values */ - sxmult = hypot(cid->pixel_matrix[0], cid->pixel_matrix[1]); - if (sxmult > EPS) sxmult = 1000.0 / sxmult; - if (sxmult == 0.0) return(0); - - switch (charEncoding) { - -#define EXIST(pci) \ - ((pci)->metrics.attributes || \ - (pci)->metrics.ascent != -(pci)->metrics.descent || \ - (pci)->metrics.leftSideBearing != (pci)->metrics.rightSideBearing) - - case Linear8Bit: - case TwoD8Bit: - if (pFont->info.firstRow > 0) - break; - while (count--) { - c = (*chars++); - if (c >= firstCol && c <= pFont->info.lastCol) { - code = c - firstCol; - if (!(pci = (CharInfoRec *)cid->glyphs[code])) - pci = CIDGetCharMetrics(pFont, fi, c, sxmult); - if (pci && EXIST(pci)) { - *glyphs++ = pci; - cid->glyphs[code] = pci; - } - } else if (pDefault) - *glyphs++ = pDefault; - } - break; - case Linear16Bit: - while (count--) { - char_row = *chars++; - char_col = *chars++; - c = char_row << 8; - c = (c | char_col); - if (pFont->info.firstRow <= char_row && char_row <= - pFont->info.lastRow && pFont->info.firstCol <= char_col && - char_col <= pFont->info.lastCol) { - code = pFont->info.lastCol - pFont->info.firstCol + 1; - char_row = char_row - pFont->info.firstRow; - char_col = char_col - pFont->info.firstCol; - code = char_row * code + char_col; - if (!(pci = (CharInfoRec *)cid->glyphs[code])) - pci = CIDGetCharMetrics(pFont, fi, c, sxmult); - if (pci && EXIST(pci)) { - *glyphs++ = pci; - cid->glyphs[code] = pci; - } else if (pDefault) { - *glyphs++ = pDefault; - cid->glyphs[code] = pDefault; - } - } else if (pDefault) - *glyphs++ = pDefault; - } - break; - - case TwoD16Bit: - while (count--) { - char_row = (*chars++); - char_col = (*chars++); - c = char_row << 8; - c = (c | char_col); - if (pFont->info.firstRow <= char_row && char_row <= - pFont->info.lastRow && pFont->info.firstCol <= char_col && - char_col <= pFont->info.lastCol) { - code = pFont->info.lastCol - pFont->info.firstCol + 1; - char_row = char_row - pFont->info.firstRow; - char_col = char_col - pFont->info.firstCol; - code = char_row * code + char_col; - if (!(pci = (CharInfoRec *)cid->glyphs[code])) - pci = CIDGetCharMetrics(pFont, fi, c, sxmult); - if (pci && EXIST(pci)) { - *glyphs++ = pci; - cid->glyphs[code] = pci; - } else if (pDefault) { - *glyphs++ = pDefault; - cid->glyphs[code] = pDefault; - } - } else if (pDefault) - *glyphs++ = pDefault; - } - break; - } - *glyphCount = glyphs - glyphsBase; - -#undef EXIST - - return Successful; - -} -#endif diff --git a/nx-X11/lib/font/Type1/cluts.h b/nx-X11/lib/font/Type1/cluts.h deleted file mode 100644 index 67d9303..0000000 --- a/nx-X11/lib/font/Type1/cluts.h +++ /dev/null @@ -1,35 +0,0 @@ -/* $Xorg: cluts.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* STUB */ - -#define KillCLUT(T) -#define CopyCLUT(T) T -#define UniqueCLUT(T) - diff --git a/nx-X11/lib/font/Type1/curves.c b/nx-X11/lib/font/Type1/curves.c deleted file mode 100644 index 9d0c3f8..0000000 --- a/nx-X11/lib/font/Type1/curves.c +++ /dev/null @@ -1,228 +0,0 @@ -/* $Xorg: curves.c,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 */ -/* All Rights Reserved */ - -/* License to use, copy, modify, and distribute this software */ -/* and its documentation for any purpose and without fee is */ -/* hereby granted, provided that licensee provides a license to */ -/* IBM, Corp. to use, copy, modify, and distribute derivative */ -/* works and their documentation for any purpose and without */ -/* fee, that the above copyright notice appear in all copies */ -/* and that both that copyright notice and this permission */ -/* notice appear in supporting documentation, and that the name */ -/* of IBM not be used in advertising or publicity pertaining to */ -/* distribution of the software without specific, written prior */ -/* permission. */ - -/* IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES */ -/* OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT */ -/* LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, */ -/* FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF */ -/* THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND */ -/* PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT */ -/* OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF */ -/* THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES */ -/* THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN */ -/* NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR */ -/* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING */ -/* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF */ -/* CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT */ -/* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS */ -/* SOFTWARE. */ -/* $XFree86: xc/lib/font/Type1/curves.c,v 1.7 2001/08/27 19:49:52 dawes Exp $ */ - -/* -:h1.CURVES Module - Stepping Beziers - -This module is responsible for "rasterizing" -third order curves. That is, it changes the high level curve -specification into a list of pels that that curve travels -through. - -:h3.Include Files - -Include files needed: -*/ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef FONTMODULE -# include "os.h" -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" -#include "curves.h" -#include "lines.h" -#include "arith.h" - - -/* -:h3.Functions Provided to Other Modules - -External entry points: -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -Note that "stepping" and "flattening" are so similiar that they use the -same routine. When the "region" parameter is NULL, that is a flag that -we are flattening instead of stepping. -*/ -/* -:h2.Bezier Third Order Curves -*/ -/* -:h3.The "bezierinfo" Structure - -This structure is used to store information used when we subdivide -Bezier curves. -*/ - -struct bezierinfo { - struct region *region; /* the region being built or NULL */ - struct fractpoint last; /* not used yet; maybe could save some work */ - struct fractpoint origin; /* the origin of the bezier */ -} ; - -/* - Checking for termination of the subdivision process: - This is the stupidest test in the world, just check if the coordinatewise - distance from an end control point to the next control point is less than - one half pel. If so, we must be done. - This returns 1 if the subdivision is terminated and 0 if you still need - to subdivide. -*/ - -static int -BezierTerminationTest(fractpel xa, fractpel ya, - fractpel xb, fractpel yb, - fractpel xc, fractpel yc, - fractpel xd, fractpel yd) -{ - fractpel dmax; - dmax = ABS(xa - xb); - dmax = MAX(dmax,ABS(ya - yb)); - dmax = MAX(dmax,ABS(xd - xc)); - dmax = MAX(dmax,ABS(yd - yc)); - if(dmax > FPHALF) - return(0); /* not done yet */ - else - return(1); /* done */ -} - -/* -:h3.StepBezierRecurse() - The Recursive Logic in StepBezier() - -The recursion involves dividing the control polygon into two smaller -control polygons by finding the midpoints of the lines. This idea is -described in any graphics text book and its simplicity is what caused -Bezier to define his curves as he did. If the input region 'R' is NULL, -the result is a path that is the 'flattened' curve; otherwise StepBezier -returns nothing special. -*/ -static struct segment * -StepBezierRecurse(struct bezierinfo *I, /* Region under construction or NULL */ - fractpel xA, fractpel yA, /* A control point */ - fractpel xB, fractpel yB, /* B control point */ - fractpel xC, fractpel yC, /* C control point */ - fractpel xD, fractpel yD) /* D control point */ -{ - if (BezierTerminationTest(xA,yA,xB,yB,xC,yC,xD,yD)) - { - if (I->region == NULL) - return(PathSegment(LINETYPE, xD - xA, yD - yA)); - else - StepLine(I->region, I->origin.x + xA, I->origin.y + yA, - I->origin.x + xD, I->origin.y + yD); - } - else - { - fractpel xAB,yAB; - fractpel xBC,yBC; - fractpel xCD,yCD; - fractpel xABC,yABC; - fractpel xBCD,yBCD; - fractpel xABCD,yABCD; - - xAB = xA + xB; yAB = yA + yB; - xBC = xB + xC; yBC = yB + yC; - xCD = xC + xD; yCD = yC + yD; - - xABC = xAB + xBC; yABC = yAB + yBC; - xBCD = xBC + xCD; yBCD = yBC + yCD; - - xABCD = xABC + xBCD; yABCD = yABC + yBCD; - - xAB >>= 1; yAB >>= 1; - xBC >>= 1; yBC >>= 1; - xCD >>= 1; yCD >>= 1; - xABC >>= 2; yABC >>= 2; - xBCD >>= 2; yBCD >>= 2; - xABCD >>= 3; yABCD >>= 3; - - if (I->region == NULL) - { - return( Join( - StepBezierRecurse(I, xA, yA, xAB, yAB, xABC, yABC, xABCD, yABCD), - StepBezierRecurse(I, xABCD, yABCD, xBCD, yBCD, xCD, yCD, xD, yD) - ) - ); - } - else - { - StepBezierRecurse(I, xA, yA, xAB, yAB, xABC, yABC, xABCD, yABCD); - StepBezierRecurse(I, xABCD, yABCD, xBCD, yBCD, xCD, yCD, xD, yD); - } - } - return NULL; - /*NOTREACHED*/ -} - -/* -:h3.TOOBIG() - Macro to Test if a Coordinate is Too Big to Bezier SubDivide Normally - -Intermediate values in the Bezier subdivision are 8 times bigger than -the starting values. If this overflows, a 'long', we are in trouble: -*/ - -#undef BITS -#define BITS (sizeof(long)*8) -#define HIGHTEST(p) (((p)>>(BITS-4)) != 0) /* includes sign bit */ -#define TOOBIG(xy) ((xy < 0) ? HIGHTEST(-xy) : HIGHTEST(xy)) - -/* -:h3.StepBezier() - Produce Run Ends for a Bezier Curve - -This is the entry point called from outside the module. -*/ - -struct segment * -StepBezier(struct region *R, /* Region under construction or NULL */ - fractpel xA, fractpel yA, /* A control point */ - fractpel xB, fractpel yB, /* B control point */ - fractpel xC, fractpel yC, /* C control point */ - fractpel xD, fractpel yD) /* D control point */ -{ - struct bezierinfo Info; - - Info.region = R; - Info.origin.x = xA; - Info.origin.y = yA; - - xB -= xA; - xC -= xA; - xD -= xA; - yB -= yA; - yC -= yA; - yD -= yA; - - if ( TOOBIG(xB) || TOOBIG(yB) || TOOBIG(xC) || TOOBIG(yC) - || TOOBIG(xD) || TOOBIG(yD) ) - Abort("Beziers this big not yet supported"); - - return(StepBezierRecurse(&Info, - (fractpel) 0, (fractpel) 0, xB, yB, xC, yC, xD, yD)); -} - diff --git a/nx-X11/lib/font/Type1/curves.h b/nx-X11/lib/font/Type1/curves.h deleted file mode 100644 index ca54bad..0000000 --- a/nx-X11/lib/font/Type1/curves.h +++ /dev/null @@ -1,44 +0,0 @@ -/* $Xorg: curves.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/curves.h,v 1.3 1999/08/22 08:58:50 dawes Exp $ */ - -/*SHARED*/ - -#define StepConic(R,xA,yA,xB,yB,xC,yC,r) t1_StepConic(R,xA,yA,xB,yB,xC,yC,r) -#define StepBezier(R,xA,yA,xB,yB,xC,yC,xD,yD) t1_StepBezier(R,xA,yA,xB,yB,xC,yC,xD,yD) - -#define FlattenConic(xM,yM,xC,yC,r) t1_StepConic(NULL,(fractpel)0,(fractpel)0,xM,yM,xC,yC,r) -#define FlattenBezier(xB,yB,xC,yC,xD,yD) t1_StepBezier(NULL,(fractpel)0,(fractpel)0,xB,yB,xC,yC,xD,yD) - -#if 0 -struct segment *t1_StepConic(); -#endif -extern struct segment *t1_StepBezier ( struct region *R, fractpel xA, fractpel yA, fractpel xB, fractpel yB, fractpel xC, fractpel yC, fractpel xD, fractpel yD ); - -/*END SHARED*/ diff --git a/nx-X11/lib/font/Type1/digit.h b/nx-X11/lib/font/Type1/digit.h deleted file mode 100644 index c693809..0000000 --- a/nx-X11/lib/font/Type1/digit.h +++ /dev/null @@ -1,64 +0,0 @@ -/* $Xorg: digit.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* -------------------------------------- */ -/* --- MACHINE GENERATED, DO NOT EDIT --- */ -/* -------------------------------------- */ - -#ifndef DIGIT -#define DIGIT 1 - -/* - * Digit Value Table -- - * - * The entries in the Digit Value Table map character - * codes in the set {0-9,a-z,A-Z} to their numeric - * values as part of numbers of radix 2-36. - * - */ -unsigned char digit_value[256] = { -0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18, - 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18, - 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF -}; - -#endif diff --git a/nx-X11/lib/font/Type1/fontfcn.c b/nx-X11/lib/font/Type1/fontfcn.c deleted file mode 100644 index 9b48b98..0000000 --- a/nx-X11/lib/font/Type1/fontfcn.c +++ /dev/null @@ -1,709 +0,0 @@ -/* $Xorg: fontfcn.c,v 1.4 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/fontfcn.c,v 1.10 2001/04/05 17:42:27 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifndef FONTMODULE -#include <stdio.h> -#include <string.h> -#else -#include "Xmd.h" /* For INT32 declaration */ -#include "Xdefs.h" /* For Bool */ -#include "xf86_ansic.h" -#endif -#include "t1imager.h" -#include "util.h" -#if XFONT_CID -#include "range.h" -#include <X11/Xdefs.h> -#endif -#include <X11/fonts/fntfilst.h> -#include "fontfcn.h" - -extern struct segment *Type1Char ( char *env, XYspace S, - psobj *charstrP, psobj *subrsP, - psobj *osubrsP, - struct blues_struct *bluesP, int *modeP ); - -#if XFONT_CID -extern struct xobject *CIDChar ( char *env, XYspace S, - psobj *charstrP, psobj *subrsP, - psobj *osubrsP, - struct blues_struct *bluesP, int *modeP ); -static boolean initCIDFont( int cnt ); -#endif - -/***================================================================***/ -/* GLOBALS */ -/***================================================================***/ -char CurFontName[120]; -char *CurFontEnv; -char *vm_base = NULL; -psfont *FontP = NULL; -psfont TheCurrentFont; -#if XFONT_CID -char CurCIDFontName[CID_PATH_MAX]; -char CurCMapName[CID_PATH_MAX]; -cidfont *CIDFontP = NULL; -cmapres *CMapP = NULL; -cidfont TheCurrentCIDFont; -cmapres TheCurrentCMap; -psfont *FDArrayP = NULL; -int FDArrayIndex = 0; -#endif - -/***================================================================***/ -/* SearchDict - look for name */ -/* - compare for match on len and string */ -/* return 0 - not found. */ -/* return n - nth element in dictionary. */ -/***================================================================***/ -int -SearchDictName(psdict *dictP, psobj *keyP) -{ - int i,n; - - - n = dictP[0].key.len; - for (i=1;i<=n;i++) { /* scan the intire dictionary */ - if ( - (dictP[i].key.len == keyP->len ) - && - (strncmp(dictP[i].key.data.valueP, - keyP->data.valueP, - keyP->len) == 0 - ) - ) return(i); - } - return(0); -} - -#if XFONT_CID -static boolean -initCIDFont(int cnt) -{ - if (!(vm_init(cnt))) return(FALSE); - vm_base = vm_next_byte(); - strcpy(CurCIDFontName, ""); /* initialize to none */ - strcpy(CurCMapName, ""); /* initialize to none */ - /* cause a font data reset on the next Type 1 font */ - strcpy(CurFontName, ""); /* initialize to none */ - CIDFontP = &TheCurrentCIDFont; - CMapP = &TheCurrentCMap; - CIDFontP->vm_start = vm_next_byte(); - CIDFontP->spacerangecnt = 0; - CIDFontP->notdefrangecnt = 0; - CIDFontP->cidrangecnt = 0; - CIDFontP->spacerangeP = NULL; - CIDFontP->notdefrangeP = NULL; - CIDFontP->cidrangeP = NULL; - CIDFontP->CIDFontFileName.len = 0; - CIDFontP->CIDFontFileName.data.valueP = CurCIDFontName; - CMapP->CMapFileName.len = 0; - CMapP->CMapFileName.data.valueP = CurCMapName; - CMapP->firstRow = 0xFFFF; - CMapP->firstCol = 0xFFFF; - CMapP->lastRow = 0; - CMapP->lastCol = 0; - return(TRUE); -} - -/***================================================================***/ -boolean -initCIDType1Font(void) -{ - strcpy(CurFontName, ""); /* initialize to none */ - FontP = &FDArrayP[FDArrayIndex]; - FontP->vm_start = vm_next_byte(); - FontP->FontFileName.len = 0; - FontP->FontFileName.data.valueP = CurFontName; - FontP->Subrs.len = 0; - FontP->Subrs.data.stringP = NULL; - FontP->CharStringsP = NULL; - FontP->Private = NULL; - FontP->fontInfoP = NULL; - FontP->BluesP = NULL; - return(TRUE); -} -#endif - -boolean -initFont(int cnt) -{ - - if (!(vm_init(cnt))) return(FALSE); - vm_base = vm_next_byte(); - if (!(Init_BuiltInEncoding())) return(FALSE); - strcpy(CurFontName, ""); /* iniitialize to none */ -#if XFONT_CID - /* cause a font data reset on the next CID-keyed font */ - strcpy(CurCIDFontName, ""); /* initialize to none */ -#endif - FontP = &TheCurrentFont; - FontP->vm_start = vm_next_byte(); - FontP->FontFileName.len = 0; - FontP->FontFileName.data.valueP = CurFontName; - return(TRUE); -} -/***================================================================***/ -#if XFONT_CID -static void -resetCIDFont(char *cidfontname, char *cmapfile) -{ - - vm_next = CIDFontP->vm_start; - vm_free = vm_size - ( vm_next - vm_base); - CIDFontP->spacerangecnt = 0; - CIDFontP->notdefrangecnt = 0; - CIDFontP->cidrangecnt = 0; - CIDFontP->spacerangeP = NULL; - CIDFontP->notdefrangeP = NULL; - CIDFontP->cidrangeP = NULL; - CIDFontP->CIDfontInfoP = NULL; - /* This will load the font into the FontP */ - strcpy(CurCIDFontName,cidfontname); - strcpy(CurCMapName,cmapfile); - CIDFontP->CIDFontFileName.len = strlen(CurCIDFontName); - CIDFontP->CIDFontFileName.data.valueP = CurCIDFontName; - CMapP->CMapFileName.len = strlen(CurCMapName); - CMapP->CMapFileName.data.valueP = CurCMapName; - CMapP->firstRow = 0xFFFF; - CMapP->firstCol = 0xFFFF; - CMapP->lastRow = 0; - CMapP->lastCol = 0; -} - -static void -resetCIDType1Font(void) -{ - - vm_next = FontP->vm_start; - vm_free = vm_size - ( vm_next - vm_base); - FontP->Subrs.len = 0; - FontP->Subrs.data.stringP = NULL; - FontP->CharStringsP = NULL; - FontP->Private = NULL; - FontP->fontInfoP = NULL; - FontP->BluesP = NULL; - /* This will load the font into the FontP */ - FontP->FontFileName.len = strlen(CurFontName); - FontP->FontFileName.data.valueP = CurFontName; -} -#endif - -static void -resetFont(char *env) -{ - - vm_next = FontP->vm_start; - vm_free = vm_size - ( vm_next - vm_base); - FontP->Subrs.len = 0; - FontP->Subrs.data.stringP = NULL; - FontP->CharStringsP = NULL; - FontP->Private = NULL; - FontP->fontInfoP = NULL; - FontP->BluesP = NULL; - /* This will load the font into the FontP */ - strcpy(CurFontName,env); - FontP->FontFileName.len = strlen(CurFontName); - FontP->FontFileName.data.valueP = CurFontName; - -} - -#if XFONT_CID -/***================================================================***/ -int -readCIDFont(char *cidfontname, char *cmapfile) -{ - int rcode; - - /* restore the virtual memory and eliminate old font */ - resetCIDFont(cidfontname, cmapfile); - /* This will load the font into the FontP */ - rcode = scan_cidfont(CIDFontP, CMapP); - if (rcode == SCAN_OUT_OF_MEMORY) { - /* free the memory and start again */ - if (!(initCIDFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetCIDFont(cidfontname, cmapfile); - rcode = scan_cidfont(CIDFontP, CMapP); - /* only double the memory twice, then report error */ - if (rcode == SCAN_OUT_OF_MEMORY) { - /* free the memory and start again */ - if (!(initCIDFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetCIDFont(cidfontname, cmapfile); - rcode = scan_cidfont(CIDFontP, CMapP); - } - } - return(rcode); -} - -int -readCIDType1Font(void) -{ - int rcode; - - resetCIDType1Font(); - - /* This will load the font into the FontP */ - rcode = scan_cidtype1font(FontP); - return(rcode); -} -#endif - -int -readFont(char *env) -{ - int rcode; - - /* restore the virtual memory and eliminate old font */ - resetFont(env); - /* This will load the font into the FontP */ - rcode = scan_font(FontP); - if (rcode == SCAN_OUT_OF_MEMORY) { - /* free the memory and start again */ -#if XFONT_CID - /* xfree(vm_base); */ -#else - xfree(vm_base); -#endif - if (!(initFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetFont(env); - rcode = scan_font(FontP); -#if XFONT_CID - /* only double the memory twice, then report error */ - if (rcode == SCAN_OUT_OF_MEMORY) { - /* free the memory and start again */ - /* xfree(vm_base) */ - if (!(initFont(vm_size * 2))) { - /* we are really out of memory */ - return(SCAN_OUT_OF_MEMORY); - } - resetFont(env); - rcode = scan_font(FontP); - } -#else - /* only double the memory once, then report error */ -#endif - } - return(rcode); -} -/***================================================================***/ -struct xobject * -fontfcnB(struct XYspace *S, unsigned char *code, int *lenP, int *mode) -{ - psobj *charnameP; /* points to psobj that is name of character*/ - int N; - psdict *CharStringsDictP; /* dictionary with char strings */ - psobj CodeName; /* used to store the translation of the name*/ - psobj *SubrsArrayP; - psobj *theStringP; - - struct xobject *charpath; /* the path for this character */ - - charnameP = &CodeName; - charnameP->len = *lenP; - charnameP->data.stringP = code; - - CharStringsDictP = FontP->CharStringsP; - - /* search the chars string for this charname as key */ - N = SearchDictName(CharStringsDictP,charnameP); - if (N<=0) { - *mode = FF_PARSE_ERROR; - return(NULL); - } - /* ok, the nth item is the psobj that is the string for this char */ - theStringP = &(CharStringsDictP[N].value); - - /* get the dictionary pointers to the Subrs */ - - SubrsArrayP = &(FontP->Subrs); - /* scale the Adobe fonts to 1 unit high */ - /* call the type 1 routine to rasterize the character */ - charpath = (struct xobject *)Type1Char((char *)FontP,S,theStringP, - SubrsArrayP,NULL, - FontP->BluesP , mode); - /* if Type1Char reported an error, then return */ - if ( *mode == FF_PARSE_ERROR) return(NULL); - /* fill with winding rule unless path was requested */ - if (*mode != FF_PATH) { - charpath = (struct xobject *)Interior((struct segment *)charpath, - WINDINGRULE+CONTINUITY); - } - return(charpath); -} - -#if XFONT_CID -/***================================================================***/ -/* CIDfontfcnA(cidfontname, cmapfile, mode) */ -/* */ -/* 1) initialize the font - global indicates it has been done */ -/* 2) load the font */ -/***================================================================***/ -Bool -CIDfontfcnA(char *cidfontname, char *cmapfile, int *mode) -{ - int rcode, cidinit; - - cidinit = 0; - if (CIDFontP == NULL || strcmp(CurCIDFontName, "") == 0) { - InitImager(); - if (!(initCIDFont(VM_SIZE))) { - /* we are really out of memory */ - *mode = SCAN_OUT_OF_MEMORY; - return(FALSE); - } - cidinit = 1; - } - - /* if the cidfontname is null, then use font already loaded */ - - /* if not the same font name */ - if (cidinit || (cidfontname && strcmp(cidfontname,CurCIDFontName) != 0) || - (cmapfile && strcmp(cmapfile,CurCMapName) != 0)) { - /* restore the virtual memory and eliminate old font, read new one */ - rcode = readCIDFont(cidfontname, cmapfile); - if (rcode != 0 ) { - strcpy(CurCIDFontName, ""); /* no CIDFont loaded */ - strcpy(CurCMapName, ""); /* no CMap loaded */ - *mode = rcode; - return(FALSE); - } - } - return(TRUE); - -} - -/***================================================================***/ -/* CIDType1fontfcnA(mode) */ -/* */ -/* 1) initialize the font - global indicates it has been done */ -/* 2) load the font */ -/***================================================================***/ -Bool -CIDType1fontfcnA(int *mode) -{ - int rcode; - - if (!(initCIDType1Font())) { - /* we are really out of memory */ - *mode = SCAN_OUT_OF_MEMORY; - return(FALSE); - } - - if ((rcode = readCIDType1Font()) != 0) { - strcpy(CurFontName, ""); /* no font loaded */ - *mode = rcode; - return(FALSE); - } - return(TRUE); - -} -#endif - -/***================================================================***/ -/* fontfcnA(env, mode) */ -/* */ -/* env is a pointer to a string that contains the fontname. */ -/* */ -/* 1) initialize the font - global indicates it has been done */ -/* 2) load the font */ -/***================================================================***/ -Bool -fontfcnA(char *env, int *mode) -{ - int rc; - - /* Has the FontP initialized? If not, then */ - /* Initialize */ -#if XFONT_CID - if (FontP == NULL || strcmp(CurFontName, "") == 0) { -#else - if (FontP == NULL) { -#endif - InitImager(); - if (!(initFont(VM_SIZE))) { - /* we are really out of memory */ - *mode = SCAN_OUT_OF_MEMORY; - return(FALSE); - } - } - - /* if the env is null, then use font already loaded */ - - /* if the not same font name */ - if ( (env) && (strcmp(env,CurFontName) != 0 ) ) { - /* restore the virtual memory and eliminate old font, read new one */ - rc = readFont(env); - if (rc != 0 ) { - strcpy(CurFontName, ""); /* no font loaded */ - *mode = rc; - return(FALSE); - } - } - return(TRUE); - -} - -#if XFONT_CID -/***================================================================***/ -/* CIDQueryFontLib(cidfontname,cmapfile,infoName,infoValue,rcodeP) */ -/* */ -/* cidfontname is a pointer to a string that contains the fontname. */ -/* */ -/* 1) initialize the font - global indicates it has been done */ -/* 2) load the font */ -/* 3) use the font to call getInfo for that value. */ -/***================================================================***/ - -void -CIDQueryFontLib(char *cidfontname, char *cmapfile, char *infoName, - pointer infoValue, /* parameter returned here */ - int *rcodeP) -{ - int rc,N,i,cidinit; - psdict *dictP; - psobj nameObj; - psobj *valueP; - - /* Has the CIDFontP initialized? If not, then */ - /* Initialize */ - cidinit = 0; - if (CIDFontP == NULL || strcmp(CurCIDFontName, "") == 0) { - InitImager(); - if (!(initCIDFont(VM_SIZE))) { - *rcodeP = 1; - return; - } - cidinit = 1; - } - /* if the file name is null, then use font already loaded */ - /* if the not same font name, reset and load next font */ - if (cidinit || (cidfontname && strcmp(cidfontname,CurCIDFontName) != 0) || - (cmapfile && strcmp(cmapfile,CurCMapName) != 0)) { - /* restore the virtual memory and eliminate old font */ - rc = readCIDFont(cidfontname, cmapfile); - if (rc != 0 ) { - strcpy(CurCIDFontName, ""); /* no font loaded */ - strcpy(CurCMapName, ""); /* no font loaded */ - *rcodeP = 1; - return; - } - } - dictP = CIDFontP->CIDfontInfoP; - objFormatName(&nameObj,strlen(infoName),infoName); - N = SearchDictName(dictP,&nameObj); - /* if found */ - if ( N > 0 ) { - *rcodeP = 0; - switch (dictP[N].value.type) { - case OBJ_ARRAY: - valueP = dictP[N].value.data.arrayP; - /* Just double check valueP. H.J. */ - if (valueP == NULL) break; - if (strcmp(infoName,"FontMatrix") == 0) { - /* 6 elments, return them as floats */ - for (i=0;i<6;i++) { - if (valueP->type == OBJ_INTEGER ) - ((float *)infoValue)[i] = valueP->data.integer; - else - ((float *)infoValue)[i] = valueP->data.real; - valueP++; - } - } - if (strcmp(infoName,"FontBBox") == 0) { - /* 4 elments for Bounding Box. all integers */ - for (i=0;i<4;i++) { - ((int *)infoValue)[i] = valueP->data.integer; - valueP++; - } - break; - case OBJ_INTEGER: - case OBJ_BOOLEAN: - *((int *)infoValue) = dictP[N].value.data.integer; - break; - case OBJ_REAL: - *((float *)infoValue) = dictP[N].value.data.real; - break; - case OBJ_NAME: - case OBJ_STRING: - *((char **)infoValue) = dictP[N].value.data.valueP; - break; - default: - *rcodeP = 1; - break; - } - } - } - else *rcodeP = 1; -} -#endif - -/***================================================================***/ -/* QueryFontLib(env, infoName,infoValue,rcodeP) */ -/* */ -/* env is a pointer to a string that contains the fontname. */ -/* */ -/* 1) initialize the font - global indicates it has been done */ -/* 2) load the font */ -/* 3) use the font to call getInfo for that value. */ -/***================================================================***/ - -void -QueryFontLib(char *env, char *infoName, - pointer infoValue, /* parameter returned here */ - int *rcodeP) -{ - int rc,N,i; - psdict *dictP; - psobj nameObj; - psobj *valueP; - - /* Has the FontP initialized? If not, then */ - /* Initialize */ - if (FontP == NULL) { - InitImager(); - if (!(initFont(VM_SIZE))) { - *rcodeP = 1; - return; - } - } - /* if the env is null, then use font already loaded */ - /* if the not same font name, reset and load next font */ - if ( (env) && (strcmp(env,CurFontName) != 0 ) ) { - /* restore the virtual memory and eliminate old font */ - rc = readFont(env); - if (rc != 0 ) { - strcpy(CurFontName, ""); /* no font loaded */ - *rcodeP = 1; - return; - } - } - dictP = FontP->fontInfoP; - objFormatName(&nameObj,strlen(infoName),infoName); - N = SearchDictName(dictP,&nameObj); - /* if found */ - if ( N > 0 ) { - *rcodeP = 0; - switch (dictP[N].value.type) { - case OBJ_ARRAY: - valueP = dictP[N].value.data.arrayP; - /* Just double check valueP. H.J. */ - if (valueP == NULL) break; - if (strcmp(infoName,"FontMatrix") == 0) { - /* 6 elments, return them as floats */ - for (i=0;i<6;i++) { - if (valueP->type == OBJ_INTEGER ) - ((float *)infoValue)[i] = valueP->data.integer; - else - ((float *)infoValue)[i] = valueP->data.real; - valueP++; - } - } - if (strcmp(infoName,"FontBBox") == 0) { - /* 4 elments for Bounding Box. all integers */ - for (i=0;i<4;i++) { - ((int *)infoValue)[i] = valueP->data.integer; - valueP++; - } - break; - case OBJ_INTEGER: - case OBJ_BOOLEAN: - *((int *)infoValue) = dictP[N].value.data.integer; - break; - case OBJ_REAL: - *((float *)infoValue) = dictP[N].value.data.real; - break; - case OBJ_NAME: - case OBJ_STRING: - *((char **)infoValue) = dictP[N].value.data.valueP; - break; - default: - *rcodeP = 1; - break; - } - } - } - else *rcodeP = 1; -} - -#if XFONT_CID -struct xobject * -CIDfontfcnC(struct XYspace *S, psobj *theStringP, - psobj *SubrsArrayP, struct blues_struct *BluesP, - int *lenP, int *mode) -{ - struct xobject *charpath; /* the path for this character */ - - charpath = (struct xobject *)CIDChar((char *)FontP,S,theStringP, - SubrsArrayP,NULL,BluesP,mode); - /* if Type1Char reported an error, then return */ - if ( *mode == FF_PARSE_ERROR) return(NULL); - /* fill with winding rule unless path was requested */ - if (*mode != FF_PATH) { - charpath = (struct xobject *)Interior((struct segment *)charpath, - WINDINGRULE+CONTINUITY); - } - return(charpath); -} -#endif diff --git a/nx-X11/lib/font/Type1/fontfcn.h b/nx-X11/lib/font/Type1/fontfcn.h deleted file mode 100644 index 1409eb9..0000000 --- a/nx-X11/lib/font/Type1/fontfcn.h +++ /dev/null @@ -1,250 +0,0 @@ -/* $Xorg: fontfcn.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/fontfcn.h,v 1.4 1999/08/22 08:58:50 dawes Exp $ */ - - -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -/* modular config.h defines VERSION as libXfont version */ -#ifdef VERSION -#undef VERSION -#endif - -#if XFONT_CID -/* Definition of a PostScript CIDFont resource */ -typedef struct cid_font { - char *vm_start; - int spacerangecnt; - int notdefrangecnt; - int cidrangecnt; - spacerange *spacerangeP; - cidrange *notdefrangeP; - cidrange *cidrangeP; - int binarydata; /* 1=binary data, 0=hex data */ - long bytecnt; - psobj CIDFontFileName; - psdict *CIDfontInfoP; -} cidfont; - -/* Definition of a PostScript CMap resource */ -typedef struct cmap_res { - unsigned short firstCol; - unsigned short lastCol; - unsigned short firstRow; - unsigned short lastRow; - psobj CMapFileName; - psdict *CMapInfoP; -} cmapres; -#endif - -/* Definition of a PostScript FONT */ -typedef struct ps_font { - char *vm_start; - psobj FontFileName; - psobj Subrs; - psdict *CharStringsP; - psdict *Private; - psdict *fontInfoP; -struct blues_struct *BluesP; -} psfont; -/***================================================================***/ -/* Routines in scan_font */ -/***================================================================***/ - -extern boolean Init_BuiltInEncoding ( void ); -#if XFONT_CID -extern int scan_cidfont ( cidfont *CIDFontP, cmapres *CMapP ); -extern int scan_cidtype1font ( psfont *FontP ); -#endif -extern int scan_font ( psfont *FontP ); -/***================================================================***/ -/* Return codes from scan_font */ -/***================================================================***/ -#define SCAN_OK 0 -#define SCAN_FILE_EOF -1 -#define SCAN_ERROR -2 -#define SCAN_OUT_OF_MEMORY -3 -#define SCAN_FILE_OPEN_ERROR -4 -#define SCAN_TRUE -5 -#define SCAN_FALSE -6 -#define SCAN_END -7 - -#if XFONT_CID -/***================================================================***/ -/* Name of CID FontInfo fields */ -/***================================================================***/ -#define CIDCOUNT 1 -#define CIDFONTNAME 2 -#define CIDFONTTYPE 3 -#define CIDVERSION 4 -#define CIDREGISTRY 5 -#define CIDORDERING 6 -#define CIDSUPPLEMENT 7 -#define CIDMAPOFFSET 8 -#define CIDFDARRAY 9 -#define CIDFDBYTES 10 -#define CIDFONTBBOX 11 -#define CIDFULLNAME 12 -#define CIDFAMILYNAME 13 -#define CIDWEIGHT 14 -#define CIDNOTICE 15 -#define CIDGDBYTES 16 -#define CIDUIDBASE 17 -#define CIDXUID 18 - -/***================================================================***/ -/* Name of CMapInfo fields */ -/***================================================================***/ -#define CMAPREGISTRY 1 -#define CMAPORDERING 2 -#define CMAPSUPPLEMENT 3 -#define CMAPNAME 4 -#define CMAPVERSION 5 -#define CMAPTYPE 6 -#define CMAPWMODE 7 -#define CMAPCIDCOUNT 8 -#endif - -/***================================================================***/ -/* Name of FontInfo fields */ -/***================================================================***/ - -#define FONTNAME 1 -#define PAINTTYPE 2 -#define FONTTYPENUM 3 -#define FONTMATRIX 4 -#define FONTBBOX 5 -#define UNIQUEID 6 -#define STROKEWIDTH 7 -#define VERSION 8 -#define NOTICE 9 -#define FULLNAME 10 -#define FAMILYNAME 11 -#define WEIGHT 12 -#define ITALICANGLE 13 -#define ISFIXEDPITCH 14 -#define UNDERLINEPOSITION 15 -#define UNDERLINETHICKNESS 16 -#define ENCODING 17 -/***================================================================***/ -/* Name of Private values */ -/***================================================================***/ -#define BLUEVALUES 1 -#define OTHERBLUES 2 -#define FAMILYBLUES 3 -#define FAMILYOTHERBLUES 4 -#define BLUESCALE 5 -#define BLUESHIFT 6 -#define BLUEFUZZ 7 -#define STDHW 8 -#define STDVW 9 -#define STEMSNAPH 10 -#define STEMSNAPV 11 -#define FORCEBOLD 12 -#define LANGUAGEGROUP 13 -#define LENIV 14 -#define RNDSTEMUP 15 -#define EXPANSIONFACTOR 16 - -#if XFONT_CID -/***================================================================***/ -/* Name of CID Type 1 Private values */ -/***================================================================***/ -#define CIDT1MINFEATURE 1 -#define CIDT1LENIV 2 -#define CIDT1LANGGROUP 3 -#define CIDT1BLUEVALUES 4 -#define CIDT1OTHERBLUES 5 -#define CIDT1BLUESCALE 6 -#define CIDT1BLUEFUZZ 7 -#define CIDT1BLUESHIFT 8 -#define CIDT1FAMBLUES 9 -#define CIDT1FAMOTHERBLUES 10 -#define CIDT1STDHW 11 -#define CIDT1STDVW 12 -#define CIDT1STEMSNAPH 13 -#define CIDT1STEMSNAPV 14 -#define CIDT1SUBMAPOFF 15 -#define CIDT1SDBYTES 16 -#define CIDT1SUBRCNT 17 -#define CIDT1FORCEBOLD 18 -#define CIDT1RNDSTEMUP 19 -#define CIDT1EXPFACTOR 20 - -#define CID_BITMAP_UNDEFINED 0 -extern int SearchDictName ( psdict *dictP, psobj *keyP ); -#if XFONT_CID -extern boolean initCIDType1Font ( void ); -#endif -extern boolean initFont ( int cnt ); -#if XFONT_CID -extern int readCIDFont ( char *cidfontname, char *cmapfile ); -extern int readCIDType1Font ( void ); -#endif -extern int readFont ( char *env ); -extern struct xobject *fontfcnB ( struct XYspace *S, unsigned char *code, - int *lenP, int *mode ); -#if XFONT_CID -extern Bool CIDfontfcnA ( char *cidfontname, char *cmapfile, int *mode ); -extern Bool CIDType1fontfcnA ( int *mode ); -#endif -extern Bool fontfcnA ( char *env, int *mode ); -#if XFONT_CID -extern void CIDQueryFontLib ( char *cidfontname, char *cmapfile, - char *infoName, pointer infoValue, int *rcodeP ); -#endif -extern void QueryFontLib ( char *env, char *infoName, pointer infoValue, - int *rcodeP ); -#if XFONT_CID -extern struct xobject *CIDfontfcnC ( struct XYspace *S, psobj *theStringP, - psobj *SubrsArrayP, - struct blues_struct *BluesP, int *lenP, - int *mode ); -#endif -#endif diff --git a/nx-X11/lib/font/Type1/fonts.h b/nx-X11/lib/font/Type1/fonts.h deleted file mode 100644 index 7215e0f..0000000 --- a/nx-X11/lib/font/Type1/fonts.h +++ /dev/null @@ -1,49 +0,0 @@ -/* $Xorg: fonts.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -/* STUB */ - -#define CopyFont(f) f -#define UniqueFont(f) f -#define KillFont(f) -#define KillText(t) -#define CopyText(t) t -#define I_DumpText(t) -#define CoerceText(t) t -#define TextDelta(t,pt) -#define XformText(p,s) -#define GimeSpace() FALSE - -#define LibInit() -#define InitFonts() -#define InitFiles() -#define TraceClose() - -#define FF_PARSE_ERROR -1 diff --git a/nx-X11/lib/font/Type1/hdigit.h b/nx-X11/lib/font/Type1/hdigit.h deleted file mode 100644 index fbaa9c1..0000000 --- a/nx-X11/lib/font/Type1/hdigit.h +++ /dev/null @@ -1,94 +0,0 @@ -/* $Xorg: hdigit.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* -------------------------------------- */ -/* --- MACHINE GENERATED, DO NOT EDIT --- */ -/* -------------------------------------- */ - -#ifndef HDIGIT -#define HDIGIT 1 - -/* - * Hex Digit Value Table -- - * - * The entries in the Digit Value Table map character codes in the set - * {0-9,a-f,A-F} to their numeric values for readhexstring - * (00 10...F0 for the high hex digit and 00 01...0F for the low). - * The white-space and hex string termination characters are. - * mapped to codes > 0xf0 to enable usage by several modules. - * 2 tables are build HighHex and LowHex. - * - */ - -/* Indicators for special characters in these tables */ -#define HERROR (0xfe) -#define HWHITE_SPACE (0xfd) -#define HRIGHT_ANGLE (0xfc) -#define LAST_HDIGIT (0xf0) - -#define HighHexP (HighHex+1) -unsigned char HighHex[257] = { 0xFF, - 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xFE,0xFE,0xFE,0xFE,0xFC,0xFE, - 0xFE,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE -}; -#define LowHexP (LowHex+1) -unsigned char LowHex[257] = { 0xFF, - 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xFE,0xFE,0xFE,0xFE,0xFC,0xFE, - 0xFE,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE, - 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE -}; - -#endif diff --git a/nx-X11/lib/font/Type1/hints.c b/nx-X11/lib/font/Type1/hints.c deleted file mode 100644 index 14deac2..0000000 --- a/nx-X11/lib/font/Type1/hints.c +++ /dev/null @@ -1,890 +0,0 @@ -/* $Xorg: hints.c,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/hints.c,v 1.7tsi Exp $ */ - - /* HINTS CWEB V0006 ******** */ -/* -:h1.HINTS Module - Processing Rasterization Hints - -&author. Sten F. Andler; continuity by Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) and Duaine -W. Pryor, Jr. - - -:h3.Include Files - -The included files are: -*/ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef FONTMODULE -# include "os.h" -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" -#include "hints.h" - -/* -:h3.Functions Provided to the TYPE1IMAGER User - -None. -*/ - -/* -:h3.Functions Provided to Other Modules - -This module provides the following entry point to other modules: -*/ - - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.Macros Provided to Other Modules - -None. -*/ - -/* -:h2.InitHints() - Initialize hint data structure -*/ - -#define MAXLABEL 20 -static struct { - int inuse; - int computed; - struct fractpoint hint; -} oldHint[MAXLABEL]; - -#define ODD(x) (((int)(x)) & 01) -#define FPFLOOR(fp) TOFRACTPEL((fp) >> FRACTBITS) -#define FPROUND(fp) FPFLOOR((fp) + FPHALF) - -void -InitHints(void) -{ - int i; - - for (i = 0; i < MAXLABEL; i++) - { - oldHint[i].inuse = FALSE; - oldHint[i].computed = FALSE; - } -} - -/* -:h3.CloseHints(hintP) - Reverse hints that are still open -*/ - -void -CloseHints(struct fractpoint *hintP) -{ - int i; - - for (i = 0; i < MAXLABEL; i++) - { - if (oldHint[i].inuse) - { - hintP->x -= oldHint[i].hint.x; - hintP->y -= oldHint[i].hint.y; - - oldHint[i].inuse = FALSE; - } - } -} - -/* -:h3.ComputeHint(hP, currX, currY, hintP) - Compute the value of a hint -*/ - -static void -ComputeHint(struct hintsegment *hP, - fractpel currX, fractpel currY, - struct fractpoint *hintP) -{ - fractpel currRef, currWidth; - int idealWidth; - fractpel hintValue; - char orientation; - -/* -By construction, width is never zero. Therefore we can use the -width value to determine if the hint has been rotated by a -multiple of 90 degrees. -*/ - - if (hP->width.y == 0) - { - orientation = 'v'; /* vertical */ - } - else if (hP->width.x == 0) - { - orientation = 'h'; /* horizontal */ - } - else - { - hintP->x = hintP->y = 0; - return; - } - - /* Compute currRef and currWidth with a unit of 1 pel */ - if (orientation == 'v') /* vertical */ - { - currRef = hP->ref.x + currX; - currWidth = ABS(hP->width.x); - } - else if (orientation == 'h') /* horizontal */ - { - currRef = hP->ref.y + currY; - currWidth = ABS(hP->width.y); - } - else /* error */ - { - Abort("ComputeHint: invalid orientation"); - } - - if ((hP->hinttype == 'b') /* Bar or stem */ - || (hP->hinttype == 's')) /* Serif */ - { - idealWidth = NEARESTPEL(currWidth); - if (idealWidth == 0) idealWidth = 1; - if (ODD(idealWidth)) /* Is ideal width odd? */ - { - /* center "ref" over pel */ - hintValue = FPFLOOR(currRef) + FPHALF - currRef; - } - else - { - /* align "ref" on pel boundary */ - hintValue = FPROUND(currRef) - currRef; - } - } - else if (hP->hinttype == 'c') /* Curve extrema */ - { - /* align "ref" on pel boundary */ - hintValue = FPROUND(currRef) - currRef; - } - else /* error */ - { - Abort("ComputeHint: invalid hinttype"); - } - - if (orientation == 'v') /* vertical */ - { - hintP->x = hintValue; - hintP->y = 0; - } - else if (orientation == 'h') /* horizontal */ - { - hintP->x = 0; - hintP->y = hintValue; - } - else /* error */ - { - Abort("ComputeHint: invalid orientation"); - } -} - -/* -:h3.ProcessHint(hP, currX, currY, hintP) - Process a rasterization hint -*/ - -void -ProcessHint(struct hintsegment *hP, - fractpel currX, fractpel currY, - struct fractpoint *hintP) -{ - struct fractpoint thisHint; - - if ((hP->adjusttype == 'm') /* Move */ - || (hP->adjusttype == 'a')) /* Adjust */ - { - /* Look up hint in oldHint table */ - if ((hP->label >= 0) && (hP->label < MAXLABEL)) - { - if (oldHint[hP->label].computed) - /* Use old hint value if already computed */ - { - thisHint.x = oldHint[hP->label].hint.x; - thisHint.y = oldHint[hP->label].hint.y; - oldHint[hP->label].inuse = TRUE; - } - else - /* Compute new value for hint and store it for future use */ - { - ComputeHint(hP, currX, currY, &thisHint); - - oldHint[hP->label].hint.x = thisHint.x; - oldHint[hP->label].hint.y = thisHint.y; - oldHint[hP->label].inuse = TRUE; - oldHint[hP->label].computed = TRUE; - } - } - else /* error */ - { - Abort("ProcessHint: invalid label"); - } - } - else if (hP->adjusttype == 'r') /* Reverse */ - { - /* Use the inverse of the existing hint value to reverse hint */ - if ((hP->label >= 0) && (hP->label < MAXLABEL)) - { - if (oldHint[hP->label].inuse) - { - thisHint.x = -oldHint[hP->label].hint.x; - thisHint.y = -oldHint[hP->label].hint.y; - oldHint[hP->label].inuse = FALSE; - } - else /* error */ - { - Abort("ProcessHint: label is not in use"); - } - } - else /* error */ - { - Abort("ProcessHint: invalid label"); - } - - } - else /* error */ - { - Abort("ProcessHint: invalid adjusttype"); - } - - hintP->x += thisHint.x; - hintP->y += thisHint.y; -} - -/* -:h2 id=subpath.Navigation Through Edge Lists - -For continuity checking purposes, we need to navigate through edge -lists by the "subpath" chains and answer questions about edges. The -subpath chain links together edges that were part of the same subpath -(no intervening move segments) when the interior of the path was -calculated. Here we use the term "edge" to mean every edge list -that was created in between changes of direction. - -The subpath chains are singly-linked circular chains. For the convenience -of building them, they direction of the list (from edge to edge) is the -reverse of the order in which they were built. Within any single edge, -the subpath chain goes from top-to-bottom. (There might be a violation -of this because of the way the user started the first chain; see -:hdref refid=fixsubp..). - -:h3.ISTOP() and ISBOTTOM() - Flag Bits for Edge Lists at the Top and -Bottom of Their SubPaths -*/ - -#define ISTOP(flag) ((flag)&0x20) -#define ISBOTTOM(flag) ((flag)&0x10) -/* -:h3.ISLEFT() - Flag Bit for Left Edges -*/ - -#define ISLEFT(flag) ((flag)&0x08) - -/* -:h3.XofY() - Macro to Find X Value at Given Y - -This macro can only be used if it is known that the Y is within the -given edgelist's ymin and ymax. -*/ - -#define XofY(edge, y) edge->xvalues[y - edge->ymin] - -/* -:h3.findXofY() - Like XofY(), Except not Restricted - -If the Y is out of bounds of the given edgelist, this macro will -call SearchXofY to search the edge's subpath chain for the correct -Y range. If the Y value is off the edge, MINPEL is returned. -*/ -#define findXofY(edge, y) ((y < edge->ymin || y >= edge->ymax) ? SearchXofY(edge, y) : XofY(edge, y)) - -/* -:h4.SearchXofY() - Routine Called by FindXofY() for Difficult Cases - -The concept of this routine is to follow the subpath chain to find the -edge just below (i.e., next in chain) or just above (i.e., immediately -before in chain. It is assumed that the Y value is no more than one -off of the edge's range; XofY() could be replace by FindXofY() to -call ourselves recursively if this were not true. -*/ - -static pel -SearchXofY(register struct edgelist *edge, /* represents edge */ - register pel y) /* 'y' value to find edge for */ -{ - register struct edgelist *e; /* loop variable */ - - if (y < edge->ymin) { - if (ISTOP(edge->flag)) - return(MINPEL); - for (e = edge->subpath; e->subpath != edge; e = e->subpath) { ; } - if (e->ymax == edge->ymin) - return(XofY(e, y)); - } - else if (y >= edge->ymax) { - if (ISBOTTOM(edge->flag)) - return(MINPEL); - e = edge->subpath; - if (e->ymin == edge->ymax) - return(XofY(e, y)); - } - else - return(XofY(edge, y)); - - Abort("bad subpath chain"); - /*NOTREACHED*/ -} -/* -:h3.ISBREAK() Macro - Tests if an Edge List is at a "Break" - -The subpath chains are organized top to bottom. When the bottom of -a given edge is reached, the subpath chain points to the top of the -next edge. We call this a "break" in the chain. The following macro -is the simple test for the break condition: -*/ - -#define ISBREAK(top,bot) (top->ymax != bot->ymin) - - -/* -:h3.ImpliedHorizontalLine() - Tests for Horizontal Connectivity - -This function returns true if two edges are connected horizontally. -They are connected horizontally if they are consecutive in the subpath, -and either we are at the bottom and the first edge is going down or we -are at the top and the first edge is going up. -*/ - -#define BLACKABOVE -1 -#define BLACKBELOW +1 -#define NONE 0 - -static int -ImpliedHorizontalLine(struct edgelist *e1, /* two edges to check */ - struct edgelist *e2, - int y) /* y where they might be connected */ -{ - register struct edgelist *e3,*e4; - - if (ISDOWN(e1->flag) == ISDOWN(e2->flag)) - return(NONE); /* can't be consecutive unless different directions */ -/* -Now we check for consecutiveness: Can we get from 'e1' to 'e2' with -only one intervening break? Can we get from 'e2' to 'e1' with only one -intervening break? 'e3' will be as far as we can get after 'e1'; 'e4' -will be has far as we can get after 'e2': -*/ - for (e3 = e1; !ISBREAK(e3, e3->subpath); e3 = e3->subpath) { ; } - for (e3 = e3->subpath; e3 != e2; e3 = e3->subpath) - if (ISBREAK(e3, e3->subpath)) - break; - - for (e4 = e2; !ISBREAK(e4, e4->subpath); e4 = e4->subpath) { ; } - for (e4 = e4->subpath; e4 != e1; e4 = e4->subpath) - if (ISBREAK(e4, e4->subpath)) - break; -/* -If the edges are mutually consecutive, we must have horizontal lines -both top and bottom: -*/ - if (e3 == e2 && e4 == e1) - return(TRUE); -/* -If the edges are not consecutive either way, no horizontal lines are -possible: -*/ - if (e3 != e2 && e4 != e1) - return(NONE); -/* -Now let's swap 'e1' and 'e2' if necessary to enforce the rule that 'e2' -follows 'e1'. Remember that subpath chains go in the opposite direction -from the way the subpaths were built; this led to the simplest way -do build them. -*/ - if (e4 != e1) { - e2 = e1; - e1 = e3; /* remember e3 == e2, this just swaps 'e1' and 'e2' */ - } -/* -Now we have everything to return the answer: -*/ - if (ISTOP(e1->flag) && y == e1->ymin) - return(ISDOWN(e2->flag)); - else if (ISBOTTOM(e1->flag) && y == e1->ymax) - return(!ISDOWN(e2->flag)); - else - Abort("ImpliedHorizontalLine: why ask?"); - /*NOTREACHED*/ -} - -/* -:h3 id=fixsubp.FixSubPaths() - Must be Called to Organize Subpath Chains - -The region-building code in Interior(), in particular splitedge(), -maintains the rule that sub-paths are linked top-to-bottom except -at breaks. However, it is possible that there may be a "false break" -because the user started the subpath in the middle of an edge (and -went in the "wrong" direction from there, up instead of down). This -routine finds and fixes false breaks. - -Also, this routine sets the ISTOP and ISBOTTOM flags in the edge lists. -*/ - -static void -FixSubPaths(struct region *R) /* anchor of region */ -{ - register struct edgelist *e; /* fast loop variable */ - register struct edgelist *edge; /* current edge in region */ - register struct edgelist *next; /* next in subpath after 'edge' */ - register struct edgelist *break1; /* first break after 'next' */ - register struct edgelist *break2 = NULL; /* last break before 'edge' */ - register struct edgelist *prev; /* previous edge for fixing links */ - int left = TRUE; - - for (edge = R->anchor; edge != NULL; edge = edge->link) { - - if (left) - edge->flag |= ISLEFT(ON); - left = !left; - - next = edge->subpath; - - if (!ISBREAK(edge, next)) - continue; - if (edge->ymax < next->ymin) - Abort("disjoint subpath?"); -/* -'edge' now contains an edgelist at the bottom of an edge, and 'next' -contains the next subsequent edgelist in the subpath, which must be at -the top. We refer to this a "break" in the subpath. -*/ - next->flag |= ISTOP(ON); - edge->flag |= ISBOTTOM(ON); - - if (ISDOWN(edge->flag) != ISDOWN(next->flag)) - continue; -/* -We are now in the unusual case; both edges are going in the same -direction so this must be a "false break" due to the way that the user -created the path. We'll have to fix it. -*/ - for (break1 = next; !ISBREAK(break1, break1->subpath); break1 = break1->subpath) { ; } - - for (e = break1->subpath; e != edge; e = e->subpath) - if (ISBREAK(e, e->subpath)) - break2 = e; -/* -Now we've set up 'break1' and 'break2'. I've found the following -diagram invaluable. 'break1' is the first break after 'next'. 'break2' -is the LAST break before 'edge'. -&drawing. - next - +------+ +---->+------+ - +--->| >-----+ | | >-----+ - | | | | | | | | - | +-------------+ | +-------------+ - | | |break1| | | | | - | +->| >-------+ +->| >-----+ - | | | | | | - | | | +-------------+ - | +------+ | | | - | +----------------+ | | | - | | +------+ | +->| >-----+ - | +->| >-----+ | | | | - | | | | | +-------------+ - | +-------------+ | | | | - | | |edge | | | |break2| - | +->| >-----+ | +->| >-----+ - | | | | | | | | - | | | | | | | | - | | | | | | | | - | +------+ | | +------+ | - | | | | - +---------------+ +---------------+ - -&edrawing. -We want to fix this situation by having 'edge' point to where 'break1' -now points, and having 'break1' point to where 'break2' now points. -Finally, 'break2' should point to 'next'. Also, we observe that -'break1' can't be a bottom, and is also not a top unless it is the same -as 'next': -*/ - edge->subpath = break1->subpath; - - break1->subpath = break2->subpath; - if (ISBREAK(break1, break1->subpath)) - Abort("unable to fix subpath break?"); - - break2->subpath = next; - - break1->flag &= ~ISBOTTOM(ON); - if (break1 != next) - break1->flag &= ~ISTOP(ON); - } -/* -This region might contain "ambiguous" edges; edges exactly equal to -edge->link. Due to the random dynamics of where they get sorted into -the list, they can yield false crossings, where the edges appear -to cross. This confuses our continuity logic no end. Since we can -swap them without changing the region, we do. -*/ - for (edge = R->anchor, prev = NULL; VALIDEDGE(edge); prev = edge, edge = prev->link) { - - if (! ISAMBIGUOUS(edge->flag)) - continue; - - next = edge->subpath; - - while (ISAMBIGUOUS(next->flag) && next != edge) - next = next->subpath; -/* -We've finally found a non-ambiguous edge; we make sure it is left/right -compatible with 'edge': -*/ - if ( (ISLEFT(edge->flag) == ISLEFT(next->flag) && ISDOWN(edge->flag) == ISDOWN(next->flag) ) - || (ISLEFT(edge->flag) != ISLEFT(next->flag) && ISDOWN(edge->flag) != ISDOWN(next->flag) ) ) - continue; - -/* -Incompatible, we will swap 'edge' and the following edge in the list. -You may think that there must be a next edge in this swath. So did I. -No! If there is a totally ambiguous inner loop, for example, we could -get all the way to the outside without resolving ambiguity. -*/ - next = edge->link; /* note new meaning of 'next' */ - if (next == NULL || edge->ymin != next->ymin) - continue; - if (prev == NULL) - R->anchor = next; - else - prev->link = next; - edge->link = next->link; - next->link = edge; - edge->flag ^= ISLEFT(ON); - edge->flag &= ~ISAMBIGUOUS(ON); - next->flag ^= ISLEFT(ON); - next->flag &= ~ISAMBIGUOUS(ON); - edge = next; - } -} -/* -:h3.DumpSubPaths() - -A debug tool. -*/ - -static struct edgelist *before(struct edgelist *e); /* subroutine of DumpSubPaths */ - -static void -DumpSubPaths(struct edgelist *anchor) -{ - - register struct edgelist *edge,*e,*e2; - pel y; - - for (edge = anchor; VALIDEDGE(edge); edge = edge->link) { - if (ISPERMANENT(edge->flag)) - continue; - for (e2 = edge; !ISPERMANENT(e2->flag);) { - if (ISDOWN(e2->flag)) { - for (e = e2;; e = e->subpath) { - for (y=e->ymin+1; y < e->ymax; y++) - e->flag |= ISPERMANENT(ON); - if (ISBREAK(e, e->subpath)) - break; - } - } - else { - for (e = e2; !ISBREAK(e, e->subpath); e = e->subpath) { ; } - for (;; e=before(e)) { - for (y=e->ymax-2; y >= e->ymin; y--) - e->flag |= ISPERMANENT(ON); - if (e == e2) - break; - } - } - do { - e2 = before(e2); - } while (!ISBREAK(before(e2), e2)); - } - } -} - -static struct edgelist * -before(struct edgelist *e) -{ - struct edgelist *r; - for (r = e->subpath; r->subpath != e; r = r->subpath) { ; } - return(r); -} - -/* -:h2.Fixing Region Continuity Problems - -Small regions may become disconnected when their connecting segments are -less than a pel wide. This may be correct in some applications, but in -many (especially small font characters), it is more pleasing to keep -connectivity. ApplyContinuity() (invoked by +CONTINUITY on the -Interior() fill rule) fixes connection breaks. The resulting region -is geometrically less accurate, but may be more pleasing to the eye. -*/ -/* -Here are some macros which we will need: -*/ - -#define IsValidPel(j) (j!=MINPEL) - -/* -:h3.writeXofY() - Stuffs an X Value Into an "edgelist" - -writeXofY writes an x value into an edge at position 'y'. It must -update the edge's xmin and xmax. If there is a possibility that this -new x might exceed the region's bounds, updating those are the -responsibility of the caller. -*/ - -static void -writeXofY(struct edgelist *e,/* relevant edgelist */ - int y, /* y value */ - int x) /* new x value */ -{ - if (e->xmin > x) e->xmin = x; - if (e->xmax < x) e->xmax = x; - e->xvalues[y - e->ymin] = x; -} - -/*-------------------------------------------------------------------------*/ -/* the following three macros tell us whether we are at a birth point, a */ -/* death point, or simply in the middle of the character */ -/*-------------------------------------------------------------------------*/ -#define WeAreAtTop(e,i) (ISTOP(e->flag) && e->ymin == i) -#define WeAreAtBottom(e,i) (ISBOTTOM(e->flag) && e->ymax-1 == i) -#define WeAreInMiddle(e,i) \ - ((!ISTOP(e->flag) && !ISBOTTOM(e->flag))||(i < e->ymax-1 && i > e->ymin)) -/* -The following macro tests if two "edgelist" structures are in the same -swath: -*/ -#define SAMESWATH(e1,e2) (e1->ymin == e2->ymin) - -/* -:h3.CollapseWhiteRun() - Subroutine of ApplyContinuity() - -When we have a white run with an implied horizontal line above or -below it, we better have black on the other side of this line. This -function both tests to see if black is there, and adjusts the end -points (collapses) the white run as necessary if it is not. The -goal is to collapse the white run as little as possible. -*/ - -static void -CollapseWhiteRun(struct edgelist *anchor, /* anchor of edge list */ - pel yblack, /* y of (hopefully) black run above or below */ - struct edgelist *left, /* edgelist at left of WHITE run */ - struct edgelist *right, /* edgelist at right of WHITE run */ - pel ywhite) /* y location of white run */ -{ - struct edgelist *edge; - struct edgelist *swathstart = anchor; - register pel x; - - if (XofY(left, ywhite) >= XofY(right, ywhite)) - return; -/* -Find the swath with 'yblack'. If we don't find it, completely collapse -the white run and return: -*/ - while (VALIDEDGE(swathstart)) { - if (yblack < swathstart->ymin) { - writeXofY(left, ywhite, XofY(right, ywhite)); - return; - } - if (yblack < swathstart->ymax) break; - swathstart = swathstart->link->link; - } - if(!VALIDEDGE(swathstart)) { - writeXofY(left, ywhite, XofY(right, ywhite)); - return; - } -/* -Now we are in the swath that contains 'y', the reference line above -or below that we are trying to maintain continuity with. If black -in this line begins in the middle of our white run, we must collapse -the white run from the left to that point. If black ends in the -middle of our white run, we must collapse the white run from the right -to that point. -*/ - for (edge = swathstart; VALIDEDGE(edge); edge = edge->link) { - - if (!SAMESWATH(swathstart,edge)) - break; - if( XofY(edge, yblack) > XofY(left, ywhite)) { - if (ISLEFT(edge->flag)) { - x = XofY(edge, yblack); - if (XofY(right, ywhite) < x) - x = XofY(right, ywhite); - writeXofY(left, ywhite, x); - } - else { - x = XofY(edge, yblack); - while (edge->link != NULL && SAMESWATH(edge, edge->link) - && x >= XofY(edge->link, yblack) ) { - edge = edge->link->link; - x = XofY(edge, yblack); - } - if (x < XofY(right, ywhite)) - writeXofY(right, ywhite, x); - return; - } - } - } - writeXofY(left, ywhite, XofY(right, ywhite)); -} - -/* -:h3.ApplyContinuity() - Fix False Breaks in a Region - -This is the externally visible routine called from the REGIONS module -when the +CONTINUITY flag is on the Interior() fill rule. -*/ - -void -ApplyContinuity(struct region *R) -{ - struct edgelist *left; - struct edgelist *right; - struct edgelist *edge,*e2; - pel rightXabove,rightXbelow,leftXabove,leftXbelow; - pel leftX,rightX; - int i; - long newcenter,abovecenter,belowcenter; - - FixSubPaths(R); - if (RegionDebug >= 3) - DumpSubPaths(R->anchor); - left = R->anchor; -/* loop through and do all of the easy checking. ( no tops or bottoms) */ - while(VALIDEDGE(left)) - { - right = left->link; - for(i=left->ymin;i<left->ymax;++i) - { - leftX = findXofY(left,i); - rightX = findXofY(right,i); - leftXbelow = findXofY(left,i+1); - rightXbelow = findXofY(right,i+1); - if(rightX <= leftX) - { -/* then, we have a break in a near vertical line */ - leftXabove = findXofY(left,i-1); - rightXabove = findXofY(right,i-1); - if( IsValidPel(leftXabove) && IsValidPel(rightXabove) ) - { - abovecenter = leftXabove + rightXabove; - } - else - { - abovecenter = leftX + rightX; - } - if( IsValidPel(leftXbelow) && IsValidPel(rightXbelow) ) - { - belowcenter = leftXbelow + rightXbelow; - } - else - { - belowcenter = leftX + rightX; - } - newcenter = abovecenter + belowcenter; - if( newcenter > 4*leftX ) - { - rightX = rightX + 1; - } - else if( newcenter < 4*leftX) - { - leftX = leftX - 1; - } - else - { - rightX = rightX + 1; - } - writeXofY(right,i,rightX); - writeXofY(left,i,leftX); - if(rightX > R->xmax) {R->xmax = rightX;} - if(leftX < R->xmin) {R->xmin = leftX;} - } - if( !WeAreAtBottom(left,i) && (leftXbelow>=rightX)) - { -/* then we have a break in a near horizontal line in the middle */ - writeXofY(right,i,leftXbelow); - } - if( !WeAreAtBottom(right,i) && (leftX >=rightXbelow)) - { -/* then we have a break in a near horizontal line in the middle */ - writeXofY(left,i,rightXbelow); - } - } - left = right->link; - } -/* -There may be "implied horizontal lines" between edges that have -implications for continuity. This loop looks for white runs that -have implied horizontal lines on the top or bottom, and calls -CollapseWhiteRuns to check and fix any continuity problems from -them. -*/ - for (edge = R->anchor; VALIDEDGE(edge); edge = edge->link) { - if ((!ISTOP(edge->flag) && !ISBOTTOM(edge->flag)) || ISLEFT(edge->flag)) - continue; /* at some future date we may want left edge logic here too */ - for (e2 = edge->link; VALIDEDGE(e2) && SAMESWATH(edge,e2); e2 = e2->link) { - if (ISTOP(e2->flag) && ISTOP(edge->flag) - && NONE != ImpliedHorizontalLine(edge,e2,edge->ymin)) { - if (ISLEFT(e2->flag)) - CollapseWhiteRun(R->anchor, edge->ymin-1, - edge, e2, edge->ymin); - } - if (ISBOTTOM(e2->flag) && ISBOTTOM(edge->flag) - && NONE != ImpliedHorizontalLine(edge,e2, edge->ymax)) { - if (ISLEFT(e2->flag)) - CollapseWhiteRun(R->anchor, edge->ymax, - edge, e2, edge->ymax-1); - } - } - } -} - - - - diff --git a/nx-X11/lib/font/Type1/hints.h b/nx-X11/lib/font/Type1/hints.h deleted file mode 100644 index 8e2ae2a..0000000 --- a/nx-X11/lib/font/Type1/hints.h +++ /dev/null @@ -1,48 +0,0 @@ -/* $Xorg: hints.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/hints.h,v 1.3 1999/08/22 08:58:51 dawes Exp $ */ - -/*SHARED*/ - -#define InitHints t1_InitHints -extern void t1_InitHints ( void ); /* Initialize hint data structure */ - -#define CloseHints(hintP) t1_CloseHints(hintP) -/* Reverse hints that are still open */ -extern void t1_CloseHints ( struct fractpoint *hintP ); - -#define ProcessHint(hP, currX, currY, hintP) t1_ProcessHint(hP, currX, currY, hintP) -/* Process a rasterization hint */ -extern void t1_ProcessHint ( struct hintsegment *hP, fractpel currX, fractpel currY, struct fractpoint *hintP ); - -#define ApplyContinuity(R) t1_ApplyContinuity(R) -/* fix false connection breaks in a region */ -extern void t1_ApplyContinuity ( struct region *R ); - -/*END SHARED*/ diff --git a/nx-X11/lib/font/Type1/lines.c b/nx-X11/lib/font/Type1/lines.c deleted file mode 100644 index 835afc6..0000000 --- a/nx-X11/lib/font/Type1/lines.c +++ /dev/null @@ -1,189 +0,0 @@ -/* $Xorg: lines.c,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/lines.c,v 1.4tsi Exp $ */ - - /* LINES CWEB V0003 ******** */ -/* -:h1.LINES Module - Rasterizing Lines - -&author. Duaine W. Pryor, Jr. and Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) - - -:h3.Include Files - -The included files are: -*/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" -#include "lines.h" - -/* -:h3.Functions Provided to the TYPE1IMAGER User - -None. -*/ - -/* -:h3.Functions Provided to Other Modules - -This module provides the following entry point to other modules: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.Macros Provided to Other Modules - -None. -*/ - -/* -:h2.StepLine() - Produces Run Ends for a Line After Checks - -The main work is done by Bresenham(); here we just perform checks and -get the line so that its Y direction is always increasing: -*/ - -void StepLine(R, x1, y1, x2, y2) - register struct region *R; /* region being built */ - register fractpel x1,y1; /* starting point */ - register fractpel x2,y2; /* ending point */ -{ - register fractpel dy; - - dy = y2 - y1; - -/* -We execute the "GOING_TO" macro to call back the REGIONS module, if -necessary (like if the Y direction of the edge has changed): -*/ - GOING_TO(R, x1, y1, x2, y2, dy); - - if (dy == 0) - return; - - if (dy < 0) - Bresenham(R->edge, x2, y2, x1, y1); - else - Bresenham(R->edge, x1, y1, x2, y2); - return; -} -/* -:h3.Bresenham() - Actually Produces Run Ends - -This routine runs a Bresenham line-stepping -algorithm. See, for example, Newman and Sproul, :hp1/Principles -of Interactive Computer Graphics/, pp. 25-27. -When we enter this, we -are guaranteed that dy is positive. -We'd like to work in 8 bit precision, so we'll define some macros and -constants to let us do that: -*/ - -#define PREC 8 /* we'll keep fraction pels in 8 bit precision */ -/* -RoundFP() rounds down by 'b' bits: -*/ -#define RoundFP(xy,b) (((xy)+(1<<((b)-1)))>>(b)) - -/* -TruncFP() truncates down by 'b' bits: -*/ -#define TruncFP(xy,b) ((xy)>>(b)) - - -void Bresenham(edgeP,x1,y1,x2,y2) - register pel *edgeP; /* pointer to top of list (y == 0) */ - register fractpel x1,y1; /* starting point on line */ - register fractpel x2,y2; /* ending point on the line (down) */ -{ - register long dx,dy; /* change in x and y, in my own precision */ - register long x,y; /* integer pel starting point */ - register int count; /* integer pel delta y */ - register long d; /* the Bresenham algorithm error term */ - - x1 = TruncFP(x1, FRACTBITS-PREC); - y1 = TruncFP(y1, FRACTBITS-PREC); - x2 = TruncFP(x2, FRACTBITS-PREC); - y2 = TruncFP(y2, FRACTBITS-PREC); - - dx = x2 - x1; - dy = y2 - y1; -/* -Find the starting x and y integer pel coordinates: -*/ - - x = RoundFP(x1,PREC); - y = RoundFP(y1,PREC); - edgeP += y; - count = RoundFP(y2,PREC) - y; -/*------------------------------------------------------------------*/ -/* Force dx to be positive so that dfy will be negative */ -/* this means that vertical moves will decrease d */ -/*------------------------------------------------------------------*/ - if (dx<0) - { - dx = -dx; -#define P PREC - d=(dy*(x1-(x<<P)+(1<<(P-1)))-dx*((y<<P)-y1+(1<<(P-1))))>>P; -#undef P - while(--count >= 0 ) - { - while(d<0) - { - --x; - d += dy; - } - *(edgeP++) = x; - d -= dx; - } - } - else /* positive dx */ - { -#define P PREC - d = (dy*((x<<P)-x1+(1<<(P-1)))-dx*((y<<P)-y1+(1<<(P-1))))>>P; -#undef P - while(--count >= 0 ) - { - while(d<0) - { - ++x; - d += dy; - } - *(edgeP++) = x; - d -= dx; - } - } -} diff --git a/nx-X11/lib/font/Type1/lines.h b/nx-X11/lib/font/Type1/lines.h deleted file mode 100644 index f8ffd3a..0000000 --- a/nx-X11/lib/font/Type1/lines.h +++ /dev/null @@ -1,39 +0,0 @@ -/* $Xorg: lines.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/lines.h,v 1.3 1999/08/22 08:58:52 dawes Exp $ */ - -/*SHARED*/ - -#define StepLine(R,x1,y1,x2,y2) t1_StepLine(R,x1,y1,x2,y2) -#define Bresenham(e,x1,y1,x2,y2) t1_Bresenham(e,x1,y1,x2,y2) - -extern void t1_StepLine ( struct region *R, fractpel x1, fractpel y1, fractpel x2, fractpel y2 ); -extern void t1_Bresenham ( pel *edgeP, fractpel x1, fractpel y1, fractpel x2, fractpel y2 ); - -/*END SHARED*/ diff --git a/nx-X11/lib/font/Type1/minimain.c b/nx-X11/lib/font/Type1/minimain.c deleted file mode 100644 index 4aa826d..0000000 --- a/nx-X11/lib/font/Type1/minimain.c +++ /dev/null @@ -1,48 +0,0 @@ -/* $Xorg: minimain.c,v 1.4 2001/02/09 02:04:01 xorgcvs Exp $ */ - -/* - -Copyright 1993, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - -#include "ximager5.h" - -main() -{ - XYspace S; - path p; - - InitImager(); - S = Scale(IDENTITY, 300.0, -300.0); - p = Join(Line(Loc(S, 0.0, 1.0)), Line(Loc(S, 1.0, 0.0))); - Interior(ClosePath(p), EVENODDRULE); -} - -void Trace() -{ -} - -void *DEFAULTDEVICE; diff --git a/nx-X11/lib/font/Type1/module/Imakefile b/nx-X11/lib/font/Type1/module/Imakefile deleted file mode 100644 index db8ab54..0000000 --- a/nx-X11/lib/font/Type1/module/Imakefile +++ /dev/null @@ -1,99 +0,0 @@ -XCOMM $XFree86: xc/lib/font/Type1/module/Imakefile,v 1.6 1999/08/14 10:49:18 dawes Exp $ - -#define IHaveModules -#include <Server.tmpl> - -INCLUDES = -I$(FONTINCSRC) -I../ -I../../include -I$(XINCLUDESRC) \ - -I$(SERVERSRC)/include - -#if BuildCID -CIDSRCS = cidchar.c afm.c -CIDOBJS = cidchar.o afm.o -#if HasUsableFileMmap -MMAPDEFINES = -DUSE_MMAP -#endif -CIDDEFINES = -DBUILDCID -DHAVE_CFM $(MMAPDEFINES) -#endif - -DEFINES = -DFONTMODULE $(CIDDEFINES) - -SRCS = \ - arith.c \ - curves.c \ - fontfcn.c \ - hints.c \ - lines.c \ - objects.c \ - paths.c \ - regions.c \ - scanfont.c \ - spaces.c \ - t1funcs.c \ - t1info.c \ - t1io.c \ - t1malloc.c \ - t1snap.c \ - t1stub.c \ - token.c \ - type1.c \ - util.c \ - t1unicode.c \ - $(CIDSRCS) \ - type1mod.c - -OBJS = \ - arith.o \ - curves.o \ - fontfcn.o \ - hints.o \ - lines.o \ - objects.o \ - paths.o \ - regions.o \ - scanfont.o \ - spaces.o \ - t1funcs.o \ - t1info.o \ - t1io.o \ - t1malloc.o \ - t1snap.o \ - t1stub.o \ - token.o \ - type1.o \ - util.o \ - t1unicode.o \ - $(CIDOBJS) \ - type1mod.o - -LinkSourceFile(arith.c,..) -LinkSourceFile(curves.c,..) -LinkSourceFile(fontfcn.c,..) -LinkSourceFile(hints.c,..) -LinkSourceFile(lines.c,..) -LinkSourceFile(objects.c,..) -LinkSourceFile(paths.c,..) -LinkSourceFile(regions.c,..) -LinkSourceFile(scanfont.c,..) -LinkSourceFile(spaces.c,..) -LinkSourceFile(t1funcs.c,..) -LinkSourceFile(t1info.c,..) -LinkSourceFile(t1io.c,..) -LinkSourceFile(t1malloc.c,..) -LinkSourceFile(t1snap.c,..) -LinkSourceFile(t1stub.c,..) -LinkSourceFile(t1unicode.c,..) -LinkSourceFile(token.c,..) -LinkSourceFile(type1.c,..) -LinkSourceFile(util.c,..) -#if BuildCID -LinkSourceFile(afm.c,..) -LinkSourceFile(cidchar.c,..) -#endif - -ModuleObjectRule() -LibraryModuleTarget(type1,$(OBJS)) -InstallLibraryModule(type1,$(MODULEDIR),fonts) - -DependTarget() - -InstallDriverSDKLibraryModule(type1,$(DRIVERSDKMODULEDIR),fonts) diff --git a/nx-X11/lib/font/Type1/module/type1mod.c b/nx-X11/lib/font/Type1/module/type1mod.c deleted file mode 100644 index e652591..0000000 --- a/nx-X11/lib/font/Type1/module/type1mod.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 1998 The XFree86 Project, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the XFree86 Project shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization from the - * XFree86 Project. - */ -/* $XFree86: xc/lib/font/Type1/module/type1mod.c,v 1.10 2002/12/09 17:29:59 dawes Exp $ */ - -#include "misc.h" - -#include <X11/fonts/fontmod.h> -#include "xf86Module.h" - -#ifdef HAVE_XORG_CONFIG_H -#include <xorg-config.h> -#endif - -static MODULESETUPPROTO(type1Setup); - - /* - * This is the module data function that is accessed when loading - * libtype1 as a module. - */ - -static XF86ModuleVersionInfo VersRec = -{ - "type1", - MODULEVENDORSTRING, - MODINFOSTRING1, - MODINFOSTRING2, - XORG_VERSION_CURRENT, - 1, 0, 2, - ABI_CLASS_FONT, /* Font module */ - ABI_FONT_VERSION, - MOD_CLASS_FONT, - {0,0,0,0} /* signature, to be patched into the file by a tool */ -}; - -XF86ModuleData type1ModuleData = { &VersRec, type1Setup, NULL }; - -extern void Type1RegisterFontFileFunctions(void); -#ifdef BUILDCID -extern void CIDRegisterFontFileFunctions(void); -#endif - -FontModule type1Module = { - Type1RegisterFontFileFunctions, - "Type1", - NULL -}; - -#ifdef BUILDCID -FontModule CIDModule = { - CIDRegisterFontFileFunctions, - "CID", - NULL -}; -#endif - -static pointer -type1Setup(pointer module, pointer opts, int *errmaj, int *errmin) -{ - type1Module.module = module; - LoadFont(&type1Module); -#ifdef BUILDCID - CIDModule.module = module; - LoadFont(&CIDModule); -#endif - - /* Need a non-NULL return */ - return (pointer)1; -} diff --git a/nx-X11/lib/font/Type1/objects.c b/nx-X11/lib/font/Type1/objects.c deleted file mode 100644 index c86587d..0000000 --- a/nx-X11/lib/font/Type1/objects.c +++ /dev/null @@ -1,1101 +0,0 @@ -/* $Xorg: objects.c,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/objects.c,v 1.10tsi Exp $ */ - /* OBJECTS CWEB V0025 ******** */ -/* -:h1.OBJECTS Module - TYPE1IMAGER Objects Common Routines - -This module defines and implements the C structures that represent -objects in the TYPE1IMAGER. All common routines for manipulating these -objects are defined in this module. Specific routines for -specific objects are defined in the modules that deal with that -object type. - - -&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) - - -:h3.Include Files - -The included files are: -*/ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#define GLOBALS 1 /* see :hdref refid=debugvar. */ -/* -The following two includes are C standards; we include them because we -use 'toupper' and the 'str'-type functions in this module. Potentially -these may be defined as macros; if these ".h" files do not exist on your -system it is a pretty safe bet that these are external entry points and -you do do not need to include these header files. -*/ - -#ifndef FONTMODULE -#include <string.h> -#include <ctype.h> -#include <stdarg.h> -#include <stdio.h> -#else -#include "Xdefs.h" /* Bool declaration */ -#include "Xmd.h" /* INT32 declaration */ -#include "os.h" -#include "xf86_ansic.h" -#endif - -/* -override incorrect system functions; for example you might define -a macro for "strcpy" that diverts it to "my_strcpy". -*/ - - /* moved these includes from above the */ - /* was included first (it contains com- */ - /* piler defines). dsr 081291 */ -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" -#include "fonts.h" -#include "pictures.h" -#include "strokes.h" -#include "cluts.h" - - -static char *TypeFmt(int type); - -/* -:h3.The "pointer" Macro - Define a Generic Pointer - -Sadly, many compilers will give a warning message when a pointer to -one structure is assigned to a pointer to another. We've even seen -some that give severe errors (when the wrong pointer type is used as -an initializer or returned from a function). TYPE1IMAGER has routines -like Dup and Allocate that are perfectly willing to duplicate or -allocate any of a number of different types of structures. How to -declare them in a truely portable way? - -Well, there is no single good answer that I've found. You can always -beg the question and "cast" everything. I find this distracting and the -resulting code ugly. On the other hand, we have found at least one -compiler that will accept "void *" as a generic pointer that can -assigned to any other pointer type without error or warning (apparently -this is also the ANSI standard). So, we define "void *" to be a generic -pointer. (You might have to change this for your compiler; the "ifndef" -allows the change to be made on the command line if you want.) -:i1/portability assumptions/ -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Functions Provided to the TYPE1IMAGER User - -This module provides the following TYPE1IMAGER entry points: -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -Note that entry points that are intended for use external to TYPE1IMAGER -begin with the characters :q/xi/. Macros are used to make the names -more mnemonic. -*/ - -/* -:h3.Functions Provided to Other Modules - -This module provides the following functions for other modules: -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -Note that entry points that intended for use within TYPE1IMAGER, but -which must be global because they are used across module boundaries, -begin with the characters :q/I_/. Macros are used to make the names -more mnemonic. - -Entry points totally within a module use mnemonic names and are -declared :hp2/static/. One of the compilers I used had a bug when -static functions were passed as addresses. Thus, some functions -which are logically "static" are not so declared. - -Note also the trick of declaring routines, like Consume(), with a -variable number of arguments. To avoid the restrictions on variable -numbers of arguments in the macro processor, we just replace the -text 'Consume' with 'I_Consume'. -*/ -/* -:h3.Macros Provided to Other Modules - -This is the module where we define all the useful constants like -TRUE, FALSE, and NULL, and simple expressions like MIN(), MAX(), and ABS(). -We might as well get to it right here: -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -Notice that upper case is used for constant values and macro -definitions. I generally follow that convention. - -Many more global macros are defined later in this module. -*/ -/* -:h2.Basic TYPE1IMAGER Object Structure - -All TYPE1IMAGER objects which are available to the user have a common -header. This header is defined below: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -The following define is an attempt to centralize the definition of the -common xobject data shared by structures that are derived from the -generic xobject structure. For example, the structure font, defined in -fonts.shr : -&code. - struct font { - char type; - char flag; - int references; - ... other data types & structs ... - } -&ecode. -would now be defined as: -&code. - struct font { - XOBJ_COMMON - ... other data types & structs ... - } -&ecode. -Thus we have a better-structured inheritance mechanism. 3-26-91 PNM -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Object Type Definitions - -These constants define the values which go in the 'type' field of -an TYPE1IMAGER object structure: -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Flag Byte Definitions - -Many programmers define flag bits as a mask (for example, 0x04), and -test, set, and reset them as follows: - -&code. - if ((flag & PERMANENT) != 0) - - flag |= PERMANENT; - flag &= &inv.PERMANENT; -:exmp. - -I favor a style where the 'if' statement can ask a question: - -&code. - if (ISPERMANENT(flag)) - - flag |= ISPERMANENT(ON); - flag &= &inv.ISPERMANENT(ON); - -:exmp. -This said, we now define two bit settings of the flag byte of the -object. "ISPERMANENT" will be set by the user, when he calls -Permanent(). "ISIMMORTAL" will be used for compiled-in objects -that we don't want the user to ever destroy. -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -Flag bit definitions that apply to all objects are assigned -starting with the least significant (0x01) bit. Flag bit definitions -specific to a certain object type are assigned starting with the -most significant (0x80) bit. We hope they never meet. -*/ -/* -:h3 id=preserve.PRESERVE() Macro - -Occasionally an TYPE1IMAGER operator is implemented by calling other -TYPE1IMAGER operators. For example, Arc2() calls Conic(). When we -call more than one operator as a subroutine, we have to be careful -of temporary objects. A temporary object will be consumed by the -subroutine operator and then is no longer available for the caller. -This can be prevented simply by bumping a temporary object's reference -count. -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.RefRoll() Macro to Detect References Count Rollover - -The following macro is designed to check for reference count rollover. -A return value of TRUE means rollover has not occurred; a return value -of FALSE means we cannot increment the reference count. Note also that -those functions that use this macro must decrement the reference count -afterwards. 3-26-91 PNM -*/ - -#define RefRoll(obj) (++(obj)->references > 0) - -/* -:h2.TYPE1IMAGER Object Functions - -:h3.LONGCOPY() - Macro to Copy "long" Aligned Data - -Copying arbitrary bytes in C is a bit of a problem. "strcpy" can't be -used, because 0 bytes are special-cased. Most environments have a -routine "memcopy" or "bcopy" or "bytecopy" that copies memory containing -zero bytes. Sadly, there is no standard on the name of such a routine, -which makes it impossible to write truely portable code to use it. - -It turns out that TYPE1IMAGER, when it wants to copy data, frequently -knows that both the source and destination are aligned on "long" -boundaries. This allows us to copy by using "long *" pointers. This -is usually very efficient on almost all processors. Frequently, it -is more efficient than using general-purpose assembly language routines. -So, we define a macro to do this in a portable way. "dest" and "source" -must be long-aligned, and "bytes" must be a multiple of "sizeof(long)": -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Allocate() - Allocating a Memory Block - -Allocate returns a pointer to memory object that is a copy of -the template passed (if any). In addition, extra bytes may be -allocated contiguously with the object. (This may be useful for -variable size objects such as edge lists. See :hdref refid=regions..) - -Allocate() always returns a non-immortal object, even if the template is -immortal. Therefore a non-NULL template must have a "flag" byte. - -If the template is NULL, then 'size' bytes are cleared to all NULLs. - -If the template is non-NULL, a new object is allocated in memory. -It therefore seems logical that its reference count field should be -set to 1. So, a nun-NULL template must also have a "references" field. -PNM 3-26-91 -*/ - -struct xobject * -t1_Allocate(int size, /* number of bytes to allocate & initialize */ - pointer ptr, /* example structure to allocate */ - int extra) /* any extra uninitialized bytes needed contiguously */ -{ - register struct xobject *template = (struct xobject *)ptr; - register struct xobject *r; - - /* - * round up 'size' and 'extra' to be an integer number of 'long's: - */ - size = (size + sizeof(long) - 1) & -(int)sizeof(long); - extra = (extra + sizeof(long) - 1) & -(int)sizeof(long); - if (size + extra <= 0) - Abort("Non-positive allocate?"); - r = (struct xobject *) xiMalloc(size + extra); - - while (r == NULL) { - if (!GimeSpace()) { - Abort("We have REALLY run out of memory"); - } - r = (struct xobject *) xiMalloc(size + extra); - } - - /* - * copy the template into the new memory: - */ - if (template != NULL) { - /* Added references count decrement if template is not permanent. - This is for the case where Allocate is called by a Dupxxxx - function, which was in turn called by Unique(). (PNM) */ - if (!ISPERMANENT(template->flag)) - --template->references; - LONGCOPY(r, template, size); - r->flag &= ~(ISPERMANENT(ON) | ISIMMORTAL(ON)); - /* added reference field 3-2-6-91 PNM */ - r->references = 1; - } - else { - register char **p1; - - for (p1=(char **)r; size > 0; size -= sizeof(char *)) - *p1++ = NULL; - } - - return(r); -} - -/* -:h3.Free() - Frees an Allocated Object - -This routine makes a sanity check to make sure the "type" field of the -standard object structure has not been cleared. If the object is -not a standard structure, then the macro "NonObjectFree" is available -that does not perform this check. - -In either case, the object must not be the NULL pointer. This preserves -portability, as the C system xiFree() will not always accept NULL. -*/ - -void -Free(pointer objPtr) -{ - struct xobject *obj = (struct xobject *)objPtr; /* structure to free */ - - if (obj->type == INVALIDTYPE) - Abort("Free of already freed object?"); - obj->type = INVALIDTYPE; - - xiFree((long *)obj); -} - -/* -:h3.Permanent() - Makes an Object Permanent - -Real simple--just set a flag. Every routine that consumes its objects -(which is almost every user entry) must check this flag, and not consume -the object if it is set. - -If a temporary object is made permanent, and there is more than one -reference to it, we must first Copy() it, then set the ISPERMANENT -flag. Note also that the reference count must be incremented when an -object is changed from temporary to permanent (see the ISUNIQUE macro). - -Note that the purpose of this function is to convert an object into a -permanent object: - If it was permanent to begin with, we do nothing; - If it was temporary and unique, we set the PERMANENT flag and increment -the reference count; - If it was temporary and nonunique, we must make a unique Copy(), set -the PERMANENT flag, and set the reference count to 2. We must also -decrement the original object's reference count, because what we have -done is to change one of the old temporary handles to a permanent one. -3-26-91 PNM -*/ - -struct xobject * -t1_Permanent(pointer objPtr) -{ - struct xobject *obj = (struct xobject *)objPtr; /* object to be made permanent */ - - if ( (obj != NULL) && ( !(ISPERMANENT(obj->flag)) ) ) - { - /* there is a non-NULL, temporary object to be made permanent. - If there are multiple references to this object, first get - a new COPY(). - Note also that we have to decrement the reference count if - we do a Copy() here, because we are consuming the temporary - argument passed, and returning a unique, permanent one. - */ - if ( obj->references > 1) - { - obj = Copy(obj); - } - /* now set the permanent flag, and increment the reference - count, since a temporary object has now become permanent. */ - obj->references++; - obj->flag |= ISPERMANENT(ON); - } - return(obj); -} - -#ifdef notused -/* -:h3.Temporary() - Undoes the Effect of "Permanent()" - -This simply resets the "ISPERMANENT" flag. - -If a permanent object is made temporary, and there is more than one reference -to it, we must first Copy() it, then reset the ISPERMANENT flag. However, -if the permanent object has obly one reference, we need only decrement the -reference count ( and reset the flag). - -Note that this function, in the case of a PERMANENT argument, basically -converts the PERMANENT handle to a TEMPORARY one. Thus, in the case of -a nonunique, permanent argument passed, we not only make a Copy(), -we also decrement the reference count, to reflect the fact that we have -lost a permanent handle and gained a temporary one. -PNM 3-2-6-91 -*/ - -struct xobject * -xiTemporary(pointer objPtr) -{ - register struct xobject *obj - = (struct xobject *)objPtr; /* object to be made permanent */ - if (obj != NULL) { - /* if it's already temporary, there's nothing to do. */ - if ISPERMANENT(obj->flag) - { - /* if there are multiple references to this object, get a - Copy we can safely alter. Recall that the reference count - is incremented for permanent objects. - Recall further that Copy returns an object with the - same flag state and a reference count of 2 (for PERMANENT - objects). - Thus, regardless of whether or not we need to copy a - permanent object, we still decrement its reference - count and reset the flag. - */ - if (obj->references != 2 || ISIMMORTAL(obj->flag)) - { - /* not unique; consume handle, get a temporary Copy! */ - obj = Copy(obj); - } - /* else decrement the reference count (since it's going from - permanent to temporary) and clear the flag. */ - else { - obj->references--; - obj->flag &= ~ISPERMANENT(ON); - } - } - } - return(obj); -} -#endif /* notused */ - -/* -:h3.Dup() - Duplicate an Object - -Dup will increment the reference count of an object, only making a -Copy() if needed. -Note that Dup() retains the state of the permanent flag. -3-26-91 PNM -*/ - - -struct xobject * -t1_Dup(pointer objPtr) -{ - register struct xobject *obj - = (struct xobject *)objPtr; /* object to be duplicated */ - register char oldflag; /* copy of original object's flag byte */ - - if (obj == NULL) - return(NULL); - /* An immortal object must be Copy'ed, so that we get a mortal - copy of it, since we try not to destroy immortal objects. */ - if (ISIMMORTAL(obj->flag)) - return(Copy(obj)); - - /* if incrementing the reference count doesn't cause the count - to wrap, simply return the object with the count bumped. Note - that the RefRoll macro increments the count to perform the - rollover check, so we must decrement the count. */ - if (RefRoll(obj)) - return(obj); - - /* that didn't work out, so put the count back and call Copy(). */ - --obj->references; - oldflag = obj->flag; - obj = Copy(obj); - if (ISPERMANENT(oldflag)) - obj = Permanent(obj); - return(obj); -} - -/* -:h3.Copy() - Make a New Copy of an Object - -This is the generic Copy() where the object type is unknown. There -are specific Copyxxx functions for known object types. - -Copy will create a NEW temporary object, and WILL NOT simply bump the -reference count. - -Sometimes duplicating an object is just as simple as Allocating with it -as a template. But other objects are complicated linked lists. So, we -let each module provide us a routine (or macro) that duplicates the -objects it knows about. -*/ - -struct xobject * -t1_Copy(pointer objPtr) -{ - register struct xobject *obj - = (struct xobject *)objPtr; /* object to be Copy'ed */ - if (obj == NULL) - return(NULL); - - if (ISPATHTYPE(obj->type)) - obj = (struct xobject *) CopyPath((struct segment *)obj); - else - switch (obj->type) { - case SPACETYPE: - obj = (struct xobject *) - CopySpace((struct XYspace *)obj); - break; - case FONTTYPE: - obj = (struct xobject *) CopyFont(obj); break; - case REGIONTYPE: - obj = (struct xobject *) - CopyRegion((struct region *)obj); - break; - case PICTURETYPE: - obj = (struct xobject *) CopyPicture(obj); break; - case LINESTYLETYPE: - obj = (struct xobject *) CopyLineStyle(obj); break; - case STROKEPATHTYPE: - obj = (struct xobject *) CopyStrokePath(obj); break; - case CLUTTYPE: - obj = (struct xobject *) CopyCLUT(obj); break; - default: - return(ArgErr("Copy: invalid object", obj, NULL)); - } - - return(obj); -} - -/* -:h3.Destroy() - Destroys an Object - -This can get complicated. Just like with Copy(), we let the experts -handle it. -*/ -struct xobject * -Destroy(pointer objPtr) -{ - register struct xobject *obj - = (struct xobject *)objPtr; /* object to be destroyed */ - if (obj == NULL) - return(NULL); - if (ISIMMORTAL(obj->flag)) { - return(NULL); - } - if (ISPATHTYPE(obj->type)) - KillPath((struct segment *)obj); - else { - switch (obj->type) { - case REGIONTYPE: - KillRegion((struct region *)obj); - break; - case SPACETYPE: - KillSpace(obj); - break; - case LINESTYLETYPE: - KillLineStyle(obj); - break; - case FONTTYPE: - KillFont(obj); - break; - case PICTURETYPE: - KillPicture(obj); - break; - case STROKEPATHTYPE: - KillStrokePath(obj); - break; - case CLUTTYPE: - KillCLUT(obj); - break; - default: - return(ArgErr("Destroy: invalid object", obj, NULL)); - } - } - return(NULL); -} -/* -:h2.Generally Useful Macros - -:h3.FOLLOWING() - Macro to Point to the Data Following a Structure - -There are several places in TYPE1IMAGER where we will allocate variable -data that belongs to a structure immediately after that structure. -This is a performance technique, because it reduces the number of -trips we have to take through xiMalloc() and xiFree(). It turns out C has -a very convenient way to point past a structure--if 'p' is a pointer -to a structure, 'p+1' is a pointer to the data after it. This -behavior of C is somewhat startling and somewhat hard to follow, if -you are not used to it, so we define a macro to point to the data -following a structure: -*/ -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.TYPECHECK() - Verify the Type of an Argument - -This macro tests the type of an argument. If the test fails, it consumes -any other arguments as necessary and causes the imbedding routine to -return the value 'whenBAD'. - -Note that the consumeables list should be an argument list itself, for -example (0) or (2,A,B). See :hdref refid=consume. below. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.ARGCHECK() - Perform an Arbitrary Check on an Argument - -This macro is a generalization of TYPECHECK to take an arbitrary -predicate. If the error occurs (i.e., the predicate is true), the -arbitrary message 'msg' is returned. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.TYPENULLCHECK() - Extension of TYPECHECK() for NULL arguments - -Many routines allow NULLs to be passed as arguments. 'whenBAD' will -be returned in this case, too. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.MAKECONSUME() - Create a "Consume"-type Macro - -Consuming an object means destroying it if it is not permanent. This -logic is so common to all the routines, that it is immortalized in this -macro. For example, ConsumePath(p) can be simply defined as -MAKECONSUME(p,KillPath(p)). In effect, this macro operates on a -meta-level. -:i1/consuming objects/ -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.MAKEUNIQUE() - Create a "Unique"-type Macro - -Many routines are written to modify their arguments in place. Thus, -they want to insure that they duplicate an object if it is permanent. -This is called making an object "unique". For example, UniquePath(p) -can be simply defined as MAKEUNIQUE(p,DupPath(p)). -:i1/unique objects/ -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -An object is unique (and directly alterable) if there is only one -reference to it, and it is not permanent (in which case we increment -the reference count, so we don't have to check the permanent bit). -3-26-91 PNM - -Note the rules for making a unique object: -&drawing. - IF (obj->references = 1) return(obj); - ELSE (references > 1) - IF (ISPERMANENT(obj->flag)) return(Dupxxx(obj)); - ELSE (nonunique, temporary object!) - obj->references--; return(Dupxxx(obj)); -&edrawing. -If we must make a Copy of a nonunique, temporary object, we decrement -reference count of the original object! -*/ - -/* -:h3.Unique() - Make a Unique Object - -Here is a generic 'Unique' function if the object type is not known. -Why didn't we build it with the MAKEUNIQUE macro, you ask? Well, we -used to, but there is at least one damn compiler in the world that -raises errors if the types of an "(a) ? b : c" expression do not match. -Also, when we changed Dup() to retain the permanent/temporary flag, we -wanted to make sure "Unique" always returned a temporary object. - -Note that we cannot use Dup() to create a copy of the object in question, -because Dup() may simply bump the reference count, and not return a -unique copy to us. That is why we use t1_Copy(). - -The purpose of this function is to make sure we have a copy of an object -that we can safely alter: -:ol. -:li.If we have a unique, temporary object, we simply return the argument. -:li.If we have a nonunique, temporary object, we have to make a new copy -of it, and decrement the reference count of the original object, to reflect -the fact that we traded temporary handles. -:li.If we have a permanent object, we make a temporary copy of it, but -we do not decrement the reference count of the original permanent object, -because permanent objects, by definition, are persistent. 3-2-6-91 PNM -:eol. -*/ - -struct xobject * -t1_Unique(pointer objPtr) -{ - struct xobject *obj = (struct xobject *)objPtr; - - /* if the original object is not already unique, make a unique - copy...Note also that if the object was not permanent, we must - consume the old handle! 3-26-91 PNM - NOTE : consumption of the old handle moved to Allocate. 4-18-91 */ - if (!obj || obj->references == 1) - return(obj); - - obj = Copy(obj); - /* and make sure we return a temporary object ! */ - if (ISPERMANENT(obj->flag)) - { - obj->flag &= ~ISPERMANENT(ON); - obj->references--; - } - return(obj); -} - - -/* -:h2.Initialization, Error, and Debug Routines - -:h3 id=debugvar.Declarations for Debug Purposes - -We declare all the debug flags here. Some link editors make the not -unreasonable restriction that only one module may declare and -initialize global variables; all the rest must declare the variable -'extern'. This is logical, but is somewhat awkward to implement with -C include files. We solve the problem by temporarily making the name -'extern' a null name if GLOBALS is defined. (GLOBALS is only defined -in this OBJECTS module.) Since 'externs' can't be initialized, we -have to handle that with #defines too. -:i1/GLOBALS (define.)/ -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -static char *ErrorMessage = NULL; - -/* -:h3.Pragmatics() - Set/Reset Debug Flags - -We provide a controlled way for the TYPE1IMAGER user to set and reset -our debugging and tracing: -*/ -void -Pragmatics(char *username, /* name of the flag */ - int value) /* value to set it to */ -{ - register char *p; /* temporary loop variable */ -#define NAMESIZE 40 - char name[NAMESIZE]; /* buffer to store my copy of 'username' */ - - if (strlen(username) >= (unsigned)NAMESIZE) - Abort("Pragmatics name too large"); - strcpy(name, username); - for (p = name; *p != '\0'; p++) - *p = toupper(*p); - - if (!strcmp(name, "ALL")) - MustTraceCalls = InternalTrace = /* MustCrash = */ - LineIOTrace = value; - - else if (!strcmp(name, "LINEIOTRACE")) - LineIOTrace = value; - - else if (!strcmp(name, "TRACECALLS")) - MustTraceCalls = value; - - else if (!strcmp(name, "CHECKARGS")) - MustCheckArgs = value; - - else if (!strcmp(name, "PROCESSHINTS")) - ProcessHints = value; - - else if (!strcmp(name, "SAVEFONTPATHS")) - SaveFontPaths = value; - - else if (!strcmp(name, "CRASTERCOMPRESSIONTYPE")) - CRASTERCompressionType = value; - - else if (!strcmp(name, "CRASHONUSERERROR")) - MustCrash = value; - - else if (!strcmp(name, "DEBUG")) - StrokeDebug = SpaceDebug = PathDebug = ConicDebug = LineDebug = - RegionDebug = MemoryDebug = FontDebug = - HintDebug = ImageDebug = OffPageDebug = value; - - else if (!strcmp(name, "CONICDEBUG")) - ConicDebug = value; - - else if (!strcmp(name, "LINEDEBUG")) - LineDebug = value; - - else if (!strcmp(name, "REGIONDEBUG")) - RegionDebug = value; - - else if (!strcmp(name, "PATHDEBUG")) - PathDebug = value; - - else if (!strcmp(name, "SPACEDEBUG")) - SpaceDebug = value; - - else if (!strcmp(name, "STROKEDEBUG")) - StrokeDebug = value; - - else if (!strcmp(name, "MEMORYDEBUG")) - MemoryDebug = value; - - else if (!strcmp(name, "FONTDEBUG")) - FontDebug = value; - - else if (!strcmp(name, "HINTDEBUG")) - HintDebug = value; - - else if (!strcmp(name, "IMAGEDEBUG")) - ImageDebug = value; - - else if (!strcmp(name, "OFFPAGEDEBUG")) - OffPageDebug = value; - -#ifdef MC68000 -/* -The following pragmatics flag turns on or off instruction histograming -for performance analysis. It is only defined in the Delta card -environment. -*/ - else if (!strcmp(name, "PROFILE")) { - if (value) - StartProfile(); - else - StopProfile(); - } -#endif - else if (!strcmp(name, "FLUSHCACHE")) { -#ifdef notdef - while (GimeSpace()) { ; } -#endif - } - - else if (!strcmp(name, "CACHEDCHARS")) - CachedChars = (value <= 0) ? 1 : value; - - else if (!strcmp(name, "CACHEDFONTS")) - CachedFonts = (value <= 0) ? 1 : value; - - else if (!strcmp(name, "CACHEBLIMIT")) - CacheBLimit = value; - - else if (!strcmp(name, "CONTINUITY")) - Continuity = value; - - - else { - printf("Pragmatics flag = '%s'\n", name); - ArgErr("Pragmatics: flag not known", NULL, NULL); - } - return; -} - -/* -:h3.Consume() - Consume a List of Arguments - -This general purpose routine is provided in the case where the object -type(s) to be consumed are unknown or not yet verified, and/or it is -not known whether the object is permanent. - -If the type of the argument is known, it is faster to directly consume -that type, for example, ConsumeRegion() or ConsumePath(). Furthermore, -if it is already known that the object is temporary, it is faster to -just kill it rather than consume it, for example, KillSpace(). -*/ - -void -Consume(int n, ...) -{ - struct xobject *obj; - va_list ap; - - va_start(ap, n); - - while (n-- > 0) { - obj = va_arg(ap, struct xobject *); - if (obj != NULL && !ISPERMANENT(obj->flag)) - Destroy(obj); - } -} - -/* -:h3.TypeErr() - Handles "Invalid Object Type" Errors -*/ - -struct xobject * -TypeErr(char *name, /* Name of routine (for error message) */ - pointer objPtr, /* Object in error */ - int expect, /* type expected */ - pointer retPtr) /* object to return to caller */ -{ - struct xobject *obj = (struct xobject *)objPtr; - struct xobject *ret = (struct xobject *)retPtr; - /* - * This buffer must be large enough to hold 'name' plus - * two of the largest strings that can be returned by TypeFmt. - * The largest value of 'name' is currently 9 ("ClosePath") - * and the longest strings in TypeFmt are 30 characters. - */ - static char typemsg[115]; - - if (MustCrash) - LineIOTrace = TRUE; - - sprintf(typemsg, "Wrong object type in %s. Expected %s; was %s.\n", - name, TypeFmt(expect), TypeFmt(obj->type)); - - if (MustCrash) - Abort("Terminating because of CrashOnUserError..."); - else - ErrorMessage = typemsg; - -/* changed ISPERMANENT to ret->references > 1 3-26-91 PNM */ - if (ret != NULL && (ret->references > 1)) - ret = Dup(ret); - return(ret); -} - -/* -:h4.TypeFmt() - Returns Pointer to English Name of Object Type - -This is a subroutine of TypeErr(). -*/ - -static char * -TypeFmt(int type) /* type field */ -{ - char *r; - - if (ISPATHTYPE(type)) - if (type == TEXTTYPE) - r = "path or region (from TextPath)"; - else - r = "path"; - else { - switch (type) { - case INVALIDTYPE: - r = "INVALID (previously consumed?)"; - break; - case REGIONTYPE: - r = "region"; - break; - case SPACETYPE: - r = "XYspace"; - break; - case LINESTYLETYPE: - r = "linestyle"; - break; - case FONTTYPE: - r = "font"; - break; - case PICTURETYPE: - r = "picture"; - break; - case STROKEPATHTYPE: - r = "path (from StrokePath)"; - break; - default: - r = "UNKNOWN"; - break; - } - } - return(r); -} -/* -:h3.ArgErr() - Invalid Argument Passed to a Routine - -A common routine to report argument errors. It is usually called -is returned to the caller in case MustCrash is FALSE and ArgErr -returns to its caller. -*/ - -struct xobject * -ArgErr(char *string, /* description of error */ - pointer objPtr, /* object, if any, that was in error */ - pointer retPtr) /* object returned to caller or NULL */ -{ - struct xobject *ret = (struct xobject *)retPtr; - - if (MustCrash) - LineIOTrace = TRUE; - - if (MustCrash) - Abort("Terminating because of CrashOnUserError..."); - else - ErrorMessage = string; - return(ret); -} - -/* -:h3.Abort() - Crash Due to Error - -Defined in objects.h to be FatalError(), the server's abort routine. -*/ - -/* -:h3.REAL Miscellaneous Stuff - -:h4.ErrorMsg() - Return the User an Error Message -*/ - -char * -ErrorMsg(void) -{ - register char *r; - - r = ErrorMessage; - ErrorMessage = NULL; - return(r); -} - -/* -:h4.InitImager() - Initialize TYPE1IMAGER - -We check that a short is 16 bits and a long 32 bits; we have made -those assumptions elsewhere in the code. (This is almost a C standard, -anyway.) Note that TYPE1IMAGER makes no assumptions about the size of an -'int'! -:i1/portability assumptions/ -*/ - -void -InitImager(void) -{ - -/* Check to see if we have been using our own malloc. If so,*/ -/* Undef malloc so that we can get to the system call. */ -/* All other calls to malloc are defined to xiMalloc. */ - - -/* if (sizeof(short) != 2 || sizeof(INT32) != 4) - Abort("Fundamental TYPE1IMAGER assumptions invalid in this port"); -*/ - InitSpaces(); - InitFonts(); - InitFiles(); -/* -In some environments, constants and/or exception handling need to be -*/ - LibInit(); -} -/* -:h4.TermImager() - Terminate TYPE1IMAGER - -This only makes sense in a server environment; true TYPE1IMAGER needs do -nothing. -*/ -void -TermImager(void) -{ - return; -} -#ifdef notused -/* -:h4.reportusage() - A Stub to Get a Clean Link with Portable PMP -*/ -void -reportusage(void) -{ - return; -} -#endif diff --git a/nx-X11/lib/font/Type1/objects.h b/nx-X11/lib/font/Type1/objects.h deleted file mode 100644 index 7552f98..0000000 --- a/nx-X11/lib/font/Type1/objects.h +++ /dev/null @@ -1,354 +0,0 @@ -/* $Xorg: objects.h,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/objects.h,v 1.14tsi Exp $ */ -/*SHARED*/ - -/*END SHARED*/ -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#include <X11/Xdefs.h> -#include <X11/Xfuncproto.h> -#ifndef FONTMODULE -#include <stdlib.h> -#endif -/*SHARED*/ - -#define Permanent(obj) t1_Permanent(obj) -#ifdef notused -#define Temporary(obj) t1_Temporary(obj) -#endif -#define Destroy(obj) t1_Destroy(obj) -#define Dup(obj) t1_Dup(obj) -#define InitImager t1_InitImager -#define TermImager t1_TermImager -#define Pragmatics(f,v) t1_Pragmatics(f,v) -#define ErrorMsg t1_ErrorMsg - -/* make an object permanent */ -extern struct xobject *t1_Permanent ( pointer obj ); - -#ifdef notused -/* make an object temporary */ -extern struct xobject *t1_Temporary( pointer obj ); -#endif - -/* destroy an object */ -extern struct xobject *t1_Destroy ( pointer obj ); - -/* duplicate an object */ -extern struct xobject *t1_Dup ( pointer obj ); - - -extern void t1_InitImager ( void ); /* initialize TYPE1IMAGER */ -extern void t1_TermImager ( void ); /* terminate TYPE1IMAGER */ -/* set debug flags, etc. */ -extern void t1_Pragmatics ( char *username, int value ); - -/* return last TYPE1IMAGER error message */ -extern char *t1_ErrorMsg ( void ); - -/*END SHARED*/ -/*SHARED*/ -extern void xiFree ( long *addr ); -extern char *xiMalloc ( unsigned Size ); -extern void addmemory ( long *addr, long size ); -extern void delmemory ( void ); - -#ifndef OS_H -extern void FatalError(const char *f, ...) -#if defined(__GNUC__) && \ - ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ > 4))) -__attribute((noreturn)) -#endif -; - -extern void ErrorF(const char *f, ...); -#endif - -#define Abort(line) FatalError(line) -#define Allocate(n,t,s) t1_Allocate(n,t,s) -#define Free(obj) t1_Free(obj) -#define NonObjectFree(a) xiFree((long *)(a)) -#define Consume t1_Consume -#define ArgErr(s,o,r) t1_ArgErr(s,o,r) -#define TypeErr(n,o,e,r) t1_TypeErr(n,o,e,r) -#define Copy(obj) t1_Copy(obj) -#define Unique(obj) t1_Unique(obj) - -/* allocate memory */ -extern struct xobject *t1_Allocate( int size, pointer template, - int extra ); - -/* free memory */ -extern void t1_Free ( pointer obj ); - -/* make a unique temporary copy of an object */ -extern struct xobject *t1_Unique ( pointer obj ); - -/* handle argument errors */ -extern struct xobject *t1_ArgErr ( char *string, pointer obj, pointer ret ); - -/* handle 'bad type' argument errors */ -extern struct xobject *t1_TypeErr ( char *name, pointer obj, - int expect, pointer ret ); - -/* consume a variable number of arguments */ -extern void t1_Consume ( int n, ... ); - -/* make a new copy, not reference bump PNM */ -extern struct xobject *t1_Copy ( pointer obj ); - - -/*END SHARED*/ -/*SHARED*/ - -#define ON (~0) /* all bits on */ -#ifndef FALSE -#define FALSE 0 /* handy zero value */ -#endif -#ifndef TRUE -#define TRUE 1 /* handy non-zero value */ -#endif - -#ifndef NULL -#include <stddef.h> -/* -The NULL pointer is system specific. (Most systems, however, use 0.) -TYPE1IMAGER could have its own NULL, independent of the rest of the system, -were it not for malloc(). The system call malloc() returns NULL when -out of memory. -:i1/portibility assumptions/ -*/ -#endif - -#ifndef MIN -#define MIN(a,b) (((a)<(b)) ? a : b) -#endif -#ifndef MAX -#define MAX(a,b) (((a)>(b)) ? a : b) -#endif -#ifndef ABS -#define ABS(a) (((a)>=0)?(a):-(a)) -#endif - -/*END SHARED*/ -/*SHARED*/ - -struct xobject { - char type; /* encoded type of object */ - unsigned char flag; /* flag byte for temporary object characteristics*/ - short references; /* count of pointers to this object - (plus 1 for permanent objects) PNM */ -} ; - -/*END SHARED*/ -/*SHARED*/ - -#define XOBJ_COMMON char type; unsigned char flag; short references; - -/*END SHARED*/ -/*SHARED*/ - - -#define INVALIDTYPE 0 -#define FONTTYPE 1 -#define REGIONTYPE 3 -#define PICTURETYPE 4 -#define SPACETYPE 5 -#define LINESTYLETYPE 6 -#define EDGETYPE 7 -#define STROKEPATHTYPE 8 -#define CLUTTYPE 9 - -#define ISPATHTYPE(type) ((type)&0x10) /* all path segments have this bit on */ -#define LINETYPE (0+ISPATHTYPE(ON)) -#define CONICTYPE (1+ISPATHTYPE(ON)) -#define BEZIERTYPE (2+ISPATHTYPE(ON)) -#define HINTTYPE (3+ISPATHTYPE(ON)) - -#define MOVETYPE (5+ISPATHTYPE(ON)) -#define TEXTTYPE (6+ISPATHTYPE(ON)) - -/*END SHARED*/ -/*SHARED*/ - -#define ISPERMANENT(flag) ((flag)&0x01) -#define ISIMMORTAL(flag) ((flag)&0x02) - -/*END SHARED*/ -/*SHARED*/ - -#define PRESERVE(obj) if (!ISPERMANENT((obj)->flag)) \ - (obj)->references++; - -/*END SHARED*/ -/*SHARED*/ - -#define LONGCOPY(dest,source,bytes) { \ - register long *p1 = (long *)dest; register long *p2 = (long *)source; \ - register int count = (bytes) / sizeof(long); \ - while (--count >= 0) *p1++ = *p2++; } - - -/*END SHARED*/ -/*SHARED*/ - -#define FOLLOWING(p) ((p)+1) - -/*END SHARED*/ -/*SHARED*/ - -#define TYPECHECK(name, obj, expect, whenBAD, consumables, rettype) { \ - if (obj->type != expect) { \ - (Consume)consumables; \ - return((rettype)TypeErr(name, obj, expect, whenBAD)); \ - } \ -} - -/*END SHARED*/ -/*SHARED*/ - -#define ARGCHECK(test,msg,obj,whenBAD,consumables,rettype) { \ - if (test) { \ - (Consume)consumables; \ - return((rettype)ArgErr(msg, obj, whenBAD)); \ - } \ -} - -/*END SHARED*/ -/*SHARED*/ - -/* Changed use of Dup() below to Temporary(Copy()) because Dup() does not - necessarily return a Unique Copy anymore! 3-26-91 */ -#define TYPENULLCHECK(name, obj, expect, whenBAD, consumables,rettype) \ - if (obj == NULL) { \ - (Consume)consumables; \ - if (whenBAD != NULL && ISPERMANENT(whenBAD->flag)) \ - return((rettype)Temporary(Copy(whenBAD))); \ - else return((rettype)whenBAD); \ - } else { \ - if (obj->type != expect) { \ - (Consume)consumables; \ - return((rettype)TypeErr(name, obj, expect, whenBAD)); \ - } \ - } -/*END SHARED*/ -/*SHARED*/ - -#define MAKECONSUME(obj,stmt) { if (!ISPERMANENT(obj->flag)) stmt; } - -/*END SHARED*/ -/*SHARED*/ - -#define MAKEUNIQUE(obj,stmt) ( ( (obj)->references > 1 ) ? stmt : obj ) - -/*END SHARED*/ -/*SHARED*/ - -#ifdef GLOBALS - -#define extern -#define INITIALIZED(value) = value - -#else - -#define INITIALIZED(value) - -#endif - -extern char MustCheckArgs INITIALIZED(TRUE); -extern char MustTraceCalls INITIALIZED(FALSE); -#if XFONT_CID -extern char MustCrash INITIALIZED(FALSE); -#else -extern char MustCrash INITIALIZED(TRUE); -#endif -extern char InternalTrace INITIALIZED(TRUE); -extern char LineIOTrace INITIALIZED(TRUE); - -extern char ProcessHints INITIALIZED(TRUE); - -extern char SaveFontPaths INITIALIZED(TRUE); - -extern short CRASTERCompressionType INITIALIZED(1); - -extern char ConicDebug INITIALIZED(0); -extern char LineDebug INITIALIZED(0); -extern char RegionDebug INITIALIZED(0); -extern char PathDebug INITIALIZED(0); -extern char FontDebug INITIALIZED(0); -extern char SpaceDebug INITIALIZED(0); -extern char StrokeDebug INITIALIZED(0); -extern char MemoryDebug INITIALIZED(0); -extern char HintDebug INITIALIZED(0); -extern char ImageDebug INITIALIZED(0); -extern char OffPageDebug INITIALIZED(0); - -extern short CachedChars INITIALIZED(0x7FFF); -extern short CachedFonts INITIALIZED(0x7FFF); -extern int CacheBLimit INITIALIZED(12500); -extern char Continuity INITIALIZED(2); - -#ifdef extern -#undef extern -#endif - -/* -We define other routines formatting parameters -*/ -#define DumpArea(area) t1_DumpArea(area) -#define DumpText(text) t1_DumpText(text) -#define DumpPath(path) t1_DumpPath(path) -#define DumpSpace(space) t1_DumpSpace(space) -#define DumpEdges(e) t1_DumpEdges(e) -#define FormatFP(s,p) t1_FormatFP(s,p) - -/* dump a textpath structure */ -extern void t1_DumpText(void); - -/*END SHARED*/ diff --git a/nx-X11/lib/font/Type1/paths.c b/nx-X11/lib/font/Type1/paths.c deleted file mode 100644 index 1ab25ec..0000000 --- a/nx-X11/lib/font/Type1/paths.c +++ /dev/null @@ -1,1406 +0,0 @@ -/* $Xorg: paths.c,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/paths.c,v 1.7tsi Exp $ */ - - /* PATHS CWEB V0021 ******** */ -/* -:h1 id=paths.PATHS Module - Path Operator Handler - -This is the module that is responsible for building and transforming -path lists. - -&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) - - -:h3.Include Files - -The included files are: -*/ - - /* after the system includes (dsr) */ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef FONTMODULE -# include "os.h" -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" /* understands about Union */ -#include "fonts.h" /* understands about TEXTTYPEs */ -#include "pictures.h" /* understands about handles */ -#include "strokes.h" /* understands how to coerce stroke paths */ -#include "trig.h" - - -/* -:h3.Routines Available to the TYPE1IMAGER User - -The PATHS routines that are made available to the outside user are: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Functions Provided to Other Modules - -The path routines that are made available to other TYPE1IMAGER modules -are defined here: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -NOTE: because of the casts put in the macros for Loc, ArcCA, Conic, -RoundConic, PathSegment, and JoinSegment, we cannot use the macro names -when the functions are actually defined. We have to use the unique -names with their unique first two characters. Thus, if anyone in the -future ever decided to change the first two characters, it would not be -enough just to change the macro (as it would for most other functions). -He would have to also change the function definition. -*/ -/* -:h3.Macros Provided to Other Modules - -The CONCAT macro is defined here and used in the STROKES module. See -:hdref refid=pathmac.. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h2.Path Segment Structures - -A path is represented as a linked list of the following structure: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -When 'link' is NULL, we are at the last segment in the path (surprise!). - -'last' is only non-NULL on the first segment of a path, -for all the other segments 'last' == NULL. We test for a non-NULL -'last' (ISPATHANCHOR predicate) when we are given an alleged path -to make sure the user is not trying to pull a fast one on us. - -A path may be a collection of disjoint paths. Every break in the -disjoint path is represented by a MOVETYPE segment. - -Closed paths are discussed in :hdref refid=close.. - -:h3.CopyPath() - Physically Duplicating a Path - -This simple function illustrates moving through the path linked list. -Duplicating a segment just involves making a copy of it, except for -text, which has some auxilliary things involved. We don't feel -competent to duplicate text in this module, so we call someone who -knows how (in the FONTS module). -*/ -struct segment * -CopyPath(struct segment *p0) /* path to duplicate */ -{ - register struct segment *p,*n = NULL,*last = NULL,*anchor; - - for (p = p0, anchor = NULL; p != NULL; p = p->link) { - - ARGCHECK((!ISPATHTYPE(p->type) || (p != p0 && p->last != NULL)), - "CopyPath: invalid segment", p, NULL, (0), struct segment *); - - if (p->type == TEXTTYPE) - n = (struct segment *) CopyText(p); - else - n = (struct segment *)Allocate(p->size, p, 0); - n->last = NULL; - if (anchor == NULL) - anchor = n; - else - last->link = n; - last = n; - } -/* -At this point we have a chain of newly allocated segments hanging off -'anchor'. We need to make sure the first segment points to the last: -*/ - if (anchor != NULL) { - n->link = NULL; - anchor->last = n; - } - - return(anchor); -} -/* -:h3.KillPath() - Destroying a Path - -Destroying a path is simply a matter of freeing each segment in the -linked list. Again, we let the experts handle text. -*/ -void -KillPath(struct segment *p) /* path to destroy */ -{ - register struct segment *linkp; /* temp register holding next segment*/ - - /* return conditional based on reference count 3-26-91 PNM */ - if ( (--(p->references) > 1) || - ( (p->references == 1) && !ISPERMANENT(p->flag) ) ) - return; - - while (p != NULL) { - if (!ISPATHTYPE(p->type)) { - ArgErr("KillPath: bad segment", p, NULL); - return; - } - linkp = p->link; - if (p->type == TEXTTYPE) - KillText(p); - else - Free(p); - p = linkp; - } -} - -/* -:h2 id=location."location" Objects - -The TYPE1IMAGER user creates and destroys objects of type "location". These -objects locate points for the primitive path operators. We play a trick -here and store these objects in the same "segment" structure used for -paths, with a type field == MOVETYPE. - -This allows the Line() operator, for example, to be very trivial: -It merely stamps its input structure as a LINETYPE and returns it to the -caller--assuming, of course, the input structure was not permanent (as -it usually isn't). - -:h3.The "movesegment" Template Structure - -This template is used as a generic segment structure for Allocate: -*/ - -/* added reference field 1 to temporary template below 3-26-91 PNM */ -static struct segment movetemplate = { MOVETYPE, 0, 1, sizeof(struct segment), 0, - NULL, NULL, {0, 0} }; -/* -:h3.Loc() - Create an "Invisible Line" Between (0,0) and a Point - -*/ - -struct segment * -t1_Loc(struct XYspace *S, /* coordinate space to interpret X,Y */ - double x, double y) /* destination point */ -{ - register struct segment *r; - - - r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0); - TYPECHECK("Loc", S, SPACETYPE, r, (0), struct segment *); - - r->last = r; - r->context = S->context; - (*S->convert)(&r->dest, S, x, y); - ConsumeSpace(S); - return(r); -} -/* -:h3.ILoc() - Loc() With Integer Arguments - -*/ -struct segment * -ILoc(struct XYspace *S, /* coordinate space to interpret X,Y */ - int x, int y) /* destination point */ -{ - register struct segment *r; - - r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0); - TYPECHECK("Loc", S, SPACETYPE, r, (0), struct segment *); - - r->last = r; - r->context = S->context; - (*S->iconvert)(&r->dest, S, (long) x, (long) y); - ConsumeSpace(S); - return(r); -} - -/* -:h3.SubLoc() - Vector Subtraction of Two Locition Objects - -This user operator subtracts two location objects, yielding a new -location object that is the result. - -The symmetrical function AddLoc() is totally redundent with Join(), -so it is not provided. -*/ - -struct segment * -SubLoc(struct segment *p1, struct segment *p2) -{ - ARGCHECK(!ISLOCATION(p1), "SubLoc: bad first arg", p1, NULL, (0), struct segment *); - ARGCHECK(!ISLOCATION(p2), "SubLoc: bad second arg", p2, NULL, (0), struct segment *); - p1 = UniquePath(p1); - p1->dest.x -= p2->dest.x; - p1->dest.y -= p2->dest.y; - ConsumePath(p2); - return(p1); -} - -/* -:h2.Straight Line Segments - -:h3.PathSegment() - Create a Generic Path Segment - -Many routines need a LINETYPE or MOVETYPE path segment, but do not -want to go through the external user's interface, because, for example, -they already know the "fractpel" destination of the segment and the -conversion is unnecessary. PathSegment() is an internal routine -provided to the rest of TYPE1IMAGER for handling these cases. -*/ - -struct segment * -t1_PathSegment(int type, /* LINETYPE or MOVETYPE */ - fractpel x, fractpel y) /* where to go to, if known */ -{ - register struct segment *r; /* newly created segment */ - - r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0); - r->type = type; - r->last = r; /* last points to itself for singleton */ - r->dest.x = x; - r->dest.y = y; - return(r); -} -/* -:h3.Line() - Create a Line Segment Between (0,0) and a Point P - -This involves just creating and filling out a segment structure: -*/ -struct segment * -Line(struct segment *P) /* relevant coordinate space */ -{ - ARGCHECK(!ISLOCATION(P), "Line: arg not a location", P, NULL, (0), struct segment *); - - P = UniquePath(P); - P->type = LINETYPE; - return(P); -} -/* -:h2.Curved Path Segments - -We need more points to describe curves. So, the structures for curved -path segments are slightly different. The first part is identical; -the curved structures are larger with the extra points on the end. - -:h3.Bezier Segment Structure - -We support third order Bezier curves. They are specified with four -control points A, B, C, and D. The curve starts at A with slope AB -and ends at D with slope CD. The curvature at the point A is inversely -related to the length |AB|, and the curvature at the point D is -inversely related to the length |CD|. Point A is always point (0,0). - -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Bezier() - Generate a Bezier Segment - -This is just a simple matter of filling out a 'beziersegment' structure: -*/ - -struct beziersegment * -Bezier(struct segment *B, /* second control point */ - struct segment *C, /* third control point */ - struct segment *D) /* fourth control point (ending point) */ -{ -/* added reference field of 1 to temporary template below 3-26-91 PNM */ - static struct beziersegment template = - { BEZIERTYPE, 0, 1, sizeof(struct beziersegment), 0, - NULL, NULL, { 0, 0 }, { 0, 0 }, { 0, 0 } }; - - register struct beziersegment *r; /* output segment */ - - ARGCHECK(!ISLOCATION(B), "Bezier: bad B", B, NULL, (2,C,D), struct beziersegment *); - ARGCHECK(!ISLOCATION(C), "Bezier: bad C", C, NULL, (2,B,D), struct beziersegment *); - ARGCHECK(!ISLOCATION(D), "Bezier: bad D", D, NULL, (2,B,C), struct beziersegment *); - - r = (struct beziersegment *)Allocate(sizeof(struct beziersegment), &template, 0); - r->last = (struct segment *) r; - r->dest.x = D->dest.x; - r->dest.y = D->dest.y; - r->B.x = B->dest.x; - r->B.y = B->dest.y; - r->C.x = C->dest.x; - r->C.y = C->dest.y; - - ConsumePath(B); - ConsumePath(C); - ConsumePath(D); - return(r); -} - -/* -:h2.Font "Hint" Segments - -:h3.Hint() - A Font 'Hint' Segment - -This is temporary code while we experiment with hints. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -struct hintsegment * -Hint(struct XYspace *S, float ref, float width, - char orientation, char hinttype, char adjusttype, char direction, - int label) -{ -/* added reference field of 1 to hintsegment template below 3-26-91 PNM */ - static struct hintsegment template = { HINTTYPE, 0, 1, sizeof(struct hintsegment), 0, - NULL, NULL, { 0, 0 }, { 0, 0 }, { 0, 0 }, - ' ', ' ', ' ', ' ', 0}; - - register struct hintsegment *r; - - r = (struct hintsegment *)Allocate(sizeof(struct hintsegment), &template, 0); - - r->orientation = orientation; - if (width == 0.0) width = 1.0; - - if (orientation == 'h') { - (*S->convert)(&r->ref, S, 0.0, ref); - (*S->convert)(&r->width, S, 0.0, width); - } - else if (orientation == 'v') { - (*S->convert)(&r->ref, S, ref, 0.0); - (*S->convert)(&r->width, S, width, 0.0); - } - else - return((struct hintsegment *)ArgErr("Hint: orient not 'h' or 'v'", NULL, NULL)); - if (r->width.x < 0) r->width.x = - r->width.x; - if (r->width.y < 0) r->width.y = - r->width.y; - r->hinttype = hinttype; - r->adjusttype = adjusttype; - r->direction = direction; - r->label = label; - r->last = (struct segment *) r; - ConsumeSpace(S); - return(r); -} - -/* -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -POP removes the first segment in a path 'p' and Frees it. 'p' is left -pointing to the end of the path: -*/ -#define POP(p) \ - { register struct segment *linkp; \ - linkp = p->link; \ - if (linkp != NULL) \ - linkp->last = p->last; \ - Free(p); \ - p = linkp; } -/* -INSERT inserts a single segment in the middle of a chain. 'b' is -the segment before, 'p' the segment to be inserted, and 'a' the -segment after. -*/ -#define INSERT(b,p,a) b->link=p; p->link=a; p->last=NULL - -/* -:h3.Join() - Join Two Objects Together - -If these are paths, this operator simply invokes the CONCAT macro. -Why so much code then, you ask? Well we have to check for object -types other than paths, and also check for certain path consistency -rules. -*/ - -struct segment * -Join(struct segment *p1, struct segment *p2) -{ -/* -We start with a whole bunch of very straightforward argument tests: -*/ - if (p2 != NULL) { - if (!ISPATHTYPE(p2->type)) { - - if (p1 == NULL) - return((struct segment *)Unique(p2)); - - switch (p1->type) { - - case REGIONTYPE: - - case STROKEPATHTYPE: - p1 = CoercePath(p1); - break; - - default: - return((struct segment *)BegHandle(p1, p2)); - } - } - - ARGCHECK((p2->last == NULL), "Join: right arg not anchor", p2, NULL, (1,p1), struct segment *); - p2 = UniquePath(p2); - -/* -In certain circumstances, we don't have to duplicate a permanent -location. (We would just end up destroying it anyway). These cases -are when 'p2' begins with a move-type segment: -*/ - if (p2->type == TEXTTYPE || p2->type == MOVETYPE) { - if (p1 == NULL) - return(p2); - if (ISLOCATION(p1)) { - p2->dest.x += p1->dest.x; - p2->dest.y += p1->dest.y; - ConsumePath(p1); - return(p2); - } - } - } - else - return((struct segment *)Unique(p1)); - - if (p1 != NULL) { - if (!ISPATHTYPE(p1->type)) - - switch (p2->type) { - - case REGIONTYPE: - - case STROKEPATHTYPE: - p2 = CoercePath(p2); - break; - - default: - return((struct segment *)EndHandle(p1, p2)); - } - - ARGCHECK((p1->last == NULL), "Join: left arg not anchor", p1, NULL, (1,p2), struct segment *); - p1 = UniquePath(p1); - } - else - return(p2); - -/* -At this point all the checking is done. We have two temporary non-null -path types in 'p1' and 'p2'. If p1 ends with a MOVE, and p2 begins with -a MOVE, we collapse the two MOVEs into one. We enforce the rule that -there may not be two MOVEs in a row: -*/ - - if (p1->last->type == MOVETYPE && p2->type == MOVETYPE) { - p1->last->flag |= p2->flag; - p1->last->dest.x += p2->dest.x; - p1->last->dest.y += p2->dest.y; - POP(p2); - if (p2 == NULL) - return(p1); - } -/* -Now we check for another silly rule. If a path has any TEXTTYPEs, -then it must have only TEXTTYPEs and MOVETYPEs, and furthermore, -it must begin with a TEXTTYPE. This rule makes it easy to check -for the special case of text. If necessary, we will coerce -TEXTTYPEs into paths so we don't mix TEXTTYPEs with normal paths. -*/ - if (p1->type == TEXTTYPE) { - if (p2->type != TEXTTYPE && !ISLOCATION(p2)) - p1 = CoerceText(p1); - } - else { - if (p2->type == TEXTTYPE) { - if (ISLOCATION(p1)) { - p2->dest.x += p1->dest.x; - p2->dest.y += p1->dest.y; - Free(p1); - return(p2); - } - else - p2 = CoerceText(p2); - } - } -/* -Thank God! Finally! It's hard to believe, but we are now able to -actually do the join. This is just invoking the CONCAT macro: -*/ - CONCAT(p1, p2); - - return(p1); -} - -/* -:h3.JoinSegment() - Create a Path Segment and Join It to a Known Path - -This internal function is quicker than a full-fledged join because -it can do much less checking. -*/ - -struct segment * -t1_JoinSegment(struct segment *before, /* path to join before new segment */ - int type, /* type of new segment (MOVETYPE or LINETYPE) */ - fractpel x, fractpel y, /* x,y of new segment */ - struct segment *after) /* path to join after new segment */ -{ - register struct segment *r; /* returned path built here */ - - r = PathSegment(type, x, y); - if (before != NULL) { - CONCAT(before, r); - r = before; - } - else - r->context = after->context; - if (after != NULL) - CONCAT(r, after); - return(r); -} - -/* -:h2.Other Path Functions - -*/ - - -struct segment * -t1_ClosePath(struct segment *p0, /* path to close */ - int lastonly) /* flag deciding to close all subpaths or... */ -{ - register struct segment *p,*last = NULL,*start; /* used in looping through path */ - register fractpel x,y; /* current position in path */ - register fractpel firstx = 0,firsty = 0; /* start position of sub path */ - register struct segment *lastnonhint = NULL; /* last non-hint segment in path */ - - if (p0 != NULL && p0->type == TEXTTYPE) - return(UniquePath(p0)); - if (p0->type == STROKEPATHTYPE) - return((struct segment *)Unique(p0)); - /* - * NOTE: a null closed path is different from a null open path - * and is denoted by a closed (0,0) move segment. We make - * sure this path begins and ends with a MOVETYPE: - */ - if (p0 == NULL || p0->type != MOVETYPE) - p0 = JoinSegment(NULL, MOVETYPE, 0, 0, p0); - TYPECHECK("ClosePath", p0, MOVETYPE, NULL, (0), struct segment *); - if (p0->last->type != MOVETYPE) - p0 = JoinSegment(p0, MOVETYPE, 0, 0, NULL); - - p0 = UniquePath(p0); - -/* -We now begin a loop through the path, -incrementing current 'x' and 'y'. We are searching -for MOVETYPE segments (breaks in the path) that are not already closed. -At each break, we insert a close segment. -*/ - for (p = p0, x = y = 0, start = NULL; - p != NULL; - x += p->dest.x, y += p->dest.y, last = p, p = p->link) - { - - if (p->type == MOVETYPE) { - if (start != NULL && (lastonly?p->link==NULL:TRUE) && - !(ISCLOSED(start->flag) && LASTCLOSED(last->flag))) { - register struct segment *r; /* newly created */ - - start->flag |= ISCLOSED(ON); - r = PathSegment(LINETYPE, firstx - x, - firsty - y); - INSERT(last, r, p); - r->flag |= LASTCLOSED(ON); - /*< adjust 'last' if possible for a 0,0 close >*/ -{ - -#define CLOSEFUDGE 3 /* if we are this close, let's change last segment */ - - if (r->dest.x != 0 || r->dest.y != 0) { - if (r->dest.x <= CLOSEFUDGE && r->dest.x >= -CLOSEFUDGE - && r->dest.y <= CLOSEFUDGE && r->dest.y >= -CLOSEFUDGE) { - lastnonhint->dest.x += r->dest.x; - lastnonhint->dest.y += r->dest.y; - r->dest.x = r->dest.y = 0; - } - } -} - if (p->link != NULL) { - p->dest.x += x - firstx; - p->dest.y += y - firsty; - x = firstx; - y = firsty; - } - } - start = p; - firstx = x + p->dest.x; - firsty = y + p->dest.y; - } - else if (p->type != HINTTYPE) - lastnonhint = p; - } - return(p0); -} -/* -*/ -/* -:h2.Reversing the Direction of a Path - -This turned out to be more difficult than I thought at first. The -trickiness was due to the fact that closed paths must remain closed, -etc. - -We need three subroutines: -*/ - -/* break a path at any point */ -static struct segment *SplitPath ( struct segment *anchor, - struct segment *before ); -/* breaks a path after first sub-path */ -static struct segment *DropSubPath ( struct segment *p0 ); -/* reverses a single sub-path */ -static struct segment *ReverseSubPath ( struct segment *p ); - -/* -:h3.Reverse() - User Operator to Reverse a Path - -This operator reverses the entire path. -*/ - -struct segment * -Reverse(struct segment *p) /* full path to reverse */ -{ - register struct segment *r; /* output path built here */ - register struct segment *nextp; /* contains next sub-path */ - - if (p == NULL) - return(NULL); - - ARGCHECK(!ISPATHANCHOR(p), "Reverse: invalid path", p, NULL, (0), struct segment *); - - if (p->type == TEXTTYPE) - p = CoerceText(p); - p = UniquePath(p); - - r = NULL; - - do { - nextp = DropSubPath(p); - p = ReverseSubPath(p); - r = Join(p, r); - p = nextp; - - } while (p != NULL); - - return(r); -} - -/* -:h4.ReverseSubPath() - Subroutine to Reverse a Single Sub-Path -*/ - -static struct segment * -ReverseSubPath(struct segment *p) /* input path */ -{ - register struct segment *r; /* reversed path will be created here */ - register struct segment *nextp; /* temporary variable used in loop */ - register int wasclosed; /* flag, path was closed */ - - if (p == NULL) - return(NULL); - - wasclosed = ISCLOSED(p->flag); - r = NULL; - - do { -/* -First we reverse the direction of this segment and clean up its flags: -*/ - p->dest.x = - p->dest.x; p->dest.y = - p->dest.y; - p->flag &= ~(ISCLOSED(ON) | LASTCLOSED(ON)); - - switch (p->type) { - - case LINETYPE: - case MOVETYPE: - break; - - case CONICTYPE: - { -/* -The logic of this is that the new M point (stored relative to the new -beginning) is (M - C). However, C ("dest") has already been reversed -So, we add "dest" instead of subtracting it: -*/ - register struct conicsegment *cp = (struct conicsegment *) p; - - cp->M.x += cp->dest.x; cp->M.y += cp->dest.y; - } - break; - - case BEZIERTYPE: - { - register struct beziersegment *bp = (struct beziersegment *) p; - - bp->B.x += bp->dest.x; bp->B.y += bp->dest.y; - bp->C.x += bp->dest.x; bp->C.y += bp->dest.y; - } - break; - - case HINTTYPE: - { - register struct hintsegment *hp = (struct hintsegment *) p; - - hp->ref.x = -hp->ref.x; hp->ref.y = -hp->ref.y; - } - break; - - default: - Abort("Reverse: bad path segment"); - } -/* -We need to reverse the order of segments too, so we break this segment -off of the input path, and tack it on the front of the growing path -in 'r': -*/ - nextp = p->link; - p->link = NULL; - p->last = p; - if (r != NULL) - CONCAT(p,r); /* leaves result in 'p'... not what we want */ - r = p; - p = nextp; /* advance to next segment in input path */ - - } while (p != NULL); - - if (wasclosed) - r = ClosePath(r); - - return(r); -} - -/* -:h4.DropSubPath() - Drops the First Sub-Path Off a Path - -This subroutine returns the remaining sub-path(s). While doing so, it -breaks the input path after the first sub-path so that a pointer to -the original path now contains the first sub-path only. -*/ - -static struct segment * -DropSubPath(struct segment *p0) /* original path */ -{ - register struct segment *p; /* returned remainder here */ - - for (p = p0; p->link != NULL; p = p->link) { - if (p->link->type == MOVETYPE) - break; - } - - return(SplitPath(p0, p)); -} - -static struct segment * -SplitPath(struct segment *anchor, struct segment *before) -{ - register struct segment *r; - - if (before == anchor->last) - return(NULL); - - r = before->link; - r->last = anchor->last; - anchor->last = before; - before->link = NULL; - - return(r); -} - -static void -UnClose(struct segment *p0) -{ - register struct segment *p; - - for (p=p0; p->link->link != NULL; p=p->link) { ; } - - if (!LASTCLOSED(p->link->flag)) - Abort("UnClose: no LASTCLOSED"); - - Free(SplitPath(p0, p)); - p0->flag &= ~ISCLOSED(ON); -} - -/* -:h3.ReverseSubPaths() - Reverse the Direction of Sub-paths Within a Path - -This user operator reverses the sub-paths in a path, but leaves the -'move' segments unchanged. It builds on top of the subroutines -already established. -*/ - -struct segment * -ReverseSubPaths(struct segment *p) /* input path */ -{ - register struct segment *r; /* reversed path will be created here */ - register struct segment *nextp; /* temporary variable used in loop */ - int wasclosed; /* flag; subpath was closed */ - register struct segment *nomove; /* the part of sub-path without move segment */ - struct fractpoint delta; - - if (p == NULL) - return(NULL); - - ARGCHECK(!ISPATHANCHOR(p), "ReverseSubPaths: invalid path", p, NULL, (0), struct segment *); - - if (p->type == TEXTTYPE) - p = CoerceText(p); - if (p->type != MOVETYPE) - p = JoinSegment(NULL, MOVETYPE, 0, 0, p); - - p = UniquePath(p); - - r = NULL; - - for (; p != NULL;) { - nextp = DropSubPath(p); - wasclosed = ISCLOSED(p->flag); - if (wasclosed) - UnClose(p); - - nomove = SplitPath(p, p); - r = Join(r, p); - - PathDelta(nomove, &delta); - - nomove = ReverseSubPath(nomove); - p->dest.x += delta.x; - p->dest.y += delta.y; - if (nextp != NULL) { - nextp->dest.x += delta.x; - nextp->dest.y += delta.y; - } - if (wasclosed) { - nomove = ClosePath(nomove); - nextp->dest.x -= delta.x; - nextp->dest.y -= delta.y; - } - r = Join(r, nomove); - p = nextp; - - } - - return(r); -} - -/* -:h2.Transforming and Putting Handles on Paths - -:h3.PathTransform() - Transform a Path - -Transforming a path involves transforming all the points. In order -that closed paths do not become "unclosed" when their relative -positions are slightly changed due to loss of arithmetic precision, -all point transformations are in absolute coordinates. - -(It might be better to reset the "absolute" coordinates every time a -move segment is encountered. This would mean that we could accumulate -error from subpath to subpath, but we would be less likely to make -the "big error" where our fixed point arithmetic "wraps". However, I -think I'll keep it this way until something happens to convince me -otherwise.) - -The transform is described as a "space", that way we can use our -old friend the "iconvert" function, which should be very efficient. -*/ - -struct segment * -PathTransform(struct segment *p0, /* path to transform */ - struct XYspace *S) /* pseudo space to transform in */ -{ - register struct segment *p; /* to loop through path with */ - register fractpel newx,newy; /* current transformed position in path */ - register fractpel oldx,oldy; /* current untransformed position in path */ - register fractpel savex,savey; /* save path delta x,y */ - - p0 = UniquePath(p0); - - newx = newy = oldx = oldy = 0; - - for (p=p0; p != NULL; p=p->link) { - - savex = p->dest.x; savey = p->dest.y; - - (*S->iconvert)(&p->dest, S, p->dest.x + oldx, p->dest.y + oldy); - p->dest.x -= newx; - p->dest.y -= newy; - - switch (p->type) { - - case LINETYPE: - case MOVETYPE: - break; - - case CONICTYPE: - { - register struct conicsegment *cp = (struct conicsegment *) p; - - (*S->iconvert)(&cp->M, S, cp->M.x + oldx, cp->M.y + oldy); - cp->M.x -= newx; - cp->M.y -= newy; - /* - * Note roundness doesn't change... linear transform - */ - break; - } - - - case BEZIERTYPE: - { - register struct beziersegment *bp = (struct beziersegment *) p; - - (*S->iconvert)(&bp->B, S, bp->B.x + oldx, bp->B.y + oldy); - bp->B.x -= newx; - bp->B.y -= newy; - (*S->iconvert)(&bp->C, S, bp->C.x + oldx, bp->C.y + oldy); - bp->C.x -= newx; - bp->C.y -= newy; - break; - } - - case HINTTYPE: - { - register struct hintsegment *hp = (struct hintsegment *) p; - - (*S->iconvert)(&hp->ref, S, hp->ref.x + oldx, hp->ref.y + oldy); - hp->ref.x -= newx; - hp->ref.y -= newy; - (*S->iconvert)(&hp->width, S, hp->width.x, hp->width.y); - /* Note: width is not relative to origin */ - break; - } - - case TEXTTYPE: - { - XformText(p,S); - break; - } - - default: - Abort("PathTransform: invalid segment"); - } - oldx += savex; - oldy += savey; - newx += p->dest.x; - newy += p->dest.y; - } - return(p0); -} - -/* -:h3.PathDelta() - Return a Path's Ending Point -*/ - -void -PathDelta(struct segment *p, /* input path */ - struct fractpoint *pt) /* pointer to x,y to set */ -{ - struct fractpoint mypoint; /* I pass this to TextDelta */ - register fractpel x,y; /* working variables for path current point */ - - for (x=y=0; p != NULL; p=p->link) { - x += p->dest.x; - y += p->dest.y; - if (p->type == TEXTTYPE) { - TextDelta(p, &mypoint); - x += mypoint.x; - y += mypoint.y; - } - } - - pt->x = x; - pt->y = y; -} - -/* -:h3.BoundingBox() - Produce a Bounding Box Path - -This function is called by image code, when we know the size of the -image in pels, and need to get a bounding box path that surrounds it. -The starting/ending handle is in the lower right hand corner. -*/ -struct segment * -BoundingBox(pel h, pel w) /* size of box */ -{ - register struct segment *path; - - path = PathSegment(LINETYPE, -TOFRACTPEL(w), 0); - path = JoinSegment(NULL, LINETYPE, 0, -TOFRACTPEL(h), path); - path = JoinSegment(NULL, LINETYPE, TOFRACTPEL(w), 0, path); - path = ClosePath(path); - - return(path); -} - -/* -:h2.Querying Locations and Paths - -:h3.QueryLoc() - Return the X,Y of a Locition -*/ - -void -QueryLoc(struct segment *P, /* location to query, not consumed */ - struct XYspace *S, /* XY space to return coordinates in */ - double *xP, double *yP) /* coordinates returned here */ -{ - if (!ISLOCATION(P)) { - ArgErr("QueryLoc: first arg not a location", P, NULL); - return; - } - if (S->type != SPACETYPE) { - ArgErr("QueryLoc: second arg not a space", S, NULL); - return; - } - UnConvert(S, &P->dest, xP, yP); -} -/* -:h3.QueryPath() - Find Out the Type of Segment at the Head of a Path - -This is a very simple routine that looks at the first segment of a -path and tells the caller what it is, as well as returning the control -point(s) of the path segment. Different path segments have different -number of control points. If the caller knows that the segment is -a move segment, for example, he only needs to pass pointers to return -one control point. -*/ - -void -QueryPath(struct segment *path, /* path to check */ - int *typeP, /* return the type of path here */ - struct segment **Bp, /* return location of first point */ - struct segment **Cp, /* return location of second point */ - struct segment **Dp, /* return location of third point */ - double *fP) /* return Conic sharpness */ -{ - register int coerced = FALSE; /* did I coerce a text path? */ - - if (path == NULL) { - *typeP = -1; - return; - } - if (!ISPATHANCHOR(path)) { - ArgErr("QueryPath: arg not a valid path", path, NULL); - } - if (path->type == TEXTTYPE) { - path = CoerceText(path); - coerced = TRUE; - } - - switch (path->type) { - - case MOVETYPE: - *typeP = 0; - *Bp = PathSegment(MOVETYPE, path->dest.x, path->dest.y); - break; - - case LINETYPE: - *typeP = (LASTCLOSED(path->flag)) ? 4 : 1; - *Bp = PathSegment(MOVETYPE, path->dest.x, path->dest.y); - break; - - case CONICTYPE: - { - register struct conicsegment *cp = (struct conicsegment *) path; - - *typeP = 2; - *Bp = PathSegment(MOVETYPE, cp->M.x, cp->M.y); - *Cp = PathSegment(MOVETYPE, cp->dest.x, cp->dest.y); - *fP = cp->roundness; - } - break; - - case BEZIERTYPE: - { - register struct beziersegment *bp = (struct beziersegment *) path; - - *typeP = 3; - *Bp = PathSegment(MOVETYPE, bp->B.x, bp->B.y); - *Cp = PathSegment(MOVETYPE, bp->C.x, bp->C.y); - *Dp = PathSegment(MOVETYPE, bp->dest.x, bp->dest.y); - } - break; - - case HINTTYPE: - *typeP = 5; - break; - - default: - Abort("QueryPath: unknown segment"); - } - if (coerced) - KillPath(path); -} -/* -:h3.QueryBounds() - Return the Bounding Box of a Path - -Returns the bounding box by setting the user's variables. -*/ - -void -QueryBounds(struct segment *p0, /* object to check for bound */ - struct XYspace *S, /* coordinate space of returned values */ - double *xminP, /* lower left hand corner (set by routine) */ - double *yminP, - double *xmaxP, /* upper right hand corner (set by routine) */ - double *ymaxP) -{ - register struct segment *path; /* loop variable for path segments */ - register fractpel lastx,lasty; /* loop variables: previous endingpoint */ - register fractpel x,y; /* loop variables: current ending point */ - struct fractpoint min; /* registers to keep lower left hand corner */ - struct fractpoint max; /* registers to keep upper right hand corner */ - int coerced = FALSE; /* we have coerced the path from another object */ - double x1,y1,x2,y2,x3,y3,x4,y4; /* corners of rectangle in space X */ - - if (S->type != SPACETYPE) { - ArgErr("QueryBounds: bad XYspace", S, NULL); - return; - } - - min.x = min.y = max.x = max.y = 0; - if (p0 != NULL) { - if (!ISPATHANCHOR(p0)) { - switch(p0->type) { - case STROKEPATHTYPE: - /* replaced DupStrokePath() with Dup() 3-26-91 PNM */ - p0 = (struct segment *) DoStroke(Dup(p0)); - /* no break here, we have a region in p0 */ - case REGIONTYPE: - p0 = RegionBounds((struct region *)p0); - break; - - case PICTURETYPE: - p0 = PictureBounds(p0); - break; - - default: - ArgErr("QueryBounds: bad object", p0, NULL); - return; - } - coerced = TRUE; - } - if (p0->type == TEXTTYPE) { - /* replaced CopyPath() with Dup() 3-26-91 PNM */ - p0 = (struct segment *)CoerceText(Dup(p0)); /* there are faster ways */ - coerced = TRUE; - } - if (p0->type == MOVETYPE) { - min.x = max.x = p0->dest.x; - min.y = max.y = p0->dest.y; - } - } - lastx = lasty = 0; - - for (path = p0; path != NULL; path = path->link) { - - x = lastx + path->dest.x; - y = lasty + path->dest.y; - - switch (path->type) { - - case LINETYPE: - break; - - case CONICTYPE: - { - register struct conicsegment *cp = (struct conicsegment *) path; - register fractpel Mx = lastx + cp->M.x; - register fractpel My = lasty + cp->M.y; - register fractpel deltax = 0.5 * cp->roundness * cp->dest.x; - register fractpel deltay = 0.5 * cp->roundness * cp->dest.y; - register fractpel Px = Mx - deltax; - register fractpel Py = My - deltay; - register fractpel Qx = Mx + deltax; - register fractpel Qy = My + deltay; - - - if (Mx < min.x) min.x = Mx; - else if (Mx > max.x) max.x = Mx; - if (My < min.y) min.y = My; - else if (My > max.y) max.y = My; - - if (Px < min.x) min.x = Px; - else if (Px > max.x) max.x = Px; - if (Py < min.y) min.y = Py; - else if (Py > max.y) max.y = Py; - - if (Qx < min.x) min.x = Qx; - else if (Qx > max.x) max.x = Qx; - if (Qy < min.y) min.y = Qy; - else if (Qy > max.y) max.y = Qy; - } - break; - - - case MOVETYPE: - /* - * We can't risk adding trailing Moves to the - * bounding box: - */ - if (path->link == NULL) - goto done; /* God forgive me */ - break; - - case BEZIERTYPE: - { - register struct beziersegment *bp = (struct beziersegment *) path; - register fractpel Bx = lastx + bp->B.x; - register fractpel By = lasty + bp->B.y; - register fractpel Cx = lastx + bp->C.x; - register fractpel Cy = lasty + bp->C.y; - - if (Bx < min.x) min.x = Bx; - else if (Bx > max.x) max.x = Bx; - if (By < min.y) min.y = By; - else if (By > max.y) max.y = By; - - if (Cx < min.x) min.x = Cx; - else if (Cx > max.x) max.x = Cx; - if (Cy < min.y) min.y = Cy; - else if (Cy > max.y) max.y = Cy; - } - break; - - case HINTTYPE: - break; - default: - Abort("QueryBounds: unknown type"); - } - - if (x < min.x) min.x = x; - else if (x > max.x) max.x = x; - if (y < min.y) min.y = y; - else if (y > max.y) max.y = y; - - lastx = x; lasty = y; - } -done: - UnConvert(S, &min, &x1, &y1); - UnConvert(S, &max, &x4, &y4); - x = min.x; min.x = max.x; max.x = x; - UnConvert(S, &min, &x2, &y2); - UnConvert(S, &max, &x3, &y3); - - *xminP = *xmaxP = x1; - if (x2 < *xminP) *xminP = x2; - else if (x2 > *xmaxP) *xmaxP = x2; - if (x3 < *xminP) *xminP = x3; - else if (x3 > *xmaxP) *xmaxP = x3; - if (x4 < *xminP) *xminP = x4; - else if (x4 > *xmaxP) *xmaxP = x4; - - *yminP = *ymaxP = y1; - if (y2 < *yminP) *yminP = y2; - else if (y2 > *ymaxP) *ymaxP = y2; - if (y3 < *yminP) *yminP = y3; - else if (y3 > *ymaxP) *ymaxP = y3; - if (y4 < *yminP) *yminP = y4; - else if (y4 > *ymaxP) *ymaxP = y4; - - if (coerced) - Destroy(p0); -} -/* -:h3.BoxPath() -*/ -struct segment * -BoxPath(struct XYspace *S, int h, int w) -{ - struct segment *path; - - path = Join( Line(ILoc(S, w, 0)), Line(ILoc(S, 0, h)) ); - path = JoinSegment(path, LINETYPE, -path->dest.x, -path->dest.y, NULL); - return(ClosePath(path)); -} - -/* -:h3.DropSegment() - Drop the First Segment in a Path - -This routine takes the path and returns a new path that is one segment -shorter. It can be used in conjunction with QueryPath(), for example, -to ask about an entire path. -*/ - -struct segment * -DropSegment(struct segment *path) -{ - if (path != NULL && path->type == STROKEPATHTYPE) - path = CoercePath(path); - ARGCHECK((path == NULL || !ISPATHANCHOR(path)), - "DropSegment: arg not a non-null path", path, path, (0), struct segment *); - if (path->type == TEXTTYPE) - path = CoerceText(path); - path = UniquePath(path); - - POP(path); - return(path); -} -/* -:h3.HeadSegment() - Return the First Segment in a Path - -This routine takes the path and returns a new path consists of the -first segment only. -*/ - -struct segment * -HeadSegment(struct segment *path) /* input path */ -{ - if (path == NULL) - return(NULL); - if (path->type == STROKEPATHTYPE) - path = CoercePath(path); - ARGCHECK(!ISPATHANCHOR(path), "HeadSegment: arg not a path", path, path, (0), struct segment *); - if (path->type == TEXTTYPE) - path = CoerceText(path); - path = UniquePath(path); - - if (path->link != NULL) - KillPath(path->link); - path->link = NULL; - path->last = path; - return(path); -} - -/* -:h2.Path Debug Routines - -:h3.DumpPath() - Display a Path on the Trace File -*/ - -void -DumpPath(struct segment *p) -{ -} diff --git a/nx-X11/lib/font/Type1/paths.h b/nx-X11/lib/font/Type1/paths.h deleted file mode 100644 index b61275b..0000000 --- a/nx-X11/lib/font/Type1/paths.h +++ /dev/null @@ -1,239 +0,0 @@ -/* $Xorg: paths.h,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/paths.h,v 1.3 1999/08/22 08:58:53 dawes Exp $ */ - -/*SHARED*/ - -#define Loc(S,x,y) t1_Loc(S,(double)x,(double)y) -#define ILoc(S,x,y) t1_ILoc(S,x,y) -#define Line(P) t1_Line(P) -#define Join(p1,p2) t1_Join(p1,p2) -#define ClosePath(p) t1_ClosePath(p,0) -#define CloseLastSubPath(p) t1_ClosePath(p,1) -#define Conic(B,C,s) t1_Conic(B,C,(double)s) -#define RoundConic(M,C,r) t1_RoundConic(M,C,(double)r) -#define ArcP3(S,P2,P3) t1_ArcP3(S,P2,P3) -#define ArcCA(S,C,d) t1_ArcCA(S,C,(double)d) -#define Bezier(B,C,D) t1_Bezier(B,C,D) -#define Hint(S,r,w,o,h,a,d,l) t1_Hint(S,r,w,o,h,a,d,l) -#define Reverse(p) t1_Reverse(p) -#define ReverseSubPaths(p) t1_ReverseSubPaths(p) -#define AddLoc(p1,p2) t1_Join(p1,p2) -#define SubLoc(p1,p2) t1_SubLoc(p1,p2) -#define DropSegment(p) t1_DropSegment(p) -#define HeadSegment(p) t1_HeadSegment(p) -#define QueryLoc(P,S,x,y) t1_QueryLoc(P,S,x,y) -#define QueryPath(p,t,B,C,D,r) t1_QueryPath(p,t,B,C,D,r) -#define QueryBounds(p,S,x1,y1,x2,y2) t1_QueryBounds(p,S,x1,y1,x2,y2) - - -/* create a location object (or "move" segment) */ -extern struct segment *t1_Loc ( struct XYspace *S, double x, double y ); -/* integer argument version of same */ -extern struct segment *t1_ILoc ( struct XYspace *S, int x, int y ); -/* straight line path segment */ -extern struct segment *t1_Line ( struct segment *P ); -/* join two paths or regions together */ -extern struct segment *t1_Join ( struct segment *p1, struct segment *p2 ); -/* close a path or path set */ -extern struct segment *t1_ClosePath ( struct segment *p0, int lastonly ); -#if 0 -struct conicsegment *t1_Conic(); /* conic curve path segment */ - -struct conicsegment *t1_RoundConic(); /* ditto, specified another way */ -struct conicsegment *t1_ArcP3(); /* circular path segment with three points */ -struct conicsegment *t1_ArcCA(); /* ditto, with center point and angle */ -#endif -/* Bezier third order curve path segment */ -extern struct beziersegment *t1_Bezier ( struct segment *B, struct segment *C, - struct segment *D ); -/* produce a font 'hint' path segment */ -extern struct hintsegment *t1_Hint ( struct XYspace *S, float ref, float width, - char orientation, char hinttype, - char adjusttype, char direction, - int label ); -/* reverse the complete order of paths */ -extern struct segment *t1_Reverse ( struct segment *p ); -/* reverse only sub-paths; moves unchanged */ -extern struct segment *t1_ReverseSubPaths ( struct segment *p ); -/* subtract two location objects */ -extern struct segment *t1_SubLoc ( struct segment *p1, struct segment *p2 ); -/* Drop the first segment in a path */ -extern struct segment *t1_DropSegment ( struct segment *path ); -/* return the first segment in a path */ -extern struct segment *t1_HeadSegment ( struct segment *path ); -/* Query location; return its (x,y) */ -extern void t1_QueryLoc ( struct segment *P, struct XYspace *S, double *xP, - double *yP ); -/* Query segment at head of a path */ -extern void t1_QueryPath ( struct segment *path, int *typeP, - struct segment **Bp, struct segment **Cp, - struct segment **Dp, double *fP ); -/* Query the bounding box of a path */ -extern void t1_QueryBounds ( struct segment *p0, struct XYspace *S, - double *xminP, double *yminP, - double *xmaxP, double *ymaxP ); - -/*END SHARED*/ -/*SHARED*/ - -#define CopyPath(p) t1_CopyPath(p) -#define KillPath(p) t1_KillPath(p) -#define PathTransform(p,m) t1_PathXform(p,m) -#define PathDelta(p,pt) t1_PathDelta(p,pt) -#define BoundingBox(h,w) t1_BoundingBox(h,w) -#define PathSegment(t,x,y) t1_PathSegment(t,(fractpel)x,(fractpel)y) -#define JoinSegment(b,t,x,y,a) t1_JoinSegment(b,t,(fractpel)x,(fractpel)y,a) -#define Hypoteneuse(dx,dy) t1_Hypoteneuse(dx,dy) -#define BoxPath(S,h,w) t1_BoxPath(S,h,w) - -/* duplicate a path */ -extern struct segment *t1_CopyPath ( struct segment *p0 ); -/* destroy a path */ -extern void t1_KillPath ( struct segment *p ); -/* transform a path arbitrarily */ -extern struct segment *t1_PathXform ( struct segment *p0, struct XYspace *S ); -/* calculate the ending point of a path */ -extern void t1_PathDelta ( struct segment *p, struct fractpoint *pt ); -/* */ -extern struct segment *t1_BoundingBox ( pel h, pel w ); -/* produce a MOVE or LINE segment */ -extern struct segment *t1_PathSegment ( int type, fractpel x, fractpel y ); -/* join a MOVE or LINE segment to a path */ -extern struct segment *t1_JoinSegment ( struct segment *before, int type, fractpel x, fractpel y, struct segment *after ); -#if 0 -double t1_Hypoteneuse(); /* returns the length of a line */ -#endif -/* returns a rectangular path */ -extern struct segment *t1_BoxPath ( struct XYspace *S, int h, int w ); - -/*END SHARED*/ -/*SHARED*/ - -#define ConsumePath(p) MAKECONSUME(p,KillPath(p)) -#define UniquePath(p) MAKEUNIQUE(p,CopyPath(p)) - -/*END SHARED*/ -/*SHARED*/ - -struct segment { - XOBJ_COMMON /* xobject common data define 3-26-91 PNM */ - unsigned char size; /* size of the structure */ - unsigned char context; /* index to device context */ - struct segment *link; /* pointer to next structure in linked list */ - struct segment *last; /* pointer to last structure in list */ - struct fractpoint dest; /* relative ending location of path segment */ -} ; - -#define ISCLOSED(flag) ((flag)&0x80) /* subpath is closed */ -#define LASTCLOSED(flag) ((flag)&0x40) /* last segment in closed subpath */ - -/* -NOTE: The ISCLOSED flag is set on the MOVETYPE segment before the -subpath proper; the LASTCLOSED flag is set on the last segment (LINETYPE) -in the subpath - -We define the ISPATHANCHOR predicate to test that a path handle -passed by the user is valid: -*/ - -#define ISPATHANCHOR(p) (ISPATHTYPE(p->type)&&p->last!=NULL) - -/* -For performance reasons, a user's "location" object is identical to -a path whose only segment is a move segment. We define a predicate -to test for this case. See also :hdref refid=location.. -*/ - -#define ISLOCATION(p) ((p)->type == MOVETYPE && (p)->link == NULL) - -/*END SHARED*/ -/*SHARED*/ - -struct conicsegment { - XOBJ_COMMON /* xobject common data define 3-26-91 PNM */ - /* type = CONICTYPE */ - unsigned char size; /* as with any 'segment' type */ - unsigned char context; /* as with any 'segment' type */ - struct segment *link; /* as with any 'segment' type */ - struct segment *last; /* as with any 'segment' type */ - struct fractpoint dest; /* Ending point (C point) */ - struct fractpoint M; /* "midpoint" of conic explained above */ - float roundness; /* explained above */ -} ; -/*END SHARED*/ -/*SHARED*/ - -struct beziersegment { - XOBJ_COMMON /* xobject common data define 3-26-91 PNM */ - /* type = BEZIERTYPE */ - unsigned char size; /* as with any 'segment' type */ - unsigned char context; /* as with any 'segment' type */ - struct segment *link; /* as with any 'segment' type */ - struct segment *last; /* as with any 'segment' type */ - struct fractpoint dest; /* ending point (D) */ - struct fractpoint B; /* control point B */ - struct fractpoint C; /* control point C */ -} ; - -/*END SHARED*/ -/*SHARED*/ - -struct hintsegment { - XOBJ_COMMON /* xobject common data define 3-26-91 PNM */ - /* type = HINTTYPE */ - unsigned char size; /* size of the structure */ - unsigned char context; /* device context */ - struct segment *link; /* pointer to next structure in linked list */ - struct segment *last; /* pointer to last structure in list */ - struct fractpoint dest; /* ALWAYS 0,0 */ - struct fractpoint ref; - struct fractpoint width; - char orientation; - char hinttype; - char adjusttype; - char direction; - int label; -} ; - -/*END SHARED*/ -/*SHARED*/ - -/* -CONCAT links the 'p2' path chain on the end of the 'p1' chain. (This macro -is also used by the STROKES module.) -*/ -#define CONCAT(p1, p2) { \ - p1->last->link = p2; /* link p2 on end of p1 */ \ - p1->last = p2->last; /* last of new is last of p2 */ \ - p2->last = NULL; } /* only first segment has non-NULL "last" */ - -/*END SHARED*/ -/* dump a path list */ -extern void t1_DumpPath ( struct segment *p ); diff --git a/nx-X11/lib/font/Type1/pictures.h b/nx-X11/lib/font/Type1/pictures.h deleted file mode 100644 index 0abc715..0000000 --- a/nx-X11/lib/font/Type1/pictures.h +++ /dev/null @@ -1,50 +0,0 @@ -/* $Xorg: pictures.h,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/pictures.h,v 1.3 1999/08/22 08:58:53 dawes Exp $ */ - -/* STUB */ - -#define CopyPicture(p) p -#define UniquePicture(p) p -#define KillPicture(p) -#define BegHandle(o,m) o -#define EndHandle(o,m) o -#define PictureBounds(P) P - -struct picture { - struct fractpoint origin; - struct fractpoint ending; -}; - -#define Phantom(o) t1_Phantom(o) -#define Snap(o) t1_Snap(o) - -extern struct segment *t1_Phantom ( struct segment *p ); -extern struct segment *t1_Snap ( struct segment *p ); diff --git a/nx-X11/lib/font/Type1/range.h b/nx-X11/lib/font/Type1/range.h deleted file mode 100644 index 496f000..0000000 --- a/nx-X11/lib/font/Type1/range.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#if XFONT_CID -#define CID_NAME_MAX 255 /* max # of characters in a file name */ -#define CID_PATH_MAX 1024 /* max # of characters in a path name */ - -typedef struct spacerange_code { - unsigned int srcCodeLo; - unsigned int srcCodeHi; -} spacerangecode; - -typedef struct space_range { - struct space_range *next; - int rangecnt; - struct spacerange_code *spacecode; -} spacerange; - -typedef struct cidrange_code { - unsigned int srcCodeLo; - unsigned int srcCodeHi; - unsigned int dstCIDLo; -} cidrangecode; - -typedef struct cid_range { - struct cid_range *next; - int rangecnt; - struct cidrange_code *range; -} cidrange; -#endif diff --git a/nx-X11/lib/font/Type1/regions.c b/nx-X11/lib/font/Type1/regions.c deleted file mode 100644 index f8875da..0000000 --- a/nx-X11/lib/font/Type1/regions.c +++ /dev/null @@ -1,1651 +0,0 @@ -/* $Xorg: regions.c,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/regions.c,v 3.8tsi Exp $ */ - /* REGIONS CWEB V0023 LOTS */ -/* -:h1 id=regions.REGIONS Module - Regions Operator Handler - -This module is responsible for creating and manipulating regions. - -&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) - - -:h3.Include Files - -The included files are: -*/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef FONTMODULE -# include "os.h" -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" -#include "curves.h" -#include "lines.h" -#include "pictures.h" -#include "fonts.h" -#include "hints.h" -#include "strokes.h" /* to pick up 'DoStroke' */ - - -static void newfilledge ( struct region *R, fractpel xmin, fractpel xmax, - fractpel ymin, fractpel ymax, int isdown ); -static struct edgelist *splitedge ( struct edgelist *list, pel y ); -static void vertjoin ( struct edgelist *top, struct edgelist *bottom ); -static int touches ( int h, pel *left, pel *right ); -static int crosses ( int h, pel *left, pel *right ); -static void edgemin ( int h, pel *e1, pel *e2 ); -static void edgemax ( int h, pel *e1, pel *e2 ); -static struct edgelist *NewEdge ( pel xmin, pel xmax, pel ymin, pel ymax, - pel *xvalues, int isdown ); -static struct edgelist *swathxsort ( struct edgelist *before0, - struct edgelist *edge ); -/* -:h3.Functions Provided to the TYPE1IMAGER User - -This module provides the following TYPE1IMAGER entry points: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Functions Provided to Other Modules - -This module provides the following entry points to other modules: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Macros Provided to Other Modules - -:h4.GOING_TO() - Macro Predicate Needed for Changing Direction, Etc. - -The actual generation of run end lists (edge boundaries) is left -to the low level rasterizing modules, LINES and CURVES. There -are some global region-type -questions that occur when doing a low-level -rasterization: -:ol. -:li.Did we just change direction in Y and therefore need to start -a new edge? -:li.Did we run out of allocated edge space? -:li.Do the minimum or maximum X values for the current edge need -updating? -:eol. -In general the REGIONS is not smart enough to answer those questions -itself. (For example, determining if and when a curve changes direction -may need detailed curve knowledge.) Yet, this must be done efficiently. -We provide a macro "GOING_TO" where the invoker tells us where it is -heading for (x2,y2), plus where it is now (x1,y1), plus the current -region under construction, and the macro answers the questions above. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h2.Data Structures Used to Represent Regions - -:h3.The "region" Structure - -The region structure is an anchor for a linked list of "edgelist" -structures (see :hdref refid=edgelist..). It also summarizes the -information in the edgelist structures (for example, the bounding -box of the region). And, it contains scratch areas used during -the creation of a region. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -The ISOPTIMIZED flag tells us if we've put a permanent region in -'optimal' form. -*/ -#define ISOPTIMIZED(flag) ((flag)&0x10) - -/* -The ISRECTANGULAR flag tells us if a region is a rectangle. We don't -always notice rectangles--if this flag is set, the region definitely -is a rectangle, but some rectangular regions will not have the flag -set. The flag is used to optimize some paths. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h4."TT_INFINITY" - A Constant Region Structure of Infinite Extent - -Infinity is the complement of a null area: -Note - removed the refcount = 1 init, replaced with references = 2 3-26-91 PNM -*/ -static struct region _infinity = { REGIONTYPE, - ISCOMPLEMENT(ON)+ISINFINITE(ON)+ISPERMANENT(ON)+ISIMMORTAL(ON), 2, - {0, 0}, {0, 0}, - 0, 0, 0, 0, - NULL, NULL, - 0, 0, 0, 0, 0, NULL, NULL, - NULL, 0, NULL, NULL }; -struct region *TT_INFINITY = &_infinity; - -/* -:h4."EmptyRegion" - A Region Structure with Zero Area - -This structure is used to initialize the region to be built in -Interior(): -Note - replaced refcount = 1 init with references = 2 3-26-91 PNM -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -struct region EmptyRegion = { REGIONTYPE, - ISPERMANENT(ON)+ISIMMORTAL(ON), 2, - {0, 0}, {0, 0}, - MAXPEL, MAXPEL, MINPEL, MINPEL, - NULL, NULL, - 0, 0, 0, 0, 0, NULL, NULL, - NULL, 0, NULL, NULL }; - -/* -:h3 id=edgelist.The "edgelist" Structure - -Regions are represented by a linked list of 'edgelist' structures. -When a region is complete, the structures are paired, one for the -left and one for the right edge. While a region is being built, -this rule may be violated temporarily. - -An 'edgelist' structure contains the X values for a given span -of Y values. The (X,Y) pairs define an edge. We use the crack -and edge coordinate system, so that integer values of X and Y -go between pels. The edge is defined between the minimum Y and -maximum Y. - -The linked list is kept sorted from top to bottom, that is, in -increasing y. Also, if 'e1' is an edgelist structure and 'e2' is the -next one in the list, they must have exactly the same ymin,ymax values -or be totally disjoint. These two requirements mean that if e2's ymin -is less than e1's ymax, it must be exactly equal to e1's ymin. A -sublist of structures with identical ymin and ymax values is called a -'swath'. - -In addition, edgelist structures are separately linked together based -on what subpath originally created them; each subpath is kept as a -separate circular linked list. This information is ignored unless -continuity checking is invoked. See :hdref refid=subpath. for a -complete description of this. -*/ - - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -The "edgelist" structure follows the convention of TYPE1IMAGER user -objects, having a type field and a flag field as the first two -elements. However, the user never sees "edgelist" structures -directly; he is given handles to "region" structures only. - -By having a type field, we can use the "copy" feature of Allocate() -to duplicate edge lists quickly. - -We also define two flag bits for this structure. The ISDOWN bit is set -if the edge is going in the direction of increasing Y. The ISAMBIGUOUS -bit is set if the edge is identical to its neighbor (edge->link); such -edges may be "left" when they should be "right", or vice versa, -unnecessarily confusing the continuity checking logic. The FixSubPaths() -routine in HINTS will swap ambiguous edges if that avoids crossing edges; -see :hdref refid=fixsubp.. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.KillRegion() - Destroys a Region - -KillRegion nominally just decrements the reference count to that region. -If the reference count becomes 0, all memory associated with it is -freed. We just follow the linked list, freeing as we go, then kill any -associated (thresholded) picture. -Note - added conditional return based on references 3-26-91 PNM -*/ - -void -KillRegion(struct region *area) /* area to free */ -{ - register struct edgelist *p; /* loop variable */ - register struct edgelist *next; /* loop variable */ - - if (area->references < 0) - Abort("KillRegion: negative reference count"); - if ( (--(area->references) > 1) || - ( (area->references == 1) && !ISPERMANENT(area->flag) ) ) - return; - - for (p=area->anchor; p != NULL; p=next) { - next = p->link; - Free(p); - } - if (area->thresholded != NULL) - KillPicture(area->thresholded); - Free(area); -} -/* -:h3.CopyRegion() - Makes a Copy of a Region -*/ -struct region * -CopyRegion(struct region *area) /* region to duplicate */ -{ - register struct region *r; /* output region built here */ - register struct edgelist *last = NULL; /* loop variable */ - register struct edgelist *p,*newp; /* loop variables */ - - r = (struct region *)Allocate(sizeof(struct region), area, 0); - r->anchor = NULL; - - for (p=area->anchor; VALIDEDGE(p); p=p->link) { - - newp = NewEdge(p->xmin, p->xmax, p->ymin, p->ymax, p->xvalues, ISDOWN(p->flag)); - if (r->anchor == NULL) - r->anchor = last = newp; - else - last->link = newp; - - last = newp; - } - if (area->thresholded != NULL) - /* replaced DupPicture with Dup() 3-26-91 PNM */ - r->thresholded = (struct picture *)Dup(area->thresholded); - return(r); -} -/* -:h4.NewEdge() - Allocates and Returns a New "edgelist" Structure - -We allocate space for the X values contiguously with the 'edgelist' -structure that locates them. That way, we only have to free the -edgelist structure to free all memory associated with it. Damn -clever, huh? -*/ - -static struct edgelist * -NewEdge(pel xmin, pel xmax, /* X extent of edge */ - pel ymin, pel ymax, /* Y extent of edge */ - pel *xvalues, /* list of X values for entire edge */ - int isdown) /* flag: TRUE means edge progresses downward */ -{ - static struct edgelist template = { - EDGETYPE, 0, 1, NULL, NULL, - 0, 0, 0, 0, NULL }; - - register struct edgelist *r; /* returned structure */ - register int iy; /* ymin adjusted for 'long' alignment purposes */ - - if (ymin >= ymax) - Abort("newedge: height not positive"); -/* -We are going to copy the xvalues into a newly allocated area. It -helps performance if the values are all "long" aligned. We can test -if the xvalues are long aligned by ANDing the address with the -(sizeof(long) - 1)--if non zero, the xvalues are not aligned well. We -set 'iy' to the ymin value that would give us good alignment: -*/ - iy = ymin - (((unsigned long)xvalues) & (sizeof(long)-1)) / sizeof(pel); - - r = (struct edgelist *)Allocate(sizeof(struct edgelist), &template, - (ymax - iy) * sizeof(pel)); - - if (isdown) r->flag = ISDOWN(ON); - r->xmin = xmin; - r->xmax = xmax; - r->ymin = ymin; - r->ymax = ymax; - - r->xvalues = (pel *) FOLLOWING(r); - if (ymin != iy) { - r->xvalues += ymin - iy; - xvalues -= ymin - iy; - } - -/* -We must round up (ymax - iy) so we get the ceiling of the number of -longs. The destination must be able to hold these extra bytes because -Allocate() makes everything it allocates be in multiples of longs. -*/ - LONGCOPY(&r[1], xvalues, (ymax - iy) * sizeof(pel) + sizeof(long) - 1); - - return(r); -} - -/* -:h3 id=discard.discard() - Discard All Edges Between Two Edges - -At first glance it would seem that we could discard an edgelist -structure merely by unlinking it from the list and freeing it. You are -wrong, region-breath! For performance, the X values associated with an -edge are allocated contiguously with it. So, we free the X values when -we free a structure. However, once an edge has been split, we are no -longer sure which control block actually is part of the memory block -that contains the edges. Rather than trying to decide, we play it safe -and never free part of a region. - -So, to mark a 'edgelist' structure as discarded, we move it to the end -of the list and set ymin=ymax. -*/ - -static void -discard(struct edgelist *left, /* all edges between here exclusive */ - struct edgelist *right) /* should be discarded */ -{ - register struct edgelist *beg,*end,*p; - - beg = left->link; - if (beg == right) - return; - - for (p = beg; p != right; p = p->link) { - if (p->link == NULL && right != NULL) - Abort("discard(): ran off end"); - p->ymin = p->ymax = 32767; - end = p; - } - /* - * now put the chain beg/end at the end of right, if it is not - * already there: - */ - if (right != NULL) { - left->link = right; - while (right->link != NULL) - right = right->link; - right->link = beg; - } - end->link = NULL; -} - -/* -:h4.Unwind() - Discards Edges That Fail the Winding Rule Test - -The winding rule says that upward going edges should be paired with -downward going edges only, and vice versa. So, if two upward edges -or two downward edges are nominally left/right pairs, Unwind() should -discard the second one. Everything should balance; we should discard -an even number of edges; of course, we abort if we don't. -*/ -static void -Unwind(struct edgelist *area) /* input area modified in place */ -{ - register struct edgelist *last = NULL,*next; /* struct before and after current one */ - register int y; /* ymin of current swath */ - register int count,newcount; /* winding count registers */ - - while (VALIDEDGE(area)) { - - count = 0; - y = area->ymin; - - do { - next = area->link; - - if (ISDOWN(area->flag)) - newcount = count + 1; - else - newcount = count - 1; - - if (count == 0 || newcount == 0) - last = area; - else - discard(last, next); - - count = newcount; - area = next; - - } while (area != NULL && area->ymin == y); - - if (count != 0) - Abort("Unwind: uneven edges"); - } -} -/* -:h2.Building Regions - -:h3.Interior() - Iterate Through a Path, Building a Region - -This routine is the workhorse driver routine that iterates through a -path, calling the appropriate stepping routines to actually produce the -run end "edgelist" structures. - -:ol. -:li."Interior" calls StepLine or StepConic or StepBezier as appropriate -to produce run ends. -:li.Occasionally these routines will notice a change in Y direction -and will call ChangeDirection (through the GOING_TO macro); this is -a call back to the REGIONS module. -:li.ChangeDirection will call whatever function is in the region -structure; for Interior, this function is 'newfilledge'. -:li.Newfilledge will call NewEdge to create a new edgelist structure, -then, call SortSwath to sort it onto the linked list being built at -the region "anchor". -:eol. - -By making the function called by ChangeDirection be a parameter of the -region, we allow the same ChangeDirection logic to be used by stroking. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -struct region * -Interior(struct segment *p, /* take interior of this path */ - int fillrule) /* rule to follow if path crosses itself */ -{ - register fractpel x,y; /* keeps ending point of path segment */ - fractpel lastx,lasty; /* previous x,y from path segment before */ - register struct region *R; /* region I will build */ - register struct segment *nextP; /* next segment of path */ - struct fractpoint hint; /* accumulated hint value */ - char tempflag; /* flag; is path temporary? */ - char Cflag; /* flag; should we apply continuity? */ - - if (p == NULL) - return(NULL); -/* -Establish the 'Cflag' continuity flag based on user's fill rule and -our own 'Continuity' pragmatic (0: never do continuity, 1: do what -user asked, >1: do it regardless). -*/ - if (fillrule > 0) { - Cflag = Continuity > 0; - fillrule -= CONTINUITY; - } - else - Cflag = Continuity > 1; - - ARGCHECK((fillrule != WINDINGRULE && fillrule != EVENODDRULE), - "Interior: bad fill rule", NULL, NULL, (1,p), struct region *); - - if (p->type == TEXTTYPE) -/* if (fillrule != EVENODDRULE) - else */ - return((struct region *)UniquePath(p)); - if (p->type == STROKEPATHTYPE) { - if (fillrule == WINDINGRULE) - return((struct region *)DoStroke(p)); - else - p = CoercePath(p); - } - - R = (struct region *)Allocate(sizeof(struct region), &EmptyRegion, 0); - - ARGCHECK(!ISPATHANCHOR(p), "Interior: bad path", p, R, (0), struct region *); - ARGCHECK((p->type != MOVETYPE), "Interior: path not closed", p, R, (0), struct region *); - - -/* changed definition from !ISPERMANENT to references <= 1 3-26-91 PNM */ - tempflag = (p->references <= 1); /* only first segment in path is so marked */ - if (!ISPERMANENT(p->flag)) p->references -= 1; - - R->newedgefcn = newfilledge; -/* -Believe it or not, "R" is now completely initialized. We are counting -on the copy of template to get other fields the way we want them, -namely -:ol. -:li.anchor = NULL -:li.xmin, ymin, xmax, ymax, to minimum and maximum values respectively. -:eol. -Anchor = NULL is very -important to ChangeDirection. -See :hdref refid=CD.. - -To minimize problems of "wrapping" in our pel arithmetic, we keep an -origin of the region which is the first move. Hopefully, that keeps -numbers within plus or minus 32K pels. -*/ - R->origin.x = 0/*TOFRACTPEL(NEARESTPEL(p->dest.x))*/; - R->origin.y = 0/*TOFRACTPEL(NEARESTPEL(p->dest.y))*/; - lastx = - R->origin.x; - lasty = - R->origin.y; -/* -ChangeDirection initializes other important fields in R, such as -lastdy, edge, edgeYstop, edgexmin, and edgexmax. The first segment -is a MOVETYPE, so it will be called first. -*/ -/* -The hints data structure must be initialized once for each path. -*/ - - if (ProcessHints) - InitHints(); /* initialize hint data structure */ - - while (p != NULL) { - - x = lastx + p->dest.x; - y = lasty + p->dest.y; - - nextP = p->link; - -/* -Here we start the hints processing by initializing the hint value to -zero. If ProcessHints is FALSE, the value will remain zero. -Otherwise, hint accumulates the computed hint values. -*/ - - hint.x = hint.y = 0; - -/* -If we are processing hints, and this is a MOVE segment (other than -the first on the path), we need to close (reverse) any open hints. -*/ - - if (ProcessHints) - if ((p->type == MOVETYPE) && (p->last == NULL)) { - CloseHints(&hint); - } - -/* -Next we run through all the hint segments (if any) attached to this -segment. If ProcessHints is TRUE, we will accumulate computed hint -values. In either case, nextP will be advanced to the first non-HINT -segment (or NULL), and each hint segment will be freed if necessary. -*/ - - while ((nextP != NULL) && (nextP->type == HINTTYPE)) { - if (ProcessHints) - ProcessHint((struct hintsegment *)nextP, - x + hint.x, y + hint.y, &hint); - - { - register struct segment *saveP = nextP; - - nextP = nextP->link; - if (tempflag) - Free(saveP); - } - } - -/* -We now apply the full hint value to the ending point of the path segment. -*/ - - x += hint.x; - y += hint.y; - - switch(p->type) { - - case LINETYPE: - StepLine(R, lastx, lasty, x, y); - break; - - case CONICTYPE: - { - -/* -For a conic curve, we apply half the hint value to the conic midpoint. -*/ - - } - break; - - case BEZIERTYPE: - { - register struct beziersegment *bp = (struct beziersegment *) p; - -/* -For a Bezier curve, we apply the full hint value to the Bezier C point. -*/ - - StepBezier(R, lastx, lasty, - lastx + bp->B.x, lasty + bp->B.y, - lastx + bp->C.x + hint.x, - lasty + bp->C.y + hint.y, - x, y); - } - break; - - case MOVETYPE: -/* -At this point we have encountered a MOVE segment. This breaks the -path, making it disjoint. -*/ - if (p->last == NULL) /* i.e., not first in path */ - ChangeDirection(CD_LAST, R, lastx, lasty, (fractpel) 0); - - ChangeDirection(CD_FIRST, R, x, y, (fractpel) 0); -/* -We'll just double check for closure here. We forgive an appended -MOVETYPE at the end of the path, if it isn't closed: -*/ - if (!ISCLOSED(p->flag) && p->link != NULL) - return((struct region *)ArgErr("Fill: sub-path not closed", p, NULL)); - break; - - default: - Abort("Interior: path type error"); - } -/* -We're done with this segment. Advance to the next path segment in -the list, freeing this one if necessary: -*/ - lastx = x; lasty = y; - - if (tempflag) - Free(p); - p = nextP; - } - ChangeDirection(CD_LAST, R, lastx, lasty, (fractpel) 0); - R->ending.x = lastx; - R->ending.y = lasty; -/* -Finally, clean up the region's based on the user's 'fillrule' request: -*/ - if (Cflag) - ApplyContinuity(R); - if (fillrule == WINDINGRULE) - Unwind(R->anchor); - return(R); -} -/* -:h3."workedge" Array - -This is a statically allocated array where edges are built -before being copied into more permanent storage by NewEdge(). -*/ - -#ifndef MAXEDGE -#define MAXEDGE 1000 -#endif - -static pel workedge[MAXEDGE]; -static pel *currentworkarea = workedge; -static pel currentsize = MAXEDGE; - -/* -:h3 id=cd.ChangeDirection() - Called When Y Direction Changes - -The rasterizing routines call this entry point when they detect -a change in Y. We then build the current edge and sort it into -emerging edgelist at 'anchor' by calling whatever "newedgefcn" -is appropriate. -*/ - -void -ChangeDirection(int type, /* CD_FIRST, CD_CONTINUE, or CD_LAST */ - struct region *R, /* region in which we are changing direction */ - fractpel x, fractpel y, /* current beginning x,y */ - fractpel dy) /* direction and magnitude of change in y */ -{ - register fractpel ymin,ymax; /* minimum and maximum Y since last call */ - register pel iy; /* nearest integer pel to 'y' */ - register pel idy; /* nearest integer pel to 'dy' */ - register int ydiff; /* allowed Y difference in 'currentworkarea' */ - - if (type != CD_FIRST) { - - if (R->lastdy > 0) { - ymin = R->firsty; - ymax = y; - } - else { - ymin = y; - ymax = R->firsty; - } - - if (ymax < ymin) - Abort("negative sized edge?"); - - - (*R->newedgefcn)(R, R->edgexmin, R->edgexmax, ymin, ymax, - R->lastdy > 0); - - } - - R->firsty = y; - R->firstx = x; - R->lastdy = dy; - - iy = NEARESTPEL(y); - idy = NEARESTPEL(dy); - if (currentworkarea != workedge && idy < MAXEDGE && idy > -MAXEDGE) { - NonObjectFree(currentworkarea); - currentworkarea = workedge; - currentsize = MAXEDGE; - } - ydiff = currentsize - 1; - if (dy > 0) { - R->edge = ¤tworkarea[-iy]; - R->edgeYstop = TOFRACTPEL(ydiff + iy) + FPHALF; - } - else { - R->edge = ¤tworkarea[ydiff - iy]; - R->edgeYstop = TOFRACTPEL(iy - ydiff) - FPHALF; - } - R->edgexmax = R->edgexmin = x; -/* -If this is the end of a subpath, we complete the subpath circular -chain: -*/ - if (type == CD_LAST && R->lastedge != NULL) { - register struct edgelist *e = R->firstedge; - - while (e->subpath != NULL) - e = e->subpath; - e->subpath = R->lastedge; - R->lastedge = R->firstedge = NULL; - } -} -/* -:h3 id=newfill.newfilledge() - Called When We Have a New Edge While Filling - -This is the prototypical "newedge" function passed to "Rasterize" and -stored in "newedgefcn" in the region being built. - -If the edge is non-null, we sort it onto the list of edges we are -building at "anchor". - -This function also has to keep the bounding box of the region -up to date. -*/ - -static void -newfilledge(struct region *R, /* region being built */ - fractpel xmin, fractpel xmax, /* X range of this edge */ - fractpel ymin, fractpel ymax, /* Y range of this edge */ - int isdown) /* flag: TRUE means edge goes down, else up */ -{ - - register pel pelxmin,pelymin,pelxmax,pelymax; /* pel versions of bounds */ - register struct edgelist *edge; /* newly created edge */ - - pelymin = NEARESTPEL(ymin); - pelymax = NEARESTPEL(ymax); - if (pelymin == pelymax) - return; - - pelxmin = NEARESTPEL(xmin); - pelxmax = NEARESTPEL(xmax); - - if (pelxmin < R->xmin) R->xmin = pelxmin; - if (pelxmax > R->xmax) R->xmax = pelxmax; - if (pelymin < R->ymin) R->ymin = pelymin; - if (pelymax > R->ymax) R->ymax = pelymax; - - edge = NewEdge(pelxmin, pelxmax, pelymin, pelymax, &R->edge[pelymin], isdown); - edge->subpath = R->lastedge; - R->lastedge = edge; - if (R->firstedge == NULL) - R->firstedge = edge; - - R->anchor = SortSwath(R->anchor, edge, swathxsort); - -} - -/* -:h2.Sorting Edges - -:h3.SortSwath() - Vertically Sort an Edge into a Region - -This routine sorts an edge or a pair of edges into a growing region, -so that the region maintains its top-to-bottom, left-to-right form. -The rules for sorting horizontally may vary depending on what you -are doing, but the rules for vertical sorting are always the same. -This routine is passed an argument that is a function that will -perform the horizontal sort on demand (for example, swathxsort() or -SwathUnion()). - -This is a recursive routine. A new edge (or edge pair) may overlap -the list I am building in strange and wonderful ways. Edges may -cross. When this happens, my strategy is to split the incoming edge -(or the growing list) in two at that point, execute the actual sort on -the top part of the split, and recursively call myself to figure out -exactly where the bottom part belongs. -*/ - -#define TOP(e) ((e)->ymin) /* the top of an edge (for readability */ -#define BOTTOM(e) ((e)->ymax) /* the bottom of an edge (for readability */ - -struct edgelist * -SortSwath(struct edgelist *anchor, /* list being built */ - struct edgelist *edge, /* incoming edge or pair of edges */ - SwathFunc swathfcn) /* horizontal sorter */ -{ - register struct edgelist *before,*after; - struct edgelist base; - - if (anchor == NULL) - return(edge); - - before = &base; - before->ymin = before->ymax = MINPEL; - before->link = after = anchor; - -/* -If the incoming edge is above the current list, we connect the current -list to the bottom of the incoming edge. One slight complication is -if the incoming edge overlaps into the current list. Then, we -first split the incoming edge in two at the point of overlap and recursively -call ourselves to sort the bottom of the split into the current list: -*/ - if (TOP(edge) < TOP(after)) { - if (BOTTOM(edge) > TOP(after)) { - - after = SortSwath(after, splitedge(edge, TOP(after)), swathfcn); - } - vertjoin(edge, after); - return(edge); - } -/* -At this point the top of edge is not higher than the top of the list, -which we keep in 'after'. We move the 'after' point down the list, -until the top of the edge occurs in the swath beginning with 'after'. - -If the bottom of 'after' is below the bottom of the edge, we have to -split the 'after' swath into two parts, at the bottom of the edge. -If the bottom of 'after' is above the bottom of the swath, -*/ - - while (VALIDEDGE(after)) { - - if (TOP(after) == TOP(edge)) { - if (BOTTOM(after) > BOTTOM(edge)) - vertjoin(after, splitedge(after, BOTTOM(edge))); - else if (BOTTOM(after) < BOTTOM(edge)) { - after = SortSwath(after, - splitedge(edge, BOTTOM(after)), swathfcn); - } - break; - } - else if (TOP(after) > TOP(edge)) { - if (BOTTOM(edge) > TOP(after)) { - after = SortSwath(after, - splitedge(edge, TOP(after)), swathfcn); - } - break; - } - else if (BOTTOM(after) > TOP(edge)) - vertjoin(after, splitedge(after, TOP(edge))); - - before = after; - after = after->link; - } - -/* -At this point 'edge' exactly corresponds in height to the current -swath pointed to by 'after'. -*/ - if (after != NULL && TOP(after) == TOP(edge)) { - before = (*swathfcn)(before, edge); - after = before->link; - } -/* -At this point 'after' contains all the edges after 'edge', and 'before' -contains all the edges before. Whew! A simple matter now of adding -'edge' to the linked list in its rightful place: -*/ - before->link = edge; - if (RegionDebug > 1) { - while (edge->link != NULL) { - edge = edge->link; - } - } - else - for (; edge->link != NULL; edge = edge->link) { ; } - - edge->link = after; - return(base.link); -} - -/* -:h3.splitedge() - Split an Edge or Swath in Two at a Given Y Value - -This function returns the edge or swath beginning at the Y value, and -is guaranteed not to change the address of the old swath while splitting -it. -*/ - -static struct edgelist * -splitedge(struct edgelist *list, /* area to split */ - pel y) /* Y value to split list at */ -{ - register struct edgelist *new; /* anchor for newly built list */ - register struct edgelist *last = NULL; /* end of newly built list */ - register struct edgelist *r; /* temp pointer to new structure */ - register struct edgelist *lastlist; /* temp pointer to last 'list' value */ - - lastlist = new = NULL; - - while (list != NULL) { - if (y < list->ymin) - break; - if (y >= list->ymax) - Abort("splitedge: above top of list"); - if (y == list->ymin) - Abort("splitedge: would be null"); - - r = (struct edgelist *)Allocate(sizeof(struct edgelist), list, 0); -/* -At this point 'r' points to a copy of the single structure at 'list'. -We will make 'r' be the new split 'edgelist'--the lower half. -We don't bother to correct 'xmin' and 'xmax', we'll take the -the pessimistic answer that results from using the old values. -*/ - r->ymin = y; - r->xvalues = list->xvalues + (y - list->ymin); -/* -Note that we do not need to allocate new memory for the X values, -they can remain with the old "edgelist" structure. We do have to -update that old structure so it is not as high: -*/ - list->ymax = y; -/* -Insert 'r' in the subpath chain: -*/ - r->subpath = list->subpath; - list->subpath = r; -/* -Now attach 'r' to the list we are building at 'new', and advance -'list' to point to the next element in the old list: -*/ - if (new == NULL) - new = r; - else - last->link = r; - last = r; - lastlist = list; - list = list->link; - } -/* -At this point we have a new list built at 'new'. We break the old -list at 'lastlist', and add the broken off part to the end of 'new'. -Then, we return the caller a pointer to 'new': -*/ - if (new == NULL) - Abort("null splitedge"); - lastlist->link = NULL; - last->link = list; - return(new); -} - -/* -:h3.vertjoin() - Join Two Disjoint Edge Lists Vertically - -The two edges must be disjoint vertically. -*/ -static void vertjoin(top, bottom) - register struct edgelist *top; /* uppermost region */ - register struct edgelist *bottom; /* bottommost region */ -{ - if (BOTTOM(top) > TOP(bottom)) - Abort("vertjoin not disjoint"); - - for (; top->link != NULL; top=top->link) { ; } - - top->link = bottom; - return; -} - -/* -:h3.swathxsort() - Sorting by X Values - -We need to sort 'edge' into its rightful -place in the swath by X value, taking care that we do not accidentally -advance to the next swath while searching for the correct X value. Like -all swath functions, this function returns a pointer to the edge -BEFORE the given edge in the sort. -*/ - -static struct edgelist * -swathxsort(struct edgelist *before0, /* edge before this swath */ - struct edgelist *edge) /* input edge */ -{ - register struct edgelist *before; - register struct edgelist *after; - register pel y = 0; - - before = before0; - after = before->link; - - while (after != NULL && TOP(after) == TOP(edge)) { - - register pel *x1,*x2; - - y = TOP(edge); - x1 = after->xvalues; - x2 = edge->xvalues; - - while (y < BOTTOM(edge) && *x1 == *x2) { - x1++; x2++; y++; - } - if (y >= BOTTOM(edge)) { - edge->flag |= ISAMBIGUOUS(ON); - after->flag |= ISAMBIGUOUS(ON); - break; - } - - if (*x1 >= *x2) - break; - - before = after; - after = after->link; - } - -/* -At this point, 'edge' is between 'before' and 'after'. If 'edge' didn't -cross either of those other edges, we would be done. We check for -crossing. If it does cross, we split the problem up by calling SortSwath -recursively with the part of the edge that is below the crossing point: -*/ -{ - register int h0,h; /* height of edge--number of scans */ - - h0 = h = BOTTOM(edge) - y; - y -= TOP(edge); - - if (h0 <= 0) { - return(before); - } - - if (TOP(before) == TOP(edge)) - h -= crosses(h, &before->xvalues[y], &edge->xvalues[y]); - if (after != NULL && TOP(after) == TOP(edge)) - h -= crosses(h, &edge->xvalues[y], &after->xvalues[y]); - - if (h < h0) { - SortSwath(before0->link, - splitedge(edge, TOP(edge) + y + h), - swathxsort); - - } -} - - return(before); -} -/* -:h3.SwathUnion() - Union Two Edges by X Value - -We have a left and right edge that must be unioned into a growing -swath. If they are totally disjoint, they are just added in. The -fun comes in they overlap the existing edges. Then some edges -will disappear. -*/ - -struct edgelist * -SwathUnion(struct edgelist *before0, /* edge before the swath */ - struct edgelist *edge) /* list of two edges to be unioned */ -{ - register int h; /* saves height of edge */ - register struct edgelist *rightedge; /* saves right edge of 'edge' */ - register struct edgelist *before,*after; /* edge before and after */ - int h0; /* saves initial height */ - - h0 = h = edge->ymax - edge->ymin; - if (h <= 0) - Abort("SwathUnion: 0 height swath?"); - - before = before0; - after = before->link; - - while (after != NULL && TOP(after) == TOP(edge)) { - register struct edgelist *right; - - right = after->link; - if (right->xvalues[0] >= edge->xvalues[0]) - break; - before = right; - after = before->link; - } -/* -This is the picture at this point. 'L' indicates a left hand edge, -'R' indicates the right hand edge. -'<--->' indicates the degree of uncertainty as to its placement -relative to other edges: -:xmp atomic. - before after - R <---L----> R L R L R - <---L---> <------R--------------------------> - edge -:exmp. -In case the left of 'edge' touches 'before', we need to reduce -the height by that amount. -*/ - if (TOP(before) == TOP(edge)) - h -= touches(h, before->xvalues, edge->xvalues); - - rightedge = edge->link; - - if (after == NULL || TOP(after) != TOP(edge) || - after->xvalues[0] > rightedge->xvalues[0]) { -/* -On this side of the the above 'if', the new edge is disjoint from the -existing edges in the swath. This is the picture: -:xmp atomic. - before after - R L R L R L R - L R - edge -:exmp. -We will verify it remains disjoint for the entire height. If the -situation changes somewhere down the edge, we split the edge at that -point and recursively call ourselves (through 'SortSwath') to figure -out the new situation: -*/ - if (after != NULL && TOP(after) == TOP(edge)) - h -= touches(h, rightedge->xvalues, after->xvalues); - if (h < h0) - SortSwath(before0->link, splitedge(edge, edge->ymin + h), t1_SwathUnion); - /* go to "return" this edge pair; it is totally disjoint */ - } - else { -/* -At this point, at the 'else', we know that the -new edge overlaps one or more pairs in the existing swath. Here is -a picture of our knowledge and uncertainties: -:xmp atomic. - before after - R L R L R L R - <---L---> <---R-------------------> - edge -:exmp. -We need to move 'after' along until it is to the right of the -right of 'edge'. ('After' should always point to a left edge of a pair:) -*/ - register struct edgelist *left; /* variable to keep left edge in */ - - do { - left = after; - after = (after->link)->link; - - } while (after != NULL && TOP(after) == TOP(edge) - && after->xvalues[0] <= rightedge->xvalues[0]); -/* -At this point this is the picture: -:xmp atomic. - before left after - R L R L R L R - <---L---> <---R---> - edge -:exmp. -We need to verify that the situation stays like this all the way -down the edge. Again, if the -situation changes somewhere down the edge, we split the edge at that -point and recursively call ourselves (through 'SortSwath') to figure -out the new situation: -*/ - - h -= crosses(h, left->xvalues, rightedge->xvalues); - h -= crosses(h, edge->xvalues, ((before->link)->link)->xvalues); - - if (after != NULL && TOP(after) == TOP(edge)) - - h -= touches(h, rightedge->xvalues, after->xvalues); - -/* -OK, if we touched either of our neighbors we need to split at that point -and recursively sort the split edge onto the list. One tricky part -is that when we recursively sort, 'after' will change if it was not -in our current swath: -*/ - if (h < h0) { - SortSwath(before0->link, - splitedge(edge, edge->ymin + h), - t1_SwathUnion); - - if (after == NULL || TOP(after) != TOP(edge)) - for (after = before0->link; - TOP(after) == TOP(edge); - after = after->link) { ; } - } -/* -Now we need to augment 'edge' by the left and right of the overlapped -swath, and to discard all edges between before and after, because they -were overlapped and have been combined with the new incoming 'edge': -*/ - edge->xmin = MIN(edge->xmin, (before->link)->xmin); - edge->xmax = MIN(edge->xmax, (before->link)->xmax); - edgemin(h, edge->xvalues, (before->link)->xvalues); - rightedge->xmin = MAX(rightedge->xmin, (left->link)->xmin); - rightedge->xmax = MAX(rightedge->xmax, (left->link)->xmax); - edgemax(h, rightedge->xvalues, (left->link)->xvalues); - discard(before, after); - } - return(before); -} -#ifdef notused -/* -:h3.swathrightmost() - Simply Sorts New Edge to Rightmost of Swath - -Like all swath functions, this function returns a pointer to the edge -BEFORE the given edge in the sort. -*/ - -static struct edgelist * -swathrightmost(struct edgelist *before, /* edge before this swath */ - struct edgelist *edge) /* input edge */ -{ - register struct edgelist *after; - - after = before->link; - - while (after != NULL && TOP(after) == TOP(edge)) { - before = after; - after = after->link; - } - - return(before); - -} -#endif -/* -:h3.touches() - Returns the Remaining Height When Two Edges Touch - -So, it will return 0 if they never touch. Allows incredibly(?) mnemonic -if (touches(...)) construct. -*/ - -static int -touches(int h, pel *left, pel *right) -{ - for (; h > 0; h--) - if (*left++ >= *right++) - break; - return(h); -} -/* -:h3.crosses() - Returns the Remaining Height When Two Edges Cross - -So, it will return 0 if they never cross. -*/ - -static int -crosses(int h, pel *left, pel *right) -{ - for (; h > 0; h--) - if (*left++ > *right++) - break; - return(h); -} -/* -:h3.cedgemin() - Stores the Mininum of an Edge and an X Value -*/ - -static void -cedgemin(int h, pel *e1, pel x) -{ - for (; --h >= 0; e1++) - if (*e1 > x) - *e1 = x; -} -/* -:h3.cedgemax() - Stores the Maximum of an Edge and an X Value -*/ - -static void -cedgemax(int h, pel *e1, pel x) -{ - for (; --h >= 0; e1++) - if (*e1 < x) - *e1 = x; -} -/* -:h3.edgemin() - Stores the Mininum of Two Edges in First Edge -*/ - -static void -edgemin(int h, pel *e1, pel *e2) -{ - for (; --h >= 0; e1++,e2++) - if (*e1 > *e2) - *e1 = *e2; -} -/* -:h3.edgemax() - Stores the Maximum of Two Edges in First Edge -*/ - -static void -edgemax(int h, pel *e1, pel *e2) -{ - for (; --h >= 0; e1++,e2++) - if (*e1 < *e2) - *e1 = *e2; -} - -/* -:h2.Changing the Representation of Regions - -For convenience and/or performance, we sometimes like to change the way -regions are represented. This does not change the object itself, just -the representation, so these transformations can be made on a permanent -region. - -*/ - -void -MoveEdges(struct region *R, /* region to modify */ - fractpel dx, fractpel dy) /* delta X and Y to move edge list by */ -{ - register struct edgelist *edge; /* for looping through edges */ - - R->origin.x += dx; - R->origin.y += dy; - R->ending.x += dx; - R->ending.y += dy; - if (R->thresholded != NULL) { - R->thresholded->origin.x -= dx; - R->thresholded->origin.y -= dy; - } -/* -From now on we will deal with dx and dy as integer pel values: -*/ - dx = NEARESTPEL(dx); - dy = NEARESTPEL(dy); - if (dx == 0 && dy == 0) - return; - - R->xmin += dx; - R->xmax += dx; - R->ymin += dy; - R->ymax += dy; - - for (edge = R->anchor; VALIDEDGE(edge); edge = edge->link) { - edge->ymin += dy; - edge->ymax += dy; - if (dx != 0) { - register int h; /* loop index; height of edge */ - register pel *Xp; /* loop pointer to X values */ - - edge->xmin += dx; - edge->xmax += dx; - for (Xp = edge->xvalues, h = edge->ymax - edge->ymin; - --h >= 0; ) - *Xp++ += dx; - } - } -} - -/* -:h3.UnJumble() - Sort a Region Top to Bottom - -It is an open question whether it pays in general to do this. -*/ - -void -UnJumble(struct region *region) /* region to sort */ -{ - register struct edgelist *anchor; /* new lists built here */ - register struct edgelist *edge; /* edge pointer for loop */ - register struct edgelist *next; /* ditto */ - - anchor = NULL; - - for (edge=region->anchor; VALIDEDGE(edge); edge=next) { - if (edge->link == NULL) - Abort("UnJumble: unpaired edge?"); - next = edge->link->link; - edge->link->link = NULL; - anchor = SortSwath(anchor, edge, t1_SwathUnion); - } - - if (edge != NULL) - vertjoin(anchor, edge); - - region->anchor = anchor; - region->flag &= ~ISJUMBLED(ON); -} - -/* -*/ -#ifdef notused -static void -OptimizeRegion(struct region *R) /* region to optimize */ -{ - register pel *xP; /* pel pointer for inner loop */ - register int x; /* holds X value */ - register int xmin,xmax; /* holds X range */ - register int h; /* loop counter */ - register struct edgelist *e; /* edgelist pointer for loop */ - - R->flag |= ISRECTANGULAR(ON); - - for (e = R->anchor; VALIDEDGE(e); e=e->link) { - xmin = MAXPEL; - xmax = MINPEL; - for (h = e->ymax - e->ymin, xP = e->xvalues; --h >= 0;) { - x = *xP++; - if (x < xmin) xmin = x; - if (x > xmax) xmax = x; - } - if (xmin != xmax || (xmin != R->xmin && xmax != R->xmax)) - R->flag &= ~ISRECTANGULAR(ON); - if (xmin < e->xmin || xmax > e->xmax) - Abort("Tighten: existing edge bound was bad"); - if (xmin < R->xmin || xmax > R->xmax) - Abort("Tighten: existing region bound was bad"); - e->xmin = xmin; - e->xmax = xmax; - } - R->flag |= ISOPTIMIZED(ON); -} -#endif - -/* -:h2.Miscelaneous Routines - -:h3.MoreWorkArea() - Allocate New Space for "edge" - -Our strategy is to temporarily allocate an array to hold this -unexpectedly large edge. ChangeDirection frees this array any time -it gets a shorter 'dy'. -*/ - -/*ARGSUSED*/ -void -MoreWorkArea(struct region *R, /* region we are generating */ - fractpel x1, fractpel y1, /* starting point of line */ - fractpel x2, fractpel y2) /* ending point of line */ -{ - register int idy; /* integer dy of line */ - - idy = NEARESTPEL(y1) - NEARESTPEL(y2); - if (idy < 0) idy = - idy; - - /* - * we must add one to the delta for the number of run ends we - * need to store: - */ - if (++idy > currentsize) { - if (currentworkarea != workedge) - NonObjectFree(currentworkarea); - currentworkarea = (pel *)Allocate(0, NULL, idy * sizeof(pel)); - currentsize = idy; - } - ChangeDirection(CD_CONTINUE, R, x1, y1, y2 - y1); -} - -/* -:h3.BoxClip() - Clip a Region to a Rectangle - -BoxClip also duplicates the region if it is permanent. Note the -clipping box is specified in REGION coordinates, that is, in -coordinates relative to the region (0,0) point -*/ - -struct region * -BoxClip(struct region *R, /* region to clip */ - pel xmin, pel ymin, /* upper left hand corner of rectangle */ - pel xmax, pel ymax) /* lower right hand corner */ -{ - struct edgelist anchor; /* pretend edgelist to facilitate discards */ - register struct edgelist *e,*laste; - - R = UniqueRegion(R); - - if (xmin > R->xmin) { - R->xmin = xmin; - } - if (xmax < R->xmax) { - R->xmax = xmax; - } - - if (ymin > R->ymin) { - R->ymin = ymin; - } - if (ymax < R->ymax) { - R->ymax = ymax; - } - - - laste = &anchor; - anchor.link = R->anchor; - - for (e = R->anchor; VALIDEDGE(e); e = e->link) { - if (TOP(e) < ymin) { - e->xvalues += ymin - e->ymin; - e->ymin = ymin; - } - if (BOTTOM(e) > ymax) - e->ymax = ymax; - if (TOP(e) >= BOTTOM(e)) { - discard(laste, e->link->link); - e = laste; - continue; - } - if (e->xmin < xmin) { - cedgemax(BOTTOM(e) - TOP(e), e->xvalues, xmin); - e->xmin = xmin; - e->xmax = MAX(e->xmax, xmin); - } - if (e->xmax > xmax) { - cedgemin(BOTTOM(e) - TOP(e), e->xvalues, xmax); - e->xmin = MIN(e->xmin, xmax); - e->xmax = xmax; - } - laste = e; - } - - R->anchor = anchor.link; - - return(R); -} - -#ifdef notdef -/* -:h3.CoerceRegion() - Force a TextPath Structure to Become a Region - -We also save the newly created region in the textpath structure, if the -structure was permanent. Then we don't have to do this again. Why not -save it all the time? Well, we certainly could, but I suspect it -wouldn't pay. We would have to make this region permanent (because we -couldn't have it be consumed) and this would probably require -unnecessary CopyRegions in most cases. -*/ - -struct region * -CoerceRegion(struct textpath *tp) /* input TEXTTYPE */ -{ - struct segment *path; /* temporary character path */ - struct region *R; /* returned region */ - - - R = Interior(path, EVENODDRULE); - return(R); -} -#endif - -/* -:h3.RegionBounds() - Returns Bounding Box of a Region -*/ - -struct segment * -RegionBounds(struct region *R) -{ - register struct segment *path; /* returned path */ - - path = BoxPath(IDENTITY, R->ymax - R->ymin, R->xmax - R->xmin); - path = Join(PathSegment(MOVETYPE, R->origin.x + TOFRACTPEL(R->xmin), - R->origin.y + TOFRACTPEL(R->ymin) ), - path); - return(path); -} - -/* -:h2.Formatting/Dump Routines for Debug - -:h3.DumpArea() - Display a Region -*/ -void -DumpArea(struct region *area) -{ - DumpEdges(area->anchor); -} - -#define INSWATH(p, y0, y1) (p != NULL && p->ymin == y0 && p->ymax == y1) -/* -:h3.DumpEdges() - Display Run End Lists (Edge Lists) -*/ - -/* -:h3.edgecheck() - For Debug, Verify that an Edge Obeys the Rules -*/ - -/*ARGSUSED*/ -static void -edgecheck(struct edgelist *edge, int oldmin, int oldmax) -{ - if (edge->type != EDGETYPE) - Abort("EDGE ERROR: non EDGETYPE in list"); -/* -The following check is not valid if the region is jumbled so I took it -out: -*/ -/* if (edge->ymin < oldmax && edge->ymin != oldmin) - Abort("EDGE ERROR: overlapping swaths"); */ -} - -void -DumpEdges(struct edgelist *edges) -{ - register struct edgelist *p,*p2; - register pel ymin = MINPEL; - register pel ymax = MINPEL; - - if (edges == NULL) { - return; - } - if (RegionDebug <= 1) { - for (p=edges; p != NULL; p = p->link) { - edgecheck(p, ymin, ymax); - ymin = p->ymin; ymax = p->ymax; - } - } - else { - - for (p2=edges; p2 != NULL; ) { - - edgecheck(p2, ymin, ymax); - ymin = p2->ymin; - ymax = p2->ymax; - - while (INSWATH(p2, ymin, ymax)) - p2 = p2->link; - } - } -} diff --git a/nx-X11/lib/font/Type1/regions.h b/nx-X11/lib/font/Type1/regions.h deleted file mode 100644 index 96ad1a5..0000000 --- a/nx-X11/lib/font/Type1/regions.h +++ /dev/null @@ -1,250 +0,0 @@ -/* $Xorg: regions.h,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/regions.h,v 1.7 2001/01/17 19:43:23 dawes Exp $ */ -/*SHARED*/ - -#define Interior(p,rule) t1_Interior(p,rule) -#define Union(a1,a2) t1_Union(a1,a2) -#define Intersect(a1,a2) t1_Intersect(a1,a2) -#define Complement(area) t1_Complement(area) -#define Overlap(a1,a2) t1_OverLap(a1,a2) - - -/* returns the interior of a closed path */ -extern struct region *t1_Interior ( struct segment *p, int fillrule ); -#if 0 -struct region *t1_Union(); /* set union of paths or regions */ -struct region *t1_Intersect(); /* set intersection of regions */ -struct region *t1_Complement(); /* complement of a region */ -int t1_Overlap(); /* returns a Boolean; TRUE if regions overlap */ -#endif - -#define TT_INFINITY t1_Infinity - -/*END SHARED*/ -/*SHARED*/ - -#define ChangeDirection(type,R,x,y,dy) t1_ChangeDirection(type,R,x,y,dy) - -/* called when we change direction in Y */ -extern void t1_ChangeDirection ( int type, struct region *R, fractpel x, - fractpel y, fractpel dy ); -#define CD_FIRST -1 /* enumeration of ChangeDirection type */ -#define CD_CONTINUE 0 /* enumeration of ChangeDirection type */ -#define CD_LAST 1 /* enumeration of ChangeDirection type */ - -#define MoreWorkArea(R,x1,y1,x2,y2) t1_MoreWorkArea(R,x1,y1,x2,y2) -#define KillRegion(area) t1_KillRegion(area) -#define CopyRegion(area) t1_CopyRegion(area) -#define BoxClip(R,xmin,ymin,xmax,ymax) t1_BoxClip(R,xmin,ymin,xmax,ymax) -#define SortSwath(a,p,f) t1_SortSwath(a,p,f) -#define SwathUnion(b,e) t1_SwathUnion(b,e) -#define RegionBounds(r) t1_RegionBounds(r) -#define CoerceRegion(p) t1_CoerceRegion(p) -#define MoveEdges(R,dx,dy) t1_MoveEdges(R,dx,dy) -#define UnJumble(R) t1_UnJumble(R) - -typedef struct edgelist *(*SwathFunc)(struct edgelist *, struct edgelist *); - -/* get longer edge list for stepping */ -extern void t1_MoreWorkArea ( struct region *R, fractpel x1, fractpel y1, - fractpel x2, fractpel y2 ); -/* duplicate a region */ -extern struct region *t1_CopyRegion ( struct region *area ); -/* destroy a region */ -extern void t1_KillRegion ( struct region *area ); -/* clip a region to a rectangle */ -extern struct region *t1_BoxClip ( struct region *R, pel xmin, pel ymin, - pel xmax, pel ymax ); -/* sort edges onto growing edge list */ -extern struct edgelist *t1_SortSwath ( struct edgelist *anchor, - struct edgelist *edge, - SwathFunc swathfcn ); -/* 'union' two edges into a swath */ -extern struct edgelist *t1_SwathUnion ( struct edgelist *before0, - struct edgelist *edge ); -/* returns bounding box of a region */ -extern struct segment *t1_RegionBounds ( struct region *R ); -#ifdef notdef -/* force text to become a true region */ -struct region *t1_CoerceRegion(struct textpath *tp); -#endif -/* moves the edge values in a region */ -extern void t1_MoveEdges ( struct region *R, fractpel dx, fractpel dy ); -/* sort the edges and reset the jumbled flag */ -extern void t1_UnJumble ( struct region *region ); - - -/*END SHARED*/ -/*SHARED*/ - -#define GOING_TO(R, x1, y1, x2, y2, dy) { \ - if (dy < 0) { \ - if (R->lastdy >= 0) \ - ChangeDirection(CD_CONTINUE, R, x1, y1, dy); \ - if (y2 < R->edgeYstop) \ - MoreWorkArea(R, x1, y1, x2, y2); \ - } \ - else if (dy > 0) { \ - if (R->lastdy <= 0) \ - ChangeDirection(CD_CONTINUE, R, x1, y1, dy); \ - if (y2 > R->edgeYstop) \ - MoreWorkArea(R, x1, y1, x2, y2); \ - } \ - else /* dy == 0 */ ChangeDirection(CD_CONTINUE, R, x1, y1, dy); \ - if (x2 < R->edgexmin) R->edgexmin = x2; \ - else if (x2 > R->edgexmax) R->edgexmax = x2; \ -} - -#ifndef FONTMODULE -#ifndef __sxg__ -#include <limits.h> -#endif -#endif -#ifdef SHRT_MIN -#define MINPEL SHRT_MIN -#else -#define MINPEL ((pel)(-1<<(8*sizeof(pel)-1))) /* smallest value fitting in a pel */ -#endif -#ifdef SHRT_MAX -#define MAXPEL SHRT_MAX -#else -#define MAXPEL ((pel)((1<<(8*sizeof(pel)-1))-1))/* largest value fitting in a pel */ -#endif - -/* -The "Unique"-type macro is different (unique?) for regions, because some -regions structures are shared among several objects, and might have -to be made unique for that reason (i.e., references > 1). -*/ - -#define ConsumeRegion(R) MAKECONSUME(R,KillRegion(R)) -#define UniqueRegion(R) MAKEUNIQUE(R,CopyRegion(R)) - - -/*END SHARED*/ -/*SHARED*/ - -typedef void (*NewEdgeFunc)(struct region *, - fractpel, fractpel, fractpel, fractpel, int); - -struct region { - XOBJ_COMMON /* xobject common data define 3-26-91 PNM */ - /* type = REGIONTYPE */ - struct fractpoint origin; /* beginning handle: X,Y origin of region */ - struct fractpoint ending; /* ending handle: X,Y change after painting region */ - pel xmin,ymin; /* minimum X,Y of region */ - pel xmax,ymax; /* mat1_mum X,Y of region */ - struct edgelist *anchor; /* list of edges that bound the region */ - struct picture *thresholded; /* region defined by thresholded picture*/ -/* -Note that the ending handle and the bounding box values are stored -relative to 'origin'. - -The above elements describe a region. The following elements are -scratchpad areas used while the region is being built: -*/ - fractpel lastdy; /* direction of last segment */ - fractpel firstx,firsty; /* starting point of current edge */ - fractpel edgexmin,edgexmax; /* x extent of current edge */ - struct edgelist *lastedge,*firstedge; /* last and first edges in subpath */ - pel *edge; /* pointer to array of X values for edge */ - fractpel edgeYstop; /* Y value where 'edges' array ends */ - NewEdgeFunc newedgefcn; /* function to use when building a new edge */ - struct strokeinfo *strokeinfo; /* scratchpad info during stroking only */ -} ; -/* -The ISCOMPLEMENT flag indicates the region is reversed--it is the -"outside" of the nominal region. -*/ -#define ISCOMPLEMENT(flag) ((flag)&0x80) -/* -The ISJUMBLED flag indicates the region is not sorted top-to-bottom. -*/ -#define ISJUMBLED(flag) ((flag)&0x40) -/* -The ISINFINITE flag allows a quick check for an INFINITE region, which -is frequently intersected. -*/ -#define ISINFINITE(flag) ((flag)&0x20) - -/*END SHARED*/ -/*SHARED*/ - -#define ISRECTANGULAR(flag) ((flag)&0x08) - -/*END SHARED*/ -/*SHARED*/ - -#define EmptyRegion t1_EmptyRegion - -/*END SHARED*/ -/*SHARED*/ - -struct edgelist { - XOBJ_COMMON /* xobject common data define 3-26-91 PNM */ - /* type = EDGETYPE */ - struct edgelist *link; /* pointer to next in linked list */ - struct edgelist *subpath; /* informational link for "same subpath" */ - pel xmin,xmax; /* range of edge in X */ - pel ymin,ymax; /* range of edge in Y */ - pel *xvalues; /* pointer to ymax-ymin X values */ -} ; -/* -The end of the list is marked by either "link" being NULL, or by -ymin == ymax. See :hdref refid=discard.. We define the VALIDEDGE -predicate to test for the opposite of these conditions: -*/ - -#define VALIDEDGE(p) ((p)!=NULL&&(p)->ymin<(p)->ymax) - -/*END SHARED*/ -/*SHARED*/ - -#define ISDOWN(f) ((f)&0x80) - -#define ISAMBIGUOUS(f) ((f)&0x40) - -/*END SHARED*/ -/*SHARED*/ - -/* -Interior() rule enumerations: -*/ -#define WINDINGRULE -2 -#define EVENODDRULE -3 - -#define CONTINUITY 0x80 /* can be added to above rules; e.g. WINDINGRULE+CONTINUITY */ - -/*END SHARED*/ - -/* dump a region structure */ -extern void t1_DumpArea ( struct region *area ); -/* dump a region's edge list */ -extern void t1_DumpEdges ( struct edgelist *edges ); diff --git a/nx-X11/lib/font/Type1/scanfont.c b/nx-X11/lib/font/Type1/scanfont.c deleted file mode 100644 index 8db4979..0000000 --- a/nx-X11/lib/font/Type1/scanfont.c +++ /dev/null @@ -1,2370 +0,0 @@ -/* $XdotOrg: xc/lib/font/Type1/scanfont.c,v 1.5 2005/07/09 23:30:06 keithp Exp $ */ -/* $Xorg: scanfont.c,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/scanfont.c,v 1.16 2003/05/27 22:26:46 tsi Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifndef FONTMODULE -#include <string.h> -#include <limits.h> -#else -#include "Xdefs.h" /* Bool declaration */ -#include "Xmd.h" /* INT32 declaration */ -#include "xf86_ansic.h" -#endif -#include "t1stdio.h" -#include "util.h" -#include "token.h" -#if XFONT_CID -#include "range.h" -#endif -#include "objects.h" -#include "spaces.h" -#include "fontfcn.h" -#include "blues.h" - -#if XFONT_CID -#define CID_BUFSIZE 80 - -extern psfont *FDArrayP; -static spacerange *spacerangeP; -static cidrange *notdefrangeP; -static cidrange *cidrangeP; -extern int FDArrayIndex; -static boolean CIDWantFontInfo; -static psobj inputFile1; -#endif - -static int rc; -static boolean InPrivateDict; -static boolean WantFontInfo; -static boolean TwoSubrs; -static psobj inputFile; -static psobj filterFile; -static psobj *inputP; - - -/**********************************************************************/ -/* Init_BuiltInEncoding() */ -/* */ -/* Initializes the StandardEncoding and ISOLatin1Encoding vector. */ -/* */ -/**********************************************************************/ -typedef struct /* Builtin Standard Encoding */ -{ - int index; - char *name; -} EncodingTable; - -static EncodingTable StdEnc[] = { - { 040 , "space" }, - { 041 , "exclam" }, - { 042 , "quotedbl" }, - { 043 , "numbersign" }, - { 044 , "dollar" }, - { 045 , "percent" }, - { 046 , "ampersand" }, - { 047 , "quoteright" }, - { 050 , "parenleft" }, - { 051 , "parenright" }, - { 052 , "asterisk" }, - { 053 , "plus" }, - { 054 , "comma" }, - { 055 , "hyphen" }, - { 056 , "period" }, - { 057 , "slash" }, - { 060 , "zero" }, - { 061 , "one" }, - { 062 , "two" }, - { 063 , "three" }, - { 064 , "four" }, - { 065 , "five" }, - { 066 , "six" }, - { 067 , "seven" }, - { 070 , "eight" }, - { 071 , "nine" }, - { 072 , "colon" }, - { 073 , "semicolon" }, - { 074 , "less" }, - { 075 , "equal" }, - { 076 , "greater" }, - { 077 , "question" }, - { 0100 , "at" }, - { 0101 , "A" }, - { 0102 , "B" }, - { 0103 , "C" }, - { 0104 , "D" }, - { 0105 , "E" }, - { 0106 , "F" }, - { 0107 , "G" }, - { 0110 , "H" }, - { 0111 , "I" }, - { 0112 , "J" }, - { 0113 , "K" }, - { 0114 , "L" }, - { 0115 , "M" }, - { 0116 , "N" }, - { 0117 , "O" }, - { 0120 , "P" }, - { 0121 , "Q" }, - { 0122 , "R" }, - { 0123 , "S" }, - { 0124 , "T" }, - { 0125 , "U" }, - { 0126 , "V" }, - { 0127 , "W" }, - { 0130 , "X" }, - { 0131 , "Y" }, - { 0132 , "Z" }, - { 0133 , "bracketleft" }, - { 0134 , "backslash" }, - { 0135 , "bracketright" }, - { 0136 , "asciicircum" }, - { 0137 , "underscore" }, - { 0140 , "quoteleft" }, - { 0141 , "a" }, - { 0142 , "b" }, - { 0143 , "c" }, - { 0144 , "d" }, - { 0145 , "e" }, - { 0146 , "f" }, - { 0147 , "g" }, - { 0150 , "h" }, - { 0151 , "i" }, - { 0152 , "j" }, - { 0153 , "k" }, - { 0154 , "l" }, - { 0155 , "m" }, - { 0156 , "n" }, - { 0157 , "o" }, - { 0160 , "p" }, - { 0161 , "q" }, - { 0162 , "r" }, - { 0163 , "s" }, - { 0164 , "t" }, - { 0165 , "u" }, - { 0166 , "v" }, - { 0167 , "w" }, - { 0170 , "x" }, - { 0171 , "y" }, - { 0172 , "z" }, - { 0173 , "braceleft" }, - { 0174 , "bar" }, - { 0175 , "braceright" }, - { 0176 , "asciitilde" }, - { 0241 , "exclamdown" }, - { 0242 , "cent" }, - { 0243 , "sterling" }, - { 0244 , "fraction" }, - { 0245 , "yen" }, - { 0246 , "florin" }, - { 0247 , "section" }, - { 0250 , "currency" }, - { 0251 , "quotesingle" }, - { 0252 , "quotedblleft" }, - { 0253 , "guillemotleft" }, - { 0254 , "guilsinglleft" }, - { 0255 , "guilsinglright" }, - { 0256 , "fi" }, - { 0257 , "fl" }, - { 0261 , "endash" }, - { 0262 , "dagger" }, - { 0263 , "daggerdbl" }, - { 0264 , "periodcentered" }, - { 0266 , "paragraph" }, - { 0267 , "bullet" }, - { 0270 , "quotesinglbase" }, - { 0271 , "quotedblbase" }, - { 0272 , "quotedblright" }, - { 0273 , "guillemotright" }, - { 0274 , "ellipsis" }, - { 0275 , "perthousand" }, - { 0277 , "questiondown" }, - { 0301 , "grave" }, - { 0302 , "acute" }, - { 0303 , "circumflex" }, - { 0304 , "tilde" }, - { 0305 , "macron" }, - { 0306 , "breve" }, - { 0307 , "dotaccent" }, - { 0310 , "dieresis" }, - { 0312 , "ring" }, - { 0313 , "cedilla" }, - { 0315 , "hungarumlaut" }, - { 0316 , "ogonek" }, - { 0317 , "caron" }, - { 0320 , "emdash" }, - { 0341 , "AE" }, - { 0343 , "ordfeminine" }, - { 0350 , "Lslash" }, - { 0351 , "Oslash" }, - { 0352 , "OE" }, - { 0353 , "ordmasculine" }, - { 0361 , "ae" }, - { 0365 , "dotlessi" }, - { 0370 , "lslash" }, - { 0371 , "oslash" }, - { 0372 , "oe" }, - { 0373 , "germandbls" }, - { 0, 0 } -}; - -static EncodingTable ISO8859Enc[] = { - { 32, "space" }, - { 33, "exclam" }, - { 34, "quotedbl" }, - { 35, "numbersign" }, - { 36, "dollar" }, - { 37, "percent" }, - { 38, "ampersand" }, - { 39, "quoteright" }, - { 40, "parenleft" }, - { 41, "parenright" }, - { 42, "asterisk" }, - { 43, "plus" }, - { 44, "comma" }, - { 45, "minus" }, - { 46, "period" }, - { 47, "slash" }, - { 48, "zero" }, - { 49, "one" }, - { 50, "two" }, - { 51, "three" }, - { 52, "four" }, - { 53, "five" }, - { 54, "six" }, - { 55, "seven" }, - { 56, "eight" }, - { 57, "nine" }, - { 58, "colon" }, - { 59, "semicolon" }, - { 60, "less" }, - { 61, "equal" }, - { 62, "greater" }, - { 63, "question" }, - { 64, "at" }, - { 65, "A" }, - { 66, "B" }, - { 67, "C" }, - { 68, "D" }, - { 69, "E" }, - { 70, "F" }, - { 71, "G" }, - { 72, "H" }, - { 73, "I" }, - { 74, "J" }, - { 75, "K" }, - { 76, "L" }, - { 77, "M" }, - { 78, "N" }, - { 79, "O" }, - { 80, "P" }, - { 81, "Q" }, - { 82, "R" }, - { 83, "S" }, - { 84, "T" }, - { 85, "U" }, - { 86, "V" }, - { 87, "W" }, - { 88, "X" }, - { 89, "Y" }, - { 90, "Z" }, - { 91, "bracketleft" }, - { 92, "backslash" }, - { 93, "bracketright" }, - { 94, "asciicircum" }, - { 95, "underscore" }, - { 96, "quoteleft" }, - { 97, "a" }, - { 98, "b" }, - { 99, "c" }, - { 100, "d" }, - { 101, "e" }, - { 102, "f" }, - { 103, "g" }, - { 104, "h" }, - { 105, "i" }, - { 106, "j" }, - { 107, "k" }, - { 108, "l" }, - { 109, "m" }, - { 110, "n" }, - { 111, "o" }, - { 112, "p" }, - { 113, "q" }, - { 114, "r" }, - { 115, "s" }, - { 116, "t" }, - { 117, "u" }, - { 118, "v" }, - { 119, "w" }, - { 120, "x" }, - { 121, "y" }, - { 122, "z" }, - { 123, "braceleft" }, - { 124, "bar" }, - { 125, "braceright" }, - { 126, "asciitilde" }, - { 160, "space" }, - { 161, "exclamdown" }, - { 162, "cent" }, - { 163, "sterling" }, - { 164, "currency" }, - { 165, "yen" }, - { 166, "brokenbar" }, - { 167, "section" }, - { 168, "dieresis" }, - { 169, "copyright" }, - { 170, "ordfeminine" }, - { 171, "guillemotleft" }, - { 172, "logicalnot" }, - { 173, "hyphen" }, - { 174, "registered" }, - { 175, "macron" }, - { 176, "degree" }, - { 177, "plusminus" }, - { 178, "twosuperior" }, - { 179, "threesuperior" }, - { 180, "acute" }, - { 181, "mu" }, - { 182, "paragraph" }, - { 183, "periodcentered" }, - { 184, "cedilla" }, - { 185, "onesuperior" }, - { 186, "ordmasculine" }, - { 187, "guillemotright" }, - { 188, "onequarter" }, - { 189, "onehalf" }, - { 190, "threequarters" }, - { 191, "questiondown" }, - { 192, "Agrave" }, - { 193, "Aacute" }, - { 194, "Acircumflex" }, - { 195, "Atilde" }, - { 196, "Adieresis" }, - { 197, "Aring" }, - { 198, "AE" }, - { 199, "Ccedilla" }, - { 200, "Egrave" }, - { 201, "Eacute" }, - { 202, "Ecircumflex" }, - { 203, "Edieresis" }, - { 204, "Igrave" }, - { 205, "Iacute" }, - { 206, "Icircumflex" }, - { 207, "Idieresis" }, - { 208, "Eth" }, - { 209, "Ntilde" }, - { 210, "Ograve" }, - { 211, "Oacute" }, - { 212, "Ocircumflex" }, - { 213, "Otilde" }, - { 214, "Odieresis" }, - { 215, "multiply" }, - { 216, "Oslash" }, - { 217, "Ugrave" }, - { 218, "Uacute" }, - { 219, "Ucircumflex" }, - { 220, "Udieresis" }, - { 221, "Yacute" }, - { 222, "Thorn" }, - { 223, "germandbls" }, - { 224, "agrave" }, - { 225, "aacute" }, - { 226, "acircumflex" }, - { 227, "atilde" }, - { 228, "adieresis" }, - { 229, "aring" }, - { 230, "ae" }, - { 231, "ccedilla" }, - { 232, "egrave" }, - { 233, "eacute" }, - { 234, "ecircumflex" }, - { 235, "edieresis" }, - { 236, "igrave" }, - { 237, "iacute" }, - { 238, "icircumflex" }, - { 239, "idieresis" }, - { 240, "eth" }, - { 241, "ntilde" }, - { 242, "ograve" }, - { 243, "oacute" }, - { 244, "ocircumflex" }, - { 245, "otilde" }, - { 246, "odieresis" }, - { 247, "divide" }, - { 248, "oslash" }, - { 249, "ugrave" }, - { 250, "uacute" }, - { 251, "ucircumflex" }, - { 252, "udieresis" }, - { 253, "yacute" }, - { 254, "thorn" }, - { 255, "ydieresis" }, - { 0, 0 } -}; - -static psobj *StdEncArrayP = NULL; -psobj *ISOLatin1EncArrayP = NULL; - -static psobj * -MakeEncodingArrayP(EncodingTable *encodingTable) -{ - int i; - psobj *encodingArrayP; - - encodingArrayP = (psobj *)vm_alloc(256*(sizeof(psobj))); - if (!encodingArrayP) - return NULL; - - /* initialize everything to .notdef */ - for (i=0; i<256;i++) - objFormatName(&(encodingArrayP[i]),7, ".notdef"); - - for (i=0; encodingTable[i].name; i++) - { - objFormatName(&(encodingArrayP[encodingTable[i].index]), - strlen(encodingTable[i].name), - encodingTable[i].name); - } - - return(encodingArrayP); -} - -boolean -Init_BuiltInEncoding(void) -{ - StdEncArrayP = MakeEncodingArrayP(StdEnc); - ISOLatin1EncArrayP = MakeEncodingArrayP(ISO8859Enc); - return (StdEncArrayP && ISOLatin1EncArrayP); -} - -/********************************************************************/ -/***================================================================***/ -static int -getNextValue(int valueType) -{ - scan_token(inputP); - if (tokenType != valueType) { - return(SCAN_ERROR); - } - return(SCAN_OK); - -} -/***================================================================***/ -/* This routine will set the global rc if there is an error */ -/***================================================================***/ -static int -getInt(void) -{ - scan_token(inputP); - if (tokenType != TOKEN_INTEGER) { - rc = SCAN_ERROR; - return(0); - } - else { - return( tokenValue.integer); - } - -} -/***================================================================***/ -/* - * See Sec 10.3 of ``Adobe Type 1 Font Format'' v1.1, - * for parsing Encoding. - */ -static int -getEncoding(psobj *arrayP) -{ - scan_token(inputP); - if ((tokenType == TOKEN_NAME && (tokenLength==16 || tokenLength==17))) - { - if((tokenLength==16) && (!strncmp(tokenStartP,"StandardEncoding",16))) - arrayP->data.valueP = (char *) StdEncArrayP; - else - arrayP->data.valueP = (char *) ISOLatin1EncArrayP; - arrayP->len = 256; - return(SCAN_OK); - } - else if ( (tokenType == TOKEN_LEFT_BRACE) || - (tokenType == TOKEN_LEFT_BRACKET) ) - { - /* Array of literal names */ - - psobj *objP; - int i; - - objP = (psobj *)vm_alloc(256*(sizeof(psobj))); - if (!(objP)) return(SCAN_OUT_OF_MEMORY); - - arrayP->data.valueP = (char *) objP; - arrayP->len = 256; - - for (i=0; i<256; i++, objP++) - { - scan_token(inputP); - - if (tokenType != TOKEN_LITERAL_NAME) - return(SCAN_ERROR); - - if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY); - objFormatName(objP,tokenLength,tokenStartP); - } - - scan_token(inputP); - if ( (tokenType == TOKEN_RIGHT_BRACE) || - (tokenType == TOKEN_RIGHT_BRACKET) ) - return(SCAN_OK); - } - else - { - /* Must be sequences of ``dup <index> <charactername> put" */ - - psobj *objP; - int i; - - objP = (psobj *)vm_alloc(256*(sizeof(psobj))); - if (!(objP)) return(SCAN_OUT_OF_MEMORY); - - arrayP->data.valueP = (char *) objP; - arrayP->len = 256; - - for (i=0; i<256; i++) - objFormatName(objP + i, 7, ".notdef"); - - while (TRUE) - { - scan_token(inputP); - - switch (tokenType) - { - case TOKEN_NAME: - if (tokenLength == 3) - { - if (strncmp(tokenStartP,"dup",3) == 0) - { - /* get <index> */ - scan_token(inputP); - if (tokenType != TOKEN_INTEGER || - tokenValue.integer < 0 || - tokenValue.integer > 255) - return (SCAN_ERROR); - i = tokenValue.integer; - - /* get <characer_name> */ - scan_token(inputP); - if (tokenType != TOKEN_LITERAL_NAME) - return(SCAN_ERROR); - - if (!(vm_alloc(tokenLength)) ) - return(SCAN_OUT_OF_MEMORY); - objFormatName(objP + i,tokenLength,tokenStartP); - - /* get "put" */ - scan_token(inputP); - if (tokenType != TOKEN_NAME) - return(SCAN_ERROR); - } - else if (strncmp(tokenStartP,"def",3) == 0) - return (SCAN_OK); - } - break; - case TOKEN_EOF: - case TOKEN_NONE: - case TOKEN_INVALID: - return (SCAN_ERROR); - } - } - } - - return (SCAN_ERROR); -} -/***================================================================***/ -#if XFONT_CID -static int -getFDArray(psobj *arrayP) -{ - int rc; - - /* get the number of items in the FDArray */ - scan_token(inputP); - if (tokenType == TOKEN_INTEGER) { - /* an FD array must contain at least one element */ - if (tokenValue.integer <= 0) - return(SCAN_ERROR); - arrayP->len = tokenValue.integer; - } else - return(SCAN_ERROR); - - /* get the token "array" */ - scan_token(inputP); - if (tokenType != TOKEN_NAME || strncmp(tokenStartP, "array", 5) != 0) - return(SCAN_ERROR); - - /* format the array in memory, save pointer to the beginning */ - arrayP->data.valueP = tokenStartP; - - /* allocate FDArray */ - /* No integer overflow since arrayP->len is unsigned short */ - FDArrayP = (psfont *)vm_alloc(arrayP->len*(sizeof(psfont))); - if (!(FDArrayP)) return(SCAN_OUT_OF_MEMORY); - - /* get a specified number of font dictionaries */ - for (FDArrayIndex = 0; FDArrayIndex < arrayP->len; FDArrayIndex++) { - /* get "dup" */ - scan_token(inputP); - if (tokenType != TOKEN_NAME || strncmp(tokenStartP, "dup", 3) != 0) - return(SCAN_ERROR); - /* get an integer digit */ - scan_token(inputP); - if (tokenType != TOKEN_INTEGER) - return(SCAN_ERROR); - - /* read a CID version of a Type 1 font */ - if (!CIDType1fontfcnA(&rc)) - return(rc); - - /* get "put" */ - scan_token(inputP); - if (tokenType != TOKEN_NAME || strncmp(tokenStartP, "put", 3) != 0) - return(SCAN_ERROR); - } - return(SCAN_OK); -} -#endif - -static int -getArray(psobj *arrayP) -{ - int N; /* count the items in the array */ - psobj *objP; - - /* That is totally a kludge. If some stupid font file has - * /foo/foo # ftp://ftp.cdrom.com/pub/os2/fonts/future.zip - * we will treat it as /foo. - * H.J. */ - char tmp [1024]; - - strncpy (tmp, tokenStartP, sizeof (tmp)); - tmp [sizeof (tmp) - 1] = '\0'; - -restart: - scan_token(inputP); - switch (tokenType) - { - case TOKEN_LEFT_BRACE: - case TOKEN_LEFT_BRACKET: - break; - - case TOKEN_LITERAL_NAME: - tokenStartP[tokenLength] = '\0'; - if (strcmp (tokenStartP, tmp) == 0) - { - /* Ok, We see /foo/foo. Let's restart. */ - goto restart; - } - - default: - return(SCAN_ERROR); - } - /* format the array in memory, save pointer to the beginning */ - arrayP->data.valueP = tokenStartP; - /* loop, picking up next object, until right BRACE or BRACKET */ - N = 0; - do { - scan_token(inputP); - if ( (tokenType == TOKEN_RIGHT_BRACE) || - (tokenType == TOKEN_RIGHT_BRACKET) ) { - /* save then number of items in the array */ - arrayP->len = N; - return(SCAN_OK); - } - /* allocate the space for the object */ - objP = (psobj *)vm_alloc(sizeof(psobj)); - if (!(objP)) return(SCAN_OUT_OF_MEMORY); - - /* array is an array of numbers, (real or integer) */ - if (tokenType == TOKEN_REAL) { - objFormatReal(objP, tokenValue.real); - } - else - if (tokenType == TOKEN_INTEGER) { - objFormatInteger(objP, tokenValue.integer); - } - else return(SCAN_ERROR); - N++; - } while ( 1>0 ); - /* NOTREACHED*/ -} -/***================================================================***/ -static int -getName(char *nameP) -{ - do { - scan_token(inputP); - if (tokenType <= TOKEN_NONE) { - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - return(SCAN_ERROR); - } - } while ((tokenType != TOKEN_NAME) || - (0 != strncmp(tokenStartP,nameP,strlen(nameP))) ); - /* found */ - return(SCAN_OK); -} -/***================================================================***/ -static int -getNbytes(int N) -{ - int I; - - - tokenStartP = vm_next_byte(); - tokenMaxP = tokenStartP + MIN(vm_free_bytes(), MAX_STRING_LEN); - if (N > vm_free_bytes()) { - return(SCAN_OUT_OF_MEMORY); - } - I = T1Read(tokenStartP,1,N,inputP->data.fileP); - if ( I != N ) return(SCAN_FILE_EOF); - return(SCAN_OK); -} - -/***================================================================***/ -/* getLiteralName(nameObjP) */ -/* scan for next literal. */ -/* if we encounter the name 'end' then terminate and say ok. */ -/* It means that the CharStrings does not have as many characters */ -/* as the dictionary said it would and that is ok. */ -/***================================================================***/ -static int -getLiteralName(psobj *nameObjP) -{ - do { - scan_token(inputP); - if (tokenType <= TOKEN_NONE) { - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - return(SCAN_ERROR); - } - if (tokenType == TOKEN_NAME) { - if (0 == strncmp(tokenStartP,"end",3) ) { - return(SCAN_END); - } - } - } while (tokenType != TOKEN_LITERAL_NAME) ; - nameObjP->len = tokenLength; - /* allocate all the names in the CharStrings Structure */ - if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY); - nameObjP->data.valueP = tokenStartP; - /* found */ - return(SCAN_OK); -} - -/***================================================================***/ -/* - * BuildSubrs routine - */ -/***================================================================***/ - -static int -BuildSubrs(psfont *FontP) -{ - int N; /* number of values in Subrs */ - int I; /* index into Subrs */ - int i; /* loop thru Subrs */ - int J; /* length of Subrs entry */ - psobj *arrayP; - - /* next token should be a positive int */ - /* note: rc is set by getInt. */ - N = getInt(); - if (rc) return(rc); - if (N < 0 ) return(SCAN_ERROR); - /* if we already have a Subrs, then skip the second one */ - /* The second one is for hiresolution devices. */ - if (FontP->Subrs.data.arrayP != NULL) { - TwoSubrs = TRUE; - /* process all the Subrs, but do not update anything */ - /* can not just skip them because of the binary data */ - for (i=0;i<N;i++) { - /* look for dup */ - rc = getName("dup"); - if (rc) return(rc); - /* get 2 integers */ - I = getInt(); - if (rc) return(rc); - J = getInt(); - if (rc) return(rc); - if ( (I < 0) || (J < 0 ) ) return (SCAN_ERROR); - /* get the next token, it should be RD or -|, either is ok */ - rc = getNextValue(TOKEN_NAME); - if ( rc != SCAN_OK ) return(rc); - rc = getNbytes(J); - if (rc) return(rc); - } - return(SCAN_OK); - } - if (N > INT_MAX / sizeof(psobj)) - return (SCAN_ERROR); - arrayP = (psobj *)vm_alloc(N*sizeof(psobj)); - if (!(arrayP) ) return(SCAN_OUT_OF_MEMORY); - FontP->Subrs.len = N; - FontP->Subrs.data.arrayP = arrayP; - /* get N values for Subrs */ - for (i=0;i<N;i++) { - /* look for dup */ - rc = getName("dup"); - if (rc) return(rc); - /* get 2 integers */ - I = getInt(); - if (rc) return(rc); - J = getInt(); - if (rc) return(rc); - if ( (I < 0) || (J < 0 ) ) return (SCAN_ERROR); - arrayP[I].len = J; - /* get the next token, it should be RD or -|, either is ok */ - rc = getNextValue(TOKEN_NAME); - if ( rc != SCAN_OK ) return(rc); - rc = getNbytes(J); - if (rc == SCAN_OK) { - arrayP[I].data.valueP = tokenStartP; - if ( !(vm_alloc(J)) ) return(SCAN_OUT_OF_MEMORY); - } - else return(rc); - } - return(SCAN_OK); - -} -/***================================================================***/ -/***================================================================***/ -/* - * BuildCharStrings routine - */ -/***================================================================***/ - -static int -BuildCharStrings(psfont *FontP) -{ - int N; /* number of values in CharStrings */ - int i; /* loop thru Subrs */ - int J; /* length of Subrs entry */ - psdict *dictP; - - /* next token should be a positive int */ - N = getInt(); - if (rc) { - /* check if file had TwoSubrs, hi resolution stuff is in file*/ - if (TwoSubrs) { - do { - scan_token(inputP); - if (tokenType <= TOKEN_NONE) { - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - return(SCAN_ERROR); - } - } while (tokenType != TOKEN_INTEGER); - N = tokenValue.integer; - } - else return(rc); /* if next token was not an Int */ - } - if (N<=0 || N > INT_MAX / sizeof(psdict)) return(SCAN_ERROR); - /* save number of entries in the dictionary */ - - dictP = (psdict *)vm_alloc((N+1)*sizeof(psdict)); - if (!(dictP)) return(SCAN_OUT_OF_MEMORY); - FontP->CharStringsP = dictP; - dictP[0].key.len = N; - /* get N values for CharStrings */ - for (i=1;i<=N;i++) { - /* look for next literal name */ - rc = getLiteralName(&(dictP[i].key)); - if (rc) return(rc); - /* get 1 integer */ - J = getInt(); - if (rc) return(rc); /* if next token was not an Int */ - if (J<0) return (SCAN_ERROR); - dictP[i].value.len = J; - /* get the next token, it should be RD or -|, either is ok */ - rc = getNextValue(TOKEN_NAME); - if ( rc != SCAN_OK ) return(rc); - rc = getNbytes(J); - if (rc == SCAN_OK) { - dictP[i].value.data.valueP = tokenStartP; - if ( !(vm_alloc(J)) ) return(SCAN_OUT_OF_MEMORY); - } - else return(rc); - } - return(SCAN_OK); - -} -/***================================================================***/ -#if XFONT_CID -/***================================================================***/ -/* - * BuildCIDFontInfo Dictionary - */ -/***================================================================***/ -static int -BuildCIDFontInfo(cidfont *CIDfontP) -{ - psdict *dictP; - - /* allocate the private dictionary (max number of entries + 1) */ - dictP = (psdict *)vm_alloc(20*sizeof(psdict)); - if (!(dictP)) return(SCAN_OUT_OF_MEMORY); - - CIDfontP->CIDfontInfoP = dictP; - CIDfontP->CIDfontInfoP[0].key.len = 18; /* number of actual entries */ - objFormatName(&(dictP[CIDCOUNT].key),8,"CIDCount"); - objFormatInteger(&(dictP[CIDCOUNT].value),-1); - objFormatName(&(dictP[CIDFONTNAME].key),11,"CIDFontName"); - objFormatName(&(dictP[CIDFONTNAME].value),0,NULL); - objFormatName(&(dictP[CIDFONTTYPE].key),11,"CIDFontType"); - objFormatInteger(&(dictP[CIDFONTTYPE].value),-1); - objFormatName(&(dictP[CIDVERSION].key),14,"CIDFontVersion"); - objFormatInteger(&(dictP[CIDVERSION].value),-1); - objFormatName(&(dictP[CIDREGISTRY].key),8,"Registry"); - objFormatString(&(dictP[CIDREGISTRY].value),0,NULL); - objFormatName(&(dictP[CIDORDERING].key),8,"Ordering"); - objFormatString(&(dictP[CIDORDERING].value),0,NULL); - objFormatName(&(dictP[CIDSUPPLEMENT].key),10,"Supplement"); - objFormatInteger(&(dictP[CIDSUPPLEMENT].value),-1); - objFormatName(&(dictP[CIDMAPOFFSET].key),12,"CIDMapOffset"); - objFormatInteger(&(dictP[CIDMAPOFFSET].value),-1); - objFormatName(&(dictP[CIDFDARRAY].key),7,"FDArray"); - objFormatArray(&(dictP[CIDFDARRAY].value),0,NULL); - objFormatName(&(dictP[CIDFDBYTES].key),7,"FDBytes"); - objFormatInteger(&(dictP[CIDFDBYTES].value),-1); - objFormatName(&(dictP[CIDFONTBBOX].key),8,"FontBBox"); - objFormatArray(&(dictP[CIDFONTBBOX].value),0,NULL); - objFormatName(&(dictP[CIDFULLNAME].key),8,"FullName"); - objFormatString(&(dictP[CIDFULLNAME].value),0,NULL); - objFormatName(&(dictP[CIDFAMILYNAME].key),10,"FamilyName"); - objFormatString(&(dictP[CIDFAMILYNAME].value),0,NULL); - objFormatName(&(dictP[CIDWEIGHT].key),6,"Weight"); - objFormatString(&(dictP[CIDWEIGHT].value),0,NULL); - objFormatName(&(dictP[CIDNOTICE].key),6,"Notice"); - objFormatString(&(dictP[CIDNOTICE].value),0,NULL); - objFormatName(&(dictP[CIDGDBYTES].key),7,"GDBytes"); - objFormatInteger(&(dictP[CIDGDBYTES].value),-1); - objFormatName(&(dictP[CIDUIDBASE].key),7,"UIDBase"); - objFormatInteger(&(dictP[CIDUIDBASE].value),0); - objFormatName(&(dictP[CIDXUID].key),4,"XUID"); - objFormatInteger(&(dictP[CIDXUID].value),0); - return(SCAN_OK); -} -/***================================================================***/ -/* - * BuildCMapInfo Dictionary - */ -/***================================================================***/ -static int -BuildCMapInfo(cmapres *CMapP) -{ - psdict *dictP; - - /* allocate the private dictionary (max number of entries + 1) */ - dictP = (psdict *)vm_alloc(20*sizeof(psdict)); - if (!(dictP)) return(SCAN_OUT_OF_MEMORY); - - CMapP->CMapInfoP = dictP; - CMapP->CMapInfoP[0].key.len = 8; /* number of actual entries */ - objFormatName(&(dictP[CMAPREGISTRY].key),8,"Registry"); - objFormatString(&(dictP[CMAPREGISTRY].value),0,NULL); - objFormatName(&(dictP[CMAPORDERING].key),8,"Ordering"); - objFormatString(&(dictP[CMAPORDERING].value),0,NULL); - objFormatName(&(dictP[CMAPSUPPLEMENT].key),10,"Supplement"); - objFormatInteger(&(dictP[CMAPSUPPLEMENT].value),-1); - objFormatName(&(dictP[CMAPNAME].key),8,"CMapName"); - objFormatString(&(dictP[CMAPNAME].value),0,NULL); - objFormatName(&(dictP[CMAPVERSION].key),11,"CMapVersion"); - objFormatInteger(&(dictP[CMAPVERSION].value),-1); - objFormatName(&(dictP[CMAPTYPE].key),8,"CMapType"); - objFormatInteger(&(dictP[CMAPTYPE].value),-1); - objFormatName(&(dictP[CMAPWMODE].key),5,"WMode"); - objFormatInteger(&(dictP[CMAPWMODE].value),-1); - objFormatName(&(dictP[CMAPCIDCOUNT].key),8,"CIDCount"); - objFormatInteger(&(dictP[CMAPCIDCOUNT].value),-1); - return(SCAN_OK); -} -#endif - -/***================================================================***/ -/* - * BuildFontInfo Dictionary - */ -/***================================================================***/ -static int -BuildFontInfo(psfont *fontP) -{ - psdict *dictP; - - /* allocate the private dictionary */ - dictP = (psdict *)vm_alloc(20*sizeof(psdict)); - if (!(dictP)) return(SCAN_OUT_OF_MEMORY); - - fontP->fontInfoP = dictP; - fontP->fontInfoP[0].key.len = 17; /* number of actual entries */ - objFormatName(&(dictP[FONTNAME].key),8,"FontName"); - objFormatName(&(dictP[FONTNAME].value),0,NULL); - objFormatName(&(dictP[PAINTTYPE].key),9,"PaintType"); - objFormatInteger(&(dictP[PAINTTYPE].value),0); - objFormatName(&(dictP[FONTTYPENUM].key),8,"FontType"); - objFormatInteger(&(dictP[FONTTYPENUM].value),0); - objFormatName(&(dictP[FONTMATRIX].key),10,"FontMatrix"); - objFormatArray(&(dictP[FONTMATRIX].value),0,NULL); - objFormatName(&(dictP[FONTBBOX].key),8,"FontBBox"); - objFormatArray(&(dictP[FONTBBOX].value),0,NULL); - objFormatName(&(dictP[ENCODING].key),8,"Encoding"); - objFormatEncoding(&(dictP[ENCODING].value),0,NULL); - objFormatName(&(dictP[UNIQUEID].key),8,"UniqueID"); - objFormatInteger(&(dictP[UNIQUEID].value),0); - objFormatName(&(dictP[STROKEWIDTH].key),11,"StrokeWidth"); - objFormatReal(&(dictP[STROKEWIDTH].value),0.0); - objFormatName(&(dictP[VERSION].key),7,"version"); - objFormatString(&(dictP[VERSION].value),0,NULL); - objFormatName(&(dictP[NOTICE].key),6,"Notice"); - objFormatString(&(dictP[NOTICE].value),0,NULL); - objFormatName(&(dictP[FULLNAME].key),8,"FullName"); - objFormatString(&(dictP[FULLNAME].value),0,NULL); - objFormatName(&(dictP[FAMILYNAME].key),10,"FamilyName"); - objFormatString(&(dictP[FAMILYNAME].value),0,NULL); - objFormatName(&(dictP[WEIGHT].key),6,"Weight"); - objFormatString(&(dictP[WEIGHT].value),0,NULL); - objFormatName(&(dictP[ITALICANGLE].key),11,"ItalicAngle"); - objFormatReal(&(dictP[ITALICANGLE].value),0.0); - objFormatName(&(dictP[ISFIXEDPITCH].key),12,"isFixedPitch"); - objFormatBoolean(&(dictP[ISFIXEDPITCH].value),FALSE); - objFormatName(&(dictP[UNDERLINEPOSITION].key),17,"UnderlinePosition"); - objFormatReal(&(dictP[UNDERLINEPOSITION].value),0.0); - objFormatName(&(dictP[UNDERLINETHICKNESS].key),18,"UnderlineThickness"); - objFormatReal(&(dictP[UNDERLINETHICKNESS].value),0.0); - return(SCAN_OK); -} -#if XFONT_CID -/***================================================================***/ -/* - * BuildCIDType1Private Dictionary - */ -/***================================================================***/ -static int -BuildCIDType1Private(psfont *fontP) -{ - psdict *Private; - - /* allocate the private dictionary */ - Private = (psdict *)vm_alloc(21*sizeof(psdict)); - - if (!(Private)) return(SCAN_OUT_OF_MEMORY); - - fontP->Private = Private; - fontP->Private[0].key.len = 20; /* number of actual entries */ - - objFormatName(&(Private[CIDT1MINFEATURE].key),10,"MinFeature"); - objFormatArray(&(Private[CIDT1MINFEATURE].value),0,NULL); - objFormatName(&(Private[CIDT1LENIV].key),5,"lenIV"); - objFormatInteger(&(Private[CIDT1LENIV].value),DEFAULTLENIV); - objFormatName(&(Private[CIDT1LANGGROUP].key),13,"LanguageGroup"); - objFormatInteger(&(Private[CIDT1LANGGROUP].value),DEFAULTLANGUAGEGROUP); - objFormatName(&(Private[CIDT1BLUEVALUES].key),10,"BlueValues"); - objFormatArray(&(Private[CIDT1BLUEVALUES].value),0,NULL); - objFormatName(&(Private[CIDT1OTHERBLUES].key),10,"OtherBlues"); - objFormatArray(&(Private[CIDT1OTHERBLUES].value),0,NULL); - objFormatName(&(Private[CIDT1BLUESCALE].key),9,"BlueScale"); - objFormatReal(&(Private[CIDT1BLUESCALE].value),DEFAULTBLUESCALE); - objFormatName(&(Private[CIDT1BLUEFUZZ].key),8,"BlueFuzz"); - objFormatInteger(&(Private[CIDT1BLUEFUZZ].value),DEFAULTBLUEFUZZ); - objFormatName(&(Private[CIDT1BLUESHIFT].key),9,"BlueShift"); - objFormatInteger(&(Private[CIDT1BLUESHIFT].value),DEFAULTBLUESHIFT); - objFormatName(&(Private[CIDT1FAMBLUES].key),11,"FamilyBlues"); - objFormatArray(&(Private[CIDT1FAMBLUES].value),0,NULL); - objFormatName(&(Private[CIDT1FAMOTHERBLUES].key),16,"FamilyOtherBlues"); - objFormatArray(&(Private[CIDT1FAMOTHERBLUES].value),0,NULL); - objFormatName(&(Private[CIDT1STDHW].key),5,"StdHW"); - objFormatArray(&(Private[CIDT1STDHW].value),0,NULL); - objFormatName(&(Private[CIDT1STDVW].key),5,"StdVW"); - objFormatArray(&(Private[CIDT1STDVW].value),0,NULL); - objFormatName(&(Private[CIDT1STEMSNAPH].key),9,"StemSnapH"); - objFormatArray(&(Private[CIDT1STEMSNAPH].value),0,NULL); - objFormatName(&(Private[CIDT1STEMSNAPV].key),9,"StemSnapV"); - objFormatArray(&(Private[CIDT1STEMSNAPV].value),0,NULL); - /* skip password */ - objFormatName(&(Private[CIDT1SUBMAPOFF].key),13,"SubrMapOffset"); - objFormatInteger(&(Private[CIDT1SUBMAPOFF].value),0); - objFormatName(&(Private[CIDT1SDBYTES].key),7,"SDBytes"); - objFormatInteger(&(Private[CIDT1SDBYTES].value),0); - objFormatName(&(Private[CIDT1SUBRCNT].key),9,"SubrCount"); - objFormatInteger(&(Private[CIDT1SUBRCNT].value),0); - objFormatName(&(Private[CIDT1FORCEBOLD].key),9,"ForceBold"); - objFormatBoolean(&(Private[CIDT1FORCEBOLD].value),DEFAULTFORCEBOLD); - objFormatName(&(Private[CIDT1RNDSTEMUP].key),9,"RndStemUp"); - objFormatBoolean(&(Private[CIDT1RNDSTEMUP].value),DEFAULTRNDSTEMUP); - objFormatName(&(Private[CIDT1EXPFACTOR].key),15,"ExpansionFactor"); - objFormatReal(&(Private[CIDT1EXPFACTOR].value), - DEFAULTEXPANSIONFACTOR); - return(SCAN_OK); -} -#endif -/***================================================================***/ -/* - * BuildPrivate Dictionary - */ -/***================================================================***/ -static int -BuildPrivate(psfont *fontP) -{ - psdict *Private; - - /* allocate the private dictionary */ - Private = (psdict *)vm_alloc(20*sizeof(psdict)); - - if (!(Private)) return(SCAN_OUT_OF_MEMORY); - - fontP->Private = Private; - fontP->Private[0].key.len = 16; /* number of actual entries */ - - objFormatName(&(Private[BLUEVALUES].key),10,"BlueValues"); - objFormatArray(&(Private[BLUEVALUES].value),0,NULL); - objFormatName(&(Private[OTHERBLUES].key),10,"OtherBlues"); - objFormatArray(&(Private[OTHERBLUES].value),0,NULL); - objFormatName(&(Private[FAMILYBLUES].key),11,"FamilyBlues"); - objFormatArray(&(Private[FAMILYBLUES].value),0,NULL); - objFormatName(&(Private[FAMILYOTHERBLUES].key),16,"FamilyOtherBlues"); - objFormatArray(&(Private[FAMILYOTHERBLUES].value),0,NULL); - objFormatName(&(Private[BLUESCALE].key),9,"BlueScale"); - objFormatReal(&(Private[BLUESCALE].value),DEFAULTBLUESCALE); - objFormatName(&(Private[BLUESHIFT].key),9,"BlueShift"); - objFormatInteger(&(Private[BLUESHIFT].value),DEFAULTBLUESHIFT); - objFormatName(&(Private[BLUEFUZZ].key),8,"BlueFuzz"); - objFormatInteger(&(Private[BLUEFUZZ].value),DEFAULTBLUEFUZZ); - objFormatName(&(Private[STDHW].key),5,"StdHW"); - objFormatArray(&(Private[STDHW].value),0,NULL); - objFormatName(&(Private[STDVW].key),5,"StdVW"); - objFormatArray(&(Private[STDVW].value),0,NULL); - objFormatName(&(Private[STEMSNAPH].key),9,"StemSnapH"); - objFormatArray(&(Private[STEMSNAPH].value),0,NULL); - objFormatName(&(Private[STEMSNAPV].key),9,"StemSnapV"); - objFormatArray(&(Private[STEMSNAPV].value),0,NULL); - objFormatName(&(Private[FORCEBOLD].key),9,"ForceBold"); - objFormatBoolean(&(Private[FORCEBOLD].value),DEFAULTFORCEBOLD); - objFormatName(&(Private[LANGUAGEGROUP].key),13,"LanguageGroup"); - objFormatInteger(&(Private[LANGUAGEGROUP].value),DEFAULTLANGUAGEGROUP); - objFormatName(&(Private[LENIV].key),5,"lenIV"); - objFormatInteger(&(Private[LENIV].value),DEFAULTLENIV); - objFormatName(&(Private[RNDSTEMUP].key),9,"RndStemUp"); - objFormatBoolean(&(Private[RNDSTEMUP].value),DEFAULTRNDSTEMUP); - objFormatName(&(Private[EXPANSIONFACTOR].key),9,"ExpansionFactor"); - objFormatReal(&(Private[EXPANSIONFACTOR].value), - DEFAULTEXPANSIONFACTOR); - return(SCAN_OK); -} -/***================================================================***/ -/**********************************************************************/ -/* GetType1Blues(fontP) */ -/* */ -/* Routine to support font-level hints. */ -/* */ -/* Gets all the Blues information from the Private dictionary */ -/* for the font. */ -/* */ -/* */ -/**********************************************************************/ -static int -GetType1Blues(psfont *fontP) -{ - psdict *PrivateDictP; /* the Private dict relating to hints */ - struct blues_struct *blues; /* ptr for the blues struct we will allocate */ - int i; - psobj *HintEntryP; - - - - /* get the Private dictionary pointer */ - PrivateDictP = fontP->Private; - - /* allocate the memory for the blues structure */ - blues = (struct blues_struct *) vm_alloc(sizeof(struct blues_struct)); - - if (!blues) return(SCAN_OUT_OF_MEMORY); - - /* Make fontP's blues ptr point to this newly allocated structure. */ - fontP->BluesP = blues; - - /* fill in the BlueValues array */ - HintEntryP = &(PrivateDictP[BLUEVALUES].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - blues->numBlueValues = 0; - else { - /* get the number of values in the array */ - if (HintEntryP->len > NUMBLUEVALUES) { - blues->numBlueValues = NUMBLUEVALUES; - } else - blues->numBlueValues = HintEntryP->len; - for (i = 0; i<= blues->numBlueValues-1; ++i) { - if (objPIsInteger(&HintEntryP->data.arrayP[i])) - blues->BlueValues[i] = - HintEntryP->data.arrayP[i].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[i])) - blues->BlueValues[i] = - HintEntryP->data.arrayP[i].data.real; - else - blues->BlueValues[i] = 0; - } - } - - /* fill in the OtherBlues array */ - HintEntryP = &(PrivateDictP[OTHERBLUES].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - blues->numOtherBlues = 0; - else { - /* get the number of values in the array */ - if (HintEntryP->len > NUMOTHERBLUES) { - blues->numOtherBlues = NUMOTHERBLUES; - } else - blues->numOtherBlues = HintEntryP->len; - for (i = 0; i<= blues->numOtherBlues-1; ++i) { - if (objPIsInteger(&HintEntryP->data.arrayP[i])) - blues->OtherBlues[i] = - HintEntryP->data.arrayP[i].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[i])) - blues->OtherBlues[i] = - HintEntryP->data.arrayP[i].data.real; - else - blues->OtherBlues[i] = 0; - } - } - - /* fill in the FamilyBlues array */ - HintEntryP = &(PrivateDictP[FAMILYBLUES].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - blues->numFamilyBlues = 0; - else { - /* get the number of values in the array */ - if (HintEntryP->len > NUMFAMILYBLUES) { - blues->numFamilyBlues = NUMFAMILYBLUES; - } else - blues->numFamilyBlues = HintEntryP->len; - for (i = 0; i<= blues->numFamilyBlues-1; ++i) { - if (objPIsInteger(&HintEntryP->data.arrayP[i])) - blues->FamilyBlues[i] = - HintEntryP->data.arrayP[i].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[i])) - blues->FamilyBlues[i] = - HintEntryP->data.arrayP[i].data.real; - else - blues->FamilyBlues[i] = 0; - } - } - - /* fill in the FamilyOtherBlues array */ - HintEntryP = &(PrivateDictP[FAMILYOTHERBLUES].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - blues->numFamilyOtherBlues = 0; - else { - /* get the number of values in the array */ - if (HintEntryP->len > NUMFAMILYOTHERBLUES) { - blues->numFamilyOtherBlues = NUMFAMILYOTHERBLUES; - } else - blues->numFamilyOtherBlues = HintEntryP->len; - for (i = 0; i<= blues->numFamilyOtherBlues-1; ++i) { - if (objPIsInteger(&HintEntryP->data.arrayP[i])) - blues->FamilyOtherBlues[i] = - HintEntryP->data.arrayP[i].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[i])) - blues->FamilyOtherBlues[i] = - HintEntryP->data.arrayP[i].data.real; - else - blues->FamilyOtherBlues[i] = 0; - } - } - - /* fill in the StemSnapH array */ - HintEntryP = &(PrivateDictP[STEMSNAPH].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - blues->numStemSnapH = 0; - else { - /* get the number of values in the array */ - if (HintEntryP->len > NUMSTEMSNAPH) { - blues->numStemSnapH = NUMSTEMSNAPH; - } else - blues->numStemSnapH = HintEntryP->len; - for (i = 0; i<= blues->numStemSnapH-1; ++i) { - if (objPIsInteger(&HintEntryP->data.arrayP[i])) - blues->StemSnapH[i] = - HintEntryP->data.arrayP[i].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[i])) - blues->StemSnapH[i] = - HintEntryP->data.arrayP[i].data.real; - else - blues->StemSnapH[i] = 0; - } - } - - /* fill in the StemSnapV array */ - HintEntryP = &(PrivateDictP[STEMSNAPV].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - blues->numStemSnapV = 0; - else { - /* get the number of values in the array */ - if (HintEntryP->len > NUMSTEMSNAPV) { - blues->numStemSnapV = NUMSTEMSNAPV; - } else - blues->numStemSnapV = HintEntryP->len; - for (i = 0; i<= blues->numStemSnapV-1; ++i) { - if (objPIsInteger(&HintEntryP->data.arrayP[i])) - blues->StemSnapV[i] = - HintEntryP->data.arrayP[i].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[i])) - blues->StemSnapV[i] = - HintEntryP->data.arrayP[i].data.real; - else - blues->StemSnapV[i] = 0; - } - } - - /* fill in the StdVW array */ - HintEntryP = &(PrivateDictP[STDVW].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - /* a value of zero signifies no entry */ - blues->StdVW = 0; - else { - if (HintEntryP->len > NUMSTDVW) { - } - if (objPIsInteger(&HintEntryP->data.arrayP[0])) - blues->StdVW = HintEntryP->data.arrayP[0].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[0])) - blues->StdVW = HintEntryP->data.arrayP[0].data.real; - else - blues->StdVW = 0; - } - - /* fill in the StdHW array */ - HintEntryP = &(PrivateDictP[STDHW].value); - /* check to see if the entry exists and if it's an array */ - if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 )) - /* a value of zero signifies no entry */ - blues->StdHW = 0; - else { - if (HintEntryP->len > NUMSTDHW) { - } - if (objPIsInteger(&HintEntryP->data.arrayP[0])) - blues->StdHW = HintEntryP->data.arrayP[0].data.integer; - else if (objPIsReal(&HintEntryP->data.arrayP[0])) - blues->StdHW = HintEntryP->data.arrayP[0].data.real; - else - blues->StdHW = 0; - } - - - /* get the ptr to the BlueScale entry */ - HintEntryP = &(PrivateDictP[BLUESCALE].value); - /* put the BlueScale in the blues structure */ - if (objPIsInteger(HintEntryP)) /* Must be integer! */ - blues->BlueScale = HintEntryP->data.integer; - else if (objPIsReal(HintEntryP)) /* Error? */ - blues->BlueScale = HintEntryP->data.real; - else - blues->BlueScale = DEFAULTBLUESCALE; - - /* get the ptr to the BlueShift entry */ - HintEntryP = &(PrivateDictP[BLUESHIFT].value); - if (objPIsInteger(HintEntryP)) /* Must be integer! */ - blues->BlueShift = HintEntryP->data.integer; - else if (objPIsReal(HintEntryP)) /* Error? */ - blues->BlueShift = HintEntryP->data.real; - else - blues->BlueShift = DEFAULTBLUESHIFT; - - /* get the ptr to the BlueFuzz entry */ - HintEntryP = &(PrivateDictP[BLUEFUZZ].value); - if (objPIsInteger(HintEntryP)) /* Must be integer! */ - blues->BlueFuzz = HintEntryP->data.integer; - else if (objPIsReal(HintEntryP)) /* Error? */ - blues->BlueFuzz = HintEntryP->data.real; - else - blues->BlueFuzz = DEFAULTBLUEFUZZ; - - /* get the ptr to the ForceBold entry */ - HintEntryP = &(PrivateDictP[FORCEBOLD].value); - if (objPIsBoolean(HintEntryP)) /* Must be integer! */ - blues->ForceBold = HintEntryP->data.boolean; - else - blues->ForceBold = DEFAULTFORCEBOLD; - - /* get the ptr to the LanguageGroup entry */ - HintEntryP = &(PrivateDictP[LANGUAGEGROUP].value); - if (objPIsInteger(HintEntryP)) /* Must be integer! */ - blues->LanguageGroup = HintEntryP->data.integer; - else - blues->LanguageGroup = DEFAULTLANGUAGEGROUP; - - /* get the ptr to the RndStemUp entry */ - HintEntryP = &(PrivateDictP[RNDSTEMUP].value); - if (objPIsBoolean(HintEntryP)) /* Must be integer! */ - blues->RndStemUp = HintEntryP->data.boolean; - else - blues->RndStemUp = DEFAULTRNDSTEMUP; - - /* get the ptr to the lenIV entry */ - HintEntryP = &(PrivateDictP[LENIV].value); - if (objPIsInteger(HintEntryP)) /* Must be integer! */ - blues->lenIV = HintEntryP->data.integer; - else - blues->lenIV = DEFAULTLENIV; - - /* get the ptr to the ExpansionFactor entry */ - HintEntryP = &(PrivateDictP[EXPANSIONFACTOR].value); - if (objPIsInteger(HintEntryP)) - blues->ExpansionFactor = HintEntryP->data.integer; - else if (objPIsReal(HintEntryP)) - blues->ExpansionFactor = HintEntryP->data.real; - else - blues->ExpansionFactor = DEFAULTEXPANSIONFACTOR; - return(SCAN_OK); -} -/**********************************************************************/ -/* GetType1CharString(fontP,code) */ -/* */ -/* Look up code in the standard encoding vector and return */ -/* the charstring associated with the character name. */ -/* */ -/* fontP is the psfont structure. */ -/* */ -/* Returns a psobj (string) */ -/**********************************************************************/ -psobj * -GetType1CharString(psfont *fontP, unsigned char code) -{ - int N; /* the 'Nth' entry in the CharStrings */ - psobj *charnameP; /* points to psobj that is name of character*/ - - psdict *CharStringsDictP; /* dictionary with char strings */ - psobj *theStringP; /* the definition for the code */ - - - - if (StdEncArrayP == NULL) { - return(NULL); - } - /* use the code to index into the standard encoding vector */ - charnameP = &(StdEncArrayP[code]); - - /* test if the encoding array points to a name */ - if (!(objPIsName(charnameP)) ) { - return(NULL); - } - - /* Now that we have the character name out of the standardencoding */ - /* get the character definition out of the current font */ - CharStringsDictP = fontP->CharStringsP; - - /* search the chars string for this charname as key */ - N = SearchDictName(CharStringsDictP,charnameP); - if (N<=0) { - return(NULL); - } - /* OK, the nth item is the psobj that is the string for this char */ - theStringP = &(CharStringsDictP[N].value); - - return(theStringP); -} - -/***================================================================***/ -/* - * FindDictValue - */ -/***================================================================***/ - -static int -FindDictValue(psdict *dictP) -{ - psobj LitName; - int N; - int V; - - /* we have just scanned a token and it is a literal name */ - /* need to check if that name is in Private dictionary */ - objFormatName(&LitName,tokenLength,tokenStartP); - /* is it in the dictP */ - N = SearchDictName(dictP,&LitName); - /* if found */ - if ( N > 0 ) { - /* what type */ - switch (dictP[N].value.type) { - case OBJ_ENCODING: - V = getEncoding(&(dictP[N].value)); - if ( V != SCAN_OK ) return(V); - break; - case OBJ_ARRAY: -#if XFONT_CID - if (0 == strncmp(tokenStartP,"FDArray",7)) - V = getFDArray(&(dictP[N].value)); - else - V = getArray(&(dictP[N].value)); -#else - V = getArray(&(dictP[N].value)); -#endif - if ( V != SCAN_OK ) return(V); - break; - case OBJ_INTEGER: - /* next value in integer */ - dictP[N].value.data.integer = getInt(); - if (rc) return(rc); /* if next token was not an Int */ - break; - case OBJ_REAL: - /* next value must be real or int, store as a real */ - scan_token(inputP); - if (tokenType == TOKEN_REAL) { - dictP[N].value.data.real = tokenValue.real; - } - else - if (tokenType == TOKEN_INTEGER) { - dictP[N].value.data.real = tokenValue.integer; - } - else return(SCAN_ERROR); - break; - case OBJ_NAME: - V = getNextValue(TOKEN_LITERAL_NAME); - if ( V != SCAN_OK ) return(V); - if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY); - objFormatName(&(dictP[N].value),tokenLength,tokenStartP); - break; - case OBJ_STRING: - V = getNextValue(TOKEN_STRING); - if ( V != SCAN_OK ) return(V); - if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY); - objFormatString(&(dictP[N].value),tokenLength,tokenStartP); - break; - case OBJ_BOOLEAN: - scan_token(inputP); - if (tokenType != TOKEN_NAME) { - return(SCAN_ERROR); - } - if (0 == strncmp(tokenStartP,"true",4) ) { - dictP[N].value.data.boolean =TRUE; - } - else - if (0 == strncmp(tokenStartP,"false",5) ) { - dictP[N].value.data.boolean =FALSE; - } - else return(SCAN_ERROR); - break; - - default: - return(SCAN_ERROR); - } - } - /* Name is not in dictionary. That is ok. */ - return(SCAN_OK); - -} -/***================================================================***/ - -#if XFONT_CID -/* - * ------------------------------------------------------------------- - * Scan the next token and convert it into an object - * Result is placed on the Operand Stack as next object - * ------------------------------------------------------------------- - */ -int -scan_cidfont(cidfont *CIDFontP, cmapres *CMapP) -{ - char filename[CID_PATH_MAX]; - char cmapfile[CID_PATH_MAX]; - char buf[CID_BUFSIZE]; - char filetype[3]; - FILE *fileP; - FILE *fileP1; - char *nameP; - int namelen; - int i, j; - int cread, rangecnt; - unsigned int char_row, char_col; - - filetype[0] = 'r'; - filetype[1] = 'b'; - filetype[2] = '\0'; - - /* copy the filename and remove leading or trailing blanks */ - /* point to name and search for leading blanks */ - nameP= CIDFontP->CIDFontFileName.data.nameP; - namelen = CIDFontP->CIDFontFileName.len; - while (nameP[0] == ' ') { - nameP++; - namelen--; - } - /* now remove any trailing blanks */ - while ((namelen>0) && ( nameP[namelen-1] == ' ')) { - namelen--; - } - strncpy(filename,nameP,namelen); - filename[namelen] = '\0'; - /* file name is now constructed */ - inputFile.data.fileP = NULL; - filterFile.data.fileP = NULL; - - /* check whether a CIDFont file */ - if ((fileP = fopen(filename,filetype))) { - cread = fread(buf, 1, CID_BUFSIZE, fileP); - fclose(fileP); - if (cread > 17) { - if (strncmp(buf, "%!", 2) || - strstr(buf, "Resource-CIDFont") == NULL) - return(SCAN_FILE_OPEN_ERROR); - } else - return(SCAN_FILE_OPEN_ERROR); - } else - return(SCAN_FILE_OPEN_ERROR); - - /* copy the CMap file name and remove leading or trailing blanks */ - /* point to name and search for leading blanks */ - nameP = CMapP->CMapFileName.data.nameP; - namelen = CMapP->CMapFileName.len; - while (nameP[0] == ' ') { - nameP++; - namelen--; - } - /* now remove any trailing blanks */ - while ((namelen>0) && ( nameP[namelen-1] == ' ')) { - namelen--; - } - strncpy(cmapfile,nameP,namelen); - cmapfile[namelen] = '\0'; - /* CMap file name is now constructed */ - inputFile1.data.fileP = NULL; - - /* check whether a CMap file */ - if ((fileP1 = fopen(cmapfile,filetype))) { - cread = fread(buf, 1, CID_BUFSIZE, fileP1); - fclose(fileP1); - if (cread > 17) { - if (strncmp(buf, "%!", 2) || - strstr(buf, "Resource-CMap") == NULL) - return(SCAN_FILE_OPEN_ERROR); - } else - return(SCAN_FILE_OPEN_ERROR); - } else - return(SCAN_FILE_OPEN_ERROR); - - /* read the specified CMap file */ - inputP = &inputFile1; - - if (!(fileP1 = fopen(cmapfile,filetype))) - return(SCAN_FILE_OPEN_ERROR); - - objFormatFile(inputP,fileP1); - - if ((rc = BuildCMapInfo(CMapP)) != 0) - return(rc); - - /* Assume everything will be OK */ - rc = 0; - rangecnt = 0; - - do { - /* Scan the next token */ - scan_token(inputP); - if (tokenType == TOKEN_INTEGER) - rangecnt = tokenValue.integer; - - if (rangecnt < 0 || rangecnt > INT_MAX / sizeof(spacerangecode)) { - rc = SCAN_ERROR; - break; - } - /* ==> tokenLength, tokenTooLong, tokenType, and */ - /* tokenValue are now set */ - - switch (tokenType) { - case TOKEN_EOF: - case TOKEN_NONE: - case TOKEN_INVALID: - /* in this case we are done */ - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - rc = SCAN_ERROR; - break; - case TOKEN_LITERAL_NAME: - /* Look up the name */ - tokenStartP[tokenLength] = '\0'; - - rc = FindDictValue(CMapP->CMapInfoP); - /* we are not going to report errors except out of memory */ - if (rc != SCAN_OUT_OF_MEMORY) - rc = SCAN_OK; - break; - case TOKEN_NAME: - if (0 == strncmp(tokenStartP,"begincodespacerange",19)) { - CIDFontP->spacerangecnt++; - spacerangeP = (spacerange *)vm_alloc(sizeof(spacerange)); - if (!spacerangeP) { - rc = SCAN_OUT_OF_MEMORY; - break; - } - spacerangeP->next = NULL; - spacerangeP->rangecnt = rangecnt; - spacerangeP->spacecode = - (spacerangecode *)vm_alloc(rangecnt*sizeof(spacerangecode)); - if (!spacerangeP->spacecode) { - rc = SCAN_OUT_OF_MEMORY; - break; - } - for (i = 0; i < rangecnt; i++) { - scan_token(inputP); - if (tokenType != TOKEN_HEX_STRING) { - rc = SCAN_ERROR; - break; - } - spacerangeP->spacecode[i].srcCodeLo = 0; - for (j = 0; j < tokenLength; j++) - spacerangeP->spacecode[i].srcCodeLo += - (unsigned char)tokenStartP[j] << (8 * (tokenLength - 1 - j)); - - scan_token(inputP); - if (tokenType != TOKEN_HEX_STRING) { - rc = SCAN_ERROR; - break; - } - spacerangeP->spacecode[i].srcCodeHi = 0; - for (j = 0; j < tokenLength; j++) - spacerangeP->spacecode[i].srcCodeHi += - (unsigned char)tokenStartP[j] << (8 * (tokenLength - 1 - j)); - } - - if (CIDFontP->spacerangeP) { - if (CIDFontP->spacerangeP->next == NULL) - CIDFontP->spacerangeP->next = spacerangeP; - else { - spacerangeP->next = CIDFontP->spacerangeP->next; - CIDFontP->spacerangeP->next = spacerangeP; - } - } else - CIDFontP->spacerangeP = spacerangeP; - - /* read "endcodespacerange" */ - scan_token(inputP); - if (tokenType != TOKEN_NAME || (tokenType == TOKEN_NAME && - (strncmp(tokenStartP,"endcodespacerange",17) != 0))) { - rc = SCAN_ERROR; - break; - } - } - if (0 == strncmp(tokenStartP,"begincidrange",13)) { - CIDFontP->cidrangecnt++; - cidrangeP = (cidrange *)vm_alloc(sizeof(cidrange)); - if (!cidrangeP) { - rc = SCAN_OUT_OF_MEMORY; - break; - } - cidrangeP->next = NULL; - cidrangeP->rangecnt = rangecnt; - cidrangeP->range = - (cidrangecode *)vm_alloc(rangecnt*sizeof(cidrangecode)); - if (!cidrangeP->range) { - rc = SCAN_OUT_OF_MEMORY; - break; - } - for (i = 0; i < rangecnt; i++) { - scan_token(inputP); - if (tokenType != TOKEN_HEX_STRING) { - rc = SCAN_ERROR; - break; - } - cidrangeP->range[i].srcCodeLo = 0; - for (j = 0; j < tokenLength; j++) - cidrangeP->range[i].srcCodeLo += - (unsigned char)tokenStartP[j] << (8 * (tokenLength - 1 - j)); - char_row = (cidrangeP->range[i].srcCodeLo >> 8) & 0xff; - char_col = cidrangeP->range[i].srcCodeLo & 0xff; - if (char_row < CMapP->firstRow) - CMapP->firstRow = char_row; - if (char_row > CMapP->lastRow) - CMapP->lastRow = char_row; - if (char_col < CMapP->firstCol) - CMapP->firstCol = char_col; - if (char_col > CMapP->lastCol) - CMapP->lastCol = char_col; - scan_token(inputP); - if (tokenType != TOKEN_HEX_STRING) { - rc = SCAN_ERROR; - break; - } - cidrangeP->range[i].srcCodeHi = 0; - for (j = 0; j < tokenLength; j++) - cidrangeP->range[i].srcCodeHi += - (unsigned char)tokenStartP[j] << (8 * (tokenLength - 1 - j)); - char_row = (cidrangeP->range[i].srcCodeHi >> 8) & 0xff; - char_col = cidrangeP->range[i].srcCodeHi & 0xff; - if (char_row < CMapP->firstRow) - CMapP->firstRow = char_row; - if (char_row > CMapP->lastRow) - CMapP->lastRow = char_row; - if (char_col < CMapP->firstCol) - CMapP->firstCol = char_col; - if (char_col > CMapP->lastCol) - CMapP->lastCol = char_col; - scan_token(inputP); - if (tokenType != TOKEN_INTEGER) { - rc = SCAN_ERROR; - break; - } - cidrangeP->range[i].dstCIDLo = tokenValue.integer; - } - - if (CIDFontP->cidrangeP) { - if (CIDFontP->cidrangeP->next == NULL) - CIDFontP->cidrangeP->next = cidrangeP; - else { - cidrangeP->next = CIDFontP->cidrangeP->next; - CIDFontP->cidrangeP->next = cidrangeP; - } - } else - CIDFontP->cidrangeP = cidrangeP; - - /* read "endcidrange" */ - scan_token(inputP); - if (tokenType != TOKEN_NAME || (tokenType == TOKEN_NAME && - (strncmp(tokenStartP,"endcidrange",11) != 0))) { - rc = SCAN_ERROR; - break; - } - } - - if (0 == strncmp(tokenStartP,"beginnotdefrange",16)) { - CIDFontP->notdefrangecnt++; - notdefrangeP = (cidrange *)vm_alloc(sizeof(cidrange)); - if (!notdefrangeP) { - rc = SCAN_OUT_OF_MEMORY; - break; - } - notdefrangeP->next = 0; - notdefrangeP->rangecnt = rangecnt; - notdefrangeP->range = - (cidrangecode *)vm_alloc(rangecnt*sizeof(cidrangecode)); - if (!notdefrangeP->range) { - rc = SCAN_OUT_OF_MEMORY; - break; - } - for (i = 0; i < rangecnt; i++) { - scan_token(inputP); - if (tokenType != TOKEN_HEX_STRING) { - rc = SCAN_ERROR; - break; - } - notdefrangeP->range[i].srcCodeLo = 0; - for (j = 0; j < tokenLength; j++) - notdefrangeP->range[i].srcCodeLo = (int)(tokenStartP[j] << - (8 * (tokenLength - 1 - j))); - scan_token(inputP); - if (tokenType != TOKEN_HEX_STRING) { - rc = SCAN_ERROR; - break; - } - notdefrangeP->range[i].srcCodeHi = 0; - for (j = 0; j < tokenLength; j++) - notdefrangeP->range[i].srcCodeHi = (int)(tokenStartP[j] << - (8 * (tokenLength - 1 - j))); - scan_token(inputP); - if (tokenType != TOKEN_INTEGER) { - rc = SCAN_ERROR; - break; - } - notdefrangeP->range[i].dstCIDLo = tokenValue.integer; - } - if (CIDFontP->notdefrangeP) { - if (CIDFontP->notdefrangeP->next == NULL) - CIDFontP->notdefrangeP->next = notdefrangeP; - else { - notdefrangeP->next = CIDFontP->notdefrangeP->next; - CIDFontP->notdefrangeP->next = notdefrangeP; - } - } else - CIDFontP->notdefrangeP = notdefrangeP; - - /* read "endnotdefrange" */ - scan_token(inputP); - if (tokenType != TOKEN_NAME || (tokenType == TOKEN_NAME && - (strncmp(tokenStartP,"endnotdefrange",14) != 0))) { - rc = SCAN_ERROR; - break; - } - } - - if (0 == strncmp(tokenStartP,"endcmap",7)) { - if (CMapP->CMapInfoP[CMAPREGISTRY].value.data.valueP == NULL || - CMapP->CMapInfoP[CMAPORDERING].value.data.valueP == NULL || - CMapP->CMapInfoP[CMAPSUPPLEMENT].value.data.integer == -1) { - rc = SCAN_ERROR; - break; - } else { - rc = SCAN_FILE_EOF; - break; - } - } - break; - } - } - while (rc == 0); - fclose(inputP->data.fileP); - if (tokenTooLong) - rc = SCAN_OUT_OF_MEMORY; - if (rc == SCAN_OUT_OF_MEMORY) return(rc); - - /* open the specified CIDFont file */ - if (!(fileP = fopen(filename,filetype))) - return(SCAN_FILE_OPEN_ERROR); - - inputP = &inputFile; - objFormatFile(inputP,fileP); - CIDWantFontInfo = TRUE; - TwoSubrs = FALSE; - rc = BuildCIDFontInfo(CIDFontP); - if (rc != 0) return(rc); - - /* Assume everything will be OK */ - rc = 0; - - /* Loop until complete font is read */ - do { - /* Scan the next token */ - scan_token(inputP); - - /* ==> tokenLength, tokenTooLong, tokenType, and tokenValue are */ - /* now set */ - - switch (tokenType) { - case TOKEN_EOF: - case TOKEN_NONE: - case TOKEN_INVALID: - /* in this case we are done */ - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - rc = SCAN_ERROR; - break; - case TOKEN_LITERAL_NAME: - /* Look up the name */ - tokenStartP[tokenLength] = '\0'; - - if (CIDWantFontInfo) { - rc = FindDictValue(CIDFontP->CIDfontInfoP); - /* we are not going to report errors except out of memory */ - if (rc != SCAN_OUT_OF_MEMORY) - rc = SCAN_OK; - break; - } - break; - case TOKEN_STRING: - tokenStartP[tokenLength] = '\0'; - if (0 == strncmp(tokenStartP,"Binary",6)) { - CIDFontP->binarydata = 1; - scan_token(inputP); - if (tokenType == TOKEN_INTEGER) - CIDFontP->bytecnt = tokenValue.integer; - else { - rc = SCAN_ERROR; - break; - } - } else if (0 == strncmp(tokenStartP,"Hex",3)) { - /* not yet supported */ - rc = SCAN_ERROR; - break; -#if 0 - /* uncomment when the hex format is supported */ - CIDFontP->binarydata = 0; - scan_token(inputP); - if (tokenType == TOKEN_INTEGER) - CIDFontP->bytecnt = tokenValue.integer; - else { - rc = SCAN_ERROR; - break; - } -#endif - } - break; - case TOKEN_NAME: - /* end of PostScript and beginning of data */ - if (0 == strncmp(tokenStartP,"StartData",9)) { - /* every CIDFont must have an FDArray */ - /* check whether other required dictionary entries were found */ - if (CIDFontP->CIDfontInfoP[CIDFDARRAY].value.data.arrayP == NULL || - CIDFontP->CIDfontInfoP[CIDFONTNAME].value.data.nameP == NULL || - CIDFontP->CIDfontInfoP[CIDFONTTYPE].value.data.integer == -1 || - CIDFontP->CIDfontInfoP[CIDVERSION].value.data.integer == -1 || - CIDFontP->CIDfontInfoP[CIDREGISTRY].value.data.valueP == NULL || - CIDFontP->CIDfontInfoP[CIDORDERING].value.data.valueP == NULL || - CIDFontP->CIDfontInfoP[CIDSUPPLEMENT].value.data.integer == -1 || - CIDFontP->CIDfontInfoP[CIDFONTBBOX].value.data.arrayP == NULL || - CIDFontP->CIDfontInfoP[CIDMAPOFFSET].value.data.integer == -1 || - CIDFontP->CIDfontInfoP[CIDFDBYTES].value.data.integer == -1 || - CIDFontP->CIDfontInfoP[CIDGDBYTES].value.data.integer == -1 || - CIDFontP->CIDfontInfoP[CIDCOUNT].value.data.integer == -1) { - rc = SCAN_ERROR; - break; - } else { - /* do Registry and Ordering entries match? */ - if (strcmp(CIDFontP->CIDfontInfoP[CIDREGISTRY].value.data.valueP, - CMapP->CMapInfoP[CMAPREGISTRY].value.data.valueP) != 0 || - strcmp(CIDFontP->CIDfontInfoP[CIDORDERING].value.data.valueP, - CMapP->CMapInfoP[CMAPORDERING].value.data.valueP) != 0) { - rc = SCAN_ERROR; - break; - } else { - fclose(inputP->data.fileP); - return(SCAN_OK); - } - } - } - break; - } - - } - while (rc ==0); - fclose(inputP->data.fileP); - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - return(rc); -} - -/* - * ------------------------------------------------------------------- - * Scan the next token and convert it into an object - * Result is placed on the Operand Stack as next object - * ------------------------------------------------------------------- - */ -int -scan_cidtype1font(psfont *FontP) -{ - int i; - int begincnt = 0; /* counter for the number of unpaired begin operators */ - int currentfilefound = 0; - - WantFontInfo = TRUE; - InPrivateDict = FALSE; - TwoSubrs = FALSE; - rc = BuildFontInfo(FontP); - if (rc != 0) return(rc); - - /* Assume everything will be OK */ - rc = 0; - filterFile.data.fileP = NULL; - - /* Loop until complete font is read */ - do { - /* Scan the next token */ - scan_token(inputP); - - /* ==> tokenLength, tokenTooLong, tokenType, and tokenValue are */ - /* now set */ - - switch (tokenType) { - case TOKEN_EOF: - case TOKEN_NONE: - case TOKEN_INVALID: - /* in this case we are done */ - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - rc = SCAN_ERROR; - break; - case TOKEN_LITERAL_NAME: - /* Look up the name */ - tokenStartP[tokenLength] = '\0'; - if (InPrivateDict ) { - rc = FindDictValue(FontP->Private); - /* we are not going to report errors */ - /* Sometimes the font file may test a value such as */ - /* testing to see if the font is alreadly loaded with */ - /* same UniqueID. We would faile on /UniqueID get */ - /* because we are expecting a int to follow UniqueID*/ - /* If the correct object type does not follow a Name*/ - /* then we will skip over it without reporting error except */ - /* out of memory */ - if (rc != SCAN_OUT_OF_MEMORY) - rc = SCAN_OK; - break; - } /* end of reading Private dictionary */ - else - if (0 == strncmp(tokenStartP,"Private",7) ) { - InPrivateDict = TRUE; - rc = BuildCIDType1Private(FontP); - break; - } - else - if (WantFontInfo) { - rc = FindDictValue(FontP->fontInfoP); - /* we are not going to report errors except out of memory */ - if (rc != SCAN_OUT_OF_MEMORY) - rc = SCAN_OK; - break; - } - break; - case TOKEN_NAME: - if (0 == strncmp(tokenStartP,"currentfile",11)) { - currentfilefound = 1; - break; - } else if (0 == strncmp(tokenStartP,"eexec",5)) { - if (currentfilefound == 1) { - currentfilefound = 0; - filterFile.data.fileP = CIDeexec(inputP->data.fileP); - if (filterFile.data.fileP == NULL) { - fclose(inputFile.data.fileP); - return(SCAN_FILE_OPEN_ERROR); - } - inputP = &filterFile; - } else { - rc = SCAN_ERROR; - break; - } - } else if (0 == strncmp(tokenStartP,"begin",5)) { - begincnt++; - currentfilefound = 0; - } else if (0 == strncmp(tokenStartP,"end",3)) { - currentfilefound = 0; - begincnt--; - if (begincnt == 0) { - if (filterFile.data.fileP != NULL) { - scan_token(inputP); /* get 'currentfile' */ - scan_token(inputP); /* get 'closefile' */ - inputP = &inputFile; - resetDecrypt(); - inputP->data.fileP->b_cnt = - F_BUFSIZ - (inputP->data.fileP->b_ptr - - inputP->data.fileP->b_base); - if (inputP->data.fileP->b_cnt > 0) { - for (i = 0; i < inputP->data.fileP->b_cnt; i++) - if (*(inputP->data.fileP->b_ptr + i) == '%') - break; - if (i < inputP->data.fileP->b_cnt) { - inputP->data.fileP->b_cnt -= i; - inputP->data.fileP->b_ptr += i; - } else - inputP->data.fileP->b_cnt = 0; - } - } - rc = SCAN_OK; - return(rc); - } - if (begincnt < 0) { - rc = SCAN_ERROR; - break; - } - } - break; - } - - } - while (rc == 0); - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - return(rc); -} -#endif - -/* - * ------------------------------------------------------------------- - * Scan the next token and convert it into an object - * Result is placed on the Operand Stack as next object - * ------------------------------------------------------------------- - */ -int -scan_font(psfont *FontP) -{ - - - char filename[128]; - char filetype[3]; - FILE *fileP; - char *nameP; - int namelen; - int V; - int i; - boolean starthex80; - - starthex80 = FALSE; - filetype[0] = 'r'; - filetype[1] = 'b'; - filetype[2] = '\0'; - /* copy the filename and remove leading or trailing blanks */ - /* point to name and search for leading blanks */ - nameP= FontP->FontFileName.data.nameP; - namelen = FontP->FontFileName.len; - while (nameP[0] == ' ') { - nameP++; - namelen--; - } - /* now remove any trailing blanks */ - while ((namelen>0) && ( nameP[namelen-1] == ' ')) { - namelen--; - } - strncpy(filename,nameP,namelen); - filename[namelen] = '\0'; - /* file name is now constructed */ - inputFile.data.fileP = NULL; - filterFile.data.fileP = NULL; - - inputP = &inputFile; - if ((fileP = T1Open(filename,filetype))) { - /* get the first byte of file */ - V = _XT1getc(fileP); - /* if file starts with x'80' then skip next 5 bytes */ - if ( V == 0X80 ) { - for (i=0;i<5;i++) V = _XT1getc(fileP); - starthex80 = TRUE; - } - else T1Ungetc(V,fileP); - objFormatFile(inputP,fileP); - } - else { - return(SCAN_FILE_OPEN_ERROR); - }; - - WantFontInfo = TRUE; - InPrivateDict = FALSE; - TwoSubrs = FALSE; - rc = BuildFontInfo(FontP); - if (rc != 0) return(rc); - - /* Assume everything will be OK */ - rc = 0; - - /* Loop until complete font is read */ - do { - /* Scan the next token */ - scan_token(inputP); - - /* ==> tokenLength, tokenTooLong, tokenType, and tokenValue are */ - /* now set */ - - switch (tokenType) { - case TOKEN_EOF: - case TOKEN_NONE: - case TOKEN_INVALID: - /* in this case we are done */ - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - rc = SCAN_ERROR; - break; - case TOKEN_LITERAL_NAME: - /* Look up the name */ - tokenStartP[tokenLength] = '\0'; - if (InPrivateDict ) { - if (0== strncmp(tokenStartP,"Subrs",5) ) { - rc = BuildSubrs(FontP); - break; - } - if (0== strncmp(tokenStartP,"CharStrings",11) ) { - rc = BuildCharStrings(FontP); - if ( (rc == SCAN_OK) ||(rc == SCAN_END) ) { - T1Close(inputP->data.fileP); - /* Build the Blues Structure */ - rc = GetType1Blues(FontP); - /* whatever the return code, return it */ - /* all the work is done. This is the normal exit.*/ - return(rc); - } - break; - } - rc = FindDictValue(FontP->Private); - /* we are not going to report errors */ - /* Sometimes the font file may test a value such as */ - /* testing to see if the font is alreadly loaded with */ - /* same UniqueID. We would faile on /UniqueID get */ - /* because we are expecting a int to follow UniqueID*/ - /* If the correct object type does not follow a Name*/ - /* then we will skip over it without reporting error except */ - /* when out of memory */ - if (rc != SCAN_OUT_OF_MEMORY) - rc = SCAN_OK; - break; - } /* end of reading Private dictionary */ - else - if (0== strncmp(tokenStartP,"Private",7) ) { - InPrivateDict = TRUE; - rc = BuildPrivate(FontP); - break; - } - else - if (WantFontInfo) { - rc = FindDictValue(FontP->fontInfoP); - /* we are not going to report errors except out of memory */ - if (rc != SCAN_OUT_OF_MEMORY) - rc = SCAN_OK; - break; - } - break; - case TOKEN_NAME: - if (0 == strncmp(tokenStartP,"eexec",5) ) { - /* if file started with x'80', check next 5 bytes */ - if (starthex80) { - V = _XT1getc(fileP); - if ( V == 0X80 ) { - for (i=0;i<5;i++) V = _XT1getc(fileP); - } - else T1Ungetc(V,fileP); - } - filterFile.data.fileP = T1eexec(inputP->data.fileP); - if (filterFile.data.fileP == NULL) { - T1Close(inputFile.data.fileP); - return(SCAN_FILE_OPEN_ERROR); - } - inputP = &filterFile; - - WantFontInfo = FALSE; - } - break; - } - - } - while (rc ==0); - T1Close(inputP->data.fileP); - if (tokenTooLong) return(SCAN_OUT_OF_MEMORY); - return(rc); -} - diff --git a/nx-X11/lib/font/Type1/spaces.c b/nx-X11/lib/font/Type1/spaces.c deleted file mode 100644 index 55cc96f..0000000 --- a/nx-X11/lib/font/Type1/spaces.c +++ /dev/null @@ -1,998 +0,0 @@ -/* $Xorg: spaces.c,v 1.4 2000/08/17 19:46:32 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/spaces.c,v 3.10tsi Exp $ */ - /* SPACES CWEB V0021 ******** */ -/* -:h1 id=spaces.SPACES Module - Handles Coordinate Spaces - -This module is responsible for handling the TYPE1IMAGER "XYspace" object. - -&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) - - -:h3.Include Files -*/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef FONTMODULE -#include "Xdefs.h" /* Bool declaration ??? */ -#include "Xmd.h" /* INT32 declaration ??? */ -#include "os.h" -#include "xf86_ansic.h" -#else -#include "X11/Xos.h" -#include <stdio.h> -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "pictures.h" -#include "fonts.h" -#include "arith.h" -#include "trig.h" - -static void FindFfcn ( double cx, double cy, - convertFunc *fcnP ); -static void FindIfcn ( double cx, double cy, - fractpel *icxP, fractpel *icyP, - iconvertFunc *fcnP ); - -/* -:h3.Entry Points Provided to the TYPE1IMAGER User -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.Entry Points Provided to Other Modules -*/ - -/* -In addition, other modules call the SPACES module through function -vectors in the "XYspace" structure. The entry points accessed that -way are "FConvert()", "IConvert()", and "ForceFloat()". -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h3.Macros and Typedefs Provided to Other Modules - -:h4.Duplicating and Killing Spaces - -Destroying XYspaces is so simple we can do it with a -macro: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -On the other hand, duplicating XYspaces is slightly more difficult -because of the need to keep a unique ID in the space, see -:hdref refid=dupspace.. - -:h4.Fixed Point Pel Representation - -We represent pel positions with fixed point numbers. This does NOT -mean integer, but truly means fixed point, with a certain number -of binary digits (FRACTBITS) representing the fractional part of the -pel. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -/* -:h2.Data Structures for Coordinate Spaces and Points -*/ -/* -:h3 id=matrix.Matrices - -TYPE1IMAGER uses 2x2 transformation matrices. We'll use C notation for -such a matrix (M[2][2]), the first index being rows, the second columns. -*/ - -/* -:h3.The "doublematrix" Structure - -We frequently find it desirable to store both a matrix and its -inverse. We store these in a "doublematrix" structure. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.The "XYspace" Structure - -The XYspace structure represents the XYspace object. -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ -#define RESERVED 10 /* 'n' IDs are reserved for invalid & immortal spaces */ -/* -*/ -#define NEXTID ((SpaceID < RESERVED) ? (SpaceID = RESERVED) : ++SpaceID) - -static unsigned int SpaceID = 1; - -struct XYspace * -CopySpace(struct XYspace *S) -{ - S = (struct XYspace *)Allocate(sizeof(struct XYspace), S, 0); - S->ID = NEXTID; - return(S); -} -/* -:h3.The "fractpoint" Structure - -A fractional point is just a "fractpel" x and y: -*/ - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.Lazy Evaluation of Matrix Inverses - -Calculating the inverse of a matrix is somewhat involved, and we usually -do not need them. So, we flag whether or not the space has the inverse -already calculated: -*/ - -#define HASINVERSE(flag) ((flag)&0x80) - -/* -The following macro forces a space to have an inverse: -*/ - -#define CoerceInverse(S) if (!HASINVERSE((S)->flag)) { \ - MatrixInvert((S)->tofract.normal, (S)->tofract.inverse); (S)->flag |= HASINVERSE(ON); } -/* -:h3.IDENTITY Space - -IDENTITY space is (logically) the space corresponding to the identity -transformation matrix. However, since all our transformation matrices -have a common FRACTFLOAT scale factor to convert to 'fractpel's, that -is actually what we store in 'tofract' matrix of IDENTITY: -*/ - -static struct XYspace identity = { SPACETYPE, ISPERMANENT(ON) + ISIMMORTAL(ON) - + HASINVERSE(ON), 2, /* added 3-26-91 PNM */ - NULL, NULL, - NULL, NULL, NULL, NULL, - INVALIDID + 1, 0, - {{{FRACTFLOAT, 0.0}, {0.0, FRACTFLOAT}}, - {{1.0/FRACTFLOAT, 0.0}, {0.0, 1.0/FRACTFLOAT}}}, - {{0, 0}, {0, 0}}}; -struct XYspace *IDENTITY = &identity; - -/* -*/ -#define MAXCONTEXTS 16 - -static struct doublematrix contexts[MAXCONTEXTS]; - -#ifdef notdef - -static int nextcontext = 1; - -/*SHARED LINE(S) ORIGINATED HERE*/ - -/* -:h3.FindDeviceContext() - Find the Context Given a Device - -This routine, given a device, returns the index of the device's -transformation matrix in the context array. If it cannot find it, -it will allocate a new array entry and fill it out. -*/ - -static int -FindDeviceContext(pointer device) /* device token */ -{ - double M[2][2]; /* temporary matrix */ - float Xres,Yres; /* device resolution */ - int orient = -1; /* device orientation */ - int rc = -1; /* return code for QueryDeviceState */ - - if (rc != 0) /* we only bother with this check once */ - Abort("Context: QueryDeviceState didn't work"); - - M[0][0] = M[1][0] = M[0][1] = M[1][1] = 0.0; - - switch (orient) { - case 0: - M[0][0] = Xres; M[1][1] = -Yres; - break; - case 1: - M[1][0] = Yres; M[0][1] = Xres; - break; - case 2: - M[0][0] = -Xres; M[1][1] = Yres; - break; - case 3: - M[1][0] = -Yres; M[0][1] = -Xres; - break; - default: - Abort("QueryDeviceState returned invalid orientation"); - } - return(FindContext(M)); -} - -/* -:h3.FindContext() - Find the Context Given a Matrix - -This routine, given a matrix, returns the index of that matrix matrix in -the context array. If it cannot find it, it will allocate a new array -entry and fill it out. -*/ - -int -FindContext(double M[2][2]) /* array to search for */ -{ - register int i; /* loop variable for search */ - for (i=0; i < nextcontext; i++) - if (M[0][0] == contexts[i].normal[0][0] && M[1][0] == contexts[i].normal[1][0] - && M[0][1] == contexts[i].normal[0][1] && M[1][1] == contexts[i].normal[1][1]) - break; - - if (i >= nextcontext) { - if (i >= MAXCONTEXTS) - Abort("Context: out of them"); - LONGCOPY(contexts[i].normal, M, sizeof(contexts[i].normal)); - MatrixInvert(M, contexts[i].inverse); - nextcontext++; - } - - return(i); -} - -/* -:h3.Context() - Create a Coordinate Space for a Device - -This user operator is implemented by first finding the device context -array index, then transforming IDENTITY space to create an appropriate -cooridnate space. -*/ - -struct XYspace * -Context(pointer device, /* device token */ - double units) /* multiples of one inch */ -{ - double M[2][2]; /* device transformation matrix */ - register int n; /* will hold device context number */ - register struct XYspace *S; /* XYspace constructed */ - - ARGCHECK((device == NULL), "Context of NULLDEVICE not allowed", - NULL, IDENTITY, (0), struct XYspace *); - ARGCHECK((units == 0.0), "Context: bad units", NULL, IDENTITY, (0), struct XYspace *); - - n = FindDeviceContext(device); - - LONGCOPY(M, contexts[n].normal, sizeof(M)); - - M[0][0] *= units; - M[0][1] *= units; - M[1][0] *= units; - M[1][1] *= units; - - S = (struct XYspace *)Xform(IDENTITY, M); - - S->context = n; - return(S); -} -#endif - -/* -:h3.ConsiderContext() - Adjust a Matrix to Take Out Device Transform - -Remember, we have :f/x times U times D/ and :f/M/ and and we want :f/x -times U times M times D/. An easy way to do this is to calculate -:f/D sup <-1> times M times D/, because: -:formula. -x times U times D times D sup <-1> times M times D = x times U times M times D -:formula. -So this subroutine, given an :f/M/and an object, finds the :f/D/ for that -object and modifies :f/M/ so it is :f/D sup <-1> times M times D/. -*/ - -static void -ConsiderContext(struct xobject *obj, /* object to be transformed */ - double M[2][2]) /* matrix (may be changed) */ -{ - register int context = 0; /* index in contexts array */ - - if (obj == NULL) return; - - if (ISPATHTYPE(obj->type)) { - struct segment *path = (struct segment *) obj; - - context = path->context; - } - else if (obj->type == SPACETYPE) { - struct XYspace *S = (struct XYspace *) obj; - - context = S->context; - } - else if (obj->type == PICTURETYPE) { - - } - else - context = NULLCONTEXT; - - if (context != NULLCONTEXT) { - MatrixMultiply(contexts[context].inverse, M, M); - MatrixMultiply(M, contexts[context].normal, M); - } -} - -/* -:h2.Conversion from User's X,Y to "fractpel" X,Y - -When the user is building paths (lines, moves, curves, etc.) he passes -the control points (x,y) for the paths together with an XYspace. We -must convert from the user's (x,y) to our internal representation -which is in pels (fractpels, actually). This involves transforming -the user's (x,y) under the coordinate space transformation. It is -important that we do this quickly. So, we store pointers to different -conversion functions right in the XYspace structure. This allows us -to have simpler special case functions for the more commonly -encountered types of transformations. - -:h3.Convert(), IConvert(), and ForceFloat() - Called Through "XYspace" Structure - -These are functions that fit in the "convert" and "iconvert" function -pointers in the XYspace structure. They call the "xconvert", "yconvert", -"ixconvert", and "iyconvert" as appropriate to actually do the work. -These secondary routines come in many flavors to handle different -special cases as quickly as possible. -*/ - -static void -FXYConvert(struct fractpoint *pt, /* point to set */ - struct XYspace *S, /* relevant coordinate space */ - double x, double y) /* user's coordinates of point */ -{ - pt->x = (*S->xconvert)(S->tofract.normal[0][0], S->tofract.normal[1][0], x, y); - pt->y = (*S->yconvert)(S->tofract.normal[0][1], S->tofract.normal[1][1], x, y); -} - -static void -IXYConvert(struct fractpoint *pt, /* point to set */ - struct XYspace *S, /* relevant coordinate space */ - long x, long y) /* user's coordinates of point */ -{ - pt->x = (*S->ixconvert)(S->itofract[0][0], S->itofract[1][0], x, y); - pt->y = (*S->iyconvert)(S->itofract[0][1], S->itofract[1][1], x, y); -} - -/* -ForceFloat is a substitute for IConvert(), when we just do not have -enough significant digits in the coefficients to get high enough -precision in the answer with fixed point arithmetic. So, we force the -integers to floats, and do the arithmetic all with floats: -*/ - -static void -ForceFloat(struct fractpoint *pt, /* point to set */ - struct XYspace *S, /* relevant coordinate space */ - long x, long y) /* user's coordinates of point */ -{ - (*S->convert)(pt, S, (double) x, (double) y); -} - -/* -:h3.FXYboth(), FXonly(), FYonly() - Floating Point Conversion - -These are the routines we use when the user has given us floating -point numbers for x and y. FXYboth() is the general purpose routine; -FXonly() and FYonly() are special cases when one of the coefficients -is 0.0. -*/ - -static fractpel -FXYboth(double cx, double cy, /* x and y coefficients */ - double x, double y) /* user x,y */ -{ - register double r; /* temporary float */ - - r = x * cx + y * cy; - return((fractpel) r); -} - -/*ARGSUSED*/ -static fractpel -FXonly(double cx, double cy, /* x and y coefficients */ - double x, double y) /* user x,y */ -{ - register double r; /* temporary float */ - - r = x * cx; - return((fractpel) r); -} - -/*ARGSUSED*/ -static fractpel -FYonly(double cx, double cy, /* x and y coefficients */ - double x, double y) /* user x,y */ -{ - register double r; /* temporary float */ - - r = y * cy; - return((fractpel) r); -} - -/* -:h3.IXYboth(), IXonly(), IYonly() - Simple Integer Conversion - -These are the routines we use when the user has given us integers for -x and y, and the coefficients have enough significant digits to -provide precise answers with only "long" (32 bit?) multiplication. -IXYboth() is the general purpose routine; IXonly() and IYonly() are -special cases when one of the coefficients is 0. -*/ - -static fractpel -IXYboth(fractpel cx, fractpel cy, /* x and y coefficients */ - long x, long y) /* user x,y */ -{ - return(x * cx + y * cy); -} - -/*ARGSUSED*/ -static fractpel -IXonly(fractpel cx, fractpel cy, /* x and y coefficients */ - long x, long y) /* user x,y */ -{ - return(x * cx); -} - -/*ARGSUSED*/ -static fractpel -IYonly(fractpel cx, fractpel cy, /* x and y coefficients */ - long x, long y) /* user x,y */ -{ - return(y * cy); -} - - -/* -:h3.FPXYboth(), FPXonly(), FPYonly() - More Involved Integer Conversion - -These are the routines we use when the user has given us integers for -x and y, but the coefficients do not have enough significant digits to -provide precise answers with only "long" (32 bit?) multiplication. -We have increased the number of significant bits in the coefficients -by FRACTBITS; therefore we must use "double long" (64 bit?) -multiplication by calling FPmult(). FPXYboth() is the general purpose -routine; FPXonly() and FPYonly() are special cases when one of the -coefficients is 0. - -Note that it is perfectly possible for us to calculate X with the -"FP" method and Y with the "I" method, or vice versa. It all depends -on how the functions in the XYspace structure are filled out. -*/ - -static fractpel -FPXYboth(fractpel cx, fractpel cy, /* x and y coefficients */ - long x, long y) /* user x,y */ -{ - return( FPmult(x, cx) + FPmult(y, cy) ); -} - -/*ARGSUSED*/ -static fractpel -FPXonly(fractpel cx, fractpel cy, /* x and y coefficients */ - long x, long y) /* user x,y */ -{ - return( FPmult(x, cx) ); -} - -/*ARGSUSED*/ -static fractpel -FPYonly(fractpel cx, fractpel cy, /* x and y coefficients */ - long x, long y) /* user x,y */ -{ - return( FPmult(y, cy) ); -} - - - -/* -:h3.FillOutFcns() - Determine the Appropriate Functions to Use for Conversion - -This function fills out the "convert" and "iconvert" function pointers -in an XYspace structure, and also fills the "helper" -functions that actually do the work. -*/ - -static void -FillOutFcns(struct XYspace *S) /* functions will be set in this structure */ -{ - S->convert = FXYConvert; - S->iconvert = IXYConvert; - - FindFfcn(S->tofract.normal[0][0], S->tofract.normal[1][0], &S->xconvert); - FindFfcn(S->tofract.normal[0][1], S->tofract.normal[1][1], &S->yconvert); - FindIfcn(S->tofract.normal[0][0], S->tofract.normal[1][0], - &S->itofract[0][0], &S->itofract[1][0], &S->ixconvert); - FindIfcn(S->tofract.normal[0][1], S->tofract.normal[1][1], - &S->itofract[0][1], &S->itofract[1][1], &S->iyconvert); - - if (S->ixconvert == NULL || S->iyconvert == NULL) - S->iconvert = ForceFloat; -} - -/* -:h4.FindFfcn() - Subroutine of FillOutFcns() to Fill Out Floating Functions - -This function tests for the special case of one of the coefficients -being zero: -*/ - -static void -FindFfcn(double cx, double cy, /* x and y coefficients */ - convertFunc *fcnP) /* pointer to function to set */ -{ - if (cx == 0.0) - *fcnP = FYonly; - else if (cy == 0.0) - *fcnP = FXonly; - else - *fcnP = FXYboth; -} - -/* -:h4.FindIfcn() - Subroutine of FillOutFcns() to Fill Out Integer Functions - -There are two types of integer functions, the 'I' type and the 'FP' type. -We use the I type functions when we are satisfied with simple integer -arithmetic. We used the FP functions when we feel we need higher -precision (but still fixed point) arithmetic. If all else fails, -we store a NULL indicating that this we should do the conversion in -floating point. -*/ - -static void -FindIfcn(double cx, double cy, /* x and y coefficients */ - fractpel *icxP, fractpel *icyP, /* fixed point coefficients to set */ - iconvertFunc *fcnP) /* pointer to function to set */ -{ - register fractpel imax; /* maximum of cx and cy */ - - *icxP = cx; - *icyP = cy; - - if (cx != (float) (*icxP) || cy != (float) (*icyP)) { -/* -At this point we know our integer approximations of the coefficients -are not exact. However, we will still use them if the maximum -coefficient will not fit in a 'fractpel'. Of course, we have little -choice at that point, but we haven't lost that much precision by -staying with integer arithmetic. We have enough significant digits -so that -any error we introduce is less than one part in 2:sup/16/. -*/ - - imax = MAX(ABS(*icxP), ABS(*icyP)); - if (imax < (fractpel) (1<<(FRACTBITS-1)) ) { -/* -At this point we know our integer approximations just do not have -enough significant digits for accuracy. We will add FRACTBITS -significant digits to the coefficients (by multiplying them by -1<<FRACTBITS) and go to the "FP" form of the functions. First, we -check to see if we have ANY significant digits at all (that is, if -imax == 0). If we don't, we suspect that adding FRACTBITS digits -won't help, so we punt the whole thing. -*/ - if (imax == 0) { - *fcnP = NULL; - return; - } - cx *= FRACTFLOAT; - cy *= FRACTFLOAT; - *icxP = cx; - *icyP = cy; - *fcnP = FPXYboth; - } - else - *fcnP = IXYboth; - } - else - *fcnP = IXYboth; -/* -Now we check for special cases where one coefficient is zero (after -integer conversion): -*/ - if (*icxP == 0) - *fcnP = (*fcnP == FPXYboth) ? FPYonly : IYonly; - else if (*icyP == 0) - *fcnP = (*fcnP == FPXYboth) ? FPXonly : IXonly; -} -/* -:h3.UnConvert() - Find User Coordinates From FractPoints - -The interesting thing with this routine is that we avoid calculating -the matrix inverse of the device transformation until we really need -it, which is to say, until this routine is called for the first time -with a given coordinate space. - -We also only calculate it only once. If the inverted matrix is valid, -we don't calculate it; if not, we do. We never expect matrices with -zero determinants, so by convention, we mark the matrix is invalid by -marking both X terms zero. -*/ - -void -UnConvert(struct XYspace *S, /* relevant coordinate space */ - struct fractpoint *pt, /* device coordinates */ - double *xp, double *yp) /* where to store resulting x,y */ -{ - double x,y; - - CoerceInverse(S); - x = pt->x; - y = pt->y; - *xp = S->tofract.inverse[0][0] * x + S->tofract.inverse[1][0] * y; - *yp = S->tofract.inverse[0][1] * x + S->tofract.inverse[1][1] * y; -} - -/* -:h2.Transformations -*/ -/* -:h3 id=xform.Xform() - Transform Object in X and Y - -TYPE1IMAGER wants transformations of objects like paths to be identical -to transformations of spaces. For example, if you scale a line(1,1) -by 10 it should yield the same result as generating the line(1,1) in -a coordinate space that has been scaled by 10. - -We handle fonts by storing the accumulated transform, for example, SR -(accumulating on the right). Then when we map the font through space TD, -for example, we multiply the accumulated font transform on the left by -the space transform on the right, yielding SRTD in this case. We will -get the same result if we did S, then R, then T on the space and mapping -an unmodified font through that space. -*/ - -struct xobject * -t1_Xform(struct xobject *obj, /* object to transform */ - double M[2][2]) /* transformation matrix */ -{ - if (obj == NULL) - return(NULL); - - if (obj->type == FONTTYPE) { - register struct font *F = (struct font *) obj; - - F = UniqueFont(F); - return((struct xobject*)F); - } - if (obj->type == PICTURETYPE) { -/* -In the case of a picture, we choose both to update the picture's -transformation matrix and keep the handles up to date. -*/ - register struct picture *P = (struct picture *) obj; - register struct segment *handles; /* temporary path to transform handles */ - - P = UniquePicture(P); - handles = PathSegment(LINETYPE, P->origin.x, P->origin.y); - handles = Join(handles, - PathSegment(LINETYPE, P->ending.x, P->ending.y) ); - handles = (struct segment *)Xform((struct xobject *) handles, M); - P->origin = handles->dest; - P->ending = handles->link->dest; - KillPath(handles); - return((struct xobject *)P); - } - - if (ISPATHTYPE(obj->type)) { - struct XYspace pseudo; /* local temporary space */ - PseudoSpace(&pseudo, M); - return((struct xobject *) PathTransform((struct segment *)obj, - &pseudo)); - } - - - if (obj->type == SPACETYPE) { - register struct XYspace *S = (struct XYspace *) obj; - -/* replaced ISPERMANENT(S->flag) with S->references > 1 3-26-91 PNM */ - if (S->references > 1) - S = CopySpace(S); - else - S->ID = NEXTID; - - MatrixMultiply(S->tofract.normal, M, S->tofract.normal); - /* - * mark inverted matrix invalid: - */ - S->flag &= ~HASINVERSE(ON); - - FillOutFcns(S); - return((struct xobject *) S); - } - - return(ArgErr("Untransformable object", obj, obj)); -} - -/* -:h3.Transform() - Transform an Object - -This is the external user's entry point. -*/ -struct xobject * -t1_Transform(struct xobject *obj, - double cxx, double cyx, /* 2x2 transform matrix elements */ - double cxy, double cyy) /* in row order */ -{ - double M[2][2]; - - M[0][0] = cxx; - M[0][1] = cyx; - M[1][0] = cxy; - M[1][1] = cyy; - ConsiderContext(obj, M); - return(Xform(obj, M)); -} -/* -:h3.Scale() - Special Case of Transform() - -This is a user operator. -*/ - -struct xobject * -t1_Scale(struct xobject *obj, /* object to scale */ - double sx, double sy) /* scale factors in x and y */ -{ - double M[2][2]; - - M[0][0] = sx; - M[1][1] = sy; - M[1][0] = M[0][1] = 0.0; - ConsiderContext(obj, M); - return(Xform(obj, M)); -} - -/* -:h3 id=rotate.Rotate() - Special Case of Transform() - -We special-case different settings of 'degrees' for performance -and accuracy within the DegreeSin() and DegreeCos() routines themselves. -*/ - -#ifdef notdef -struct xobject * -xiRotate(struct xobject *obj, /* object to be transformed */ - double degrees) /* degrees of COUNTER-clockwise rotation */ -{ - double M[2][2]; - - M[0][0] = M[1][1] = DegreeCos(degrees); - M[1][0] = - (M[0][1] = DegreeSin(degrees)); - ConsiderContext(obj, M); - return(Xform(obj, M)); -} -#endif - -/* -:h3.PseudoSpace() - Build a Coordinate Space from a Matrix - -Since we have built all this optimized code that, given an (x,y) and -a coordinate space, yield transformed (x,y), it seems a shame not to -use the same logic when we need to multiply an (x,y) by an arbitrary -matrix that is not (initially) part of a coordinate space. This -subroutine takes the arbitrary matrix and builds a coordinate -space, with all its nifty function pointers. -*/ - -void -PseudoSpace(struct XYspace *S, /* coordinate space structure to fill out */ - double M[2][2]) /* matrix that will become 'tofract.normal' */ -{ - S->type = SPACETYPE; - S->flag = ISPERMANENT(ON) + ISIMMORTAL(ON); - S->references = 2; /* 3-26-91 added PNM */ - S->tofract.normal[0][0] = M[0][0]; - S->tofract.normal[1][0] = M[1][0]; - S->tofract.normal[0][1] = M[0][1]; - S->tofract.normal[1][1] = M[1][1]; - - FillOutFcns(S); -} - -/* -:h2 id=matrixa.Matrix Arithmetic - -Following the convention in Newman and Sproull, :hp1/Interactive -Computer Graphics/, -matrices are organized: -:xmp. - | cxx cyx | - | cxy cyy | -:exmp. -A point is horizontal, for example: -:xmp. - [ x y ] -:exmp. -This means that: -:formula/x prime = cxx times x + cxy times y/ -:formula/y prime = cyx times x + cyy times y/ -I've seen the other convention, where transform matrices are -transposed, equally often in the literature. -*/ - -/* -:h3.MatrixMultiply() - Implements Multiplication of Two Matrices - -Implements matrix multiplication, A * B = C. - -To remind myself, matrix multiplication goes rows of A times columns -of B. -The output matrix may be the same as one of the input matrices. -*/ -void -MatrixMultiply(double A[2][2], double B[2][2], /* input matrices */ - double C[2][2]) /* output matrix */ -{ - register double txx,txy,tyx,tyy; - - txx = A[0][0] * B[0][0] + A[0][1] * B[1][0]; - txy = A[1][0] * B[0][0] + A[1][1] * B[1][0]; - tyx = A[0][0] * B[0][1] + A[0][1] * B[1][1]; - tyy = A[1][0] * B[0][1] + A[1][1] * B[1][1]; - - C[0][0] = txx; - C[1][0] = txy; - C[0][1] = tyx; - C[1][1] = tyy; -} -/* -:h3.MatrixInvert() - Invert a Matrix - -My reference for matrix inversion was :hp1/Elementary Linear Algebra/ -by Paul C. Shields, Worth Publishers, Inc., 1968. -*/ -void -MatrixInvert(double M[2][2], /* input matrix */ - double Mprime[2][2]) /* output inverted matrix */ -{ - register double D; /* determinant of matrix M */ - register double txx,txy,tyx,tyy; - - txx = M[0][0]; - txy = M[1][0]; - tyx = M[0][1]; - tyy = M[1][1]; - - D = M[1][1] * M[0][0] - M[1][0] * M[0][1]; - if (D == 0.0) - Abort("MatrixInvert: can't"); - - Mprime[0][0] = tyy / D; - Mprime[1][0] = -txy / D; - Mprime[0][1] = -tyx / D; - Mprime[1][1] = txx / D; -} -/* -:h2.Initialization, Queries, and Debug -*/ -/* -:h3.InitSpaces() - Initialize Constant Spaces - -For compatibility, we initialize a coordinate space called USER which -maps 72nds of an inch to pels on the default device. -*/ - -struct XYspace *USER = &identity; - -void -InitSpaces(void) -{ - IDENTITY->type = SPACETYPE; - FillOutFcns(IDENTITY); - - contexts[NULLCONTEXT].normal[1][0] - = contexts[NULLCONTEXT].normal[0][1] - = contexts[NULLCONTEXT].inverse[1][0] - = contexts[NULLCONTEXT].inverse[0][1] = 0.0; - contexts[NULLCONTEXT].normal[0][0] - = contexts[NULLCONTEXT].normal[1][1] - = contexts[NULLCONTEXT].inverse[0][0] - = contexts[NULLCONTEXT].inverse[1][1] = 1.0; - - USER->flag |= ISIMMORTAL(ON); - CoerceInverse(USER); -} -/* -:h3.QuerySpace() - Returns the Transformation Matrix of a Space - -Since the tofract matrix of an XYspace includes the scale factor -necessary to produce fractpel results (i.e., FRACTFLOAT), this -must be taken out before we return the matrix to the user. Fortunately, -this is simple: just multiply by the inverse of IDENTITY! -*/ - -void -QuerySpace(struct XYspace *S, /* space asked about */ - double *cxxP, double *cyxP, /* where to put answer */ - double *cxyP, double *cyyP) -{ - double M[2][2]; /* temp matrix to build user's answer */ - - if (S->type != SPACETYPE) { - ArgErr("QuerySpace: not a space", S, NULL); - return; - } - MatrixMultiply(S->tofract.normal, IDENTITY->tofract.inverse, M); - *cxxP = M[0][0]; - *cxyP = M[1][0]; - *cyxP = M[0][1]; - *cyyP = M[1][1]; -} - -/* -:h3.FormatFP() - Format a Fixed Point Pel - -We format the pel as "dddd.XXXX", where XX's are hexidecimal digits, -and the dd's are decimal digits. This might be a little confusing -mixing hexidecimal and decimal like that, but it is convenient -to use for debug. - -We make sure we have N (FRACTBITS/4) digits past the decimal point. -*/ -#define FRACTMASK ((1<<FRACTBITS)-1) /* mask for fractional part */ - -void -FormatFP(char *string, /* output string */ - fractpel fpel) /* fractional pel input */ -{ - char temp[8]; - register char *s; - register char *sign; - - if (fpel < 0) { - sign = "-"; - fpel = -fpel; - } - else - sign = ""; - - sprintf(temp, "000%lx", fpel & FRACTMASK); - s = temp + strlen(temp) - (FRACTBITS/4); - - sprintf(string, "%s%d.%sx", sign, (int)(fpel >> FRACTBITS), s); -} - -/* -:h3.DumpSpace() - Display a Coordinate Space -*/ -/*ARGSUSED*/ -void -DumpSpace(struct XYspace *S) -{ -} diff --git a/nx-X11/lib/font/Type1/spaces.h b/nx-X11/lib/font/Type1/spaces.h deleted file mode 100644 index ef78f2f..0000000 --- a/nx-X11/lib/font/Type1/spaces.h +++ /dev/null @@ -1,172 +0,0 @@ -/* $Xorg: spaces.h,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/spaces.h,v 3.3 1999/08/22 08:58:53 dawes Exp $ */ - -/*SHARED*/ - -#define USER t1_User -#define IDENTITY t1_Identity - -#define Context(d,u) t1_Context(d,u) -#define Transform(o,f1,f2,f3,f4) t1_Transform(o,f1,f2,f3,f4) -#define Rotate(o,d) t1_Rotate(o,d) -#define Scale(o,sx,sy) t1_Scale(o,sx,sy) -#define QuerySpace(S,f1,f2,f3,f4) t1_QuerySpace(S,f1,f2,f3,f4) -#define Warp(s1,o,s2) t1_Warp(s1,o,s2) - -/* IDENTITY space */ -extern struct XYspace *IDENTITY; - -/* creates a coordinate space for a device */ -extern struct XYspace *Context(pointer device, double units); -/* transform an object */ -extern struct xobject *t1_Transform ( struct xobject *obj, double cxx, - double cyx, double cxy, double cyy ); -#if 0 -struct xobject *t1_Rotate(); /* rotate an object */ -#endif -/* scale an object */ -extern struct xobject *t1_Scale ( struct xobject *obj, double sx, double sy ); -#if 0 -struct xobject *t1_Warp(); /* transform like delta of two spaces */ -#endif -/* returns coordinate space matrix */ -extern void t1_QuerySpace ( struct XYspace *S, double *cxxP, double *cyxP, - double *cxyP, double *cyyP ); - -/*END SHARED*/ -/*SHARED*/ - -/* #define KillSpace(s) Free(s) -Note - redefined KillSpace() to check references ! -3-26-91 PNM */ - -#define KillSpace(s) if ( (--(s->references) == 0) ||\ - ( (s->references == 1) && ISPERMANENT(s->flag) ) )\ - Free(s) - -#define ConsumeSpace(s) MAKECONSUME(s,KillSpace(s)) -#define UniqueSpace(s) MAKEUNIQUE(s,CopySpace(s)) - -/*END SHARED*/ -/*SHARED*/ - -typedef short pel; /* integer pel locations */ -typedef long fractpel; /* fractional pel locations */ - -#define FRACTBITS 16 /* number of fractional bits in 'fractpel' */ -/* -We define the following macros to convert from 'fractpel' to 'pel' and -vice versa: -*/ -#define TOFRACTPEL(p) (((fractpel)p)<<FRACTBITS) -#define FPHALF (1<<(FRACTBITS-1)) -#define NEARESTPEL(fp) (((fp)+FPHALF)>>FRACTBITS) -#define FRACTFLOAT (double)(1L<<FRACTBITS) - -/*END SHARED*/ -/*SHARED*/ - -struct doublematrix { - double normal[2][2]; - double inverse[2][2]; -} ; - -/*END SHARED*/ -/*SHARED*/ - -struct fractpoint { - fractpel x,y; -} ; - -/*SHARED*/ - -typedef fractpel (*convertFunc)(double, double, double, double); -typedef fractpel (*iconvertFunc)(fractpel, fractpel, long, long); - -struct XYspace { - XOBJ_COMMON /* xobject common data define 3-26-91 PNM */ - /* type = SPACETYPE */ - void (*convert)(struct fractpoint *, struct XYspace *, double, double); /* calculate "fractpoint" X,Y from float X,Y */ - void (*iconvert)(struct fractpoint *, struct XYspace *, long, long); /* calculate "fractpoint" X,Y from int X,Y */ - convertFunc xconvert; /* subroutine of convert */ - convertFunc yconvert; /* subroutine of convert */ - iconvertFunc ixconvert; /* subroutine of iconvert */ - iconvertFunc iyconvert; /* subroutine of iconvert */ - int ID; /* unique identifier (used in font caching) */ - unsigned char context; /* device context of coordinate space */ - struct doublematrix tofract; /* xform to get to fractional pels */ - fractpel itofract[2][2]; /* integer version of "tofract.normal" */ -} ; - -#define INVALIDID 0 /* no valid space will have this ID */ - -/*END SHARED*/ -/*END SHARED*/ -/*SHARED*/ - -#define DeviceResolution t1_DeviceResolution -#define InitSpaces t1_InitSpaces -#define CopySpace(s) t1_CopySpace(s) -#define Xform(o,M) t1_Xform(o,M) -#define UnConvert(S,pt,xp,yp) t1_UnConvert(S,pt,xp,yp) -#define MatrixMultiply(A,B,C) t1_MMultiply(A,B,C) -#define MatrixInvert(A,B) t1_MInvert(A,B) -#define PseudoSpace(S,M) t1_PseudoSpace(S,M) -#define FindContext(M) t1_FindContext(M) - -/* initialize pre-defined coordinate spaces */ -extern void t1_InitSpaces ( void ); -/* duplicate a coordinate space */ -extern struct XYspace *t1_CopySpace ( struct XYspace *S ); -/* transform object by matrix */ -extern struct xobject *t1_Xform ( struct xobject *obj, double M[2][2] ); -/* return user coordinates from device coordinates */ -extern void t1_UnConvert ( struct XYspace *S, struct fractpoint *pt, - double *xp, double *yp ); -/* multiply two matrices */ -extern void t1_MMultiply ( double A[2][2], double B[2][2], double C[2][2] ); -/* invert a matrix */ -extern void t1_MInvert ( double M[2][2], double Mprime[2][2] ); -/* force a coordinate space from a matrix */ -extern void t1_PseudoSpace ( struct XYspace *S, double M[2][2] ); -/* return the "context" represented by a matrix */ -int t1_FindContext(double M[2][2]); - -/*END SHARED*/ -/*SHARED*/ - -#define NULLCONTEXT 0 - -/*END SHARED*/ - -/* dump a coordinate space structure */ -extern void t1_DumpSpace ( struct XYspace *S ); -/* dump a format a "fractpel" coordinate */ -extern void t1_FormatFP ( char *string, fractpel fpel ); diff --git a/nx-X11/lib/font/Type1/strokes.h b/nx-X11/lib/font/Type1/strokes.h deleted file mode 100644 index c374e16..0000000 --- a/nx-X11/lib/font/Type1/strokes.h +++ /dev/null @@ -1,38 +0,0 @@ -/* $Xorg: strokes.h,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/*STUB*/ - -#define CopyLineStyle(s) s -#define CopyStrokePath(p) p -#define KillStrokePath(p) -#define KillLineStyle(s) -#define CoercePath(sp) sp -#define DoStroke(sp) sp - diff --git a/nx-X11/lib/font/Type1/t1funcs.c b/nx-X11/lib/font/Type1/t1funcs.c deleted file mode 100644 index 9de819a..0000000 --- a/nx-X11/lib/font/Type1/t1funcs.c +++ /dev/null @@ -1,1668 +0,0 @@ -/* $Xorg: t1funcs.c,v 1.5 2001/02/09 02:04:01 xorgcvs Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License, subject to the license given below, to use, - * copy, modify, and distribute this software * and its - * documentation for any purpose and without fee is hereby - * granted, provided that the above copyright notice appear - * in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software - * without specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Jeffrey B. Lotspiech, IBM Almaden Research Center - * Modeled on spfuncs.c by Dave Lemke, Network Computing Devices, Inc - * which contains the following copyright and permission notices: - * - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices - * or Digital not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior permission. - * Network Computing Devices or Digital make no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/t1funcs.c,v 3.33 2003/07/19 13:16:40 tsi Exp $ */ - -/* - -Copyright 1987, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifndef FONTMODULE -#include <string.h> -#if XFONT_CID -#include <stdlib.h> -#include <sys/types.h> -#include <dirent.h> -#endif -#ifdef _XOPEN_SOURCE -#include <math.h> -#else -#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */ -#include <math.h> -#undef _XOPEN_SOURCE -#endif -#include "X11/Xfuncs.h" -#ifdef USE_MMAP -#include <sys/types.h> -#include <sys/mman.h> -#endif -#else -#include "Xmd.h" -#include "Xdefs.h" -#endif - -#ifdef FONTMODULE -#include "os.h" -#include "xf86_ansic.h" -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/fontutil.h> -#include <X11/fonts/FSproto.h> -#include <X11/fonts/fontenc.h> -#include "t1unicode.h" - -#if XFONT_CID -#include "range.h" -#endif - -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" -#include "t1stdio.h" -#include "util.h" -#include "fontfcn.h" -#include "t1intf.h" - - -static int Type1GetGlyphs ( FontPtr pFont, unsigned long count, - unsigned char *chars, FontEncoding charEncoding, - unsigned long *glyphCount, CharInfoPtr *glyphs ); - -#if XFONT_CID -#define CMapDir "/CMap/" -#define CFMDir "/CFM/" -#define CIDFontDir "/CIDFont/" -#endif - -static int Type1GetMetrics ( FontPtr pFont, unsigned long count, - unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, - xCharInfo **glyphs ); - - -#define minchar(p) ((p).min_char_low + ((p).min_char_high << 8)) -#define maxchar(p) ((p).max_char_low + ((p).max_char_high << 8)) - -static void fillrun ( char *p, pel x0, pel x1, int bit ); - -extern psfont *FontP; -extern psobj *ISOLatin1EncArrayP; - -#if XFONT_CID -extern char CurCIDFontName[]; -extern char CurCMapName[]; - -static CharInfoPtr CIDGetGlyph ( FontPtr pFont, unsigned int charcode, - CharInfoPtr pci ); - -extern cidfont *CIDFontP; -extern cmapres *CMapP; -#endif - -static void fill ( char *dest, int h, int w, struct region *area, int byte, - int bit, int wordsize ); - -#if XFONT_CID -int -CIDOpenScalable (FontPathElementPtr fpe, - FontPtr *ppFont, - int flags, - FontEntryPtr entry, - char *fileName, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font) /* We don't do licensing */ -{ - FontPtr pFont; - int bit, - byte, - glyph, - scan, - image; - long *pool; /* memory pool for ximager objects */ - int size; /* for memory size calculations */ - struct XYspace *S; /* coordinate space for character */ - register int i; - int nchars, len, rc; - cidglyphs *cid; - char *p; - double t1 = .001, t2 = 0.0, t3 = 0.0, t4 = .001; - double sxmult; - char CIDFontName[CID_NAME_MAX]; - char CMapName[CID_NAME_MAX]; - char cidfontname[CID_PATH_MAX]; - char cmapname[CID_PATH_MAX]; - char *path; - char cidfontpath[CID_PATH_MAX]; - char cmappath[CID_PATH_MAX]; -#if defined(HAVE_CFM) || defined(CID_ALL_CHARS) - char cfmdir[CID_PATH_MAX]; - char cfmfilename[CID_NAME_MAX]; -#endif -#if defined(CID_ALL_CHARS) - char *cf; -#else - long sAscent, sDescent; -#endif - - /* check the font name */ - len = strlen(fileName); - if (len <= 0 || len > CID_NAME_MAX - 1) - return BadFontName; - -#if defined(HAVE_CFM) || defined(CID_ALL_CHARS) - strcpy(cfmdir, fileName); - p = strrchr(cfmdir, '/'); - if (p) *p = '\0'; -#endif - - path = fileName; - if (!(fileName = strrchr(fileName, '/'))) - return BadFontName; - - len = fileName - path; - strncpy(cidfontpath, path, len); - cidfontpath[len] = '\0'; - strcpy(cmappath, cidfontpath); - strcat(cmappath, CMapDir); -#ifdef HAVE_CFM - strcpy(cfmdir, cidfontpath); - strcat(cfmdir, CFMDir); -#endif - strcat(cidfontpath, CIDFontDir); - - fileName++; - - /* extract the CIDFontName and CMapName from the font name */ - /* check for <CIDFontName>--<CMapName> */ - if ((p = strstr(fileName, "--"))) { - if (p == fileName) - return BadFontName; - else { - strcpy(CIDFontName, fileName); - CIDFontName[p - fileName] = '\0'; - p += 2; - i = 0; - while (*p && *p != '.') - CMapName[i++] = *p++; - CMapName[i] = '\0'; - if ((len = strlen(CMapName)) <= 0) - return BadFontName; - } - } else - return BadFontName; - - /* The CMap files whose names end with -V are not yet supported */ - len = strlen(CMapName); - if ((len >= 2 && CMapName[len - 2] == '-' && CMapName[len - 1] == 'V') || - (len == 1 && CMapName[len - 1] == 'V')) - return BadFontName; - - /* Reject ridiculously small font sizes that will blow up the math */ - if (hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]) < 1.0 || - hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) < 1.0) - return BadFontName; - -#ifdef CID_ALL_CHARS - if ((cf = getenv("CFMDIR")) == NULL) - strcat(cfmdir, CFMDir); - else { - strcpy(cfmdir, cf); - strcat(cfmdir, "/"); - } -#endif - -#if defined(HAVE_CFM) || defined(CID_ALL_CHARS) - strcpy(cfmfilename, cfmdir); - strcat(cfmfilename, CIDFontName); - strcat(cfmfilename, "--"); - strcat(cfmfilename, CMapName); - strcat(cfmfilename, ".cfm"); -#endif - - /* create a full-path name for a CIDFont file */ - if (strlen(cidfontpath) + strlen(CIDFontName) + 2 > - CID_PATH_MAX) - return BadFontName; - strcpy(cidfontname, cidfontpath); - strcat(cidfontname, CIDFontName); - - /* create a full-path name for a CMap file */ - if (strlen(cmappath) + strlen(CMapName) + 2 > CID_PATH_MAX) - return BadFontName; - strcpy(cmapname, cmappath); - strcat(cmapname, CMapName); - - /* set up default values */ - FontDefaultFormat(&bit, &byte, &glyph, &scan); - /* get any changes made from above */ - rc = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image); - if (rc != Successful) - return rc; - -#define PAD(bits, pad) (((bits)+(pad)-1)&-(pad)) - - if (!(pFont = CreateFontRec())) - return AllocError; - - cid = (cidglyphs *)xalloc(sizeof(cidglyphs)); - if (cid == NULL) { - DestroyFontRec(pFont); - return AllocError; - } - bzero(cid, sizeof(cidglyphs)); - - /* heuristic for "maximum" size of pool we'll need: */ - size = 200000 + 600 * - (int)hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) - * sizeof(short); - if (size < 0 || NULL == (pool = (long *) xalloc(size))) { - xfree(cid); - DestroyFontRec(pFont); - return AllocError; - } - - addmemory(pool, size); - - /* load font if not already loaded */ - if (!CIDfontfcnA(cidfontname, cmapname, &rc)) { - FontP = NULL; - delmemory(); - xfree(pool); - xfree(cid); - DestroyFontRec(pFont); - return Type1ReturnCodeToXReturnCode(rc); - } - - FontP = NULL; - - S = (struct XYspace *) t1_Transform((struct xobject *)IDENTITY, - t1, t2, t3, t4); - - S = (struct XYspace *) Permanent(t1_Transform((struct xobject *)S, - vals->pixel_matrix[0], - -vals->pixel_matrix[1], - vals->pixel_matrix[2], - -vals->pixel_matrix[3])); - - /* multiplier for computation of raw values */ - sxmult = hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]); - if (sxmult > EPS) sxmult = 1000.0 / sxmult; - - pFont->info.firstRow = CMapP->firstRow; - pFont->info.firstCol = CMapP->firstCol; - pFont->info.lastRow = CMapP->lastRow; - pFont->info.lastCol = CMapP->lastCol; - - nchars = (pFont->info.lastRow - pFont->info.firstRow + 1) * - (pFont->info.lastCol - pFont->info.firstCol + 1); - - delmemory(); - xfree(pool); - - if (pFont->info.firstCol > pFont->info.lastCol) - { - xfree(cid); - DestroyFontRec(pFont); - return BadFontName; - } - - cid->glyphs = (CharInfoRec **)xalloc(nchars*sizeof(CharInfoRec *)); - if (cid->glyphs == NULL) { - xfree(cid); - DestroyFontRec(pFont); - return AllocError; - } - bzero(cid->glyphs, nchars*sizeof(CharInfoRec *)); - - pFont->info.defaultCh = 0; - pFont->format = format; - - pFont->bit = bit; - pFont->byte = byte; - pFont->glyph = glyph; - pFont->scan = scan; - - pFont->get_metrics = CIDGetMetrics; - pFont->get_glyphs = CIDGetGlyphs; - pFont->unload_font = CIDCloseFont; - pFont->unload_glyphs = NULL; - pFont->refcnt = 0; - - len = strlen(cidfontname); - cid->CIDFontName = (char *)xalloc(len + 1); - if (cid->CIDFontName == NULL) { - xfree(cid->glyphs); - xfree(cid); - DestroyFontRec(pFont); - return AllocError; - } - strcpy(cid->CIDFontName, cidfontname); - - len = strlen(cmapname); - cid->CMapName = (char *)xalloc(len + 1); - if (cid->CMapName == NULL) { - xfree(cid->CIDFontName); - xfree(cid->glyphs); - xfree(cid); - DestroyFontRec(pFont); - return AllocError; - } - strcpy(cid->CMapName, cmapname); - - cid->pixel_matrix[0] = vals->pixel_matrix[0]; - cid->pixel_matrix[1] = vals->pixel_matrix[1]; - cid->pixel_matrix[2] = vals->pixel_matrix[2]; - cid->pixel_matrix[3] = vals->pixel_matrix[3]; - - pFont->fontPrivate = (unsigned char *)cid; - - pFont->info.fontAscent = - (CIDFontP->CIDfontInfoP[CIDFONTBBOX].value.data.arrayP[3].data.integer * - vals->pixel_matrix[3] + - (CIDFontP->CIDfontInfoP[CIDFONTBBOX].value.data.arrayP[3].data.integer > - 0 ? 500 : -500)) / 1000; - - pFont->info.fontDescent = - -(int)((double)CIDFontP->CIDfontInfoP[CIDFONTBBOX].value.data.arrayP[1].data.integer - * vals->pixel_matrix[3] + - (CIDFontP->CIDfontInfoP[CIDFONTBBOX].value.data.arrayP[1].data.integer > - 0 ? 500 : -500)) / 1000; - - /* Adobe does not put isFixedPitch entries in CID-keyed fonts. */ - /* CID-keyed are not constant-width fonts. */ - pFont->info.constantWidth = 0; - -#ifndef CID_ALL_CHARS - sAscent = CIDFontP->CIDfontInfoP[CIDFONTBBOX].value.data.arrayP[3].data.integer; - sDescent = -CIDFontP->CIDfontInfoP[CIDFONTBBOX].value.data.arrayP[1].data.integer; -#endif - - if (strncmp(entry->name.name, "-bogus", 6)) { -#ifdef CID_ALL_CHARS - ComputeBoundsAllChars(pFont, cfmfilename, sxmult); -#else -#ifdef HAVE_CFM - CIDFillFontInfo(pFont, vals, cidfontname, entry->name.name, cmapname, - cfmfilename, sAscent, sDescent, sxmult); -#else - CIDFillFontInfo(pFont, vals, cidfontname, entry->name.name, cmapname, - sAscent, sDescent, sxmult); -#endif /* HAVE_CFM */ -#endif /* CID_ALL_CHARS */ - } - - *ppFont = pFont; - - return Successful; -} -#endif - -/*ARGSUSED*/ -int -Type1OpenScalable (FontPathElementPtr fpe, - FontPtr *ppFont, - int flags, - FontEntryPtr entry, - char *fileName, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font) /* We don't do licensing */ -{ - FontPtr pFont; - int bit, - byte, - glyph, - scan, - image; - int pad,wordsize; /* scan & image in bits */ - long *pool; /* memory pool for ximager objects */ - int size; /* for memory size calculations */ - struct XYspace *S; /* coordinate space for character */ - struct region *area; - CharInfoRec *glyphs; - int len, rc, count = 0, i = 0; - struct type1font *type1; - char *p; - FontMapPtr mapping = NULL; - int no_mapping; - psobj *fontmatrix; - long x0, total_width = 0, total_raw_width = 0; - double x1, y1, t1 = .001, t2 = 0.0, t3 = 0.0, t4 = .001; - double sxmult; - - /* Reject ridiculously small font sizes that will blow up the math */ - if (hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]) < 1.0 || - hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) < 1.0) - return BadFontName; - - /* set up default values */ - FontDefaultFormat(&bit, &byte, &glyph, &scan); - /* get any changes made from above */ - rc = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image); - if (rc != Successful) - return rc; - - pad = glyph * 8; - wordsize = scan * 8; - -#define PAD(bits, pad) (((bits)+(pad)-1)&-(pad)) - - pFont = CreateFontRec(); - if (pFont == NULL) - return AllocError; - - type1 = (struct type1font *)xalloc(sizeof(struct type1font)); - if (type1 == NULL) { - DestroyFontRec(pFont); - return AllocError; - } - bzero(type1, sizeof(struct type1font)); - - /* heuristic for "maximum" size of pool we'll need: */ -#if XFONT_CID - size = 400000 + 600 * -#else - size = 200000 + 600 * -#endif - (int)hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) - * sizeof(short); - if (size < 0 || NULL == (pool = (long *) xalloc(size))) { - xfree(type1); - DestroyFontRec(pFont); - return AllocError; - } - - addmemory(pool, size); - - - glyphs = type1->glyphs; - - /* load font if not already loaded */ - if (!fontfcnA(fileName, &rc)) { - delmemory(); - xfree(type1); - DestroyFontRec(pFont); - xfree(pool); - return Type1ReturnCodeToXReturnCode(rc); - } - - fontmatrix = &FontP->fontInfoP[FONTMATRIX].value; - if (objPIsArray(fontmatrix) && fontmatrix->len == 6) - { -#define assign(n,d,f) if (objPIsInteger(fontmatrix->data.arrayP + n)) \ - d = fontmatrix->data.arrayP[n].data.integer; \ - else if (objPIsReal(fontmatrix->data.arrayP + n)) \ - d = fontmatrix->data.arrayP[n].data.real; \ - else d = f; - - assign(0, t1, .001); - assign(1, t2, 0.0); - assign(2, t3, 0.0); - assign(3, t4, .001); - } - - S = (struct XYspace *) t1_Transform((struct xobject *)IDENTITY, - t1, t2, t3, t4); - - S = (struct XYspace *) Permanent(t1_Transform((struct xobject *)S, - vals->pixel_matrix[0], - -vals->pixel_matrix[1], - vals->pixel_matrix[2], - -vals->pixel_matrix[3])); - - - /* multiplier for computation of raw values */ - sxmult = hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]); - if (sxmult > EPS) sxmult = 1000.0 / sxmult; - - no_mapping=0; - p = FontEncFromXLFD(entry->name.name, entry->name.length); - - if(p==0) { /* XLFD does not specify an encoding */ - mapping=0; - no_mapping=2; /* ISO 8859-1 */ - } - - if(!strcmp(p, "adobe-fontspecific")) { - mapping=0; - no_mapping=1; /* font's native encoding vector */ - } - - pFont->info.firstCol = 255; - pFont->info.lastCol = 0; - - if(!no_mapping) { - mapping = FontEncMapFind(p, - FONT_ENCODING_POSTSCRIPT, -1, -1, - fileName); - if(!mapping) - mapping = FontEncMapFind(p, - FONT_ENCODING_UNICODE, -1, -1, - fileName); - if(!mapping) - goto NoEncoding; - else - no_mapping=0; - } - - for (i=0; i < 256; i++) { - long h,w; - long paddedW; - int j; - char *codename; - - if(no_mapping == 1) { - codename = FontP->fontInfoP[ENCODING]. - value.data.arrayP[i].data.valueP; - len = FontP->fontInfoP[ENCODING]. - value.data.arrayP[i].len; - } else if(no_mapping) { - codename = unicodetoPSname(i); - len = codename ? strlen(codename) : 0; - } else { - if(mapping->type == FONT_ENCODING_UNICODE) { - codename = unicodetoPSname(FontEncRecode(i, mapping)); - } else - codename = FontEncName(i, mapping); - len=codename?strlen(codename):0; - } - - /* Avoid multiply rasterising the undefined glyph */ - if(len==7 && !strncmp(codename, ".notdef", 7)) { - len=0; - codename=0; - } - - /* But do rasterise it at least once */ - if(len==0) { - if(i==0) { - codename=".notdef"; - len=7; - } else - continue; - } - - /* See if this character is in the list of ranges specified - in the XLFD name */ - if(i!=0) { - for (j = 0; j < vals->nranges; j++) - if (i >= minchar(vals->ranges[j]) && - i <= maxchar(vals->ranges[j])) - break; - - /* If not, don't realize it. */ - if (vals->nranges && j == vals->nranges) - continue; - } - - rc = 0; - area = (struct region *)fontfcnB(S, (unsigned char *)codename, - &len, &rc); - if (rc < 0) { - rc = Type1ReturnCodeToXReturnCode(rc); - break; - } - else if (rc > 0) - continue; - - if (area == NULL) - continue; - - if (pFont->info.firstCol > i) - pFont->info.firstCol = i; - if (pFont->info.lastCol < i) - pFont->info.lastCol = i; - - h = area->ymax - area->ymin; - w = area->xmax - area->xmin; - paddedW = PAD(w, pad); - - if (h > 0 && w > 0) { - size = h * paddedW / 8; - glyphs[i].bits = (char *)xalloc(size); - if (glyphs[i].bits == NULL) { - rc = AllocError; - break; - } - } - else { - size = 0; - h = w = 0; - area->xmin = area->xmax = 0; - area->ymax = area->ymax = 0; - } - - glyphs[i].metrics.leftSideBearing = area->xmin; - x1 = (double)(x0 = area->ending.x - area->origin.x); - y1 = (double)(area->ending.y - area->origin.y); - glyphs[i].metrics.characterWidth = - (x0 + (x0 > 0 ? FPHALF : -FPHALF)) / (1 << FRACTBITS); - if (!glyphs[i].metrics.characterWidth && size == 0) - { - /* Zero size and zero extents: presumably caused by - the choice of transformation. Let's create a - small bitmap so we're not mistaken for an undefined - character. */ - h = w = 1; - size = paddedW = PAD(w, pad); - glyphs[i].bits = (char *)xalloc(size); - if (glyphs[i].bits == NULL) { - rc = AllocError; - break; - } - } - glyphs[i].metrics.attributes = - NEARESTPEL((long)(hypot(x1, y1) * sxmult)); - total_width += glyphs[i].metrics.attributes; - total_raw_width += abs((int)(INT16)glyphs[i].metrics.attributes); - count++; - glyphs[i].metrics.rightSideBearing = w + area->xmin; - glyphs[i].metrics.descent = area->ymax - NEARESTPEL(area->origin.y); - glyphs[i].metrics.ascent = h - glyphs[i].metrics.descent; - - - bzero(glyphs[i].bits, size); - if (h > 0 && w > 0) { - fill(glyphs[i].bits, h, paddedW, area, byte, bit, wordsize ); - } - - Destroy(area); - } - NoEncoding: - - delmemory(); - xfree(pool); - - if (pFont->info.firstCol > pFont->info.lastCol) - { - xfree(type1); - DestroyFontRec(pFont); - return BadFontName; - } - - if (i != 256) { - for (i--; i >= 0; i--) - if (glyphs[i].bits != NULL) - xfree(glyphs[i].bits); - xfree(type1); - DestroyFontRec(pFont); - return rc; - } - type1->pDefault = NULL; - - pFont->format = format; - - pFont->bit = bit; - pFont->byte = byte; - pFont->glyph = glyph; - pFont->scan = scan; - - pFont->info.firstRow = 0; - pFont->info.lastRow = 0; - - pFont->get_metrics = Type1GetMetrics; - pFont->get_glyphs = Type1GetGlyphs; - pFont->unload_font = Type1CloseFont; - pFont->unload_glyphs = NULL; - pFont->refcnt = 0; - - pFont->fontPrivate = (unsigned char *) type1; - - if (count) - { - total_raw_width = (total_raw_width * 10 + count / 2) / count; - if (total_width < 0) - { - /* Predominant direction is R->L */ - total_raw_width = -total_raw_width; - } - vals->width = (int)((double)total_raw_width * - vals->pixel_matrix[0] / 1000.0 + - (vals->pixel_matrix[0] > 0 ? .5 : -.5)); - } - - T1FillFontInfo(pFont, vals, fileName, entry->name.name, total_raw_width); - - *ppFont = pFont; - return Successful; -} - -#if XFONT_CID -unsigned int -getCID(FontPtr pFont, unsigned int charcode) -{ - unsigned int cidcode = 0; - Bool charvalid = FALSE; - cidglyphs *cid; - int i, j; - unsigned int char_row, char_col, rangelo_row, rangelo_col, k; - unsigned int rangehi_row, rangehi_col; - spacerange *spacerangeP; - cidrange *notdefrangeP, *cidrangeP; - - cid = (cidglyphs *)pFont->fontPrivate; - - if (cid == NULL) - return cidcode; - - char_row = (charcode >> 8) & 0xff; - char_col = charcode & 0xff; - - spacerangeP = CIDFontP->spacerangeP; - for (i = 0; i < CIDFontP->spacerangecnt; i++) { - for (j = 0; j < spacerangeP->rangecnt; j++) { - rangelo_row = - (spacerangeP->spacecode[j].srcCodeLo >> 8) & 0xff; - rangelo_col = spacerangeP->spacecode[j].srcCodeLo & 0xff; - rangehi_row = - (spacerangeP->spacecode[j].srcCodeHi >> 8) & 0xff; - rangehi_col = spacerangeP->spacecode[j].srcCodeHi & 0xff; - if (char_row >= rangelo_row && char_row <= rangehi_row && - char_col >= rangelo_col && char_col <= rangehi_col) { - charvalid = TRUE; - break; - } - } - if (charvalid) break; - spacerangeP = spacerangeP->next; - } - - if (charvalid) { - charvalid = FALSE; - cidrangeP = CIDFontP->cidrangeP; - for (i = 0; i < CIDFontP->cidrangecnt; i++) { - for (j = 0; j < cidrangeP->rangecnt; j++) { - rangelo_row = - (cidrangeP->range[j].srcCodeLo >> 8) & 0xff; - rangelo_col = cidrangeP->range[j].srcCodeLo & 0xff; - rangehi_row = - (cidrangeP->range[j].srcCodeHi >> 8) & 0xff; - rangehi_col = cidrangeP->range[j].srcCodeHi & 0xff; - if (char_row >= rangelo_row && char_row <= rangehi_row && - char_col >= rangelo_col && char_col <= rangehi_col) { - charvalid = TRUE; - for (k = cidrangeP->range[j].srcCodeLo; - k <= cidrangeP->range[j].srcCodeHi; k++) { - if (k == charcode) - cidcode = cidrangeP->range[j].dstCIDLo + k - - cidrangeP->range[j].srcCodeLo; - } - break; - } - } - if (charvalid) break; - cidrangeP = cidrangeP->next; - } - } - - if (charvalid) { - charvalid = FALSE; - notdefrangeP = CIDFontP->notdefrangeP; - for (i = 0; i < CIDFontP->notdefrangecnt; i++) { - for (j = 0; j < notdefrangeP->rangecnt; j++) { - rangelo_row = - (notdefrangeP->range[j].srcCodeLo >> 8) & 0xff; - rangelo_col = notdefrangeP->range[j].srcCodeLo & 0xff; - rangehi_row = - (notdefrangeP->range[j].srcCodeHi >> 8) & 0xff; - rangehi_col = notdefrangeP->range[j].srcCodeHi & 0xff; - if (char_row >= rangelo_row && char_row <= rangehi_row && - char_col >= rangelo_col && char_col <= rangehi_col) { - charvalid = TRUE; - for (k = notdefrangeP->range[j].srcCodeLo; - k <= notdefrangeP->range[j].srcCodeHi; k++) { - if (k == charcode) - /* the whole range is mapped to a single CID code */ - cidcode = notdefrangeP->range[j].dstCIDLo; - } - break; - } - } - if (charvalid) break; - notdefrangeP = notdefrangeP->next; - } - } - - /* If you specify a CMap that has more CIDs than a specified CIDFont, */ - /* the program could go beyond the number of entries in CIDMap. Make */ - /* sure that that does not happen. */ - if (cidcode < CIDFontP->CIDfontInfoP[CIDCOUNT].value.data.integer) - return cidcode; - else - return 0; -} - -static CharInfoPtr -CIDGetGlyph(FontPtr pFont, unsigned int charcode, CharInfoPtr pci) -{ - int rc; - CharInfoPtr cp = NULL; - unsigned int cidcode; - - /* character code -> CID */ - cidcode = getCID(pFont, charcode); - - cp = CIDGetGlyphInfo(pFont, cidcode, pci, &rc); - - if (rc != Successful && cidcode) { - cidcode = 0; - cp = CIDGetGlyphInfo(pFont, cidcode, pci, &rc); - } - - return cp; -} - -int -CIDGetGlyphs(FontPtr pFont, - unsigned long count, - unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - CharInfoPtr *glyphs) /* RETURN */ -{ - unsigned int code, char_row, char_col; - CharInfoPtr *glyphsBase; - register unsigned int c; - CharInfoPtr pci; - CharInfoPtr pDefault; - cidglyphs *cid; - register int firstCol; - int rc = 0; - int cid_valid = 0; - - cid = (cidglyphs *)pFont->fontPrivate; - - FontP = NULL; - - firstCol = pFont->info.firstCol; - pDefault = cid->pDefault; - glyphsBase = glyphs; - - switch (charEncoding) { - -#define EXIST(pci) \ - ((pci)->metrics.attributes || \ - (pci)->metrics.ascent != -(pci)->metrics.descent || \ - (pci)->metrics.leftSideBearing != (pci)->metrics.rightSideBearing) - - case Linear8Bit: - case TwoD8Bit: - if (pFont->info.firstRow > 0) - break; - while (count--) { - c = (*chars++); - if (c >= firstCol && c <= pFont->info.lastCol) { - code = c - firstCol; - if (!(pci = (CharInfoRec *)cid->glyphs[code]) || - ((long)pci->bits == CID_BITMAP_UNDEFINED)) { - /* load font if not already loaded */ - if(!cid_valid) { - if(!CIDfontfcnA(cid->CIDFontName, cid->CMapName, &rc)) { FontP = NULL; - return Type1ReturnCodeToXReturnCode(rc); - } - cid_valid = 1; - } - pci = CIDGetGlyph(pFont, c, pci); - } - if (pci && EXIST(pci)) { - *glyphs++ = pci; - cid->glyphs[code] = pci; - } else if (pDefault) { - *glyphs++ = pDefault; - cid->glyphs[code] = pDefault; - } - } else if (pDefault) - *glyphs++ = pDefault; - } - break; - case Linear16Bit: - while (count--) { - char_row = *chars++; - char_col = *chars++; - c = char_row << 8; - c = (c | char_col); - if (pFont->info.firstRow <= char_row && char_row <= - pFont->info.lastRow && pFont->info.firstCol <= char_col && - char_col <= pFont->info.lastCol) { - code = pFont->info.lastCol - pFont->info.firstCol + 1; - char_row = char_row - pFont->info.firstRow; - char_col = char_col - pFont->info.firstCol; - code = char_row * code + char_col; - if (!(pci = (CharInfoRec *)cid->glyphs[code]) || - ((long)pci->bits == CID_BITMAP_UNDEFINED)) { - /* load font if not already loaded */ - if(!cid_valid) { - if(!CIDfontfcnA(cid->CIDFontName, cid->CMapName, &rc)) { FontP = NULL; - return Type1ReturnCodeToXReturnCode(rc); - } - cid_valid = 1; - } - pci = CIDGetGlyph(pFont, c, pci); - } - if (pci && EXIST(pci)) { - *glyphs++ = pci; - cid->glyphs[code] = pci; - } else if (pDefault) { - *glyphs++ = pDefault; - cid->glyphs[code] = pDefault; - } - } else if (pDefault) - *glyphs++ = pDefault; - } - break; - - case TwoD16Bit: - while (count--) { - char_row = (*chars++); - char_col = (*chars++); - c = char_row << 8; - c = (c | char_col); - if (pFont->info.firstRow <= char_row && char_row <= - pFont->info.lastRow && pFont->info.firstCol <= char_col && - char_col <= pFont->info.lastCol) { - code = pFont->info.lastCol - pFont->info.firstCol + 1; - char_row = char_row - pFont->info.firstRow; - char_col = char_col - pFont->info.firstCol; - code = char_row * code + char_col; - if (!(pci = (CharInfoRec *)cid->glyphs[code]) || - ((long)pci->bits == CID_BITMAP_UNDEFINED)) { - /* load font if not already loaded */ - if(!cid_valid) { - if(!CIDfontfcnA(cid->CIDFontName, cid->CMapName, &rc)) { FontP = NULL; - return Type1ReturnCodeToXReturnCode(rc); - } - cid_valid = 1; - } - pci = CIDGetGlyph(pFont, c, pci); - } - if (pci && EXIST(pci)) { - *glyphs++ = pci; - cid->glyphs[code] = pci; - } else if (pDefault) { - *glyphs++ = pDefault; - cid->glyphs[code] = pDefault; - } - } else if (pDefault) - *glyphs++ = pDefault; - } - break; - } - *glyphCount = glyphs - glyphsBase; - return Successful; - -#undef EXIST -} -#endif - -static int -Type1GetGlyphs(FontPtr pFont, - unsigned long count, - unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - CharInfoPtr *glyphs) /* RETURN */ -{ - unsigned int firstRow; - unsigned int numRows; - CharInfoPtr *glyphsBase; - register unsigned int c; - register CharInfoPtr pci; - unsigned int r; - CharInfoPtr pDefault; - register struct type1font *type1Font; - register int firstCol; - - type1Font = (struct type1font *) pFont->fontPrivate; - firstCol = pFont->info.firstCol; - pDefault = type1Font->pDefault; - glyphsBase = glyphs; - - switch (charEncoding) { - -#define EXIST(pci) \ - ((pci)->metrics.attributes || \ - (pci)->metrics.ascent != -(pci)->metrics.descent || \ - (pci)->metrics.leftSideBearing != (pci)->metrics.rightSideBearing) - - case Linear8Bit: - case TwoD8Bit: - if (pFont->info.firstRow > 0) - break; - while (count--) { - c = (*chars++); - if (c >= firstCol && - (pci = &type1Font->glyphs[c]) && - EXIST(pci)) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - break; - case Linear16Bit: - while (count--) { - c = *chars++ << 8; - c = (c | *chars++); - if (c < 256 && c >= firstCol && - (pci = &type1Font->glyphs[c]) && - EXIST(pci)) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - break; - - case TwoD16Bit: - firstRow = pFont->info.firstRow; - numRows = pFont->info.lastRow - firstRow + 1; - while (count--) { - r = (*chars++) - firstRow; - c = (*chars++); - if (r < numRows && c < 256 && c >= firstCol && - (pci = &type1Font->glyphs[(r << 8) + c]) && - EXIST(pci)) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - break; - } - *glyphCount = glyphs - glyphsBase; - return Successful; - -#undef EXIST -} - -#if XFONT_CID -static CharInfoRec nonExistantChar; - -int -CIDGetMetrics(FontPtr pFont, - unsigned long count, - unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - xCharInfo **glyphs) /* RETURN */ -{ - int ret; - cidglyphs *cid; - CharInfoPtr oldDefault; - char cidafmname[CID_PATH_MAX]; - char CIDFontName[CID_NAME_MAX]; - char *ptr; - - cid = (cidglyphs *)pFont->fontPrivate; - - strcpy(cidafmname, cid->CIDFontName); - if (!(ptr = strrchr(cidafmname, '/'))) - return BadFontName; - - *ptr = '\0'; - - strcpy(CIDFontName, ptr + 1); - - if (!(ptr = strrchr(cidafmname, '/'))) - return BadFontName; - - *ptr = '\0'; - - strcat(cidafmname, "/AFM/"); - strcat(cidafmname, CIDFontName); - - strcat(cidafmname, ".afm"); - - oldDefault = cid->pDefault; - cid->pDefault = &nonExistantChar; - - ret = CIDGetAFM(pFont, count, chars, charEncoding, glyphCount, (CharInfoPtr -*)glyphs, cidafmname); - if (ret != Successful) - ret = CIDGetGlyphs(pFont, count, chars, charEncoding, glyphCount, - (CharInfoPtr *)glyphs); - - *ptr = 0; - cid->pDefault = oldDefault; - return ret; -} -#endif - -static int -Type1GetMetrics(FontPtr pFont, - unsigned long count, - unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - xCharInfo **glyphs) /* RETURN */ -{ - static CharInfoRec nonExistantChar; - - int ret; - struct type1font *type1Font; - CharInfoPtr oldDefault; - - type1Font = (struct type1font *) pFont->fontPrivate; - oldDefault = type1Font->pDefault; - type1Font->pDefault = &nonExistantChar; - ret = Type1GetGlyphs(pFont, count, chars, charEncoding, glyphCount, (CharInfoPtr *) glyphs); - type1Font->pDefault = oldDefault; - return ret; -} - -#if XFONT_CID -void -CIDCloseFont(FontPtr pFont) -{ - register int i; - cidglyphs *cid; - int nchars; - - if (pFont) { - - cid = (cidglyphs *)pFont->fontPrivate; - - if (cid) { - - if (cid->CIDFontName && !strcmp(cid->CIDFontName, CurCIDFontName) - && cid->CMapName && !strcmp(cid->CMapName, CurCMapName)){ - strcpy(CurCIDFontName, ""); /* initialize to none */ - strcpy(CurCMapName, ""); /* initialize to none */ - } - - if (cid->CIDFontName) - xfree(cid->CIDFontName); - - if (cid->CMapName) - xfree(cid->CMapName); - - nchars = (pFont->info.lastRow - pFont->info.firstRow + 1) * - (pFont->info.lastCol - pFont->info.firstCol + 1); - - for (i = 0; i < nchars; i++) { - if (cid->glyphs[i] && (cid->glyphs[i] != &nonExistantChar)) { - if (cid->glyphs[i]->bits) - xfree(cid->glyphs[i]->bits); - xfree(cid->glyphs[i]); - } - } - - if (cid->glyphs) - xfree(cid->glyphs); - - if (cid->AFMinfo) - xfree(cid->AFMinfo); -#ifdef USE_MMAP - if (cid->CIDdata) - munmap(cid->CIDdata, cid->CIDsize); -#endif - xfree(cid); - } - - if (pFont->info.props) - xfree(pFont->info.props); - - if (pFont->info.isStringProp) - xfree(pFont->info.isStringProp); - - DestroyFontRec(pFont); - } -} -#endif - -void -Type1CloseFont(FontPtr pFont) -{ - register int i; - struct type1font *type1; - - type1 = (struct type1font *) pFont->fontPrivate; - for (i=0; i < 256; i++) - if (type1->glyphs[i].bits != NULL) - xfree(type1->glyphs[i].bits); - xfree(type1); - - if (pFont->info.props) - xfree(pFont->info.props); - - if (pFont->info.isStringProp) - xfree(pFont->info.isStringProp); - - DestroyFontRec(pFont); -} - -static void -fill(char *dest, /* destination bitmap */ - int h, int w, /* dimensions of 'dest', w padded */ - struct region *area, /* region to write to 'dest' */ - int byte, int bit, /* flags; LSBFirst or MSBFirst */ - int wordsize) /* number of bits per word for LSB/MSB purposes */ -{ - register struct edgelist *edge; /* for looping through edges */ - register char *p; /* current scan line in 'dest' */ - register int y; /* for looping through scans */ - register int wbytes = w / 8; /* number of bytes in width */ - register pel *leftP,*rightP; /* pointers to X values, left and right */ - int xmin = area->xmin; /* upper left X */ - int ymin = area->ymin; /* upper left Y */ - - for (edge = area->anchor; VALIDEDGE(edge); edge = edge->link->link) { - - p = dest + (edge->ymin - ymin) * wbytes; - leftP = edge->xvalues; - rightP = edge->link->xvalues; - - for (y = edge->ymin; y < edge->ymax; y++) { - fillrun(p, *leftP++ - xmin, *rightP++ - xmin, bit); - p += wbytes; - } - } -/* -Now, as an afterthought, we'll go reorganize if odd byte order requires -it: -*/ - if (byte == LSBFirst && wordsize != 8) { - register int i; - - switch (wordsize) { - case 16: - { - register unsigned short data,*p; - - p = (unsigned short *) dest; - - for (i = h * w /16; --i >= 0;) { - data = *p; - *p++ = (data << 8) + (data >> 8); - } - break; - } - case 64: - case 32: - { - register unsigned long data,*p; - - p = (unsigned long *) dest; - - for (i = h * w / 32; --i >= 0;) { - data = *p; - *p++ = (data << 24) + (data >> 24) - + (0xFF00 & (data >> 8)) - + (0xFF0000 & (data << 8)); - } - if (wordsize == 64) { - - p = (unsigned long *) dest; - - for (i = h * w / 64; --i >= 0;) { - data = *p++; - p[-1] = p[0]; - *p++ = data; - } - } - break; - } - default: - Abort("xiFill: unknown format"); - } - } - -} - -#define ALLONES 0xFF - -static void -fillrun(char *p, /* address of this scan line */ - pel x0, pel x1, /* left and right X */ - int bit) /* format: LSBFirst or MSBFirst */ -{ - register int startmask,endmask; /* bits to set in first and last char*/ - register int middle; /* number of chars between start and end + 1 */ - - if (x1 <= x0) - return; - middle = x1/8 - x0/8; - p += x0/8; - x0 &= 7; x1 &= 7; - if (bit == LSBFirst) { - startmask = ALLONES << x0; - endmask = ~(ALLONES << x1); - } - else { - startmask = ALLONES >> x0; - endmask = ~(ALLONES >> x1); - } - if (middle == 0) - *p++ |= startmask & endmask; - else { - *p++ |= startmask; - while (--middle > 0) - *p++ = (char)ALLONES; - *p |= endmask; - } -} - -#define CAPABILITIES (CAP_MATRIX | CAP_CHARSUBSETTING) - -#if XFONT_CID -FontRendererRec CIDRendererInfo[] = { - { ".cid", 4, NULL, CIDOpenScalable, - NULL, CIDGetInfoScalable, 0, CAPABILITIES } -}; -#endif - -#if XFONT_CID -FontRendererRec Type1RendererInfo[] = { -#else -static FontRendererRec renderers[] = { -#endif - { ".pfa", 4, NULL, Type1OpenScalable, - NULL, Type1GetInfoScalable, 0, CAPABILITIES }, - { ".pfb", 4, NULL, Type1OpenScalable, - NULL, Type1GetInfoScalable, 0, CAPABILITIES } -}; - -#if XFONT_CID -void -CIDRegisterFontFileFunctions(void) -{ - int i; - - Type1InitStdProps(); - for (i=0; i < sizeof(CIDRendererInfo) / sizeof(FontRendererRec); i++) - FontFileRegisterRenderer(&CIDRendererInfo[i]); -} -#endif - -void -Type1RegisterFontFileFunctions(void) -{ - int i; - -#if XFONT_CID - Type1InitStdProps(); - for (i=0; i < sizeof(Type1RendererInfo) / sizeof(FontRendererRec); i++) - FontFilePriorityRegisterRenderer(&Type1RendererInfo[i], -10); -#else - T1InitStdProps(); - for (i=0; i < sizeof(renderers) / sizeof(FontRendererRec); i++) - FontFilePriorityRegisterRenderer(&renderers[i], -10); -#endif -} - -int -Type1ReturnCodeToXReturnCode(int rc) -{ - switch(rc) { - case SCAN_OK: - return Successful; - case SCAN_FILE_EOF: - /* fall through to BadFontFormat */ - case SCAN_ERROR: - return BadFontFormat; - case SCAN_OUT_OF_MEMORY: - return AllocError; - case SCAN_FILE_OPEN_ERROR: - return BadFontName; - case SCAN_TRUE: - case SCAN_FALSE: - case SCAN_END: - /* fall through */ - default: - /* this should not happen */ -#if XFONT_CID - ErrorF("Font return code cannot be converted to X return code: %d\n", rc); -#else - ErrorF("Type1 return code not convertable to X return code: %d\n", rc); -#endif - return rc; - } -} - -#if XFONT_CID -CharInfoPtr -CIDRenderGlyph(FontPtr pFont, psobj *charstringP, psobj *subarrayP, - struct blues_struct *bluesP, CharInfoPtr pci, int *mode) -{ - int bit, - byte, - glyph, - scan, - image; - int pad,wordsize; /* scan & image in bits */ - long *pool; /* memory pool for ximager objects */ - int size; /* for memory size calculations */ - struct XYspace *S; /* coordinate space for character */ - struct region *area; - CharInfoRec *glyphs; - int len, rc; - long x0; - double x1, y1, t1 = .001, t2 = 0.0, t3 = 0.0, t4 = .001; - double sxmult; - long h,w; - long paddedW; - cidglyphs *cid; - fsBitmapFormat format = 0; - fsBitmapFormatMask fmask = 0; - - cid = (cidglyphs *)pFont->fontPrivate; - - /* set up default values */ - FontDefaultFormat(&bit, &byte, &glyph, &scan); - /* get any changes made from above */ - rc = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image); - if (rc != Successful) { - *mode = rc; - return(NULL); - } - - pad = glyph * 8; - wordsize = scan * 8; - -#define PAD(bits, pad) (((bits)+(pad)-1)&-(pad)) - - /* heuristic for "maximum" size of pool we'll need: */ - size = 200000 + 600 * - (int)hypot(cid->pixel_matrix[2], cid->pixel_matrix[3]) - * sizeof(short); - if (size < 0 || NULL == (pool = (long *) xalloc(size))) { - *mode = AllocError; - return(NULL); - } - - addmemory(pool, size); - - if (pci && (long)pci->bits == CID_BITMAP_UNDEFINED) - glyphs = pci; - else { - if (!(glyphs = (CharInfoRec *)xalloc(sizeof(CharInfoRec)))) { - delmemory(); - xfree(pool); - *mode = AllocError; - return(NULL); - } - bzero(glyphs, sizeof(CharInfoRec)); - } - - S = (struct XYspace *) t1_Transform((struct xobject *)IDENTITY, - t1, t2, t3, t4); - - S = (struct XYspace *) Permanent(t1_Transform((struct xobject *)S, - cid->pixel_matrix[0], - -cid->pixel_matrix[1], - cid->pixel_matrix[2], - -cid->pixel_matrix[3])); - - /* multiplier for computation of raw values */ - sxmult = hypot(cid->pixel_matrix[0], cid->pixel_matrix[1]); - if (sxmult > EPS) sxmult = 1000.0 / sxmult; - - rc = 0; - area = (struct region *)CIDfontfcnC(S, charstringP, subarrayP, bluesP, - &len, &rc); - if (rc < 0 || area == NULL) { - delmemory(); - xfree(pool); - if (pci != glyphs) xfree(glyphs); - *mode = Type1ReturnCodeToXReturnCode(rc); - return(NULL); - } - - h = area->ymax - area->ymin; - w = area->xmax - area->xmin; - paddedW = PAD(w, pad); - - if (h > 0 && w > 0) { - size = h * paddedW / 8; - glyphs[0].bits = (char *)xalloc(size); - if (glyphs[0].bits == NULL) { - Destroy(area); - delmemory(); - xfree(pool); - if (pci != glyphs) xfree(glyphs); - *mode = AllocError; - return(NULL); - } - bzero(glyphs[0].bits, size); - } - else { - size = 0; - h = w = 0; - area->xmin = area->xmax = 0; - area->ymax = area->ymax = 0; - glyphs[0].bits = NULL; - } - - glyphs[0].metrics.leftSideBearing = area->xmin; - x1 = (double)(x0 = area->ending.x - area->origin.x); - y1 = (double)(area->ending.y - area->origin.y); - glyphs[0].metrics.characterWidth = - (x0 + (x0 > 0 ? FPHALF : -FPHALF)) / (1 << FRACTBITS); - if (!glyphs[0].metrics.characterWidth && size == 0) - { - /* Zero size and zero extents: presumably caused by - the choice of transformation. Let's create a - small bitmap so we're not mistaken for an undefined - character. */ - h = w = 1; - size = paddedW = PAD(w, pad); - glyphs[0].bits = (char *)xalloc(size); - if (glyphs[0].bits == NULL) { - Destroy(area); - delmemory(); - xfree(pool); - if (pci != glyphs) xfree(glyphs); - *mode = AllocError; - return(NULL); - } - bzero(glyphs[0].bits, size); - } - glyphs[0].metrics.attributes = - NEARESTPEL((long)(hypot(x1, y1) * sxmult)); - glyphs[0].metrics.rightSideBearing = w + area->xmin; - glyphs[0].metrics.descent = area->ymax - NEARESTPEL(area->origin.y); - glyphs[0].metrics.ascent = h - glyphs[0].metrics.descent; - - if (h > 0 && w > 0) - fill(glyphs[0].bits, h, paddedW, area, byte, bit, wordsize); - Destroy(area); - delmemory(); - xfree(pool); - *mode = Successful; - return(glyphs); -} -#endif diff --git a/nx-X11/lib/font/Type1/t1hdigit.h b/nx-X11/lib/font/Type1/t1hdigit.h deleted file mode 100644 index e05f0de..0000000 --- a/nx-X11/lib/font/Type1/t1hdigit.h +++ /dev/null @@ -1,40 +0,0 @@ -/* $Xorg: t1hdigit.h,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* Indicators for special characters in the p_hdigit.h tables */ -#define HERROR (0xfe) -#define HWHITE_SPACE (0xfd) -#define HRIGHT_ANGLE (0xfc) -#define LAST_HDIGIT (0xf0) - -/* Declarations for the tables */ -#define HighHexP (HighHex+1) -extern unsigned char HighHex[]; -#define LowHexP (LowHex+1) -extern unsigned char LowHex[]; diff --git a/nx-X11/lib/font/Type1/t1imager.h b/nx-X11/lib/font/Type1/t1imager.h deleted file mode 100644 index 9730f9a..0000000 --- a/nx-X11/lib/font/Type1/t1imager.h +++ /dev/null @@ -1,84 +0,0 @@ -/* $Xorg: t1imager.h,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/t1imager.h,v 1.4 2001/01/17 19:43:23 dawes Exp $ */ - - -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "regions.h" - -typedef struct xobject *xobject; -typedef struct segment *path; -typedef struct region *region; -typedef struct XYspace *XYspace; - - -#ifndef NULL -#include <stddef.h> -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - - -#define WINDINGRULE -2 -#define EVENODDRULE -3 - -#define CONTINUITY 0x80 /* can be added to above rules; e.g. WINDINGRULE+CONTINUITY */ - - -/* -Generic null object definition: -*/ -#define NULLOBJECT ((xobject)NULL) - -/* -Null path definition: -*/ -#define NULLPATH NULLOBJECT - -/* -Full page and null region definition: -*/ -#define INFINITY t1_Infinity -#ifndef NOEXTERNS -extern region *INFINITY; -#endif -#define NULLREGION NULLOBJECT - -#define FF_PARSE_ERROR 5 -#define FF_PATH 1 - diff --git a/nx-X11/lib/font/Type1/t1info.c b/nx-X11/lib/font/Type1/t1info.c deleted file mode 100644 index 322572e..0000000 --- a/nx-X11/lib/font/Type1/t1info.c +++ /dev/null @@ -1,1096 +0,0 @@ -/* $Xorg: t1info.c,v 1.4 2001/02/09 02:04:01 xorgcvs Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License, subject to the license given below, to use, - * copy, modify, and distribute this software * and its - * documentation for any purpose and without fee is hereby - * granted, provided that the above copyright notice appear - * in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software - * without specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Carol H. Thompson IBM Almaden Research Center - * Modeled on spinfo.c by Dave Lemke, Network Computing Devices, Inc - * which contains the following copyright and permission notices: - * - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices and Digital make no representations about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/t1info.c,v 1.18tsi Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/fontutil.h> -#ifndef FONTMODULE -#include <stdio.h> -#ifndef BUILDCID -#include <math.h> -#endif -#else -#include "xf86_ansic.h" -#endif -#include <X11/fonts/FSproto.h> - -#if XFONT_CID -#ifndef FONTMODULE -#ifdef _XOPEN_SOURCE -#include <math.h> -#else -#define _XOPEN_SOURCE -#include <math.h> -#undef _XOPEN_SOURCE -#endif -#endif -#include "objects.h" -#include "spaces.h" -#include "range.h" -#endif - -#if XFONT_CID -#include "util.h" -#include "fontfcn.h" - -#if defined(HAVE_CFM) || defined(CID_ALL_CHARS) -#ifndef DEFAULT_CFM_DIR -#define DEFAULT_CFM_DIR "./" -#endif -char cfmDefaultDir[] = DEFAULT_CFM_DIR; -#define CFMMAGIC 0x91239123 -#endif -#endif -#include "t1intf.h" - -#define DECIPOINTSPERINCH 722.7 -#define DEFAULTRES 75 -#define DEFAULTPOINTSIZE 120 - -enum scaleType { - atom, truncate_atom, pixel_size, point_size, resolution_x, - resolution_y, average_width -}; - -#if XFONT_CID -extern cidfont *CIDFontP; -static int stdpropsinit = 0; - -typedef struct cfm_rec { - xCharInfo maxbounds; - xCharInfo minbounds; - xCharInfo ink_maxbounds; - xCharInfo ink_minbounds; - INT32 totalrw; - INT16 maxo; - INT16 alle; -} cfmrec; -#endif - -typedef struct _fontProp { - char *name; - long atom; - enum scaleType type; -} fontProp; - -static fontProp fontNamePropTable[] = { /* Example: */ - { "FOUNDRY", 0, atom }, /* adobe */ - { "FAMILY_NAME", 0, atom }, /* times roman */ - { "WEIGHT_NAME", 0, atom }, /* bold */ - { "SLANT", 0, atom }, /* i */ - { "SETWIDTH_NAME", 0, atom }, /* normal */ - { "ADD_STYLE_NAME", 0, atom }, /* */ - { "PIXEL_SIZE", 0, pixel_size }, /* 18 */ - { "POINT_SIZE", 0, point_size }, /* 180 */ - { "RESOLUTION_X", 0, resolution_x }, /* 72 */ - { "RESOLUTION_Y", 0, resolution_y }, /* 72 */ - { "SPACING", 0, atom }, /* p */ - { "AVERAGE_WIDTH", 0, average_width }, /* 0 */ - { "CHARSET_REGISTRY", 0, atom }, /* ISO8859 */ - { "CHARSET_ENCODING", 0, truncate_atom } /* 1 */ -}; - -/* NOTICE: Following array is closely related to the sequence of defines - following it. */ -static fontProp extraProps[] = { - { "FONT", 0, }, - { "COPYRIGHT", 0, }, - { "RAW_PIXEL_SIZE", 0, }, - { "RAW_POINT_SIZE", 0, }, - { "RAW_ASCENT", 0, }, - { "RAW_DESCENT", 0, }, - { "RAW_AVERAGE_WIDTH", 0, }, - { "FACE_NAME", 0, }, - { "FONT_TYPE", 0, }, - { "RASTERIZER_NAME", 0, } -}; - -/* this is a bit kludgy */ -#define FONTPROP 0 -#define COPYRIGHTPROP 1 -#define RAWPIXELPROP 2 -#define RAWPOINTPROP 3 -#define RAWASCENTPROP 4 -#define RAWDESCENTPROP 5 -#define RAWWIDTHPROP 6 -#define FACE_NAMEPROP 7 -#define FONT_TYPEPROP 8 -#define RASTERIZER_NAMEPROP 9 - -#define NNAMEPROPS (sizeof(fontNamePropTable) / sizeof(fontProp)) -#define NEXTRAPROPS (sizeof(extraProps) / sizeof(fontProp)) - -#define NPROPS (NNAMEPROPS + NEXTRAPROPS) - -/*ARGSUSED*/ -static void -FillHeader(FontInfoPtr pInfo, FontScalablePtr Vals) -{ - /* OpenScalable in T1FUNCS sets the following: - pInfo->firstCol, - pInfo->firstRow, - pInfo->lastCol, and - pInfo->lastRow. */ - /* the following are ununsed - pInfo->pad. */ - - /* Items we should handle better someday +++ */ - pInfo->defaultCh = 0; - pInfo->drawDirection = LeftToRight; - if (Vals->point_matrix[0] == Vals->point_matrix[3]) - pInfo->anamorphic = 0; - else - pInfo->anamorphic = 1; - pInfo->inkMetrics = 0; /* no ink metrics here */ - pInfo->cachable = 1; /* no licensing (yet) */ -} - -static void -adjust_min_max(xCharInfo *minc, xCharInfo *maxc, xCharInfo *tmp) -{ -#define MINMAX(field,ci) \ - if (minc->field > (ci)->field) \ - minc->field = (ci)->field; \ - if (maxc->field < (ci)->field) \ - maxc->field = (ci)->field; - - MINMAX(ascent, tmp); - MINMAX(descent, tmp); - MINMAX(leftSideBearing, tmp); - MINMAX(rightSideBearing, tmp); - MINMAX(characterWidth, tmp); - - /* Do MINMAX for attributes field. Since that field is CARD16, - we'll cast to a signed integer */ - if ((INT16)minc->attributes > (INT16)tmp->attributes) - minc->attributes = tmp->attributes; - if ((INT16)maxc->attributes < (INT16)tmp->attributes) - maxc->attributes = tmp->attributes; - -#undef MINMAX -} - -static void -ComputeBounds(FontInfoPtr pInfo, CharInfoPtr pChars, FontScalablePtr Vals) -{ - int i; - xCharInfo minchar, maxchar; - int numchars = 0; - int totchars; - int overlap; - int maxlap; - - minchar.ascent = minchar.descent = - minchar.leftSideBearing = minchar.rightSideBearing = - minchar.characterWidth = minchar.attributes = 32767; - maxchar.ascent = maxchar.descent = - maxchar.leftSideBearing = maxchar.rightSideBearing = - maxchar.characterWidth = maxchar.attributes = -32767; - - maxlap = -32767; - totchars = pInfo->lastCol - pInfo->firstCol + 1; - pChars += pInfo->firstCol; - pInfo->allExist = 1; - for (i = 0; i < totchars; i++,pChars++) { - xCharInfo *pmetrics = &pChars->metrics; - - if (pmetrics->attributes || - pmetrics->ascent != -pmetrics->descent || - pmetrics->leftSideBearing != pmetrics->rightSideBearing) { - numchars++; - adjust_min_max(&minchar, &maxchar, pmetrics); - overlap = pmetrics->rightSideBearing - pmetrics->characterWidth; - if (overlap > maxlap) maxlap = overlap; - } - else pInfo->allExist = 0; - } - - /* If we're monospaced, round the average width field to the - nearest pixel */ - if (minchar.characterWidth == maxchar.characterWidth) - Vals->width = minchar.characterWidth * 10; - - pInfo->maxbounds = maxchar; - pInfo->minbounds = minchar; - pInfo->ink_maxbounds = maxchar; - pInfo->ink_minbounds = minchar; - pInfo->maxOverlap = maxlap + -(minchar.leftSideBearing); - - /* Set the pInfo flags */ - /* Properties set by FontComputeInfoAccelerators: - pInfo->noOverlap; - pInfo->terminalFont; - pInfo->constantMetrics; - pInfo->constantWidth; - pInfo->inkInside; - - */ - FontComputeInfoAccelerators (pInfo); -} - -#if XFONT_CID -#ifdef CID_ALL_CHARS -void -ComputeBoundsAllChars(FontPtr pFont, char *cfmfilename, double sxmult) -{ - FILE *cfm; - CARD32 magic; - int count = 0; - int maxlap, overlap, i, j, k, ret; - xCharInfo minchar, maxchar; - cidrange *cidrangeP; - unsigned char ccode[2]; - unsigned long ccount; - xCharInfo *pmetrics; - long total_raw_width = 0, total_width = 0; - char cfmd[CID_PATH_MAX]; - cfmrec *cfmp; - char *p; - - if (!(cfm = fopen(cfmfilename, "w"))) { - fprintf(stderr, - "Unable to open the file %s. You are probably not logged in as root.\n", - cfmfilename); - p = strrchr(cfmfilename, '/'); - if (p == NULL) exit(1); - strcpy(cfmd, cfmDefaultDir); - strcat(cfmd, p + 1); - if (!(cfm = fopen(cfmd, "w"))) { - fprintf(stderr, - "Switching to current directory. Unable to open the file %s.\n", - cfmd); - exit(1); - } - } - - if ((cfmp = (cfmrec *)xalloc(sizeof(cfmrec))) == NULL) { - fprintf(stderr, "Unable to allocate memory."); - exit(1); - } - bzero(cfmp, sizeof(cfmrec)); - - minchar.ascent = minchar.descent = - minchar.leftSideBearing = minchar.rightSideBearing = - minchar.characterWidth = minchar.attributes = 32767; - maxchar.ascent = maxchar.descent = - maxchar.leftSideBearing = maxchar.rightSideBearing = - maxchar.characterWidth = maxchar.attributes = -32767; - - maxlap = -32767; - cfmp->alle = 1; - cidrangeP = CIDFontP->cidrangeP; - - /* go through all character codes specified in a given CMap */ - for (i = 0; i < CIDFontP->cidrangecnt; i++) { - for (j = 0; j < cidrangeP->rangecnt; j++) { - for (k = cidrangeP->range[j].srcCodeLo; - k <= cidrangeP->range[j].srcCodeHi; k++) { - ccode[0] = (k >> 8) & 0xff; - ccode[1] = k & 0xff; - ret = CIDGetMetrics(pFont, 1, ccode, Linear16Bit, &ccount, &pmetrics); - if (ret != Successful || (ret == Successful && pmetrics == NULL)) - continue; - total_width += pmetrics->attributes; - total_raw_width += abs((int)(INT16)pmetrics->attributes); - if (pmetrics->attributes || - pmetrics->ascent != -pmetrics->descent || - pmetrics->leftSideBearing != pmetrics->rightSideBearing) { - count++; - adjust_min_max(&minchar, &maxchar, pmetrics); - overlap = pmetrics->rightSideBearing - pmetrics->characterWidth; - if (overlap > maxlap) maxlap = overlap; - } - else cfmp->alle = 0; - } - } - } - - if (count) - { - total_raw_width = (total_raw_width * 10 + count / 2) / count; - if (total_width < 0) - { - /* Predominant direction is R->L */ - total_raw_width = -total_raw_width; - } - } - - cfmp->totalrw = (INT32)total_raw_width; - - cfmp->maxbounds.leftSideBearing = - floor((double)maxchar.leftSideBearing * sxmult + 0.5); - cfmp->maxbounds.rightSideBearing = - floor((double)maxchar.rightSideBearing * sxmult + 0.5); - cfmp->maxbounds.characterWidth = - floor((double)maxchar.characterWidth * sxmult + 0.5); - cfmp->maxbounds.ascent = - floor((double)maxchar.ascent * sxmult + 0.5); - cfmp->maxbounds.descent = - floor((double)maxchar.descent * sxmult); - cfmp->maxbounds.attributes = maxchar.attributes; - - cfmp->minbounds.leftSideBearing = - floor((double)minchar.leftSideBearing * sxmult + 0.5); - cfmp->minbounds.rightSideBearing = - floor((double)minchar.rightSideBearing * sxmult + 0.5); - cfmp->minbounds.characterWidth = - floor((double)minchar.characterWidth * sxmult + 0.5); - cfmp->minbounds.ascent = - floor((double)minchar.ascent * sxmult + 0.5); - cfmp->minbounds.descent = - floor((double)minchar.descent * sxmult + 0.5); - cfmp->minbounds.attributes = minchar.attributes; - - cfmp->ink_maxbounds.leftSideBearing = - floor((double)maxchar.leftSideBearing * sxmult + 0.5); - cfmp->ink_maxbounds.rightSideBearing = - floor((double)maxchar.rightSideBearing * sxmult + 0.5); - cfmp->ink_maxbounds.characterWidth = - floor((double)maxchar.characterWidth * sxmult + 0.5); - cfmp->ink_maxbounds.ascent = - floor((double)maxchar.ascent * sxmult + 0.5); - cfmp->ink_maxbounds.descent = - floor((double)maxchar.descent * sxmult + 0.5); - cfmp->ink_maxbounds.attributes = maxchar.attributes; - - cfmp->ink_minbounds.leftSideBearing = - floor((double)minchar.leftSideBearing * sxmult + 0.5); - cfmp->ink_minbounds.rightSideBearing = - floor((double)minchar.rightSideBearing * sxmult + 0.5); - cfmp->ink_minbounds.characterWidth = - floor((double)minchar.characterWidth * sxmult + 0.5); - cfmp->ink_minbounds.ascent = - floor((double)minchar.ascent * sxmult + 0.5); - cfmp->ink_minbounds.descent = - floor((double)minchar.descent * sxmult + 0.5); - cfmp->ink_minbounds.attributes = minchar.attributes; - - cfmp->maxo = (INT32)(maxlap + -(minchar.leftSideBearing)); - - magic = CFMMAGIC; - fwrite(&magic, sizeof(CARD32), 1, cfm); - fwrite(cfmp, sizeof(cfmrec), 1, cfm); - xfree(cfmp); - fclose(cfm); -} -#else -static long -ComputeBoundsAll(FontPtr pFont) -{ - int count = 0; - int maxlap, overlap, i, j, k, ret; - xCharInfo minchar, maxchar; - cidrange *cidrangeP; - unsigned char ccode[2]; - unsigned long ccount; - xCharInfo *pmetrics; - CharInfoRec *cinfo[1]; - long total_raw_width = 0, total_width = 0; - FontInfoPtr pInfo = &(pFont->info); - - minchar.ascent = minchar.descent = - minchar.leftSideBearing = minchar.rightSideBearing = - minchar.characterWidth = minchar.attributes = 32767; - maxchar.ascent = maxchar.descent = - maxchar.leftSideBearing = maxchar.rightSideBearing = - maxchar.characterWidth = maxchar.attributes = -32767; - - maxlap = -32767; - pInfo->allExist = 1; - cidrangeP = CIDFontP->cidrangeP; - - /* go through all character codes specified in a given CMap */ - for (i = 0; i < CIDFontP->cidrangecnt; i++) { - for (j = 0; j < cidrangeP->rangecnt; j++) { - for (k = cidrangeP->range[j].srcCodeLo; - k <= cidrangeP->range[j].srcCodeHi; k++) { - ccode[0] = (k >> 8) & 0xff; - ccode[1] = k & 0xff; - ret = CIDGetMetrics(pFont, 1, ccode, Linear16Bit, &ccount, (xCharInfo **)cinfo); - if (ret != Successful || cinfo == NULL) - continue; - pmetrics = &cinfo[0]->metrics; - total_width += pmetrics->attributes; - total_raw_width += abs((int)(INT16)pmetrics->attributes); - if (pmetrics->attributes || - pmetrics->ascent != -pmetrics->descent || - pmetrics->leftSideBearing != pmetrics->rightSideBearing) { - count++; - adjust_min_max(&minchar, &maxchar, pmetrics); - overlap = pmetrics->rightSideBearing - pmetrics->characterWidth; - if (overlap > maxlap) maxlap = overlap; - } - else pInfo->allExist = 0; - } - } - } - - if (count) - { - total_raw_width = (total_raw_width * 10 + count / 2) / count; - if (total_width < 0) - { - /* Predominant direction is R->L */ - total_raw_width = -total_raw_width; - } - } - - pInfo->maxbounds.leftSideBearing = maxchar.leftSideBearing; - pInfo->maxbounds.rightSideBearing = maxchar.rightSideBearing; - pInfo->maxbounds.characterWidth = maxchar.characterWidth; - pInfo->maxbounds.ascent = maxchar.ascent; - pInfo->maxbounds.descent = maxchar.descent; - pInfo->maxbounds.attributes = maxchar.attributes; - - pInfo->minbounds.leftSideBearing = minchar.leftSideBearing; - pInfo->minbounds.rightSideBearing = minchar.rightSideBearing; - pInfo->minbounds.characterWidth = minchar.characterWidth; - pInfo->minbounds.ascent = minchar.ascent; - pInfo->minbounds.descent = minchar.descent; - pInfo->minbounds.attributes = minchar.attributes; - - pInfo->ink_maxbounds.leftSideBearing = maxchar.leftSideBearing; - pInfo->ink_maxbounds.rightSideBearing = maxchar.rightSideBearing; - pInfo->ink_maxbounds.characterWidth = maxchar.characterWidth; - pInfo->ink_maxbounds.ascent = maxchar.ascent; - pInfo->ink_maxbounds.descent = maxchar.descent; - pInfo->ink_maxbounds.attributes = maxchar.attributes; - - pInfo->ink_minbounds.leftSideBearing = minchar.leftSideBearing; - pInfo->ink_minbounds.rightSideBearing = minchar.rightSideBearing; - pInfo->ink_minbounds.characterWidth = minchar.characterWidth; - pInfo->ink_minbounds.ascent = minchar.ascent; - pInfo->ink_minbounds.descent = minchar.descent; - pInfo->ink_minbounds.attributes = minchar.attributes; - - pInfo->maxOverlap = maxlap + -(minchar.leftSideBearing); - - return total_raw_width; -} -#endif -#endif - -static void -ComputeProps(FontInfoPtr pInfo, FontScalablePtr Vals, char *Filename, - long *sAscent, long *sDescent) -{ - int infoint; - int infoBBox[4]; - int rc; - - QueryFontLib(Filename, "isFixedPitch", &infoint, &rc); - if (!rc) { - pInfo->constantWidth = infoint; - } - QueryFontLib((char *)0, "FontBBox", infoBBox, &rc); - if (!rc) { - pInfo->fontAscent = - (int)((double)infoBBox[3] * Vals->pixel_matrix[3] + - (infoBBox[3] > 0 ? 500 : -500)) / 1000; - pInfo->fontDescent = - -(int)((double)infoBBox[1] * Vals->pixel_matrix[3] + - (infoBBox[1] > 0 ? 500 : -500)) / 1000; - *sAscent = infoBBox[3]; - *sDescent = -infoBBox[1]; - } -} - -#if XFONT_CID -#ifndef CID_ALL_CHARS -static void -CIDComputeStdProps(FontInfoPtr pInfo, FontScalablePtr Vals, - char *Filename, char *Cmapname, char *Fontname, - long sAscent, long sDescent, long sWidth) -{ - FontPropPtr pp; - int i, - nprops; - fontProp *fpt; - char *is_str; - char *ptr1 = NULL, - *ptr2; - char *ptr3; - char *infostrP; - int rc; - char scaledName[CID_PATH_MAX]; - - strcpy (scaledName, Fontname); - /* Fill in our copy of the fontname from the Vals structure */ - FontParseXLFDName (scaledName, Vals, FONT_XLFD_REPLACE_VALUE); - - /* This form of the properties is used by the X-client; the X-server - doesn't care what they are. */ - nprops = pInfo->nprops = NPROPS; - pInfo->isStringProp = (char *) xalloc(sizeof(char) * nprops); - pInfo->props = (FontPropPtr) xalloc(sizeof(FontPropRec) * nprops); - if (!pInfo->isStringProp || !pInfo->props) { - xfree(pInfo->isStringProp); - pInfo->isStringProp = (char *) 0; - xfree(pInfo->props); - pInfo->props = (FontPropPtr) 0; - pInfo->nprops = 0; - return; - } - bzero(pInfo->isStringProp, (sizeof(char) * nprops)); - - ptr2 = scaledName; - for (i = NNAMEPROPS, pp = pInfo->props, fpt = fontNamePropTable, is_str = pInfo->isStringProp; - i; - i--, pp++, fpt++, is_str++) { - - if (*ptr2) - { - ptr1 = ptr2 + 1; - if (!(ptr2 = strchr(ptr1, '-'))) ptr2 = strchr(ptr1, '\0'); - } - - pp->name = fpt->atom; - switch (fpt->type) { - case atom: /* Just copy info from scaledName */ - *is_str = TRUE; - pp->value = MakeAtom(ptr1, ptr2 - ptr1, TRUE); - break; - case truncate_atom: - *is_str = TRUE; - for (ptr3 = ptr1; *ptr3; ptr3++) - if (*ptr3 == '[') - break; - pp->value = MakeAtom(ptr1, ptr3 - ptr1, TRUE); - break; - case pixel_size: - pp->value = (int)(fabs(Vals->pixel_matrix[3]) + .5); - break; - case point_size: - pp->value = (int)(fabs(Vals->point_matrix[3]) * 10.0 + .5); - break; - case resolution_x: - pp->value = Vals->x; - break; - case resolution_y: - pp->value = Vals->y; - break; - case average_width: - pp->value = Vals->width; - break; - } - } - - for (i = 0, fpt = extraProps; - i < NEXTRAPROPS; - i++, is_str++, pp++, fpt++) { - pp->name = fpt->atom; - switch (i) { - case FONTPROP: - *is_str = TRUE; - pp->value = MakeAtom(scaledName, strlen(scaledName), TRUE); - break; - case COPYRIGHTPROP: - *is_str = TRUE; - CIDQueryFontLib(Filename, Cmapname, "Notice", &infostrP, &rc); - if (rc || !infostrP) { - infostrP = "Copyright Notice not available"; - } - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case FACE_NAMEPROP: - *is_str = TRUE; - CIDQueryFontLib(Filename, Cmapname, "CIDFontName", &infostrP, &rc); - if (rc || !infostrP) { - infostrP = "(unknown)"; - } - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case FONT_TYPEPROP: - *is_str = TRUE; - infostrP = "CIDFont"; - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case RASTERIZER_NAMEPROP: - *is_str = TRUE; - infostrP = "X Consortium Type 1 Rasterizer"; - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case RAWPIXELPROP: - *is_str = FALSE; - pp->value = 1000; - break; - case RAWPOINTPROP: - *is_str = FALSE; - pp->value = (long)(72270.0 / (double)Vals->y + .5); - break; - case RAWASCENTPROP: - *is_str = FALSE; - pp->value = sAscent; - break; - case RAWDESCENTPROP: - *is_str = FALSE; - pp->value = sDescent; - break; - case RAWWIDTHPROP: - *is_str = FALSE; - pp->value = sWidth; - break; - } - } -} -#endif -#endif - -static void -ComputeStdProps(FontInfoPtr pInfo, FontScalablePtr Vals, - char *Filename, char *Fontname, - long sAscent, long sDescent, long sWidth) -{ - FontPropPtr pp; - int i, - nprops; - fontProp *fpt; - char *is_str; - char *ptr1 = NULL, - *ptr2; - char *ptr3; - char *infostrP; - int rc; - char scaledName[MAXFONTNAMELEN]; - - strcpy (scaledName, Fontname); - /* Fill in our copy of the fontname from the Vals structure */ - FontParseXLFDName (scaledName, Vals, FONT_XLFD_REPLACE_VALUE); - - /* This form of the properties is used by the X-client; the X-server - doesn't care what they are. */ - nprops = pInfo->nprops = NPROPS; - pInfo->isStringProp = (char *) xalloc(sizeof(char) * nprops); - pInfo->props = (FontPropPtr) xalloc(sizeof(FontPropRec) * nprops); - if (!pInfo->isStringProp || !pInfo->props) { - xfree(pInfo->isStringProp); - pInfo->isStringProp = (char *) 0; - xfree(pInfo->props); - pInfo->props = (FontPropPtr) 0; - return; - } - bzero(pInfo->isStringProp, (sizeof(char) * nprops)); - - ptr2 = scaledName; - for (i = NNAMEPROPS, pp = pInfo->props, fpt = fontNamePropTable, is_str = pInfo->isStringProp; - i; - i--, pp++, fpt++, is_str++) { - - if (*ptr2) - { - ptr1 = ptr2 + 1; - if (!(ptr2 = strchr(ptr1, '-'))) ptr2 = strchr(ptr1, '\0'); - } - - pp->name = fpt->atom; - switch (fpt->type) { - case atom: /* Just copy info from scaledName */ - *is_str = TRUE; - pp->value = MakeAtom(ptr1, ptr2 - ptr1, TRUE); - break; - case truncate_atom: - *is_str = TRUE; - for (ptr3 = ptr1; *ptr3; ptr3++) - if (*ptr3 == '[') - break; - pp->value = MakeAtom(ptr1, ptr3 - ptr1, TRUE); - break; - case pixel_size: - pp->value = (int)(fabs(Vals->pixel_matrix[3]) + .5); - break; - case point_size: - pp->value = (int)(fabs(Vals->point_matrix[3]) * 10.0 + .5); - break; - case resolution_x: - pp->value = Vals->x; - break; - case resolution_y: - pp->value = Vals->y; - break; - case average_width: - pp->value = Vals->width; - break; - } - } - - for (i = 0, fpt = extraProps; - i < NEXTRAPROPS; - i++, is_str++, pp++, fpt++) { - pp->name = fpt->atom; - switch (i) { - case FONTPROP: - *is_str = TRUE; - pp->value = MakeAtom(scaledName, strlen(scaledName), TRUE); - break; - case COPYRIGHTPROP: - *is_str = TRUE; - QueryFontLib(Filename, "Notice", &infostrP, &rc); - if (rc || !infostrP) { - infostrP = "Copyright Notice not available"; - } - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case FACE_NAMEPROP: - *is_str = TRUE; - QueryFontLib(Filename, "FontName", &infostrP, &rc); - if (rc || !infostrP) { - infostrP = "(unknown)"; - } - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case FONT_TYPEPROP: - *is_str = TRUE; - infostrP = "Type 1"; - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case RASTERIZER_NAMEPROP: - *is_str = TRUE; - infostrP = "X Consortium Type 1 Rasterizer"; - pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE); - break; - case RAWPIXELPROP: - *is_str = FALSE; - pp->value = 1000; - break; - case RAWPOINTPROP: - *is_str = FALSE; - pp->value = (long)(72270.0 / (double)Vals->y + .5); - break; - case RAWASCENTPROP: - *is_str = FALSE; - pp->value = sAscent; - break; - case RAWDESCENTPROP: - *is_str = FALSE; - pp->value = sDescent; - break; - case RAWWIDTHPROP: - *is_str = FALSE; - pp->value = sWidth; - break; - } - } -} - -#if XFONT_CID -/*ARGSUSED*/ -int -CIDGetInfoScalable(FontPathElementPtr fpe, - FontInfoPtr pInfo, - FontEntryPtr entry, - FontNamePtr fontName, - char *fileName, - FontScalablePtr Vals) -{ - FontPtr pfont; - int flags = 0; - long format = 0; /* It doesn't matter what format for just info */ - long fmask = 0; - int ret; - - ret = CIDOpenScalable(fpe, &pfont, flags, entry, fileName, Vals, - format, fmask, NULL); - if (ret != Successful) - return ret; - *pInfo = pfont->info; - - /* XXX - Set pointers in pfont->info to NULL so they are not freed. */ - pfont->info.props = NULL; - pfont->info.isStringProp = NULL; - - CIDCloseFont(pfont); - return Successful; -} -#endif - -/*ARGSUSED*/ -int -Type1GetInfoScalable(FontPathElementPtr fpe, - FontInfoPtr pInfo, - FontEntryPtr entry, - FontNamePtr fontName, - char *fileName, - FontScalablePtr Vals) -{ - FontPtr pfont; - int flags = 0; - long format = 0; /* It doesn't matter what format for just info */ - long fmask = 0; - int ret; - - ret = Type1OpenScalable(fpe, &pfont, flags, entry, fileName, Vals, - format, fmask , NULL); - if (ret != Successful) - return ret; - *pInfo = pfont->info; - - /* XXX - Set pointers in pfont->info to NULL so they are not freed. */ - pfont->info.props = NULL; - pfont->info.isStringProp = NULL; - - Type1CloseFont(pfont); - return Successful; -} - -#if XFONT_CID -#ifndef CID_ALL_CHARS -void -CIDFillFontInfo(FontPtr pFont, FontScalablePtr Vals, - char *Filename, char *Fontname, char *Cmapname, -#ifdef HAVE_CFM - char *cfmfilename, -#endif - long sAscent, long sDescent, double sxmult) -{ -#ifdef HAVE_CFM - FILE *cfm; - cfmrec *cfmp; - int gotcfm = 0; - CARD32 magic; -#endif - long sWidth = 0; - FontInfoPtr pInfo = &pFont->info; - - FillHeader(pInfo, Vals); - -#ifdef HAVE_CFM - if ((cfm = fopen(cfmfilename,"r"))) { - fread(&magic,sizeof(CARD32),1,cfm); - if(magic == CFMMAGIC) { - if ((cfmp = (cfmrec *)xalloc(sizeof(cfmrec))) != NULL) { - fread(cfmp,sizeof(cfmrec),1,cfm); - sWidth = (long)cfmp->totalrw; - pInfo->allExist = cfmp->alle; - if (sxmult != 0) { - pInfo->maxbounds.leftSideBearing = - floor((double)cfmp->maxbounds.leftSideBearing / - sxmult + 0.5); - pInfo->maxbounds.rightSideBearing = - floor((double)cfmp->maxbounds.rightSideBearing / - sxmult + 0.5); - pInfo->maxbounds.characterWidth = - floor((double)cfmp->maxbounds.characterWidth / - sxmult + 0.5); - pInfo->maxbounds.ascent = - floor((double)cfmp->maxbounds.ascent / - sxmult + 0.5); - pInfo->maxbounds.descent = - floor((double)cfmp->maxbounds.descent / - sxmult + 0.5); - pInfo->maxbounds.attributes = - cfmp->maxbounds.attributes; - - pInfo->minbounds.leftSideBearing = - cfmp->minbounds.leftSideBearing / sxmult; - pInfo->minbounds.rightSideBearing = - cfmp->minbounds.rightSideBearing / sxmult; - pInfo->minbounds.characterWidth = - cfmp->minbounds.characterWidth / sxmult; - pInfo->minbounds.ascent = - cfmp->minbounds.ascent / sxmult; - pInfo->minbounds.descent = - cfmp->minbounds.descent / sxmult; - pInfo->minbounds.attributes = cfmp->minbounds.attributes; - - pInfo->ink_maxbounds.leftSideBearing = - cfmp->ink_maxbounds.leftSideBearing / sxmult; - pInfo->ink_maxbounds.rightSideBearing = - cfmp->ink_maxbounds.rightSideBearing / sxmult; - pInfo->ink_maxbounds.characterWidth = - cfmp->ink_maxbounds.characterWidth / sxmult; - pInfo->ink_maxbounds.ascent = - cfmp->ink_maxbounds.ascent / sxmult; - pInfo->ink_maxbounds.descent = - cfmp->ink_maxbounds.descent / sxmult; - pInfo->ink_maxbounds.attributes = - cfmp->ink_maxbounds.attributes; - - pInfo->ink_minbounds.leftSideBearing = - cfmp->ink_minbounds.leftSideBearing / sxmult; - pInfo->ink_minbounds.rightSideBearing = - cfmp->ink_minbounds.rightSideBearing / sxmult; - pInfo->ink_minbounds.characterWidth = - cfmp->ink_minbounds.characterWidth / sxmult; - pInfo->ink_minbounds.ascent = - cfmp->ink_minbounds.ascent / sxmult; - pInfo->ink_minbounds.descent = - cfmp->ink_minbounds.descent / sxmult; - pInfo->ink_minbounds.attributes = - cfmp->ink_minbounds.attributes; - pInfo->ink_minbounds.attributes = - cfmp->ink_minbounds.attributes; - - pInfo->maxOverlap = (short)cfmp->maxo; - - gotcfm = 1; - } - xfree(cfmp); - } - } - fclose(cfm); - } - - if (!gotcfm) -#endif - sWidth = ComputeBoundsAll(pFont); - - FontComputeInfoAccelerators(pInfo); - - CIDComputeStdProps(pInfo, Vals, Filename, Cmapname, Fontname, sAscent, - sDescent, sWidth); -} -#endif /* CID_ALL_CHARS */ -#endif /* BUILDCID */ - -void -T1FillFontInfo(FontPtr pFont, FontScalablePtr Vals, - char *Filename, char *Fontname, long sWidth) -{ - FontInfoPtr pInfo = &pFont->info; - struct type1font *p = (struct type1font *)pFont->fontPrivate; - long sAscent, sDescent; /* Scalable 1000-pixel values */ - - FillHeader(pInfo, Vals); - - ComputeBounds(pInfo, p->glyphs, Vals); - - ComputeProps(pInfo, Vals, Filename, &sAscent, &sDescent); - ComputeStdProps(pInfo, Vals, Filename, Fontname, sAscent, sDescent, sWidth); -} - -/* Called once, at renderer registration time */ -void -#if XFONT_CID -Type1InitStdProps(void) -#else -T1InitStdProps(void) -#endif -{ - int i; - fontProp *t; - -#if XFONT_CID - if (!stdpropsinit) { - stdpropsinit = 1; - i = sizeof(fontNamePropTable) / sizeof(fontProp); - for (t = fontNamePropTable; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); - i = sizeof(extraProps) / sizeof(fontProp); - for (t = extraProps; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); - } -#else - i = sizeof(fontNamePropTable) / sizeof(fontProp); - for (t = fontNamePropTable; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); - i = sizeof(extraProps) / sizeof(fontProp); - for (t = extraProps; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); -#endif -} diff --git a/nx-X11/lib/font/Type1/t1intf.h b/nx-X11/lib/font/Type1/t1intf.h deleted file mode 100644 index 831acc5..0000000 --- a/nx-X11/lib/font/Type1/t1intf.h +++ /dev/null @@ -1,143 +0,0 @@ -/* $Xorg: t1intf.h,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/t1intf.h,v 1.6 2001/01/17 19:43:23 dawes Exp $ */ - -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#if XFONT_CID -#include "AFM.h" -#endif - -struct type1font { - CharInfoPtr pDefault; - CharInfoRec glyphs[256]; -}; - -#if XFONT_CID -typedef struct cid_glyphs { - char *CIDFontName; - char *CMapName; - long dataoffset; - double pixel_matrix[4]; - CharInfoPtr pDefault; - CharInfoRec **glyphs; - FontInfo *AFMinfo; -#ifdef USE_MMAP - unsigned char *CIDdata; - long CIDsize; -#endif -} cidglyphs; -#endif - -/* - * Function prototypes - */ -/* t1funcs.c */ -#if XFONT_CID -extern int CIDOpenScalable ( FontPathElementPtr fpe, FontPtr *ppFont, - int flags, FontEntryPtr entry, char *fileName, - FontScalablePtr vals, fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font ); -#endif -extern int Type1OpenScalable ( FontPathElementPtr fpe, FontPtr *ppFont, - int flags, FontEntryPtr entry, char *fileName, - FontScalablePtr vals, fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font ); -#if XFONT_CID -extern unsigned int getCID ( FontPtr pFont, unsigned int charcode ); -extern int CIDGetGlyphs ( FontPtr pFont, unsigned long count, - unsigned char *chars, FontEncoding charEncoding, - unsigned long *glyphCount, CharInfoPtr *glyphs ); -extern int CIDGetMetrics ( FontPtr pFont, unsigned long count, - unsigned char *chars, FontEncoding charEncoding, - unsigned long *glyphCount, xCharInfo **glyphs ); -extern void CIDCloseFont ( FontPtr pFont ); -#endif -extern void Type1CloseFont ( FontPtr pFont ); -extern int Type1ReturnCodeToXReturnCode ( int rc ); -#if XFONT_CID -extern CharInfoPtr CIDRenderGlyph ( FontPtr pFont, psobj *charstringP, - psobj *subarrayP, - struct blues_struct *bluesP, - CharInfoPtr pci, int *mode ); -#endif - -/* t1info.c */ -#ifdef CID_ALL_CHARS -extern void ComputeBoundsAllChars ( FontPtr pFont, char *cfmfilename, double sxmult ); -#endif -#if XFONT_CID -extern int CIDGetInfoScalable ( FontPathElementPtr fpe, FontInfoPtr pInfo, - FontEntryPtr entry, FontNamePtr fontName, - char *fileName, FontScalablePtr Vals ); -#endif -extern int Type1GetInfoScalable ( FontPathElementPtr fpe, FontInfoPtr pInfo, - FontEntryPtr entry, FontNamePtr fontName, - char *fileName, FontScalablePtr Vals ); -#if XFONT_CID -extern void CIDFillFontInfo ( FontPtr pFont, FontScalablePtr Vals, - char *Filename, char *Fontname, char *Cmapname, -#ifdef HAVE_CFM - char *cfmfilename, -#endif - long sAscent, long sDescent, double sxmult ); -#endif -extern void T1FillFontInfo ( FontPtr pFont, FontScalablePtr Vals, - char *Filename, char *Fontname, long sWidth ); -extern void Type1InitStdProps ( void ); - -/* cidchar.c */ -extern CharInfoPtr CIDGetGlyphInfo ( FontPtr pFont, unsigned int cidcode, - CharInfoPtr pci, int *rc ); -extern int CIDGetAFM ( FontPtr pFont, unsigned long count, - unsigned char *chars, FontEncoding charEncoding, - unsigned long *glyphCount, CharInfoPtr *glyphs, - char *cidafmfile ); diff --git a/nx-X11/lib/font/Type1/t1io.c b/nx-X11/lib/font/Type1/t1io.c deleted file mode 100644 index 42b8bb6..0000000 --- a/nx-X11/lib/font/Type1/t1io.c +++ /dev/null @@ -1,388 +0,0 @@ -/* $Xorg: t1io.c,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * Author: Carol H. Thompson IBM Almaden Research Center - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/t1io.c,v 3.8 2001/01/17 19:43:23 dawes Exp $ */ -/******************************************************************* -* I/O package for Type 1 font reading -********************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifndef STATIC -#define STATIC static -#endif - -#ifndef FONTMODULE -#include <fcntl.h> -#include <unistd.h> -#else -#include "Xdefs.h" -#include "Xmd.h" /* INT32 declaration */ -#include "xf86_ansic.h" -#endif -#include "t1stdio.h" -#include "t1hdigit.h" -#ifdef WIN32 -#include <X11/Xw32defs.h> -#endif -#include <X11/Xdefs.h> - -/* Constants and variables used in the decryption */ -#define c1 ((unsigned short)52845) -#define c2 ((unsigned short)22719) -static unsigned short r; -static int asc, Decrypt; -static int extrach; -static int haveextrach; - -/* Our single FILE structure and buffer for this package */ -STATIC F_FILE TheFile; -STATIC unsigned char TheBuffer[F_BUFSIZ]; - -/* Our routines */ -static int T1Decrypt ( unsigned char *p, int len ); -static int T1Fill ( F_FILE *f ); - -#if XFONT_CID -void -resetDecrypt(void) -{ - Decrypt = 0; -} -#endif - -/* -------------------------------------------------------------- */ -/*ARGSUSED*/ -F_FILE * -T1Open(char *fn, /* Pointer to filename */ - char *mode) /* Pointer to open mode string */ -{ - F_FILE *of = &TheFile; - int oflags = O_RDONLY; /* We know we are only reading */ - - Decrypt = 0; - -#ifdef O_BINARY /* VMS or DOS */ - oflags |= O_BINARY; -#endif - of->fd = open(fn, oflags, 0); - if (of->fd < 0) - return NULL; - - /* Initialize the buffer information of our file descriptor */ - of->b_base = TheBuffer; - of->b_size = F_BUFSIZ; - of->b_ptr = NULL; - of->b_cnt = 0; - of->flags = 0; - of->error = 0; - haveextrach = 0; - return &TheFile; -} /* end Open */ - -/* -------------------------------------------------------------- */ -int /* Read one character */ -T1Getc(F_FILE *f) /* Stream descriptor */ -{ - if (f->b_base == NULL) return EOF; /* already closed */ - - if (f->flags & UNGOTTENC) { /* there is an ungotten c */ - f->flags &= ~UNGOTTENC; - return (int) f->ungotc; - } - - if (f->b_cnt == 0) /* Buffer needs to be (re)filled */ - f->b_cnt = T1Fill(f); - if (f->b_cnt > 0) return (f->b_cnt--, (int) *(f->b_ptr++)); - else { - f->flags |= FIOEOF; - return EOF; - } -} /* end Getc */ - -/* -------------------------------------------------------------- */ -int /* Put back one character */ -T1Ungetc(int c, - F_FILE *f) /* Stream descriptor */ -{ - if (c != EOF) { - f->ungotc = c; - f->flags |= UNGOTTENC; /* set flag */ - f->flags &= ~FIOEOF; /* reset EOF */ - } - return c; -} /* end Ungetc */ - -/* -------------------------------------------------------------- */ -int /* Read n items into caller's buffer */ -T1Read(char *buffP, /* Buffer to be filled */ - int size, /* Size of each item */ - int n, /* Number of items to read */ - F_FILE *f) /* Stream descriptor */ -{ - int bytelen, cnt, i; - F_char *p = (F_char *)buffP; - int icnt; /* Number of characters to read */ - - if (f->b_base == NULL) return 0; /* closed */ - icnt = (size!=1)?n*size:n; /* Number of bytes we want */ - - if (f->flags & UNGOTTENC) { /* there is an ungotten c */ - f->flags &= ~UNGOTTENC; - *(p++) = f->ungotc; - icnt--; bytelen = 1; - } - else bytelen = 0; - - while (icnt > 0) { - /* First use any bytes we have buffered in the stream buffer */ - if ((cnt=f->b_cnt) > 0) { - if (cnt > icnt) cnt = icnt; - for (i=0; i<cnt; i++) *(p++) = *(f->b_ptr++); - f->b_cnt -= cnt; - icnt -= cnt; - bytelen += cnt; - } - - if ((icnt == 0) || (f->flags & FIOEOF)) break; - - f->b_cnt = T1Fill(f); - } - return ((size!=1)?bytelen/size:bytelen); -} /* end Read */ - -/* -------------------------------------------------------------- */ -int /* Close the file */ -T1Close(F_FILE *f) /* Stream descriptor */ -{ - if (f->b_base == NULL) return 0; /* already closed */ - f->b_base = NULL; /* no valid stream */ - return close(f->fd); -} /* end Close */ - - -/* -------------------------------------------------------------- */ -F_FILE * /* Initialization */ -T1eexec(F_FILE *f) /* Stream descriptor */ -{ - int i, c; - int H; - unsigned char *p; - unsigned char randomP[8]; - - r = 55665; /* initial key */ - asc = 1; /* indicate ASCII form */ - - /* Consume the 4 random bytes, determining if we are also to - ASCIIDecodeHex as we process our input. (See pages 63-64 - of the Adobe Type 1 Font Format book.) */ - - /* Skip over any initial white space chars */ - while (HighHexP[c=_XT1getc(f)] == HWHITE_SPACE) ; - - /* If ASCII, the next 7 chars are guaranteed consecutive */ - randomP[0] = c; /* store first non white space char */ - T1Read((pointer)(randomP+1), 1, 3, f); /* read 3 more, for a total of 4 */ - /* store first four chars */ - for (i=0,p=randomP; i<4; i++) { /* Check 4 valid ASCIIEncode chars */ - if (HighHexP[*p++] > LAST_HDIGIT) { /* non-ASCII byte */ - asc = 0; - break; - } - } - if (asc) { /* ASCII form, convert first eight bytes to binary */ - T1Read((pointer)(randomP+4), 1, 4, f); /* Need four more */ - for (i=0,p=randomP; i<4; i++) { /* Convert */ - H = HighHexP[*p++]; - randomP[i] = H | LowHexP[*p++]; - } - } - - /* Adjust our key */ - for (i=0,p=randomP; i<4; i++) { - r = (*p++ + r) * c1 + c2; - } - - /* Decrypt the remaining buffered bytes */ - f->b_cnt = T1Decrypt(f->b_ptr, f->b_cnt); - Decrypt = 1; - return (T1Feof(f))?NULL:f; -} /* end eexec */ - -#if XFONT_CID -F_FILE * /* Initialization */ -CIDeexec(F_FILE *f) /* Stream descriptor */ -{ - int i, c; - int H; - unsigned char *p; - unsigned char randomP[8]; - - r = 55665; /* initial key */ - asc = 1; /* indicate ASCII form */ - - /* Consume the 4 random bytes, determining if we are also to - ASCIIDecodeHex as we process our input. (See pages 63-64 - of the Adobe Type 1 Font Format book.) */ - - /* Skip over any initial white space chars */ - while (HighHexP[c=_XT1getc(f)] == HWHITE_SPACE) ; - - /* If ASCII, the next 7 chars are guaranteed consecutive */ - randomP[0] = c; /* store first non white space char */ - T1Read((pointer)(randomP+1), 1, 3, f); /* read 3 more, for a total of 4 */ - /* store first four chars */ - for (i=0,p=randomP; i<4; i++) { /* Check 4 valid ASCIIEncode chars */ - if (HighHexP[*p++] > LAST_HDIGIT) { /* non-ASCII byte */ - asc = 0; - break; - } - } - if (asc) { /* ASCII form, convert first eight bytes to binary */ - T1Read((pointer)(randomP+4), 1, 4, f); /* Need four more */ - for (i=0,p=randomP; i<4; i++) { /* Convert */ - H = HighHexP[*p++]; - randomP[i] = H | LowHexP[*p++]; - } - } - - /* Adjust our key */ - for (i=0,p=randomP; i<4; i++) { - r = (*p++ + r) * c1 + c2; - } - - /* Decrypt up to, but not including, the first '%' sign */ - if (f->b_cnt > 0) { - for (i = 0; i < f->b_cnt; i++) - if (*(f->b_ptr + i) == '%') - break; - - if (i < f->b_cnt) { - if (i == 0) - f->b_cnt = 0; - else - f->b_cnt = T1Decrypt(f->b_ptr, i); - } else - f->b_cnt = T1Decrypt(f->b_ptr, f->b_cnt); - } - Decrypt = 1; - return (T1Feof(f))?NULL:f; -} /* end eexec */ -#endif - -/* -------------------------------------------------------------- */ -STATIC int -T1Decrypt(unsigned char *p, int len) -{ - int n; - int H = 0, L; - unsigned char *inp = p; - unsigned char *tblP; - - if (asc) { - if (haveextrach) { - H = extrach; - tblP = LowHexP; - } - else tblP = HighHexP; - for (n=0; len>0; len--) { - L = tblP[*inp++]; - if (L == HWHITE_SPACE) continue; - if (L > LAST_HDIGIT) break; - if (tblP == HighHexP) { /* Got first hexit value */ - H = L; - tblP = LowHexP; - } else { /* Got second hexit value; compute value and store it */ - n++; - tblP = HighHexP; - H |= L; - /* H is an int, 0 <= H <= 255, so all of this will work */ - *p++ = H ^ (r >> 8); - r = (H + r) * c1 + c2; - } - } - if (tblP != HighHexP) { /* We had an odd number of hexits */ - extrach = H; - haveextrach = 1; - } else haveextrach = 0; - return n; - } else { - for (n = len; n>0; n--) { - H = *inp++; - *p++ = H ^ (r >> 8); - r = (H + r) * c1 + c2; - } - return len; - } -} /* end Decrypt */ - -/* -------------------------------------------------------------- */ -STATIC int /* Refill stream buffer */ -T1Fill(F_FILE *f) /* Stream descriptor */ -{ - int rc; - - rc = read(f->fd, f->b_base, F_BUFSIZ); - /* propagate any error or eof to current file */ - if (rc <= 0) { - if (rc == 0) /* means EOF */ - f->flags |= FIOEOF; - else { - f->error = (short)-rc; - f->flags |= FIOERROR; - rc = 0; - } - } - f->b_ptr = f->b_base; - if (Decrypt) rc = T1Decrypt(f->b_base, rc); - return rc; -} /* end Fill */ diff --git a/nx-X11/lib/font/Type1/t1malloc.c b/nx-X11/lib/font/Type1/t1malloc.c deleted file mode 100644 index 20d4212..0000000 --- a/nx-X11/lib/font/Type1/t1malloc.c +++ /dev/null @@ -1,759 +0,0 @@ -/* $Xorg: t1malloc.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * - * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF - * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY - * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, - * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE - * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE - * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE - * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL - * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/t1malloc.c,v 1.11 2002/02/18 20:51:57 herrb Exp $ */ - /* MALLOC CWEB V0004 LOTS */ -/* -:h1.MALLOC - Fast Memory Allocation - -This module is meant to provide portable C-style memory allocation -routines (malloc/free). - -&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) - -*/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifndef FONTMODULE -#include <stdio.h> -#else -#include "Xdefs.h" /* Bool declaration */ -#include "Xmd.h" /* INT32 declaration */ -#include "os.h" -#include "xf86_ansic.h" -#endif -#include "objects.h" /* get #define for Abort() */ - - -/* -:h3.Define NULL - -In the beginning, C compilers made no assumptions about NULL. It was -even theoretically possible that NULL would not be 0. ANSI has tied -this down a bit. The following definition seems to be the most -popular (in terms of reducing compiler complaints), however, if your -compiler is unhappy about it, you can redefine it on the command line: -*/ -#ifndef NULL -#include <stddef.h> -#endif -/* -Of course, NULL is important because xiMalloc() is defined to return -NULL when out of memory. - -:h2.Data Structures Used to Manage Free Memory - -:h3.The "freeblock" Structure - -The list of available memory blocks is a doubly-linked list. Each -block begins with the following structure: -*/ - -struct freeblock { - long size; /* number of 'longs' in block, - including this header */ - struct freeblock *fore; /* forward in doubly-linked list */ - struct freeblock *back; /* backward in doubly-linked list */ -} ; -/* -In addition, each free block has a TRAILER that is simply the 'size' -repeated. Thus 'size' is found at the beginning of the block and at the -end of the block (size-1 longs away). 'size' includes both the header -and the trailer. - -When a block is allocated, its 'size' is turned negative (both at the -beginning and at the end). Thus, checking whether two blocks may be -combined is very simple. We merely examine both neighboring blocks' -size to see if they are positive (and hence available for combination). - -The memory address returned to the user is therefore one "long" below the -size, and one extra "long" is added to the end of the block (beyond what -the user requested) to store the trailing size. - -:h3."firstfree" and "lastfree", the Anchors to the Free List - -"firstfree" points to the first available free block; "lastfree" points -to the end of the chain of available blocks. These are linked together -by initialization code; see :hdref refid=addmem.. -*/ - -static struct freeblock firstfree = { 0L, NULL, NULL }; -static struct freeblock lastfree = { 0L, NULL, NULL }; - -/* -:h3."firstcombined" and "uncombined", Keeping Track of Uncombined Blocks - -This module is designed to make the combining of adjacent free memory -blocks be very fast. Nonetheless, combining blocks is naturally the -most expensive part of any memory system. In an X system, -it is worthwhile to defer the combination for a while, because -frequently we will end up asking for a block of exactly the same -size that we recently returned and we can save ourselves some work. - -"MAXUNCOMBINED" is the maximum number of uncombined blocks that we will -allow at any time: -*/ - -#define MAXUNCOMBINED 3 - -/* -"firstcombined" is a pointer into the free list. The uncombined blocks -are always at the front of the list. "firstcombined" points to the -first block that has been combined. -*/ -static struct freeblock *firstcombined = &lastfree; -static short uncombined = 0; /* current number of uncombined blocks */ - -/* -Uncombined blocks have a negative 'size'; in this they are like -allocated blocks. - -We store a distinctive hex pattern in 'size' when we combine a block -to help us debug: -*/ -#define COMBINED 0xBADBAD - -/* -:h3.DEBUGWORDS - Extra Memory Saved With Each Block for Debug - -We add 'DEBUGWORDS' words to each allocated block to put interesting -debug information: -*/ -#ifndef DEBUGWORDS -#define DEBUGWORDS 0 -#endif - -/* -:h3.MINEXCESS - Amount of "Excess" We Would be Willing to Ignore - -When we search the free list to find memory for a user request, we -frequently find an area that is bigger than what the user has asked for. -Normally we put the remaining words (the excess) back on the free list. -However, if the area is just slightly bigger than what the user needs, -it is counter-productive to do this, as the small amount recovered tends -to hurt by increasing memory fragmentation rather than help by providing -more available memory. "MINEXCESS" is the number of words that must be -recovered before we would bother to put the excess back on the free -list. If there is not enough excess, we just give the user more than he -asked for. -*/ - -#define MINEXCESS (7 + DEBUGWORDS) - -/* -:h3.Some Flags for Debug -*/ - -long AvailableWords = 0; /* number of words available in memory */ -char mallocdebug = 0; /* a flag that enables some chatty printf's */ - -/* -:h3.Prototypes of static functions -*/ - -static void combine ( void ); -static void freeuncombinable ( long *addr, long size ); -static void unhook ( struct freeblock *p ); -static void dumpchain ( void ); -#ifdef notused -static void reportarea ( long *area ); -#endif - -/* -:h3.whocalledme() - Debug for Memory Leaks - -This routine is 68000-specific; it copies the value of the application's -curOper variable (which is often a pointer to a character string), and -the first part of the stack at the time malloc was called into the -DEBUGWORDS area reserved with each block. -We use it to see who is malloc-ing memory without free-ing it. -*/ - -#if DEBUGWORDS - -static void -whocalledme(long *addr, /* address of memory block */ - long *stack) /* address of malloc's parameter on stack */ -{ - register long size; /* size of memory block */ - register int i; /* loop index */ - extern char *curOper; /* ptr to last operator (kept by appl.) */ - - stack--; - size = - *addr; - - addr += size - 1 - DEBUGWORDS; - *addr++ = (long) curOper; - for (i=0; i < DEBUGWORDS-1; i++) - *addr++ = *stack++; -} -#else - -#define whocalledme(addr, stack) - -#endif -/* -:h2.xiFree() - User-Callable "Return Memory" Routine - -The actual beginning of the block is one 'long' before the address we -gave to the user. The block begins and ends with '-size' in words. -*/ - -void -xiFree(long *addr) /* user's memory to be returned */ -{ - register long size; /* amount of memory in this block */ - register struct freeblock *p; /* identical to 'addr' */ - - if (addr == NULL) { /* common "mistake", so allow it (CHT) */ - printf("\nxiFree(NULL)?\n"); - return; - } - - size = *--addr; -/* -Make sure this address looks OK; 'size' must be less than zero (meaning -the block is allocated) and should be repeated at the end of the block. -*/ - if (size >= 0) - Abort("free: bad size"); - if (addr[-1 - size] != size) - Abort("free: mismatched size"); -/* -Now make this a 'freeblock' structure and tack it on the FRONT of the -free list (where uncombined blocks go): -*/ - AvailableWords -= size; /* actually INCREASES AvailableWords */ - p = (struct freeblock *) addr; - p->back = &firstfree; - (p->fore = firstfree.fore)->back = p; - firstfree.fore = p; -/* -If we have too many uncombined blocks, call combine() to combine one. -*/ - if (++uncombined > MAXUNCOMBINED) { - combine(); - if (mallocdebug) { - printf("xiFree(%p) with combine, ", (void *)addr); - dumpchain(); - } - } - else { - if (mallocdebug) { - printf("xiFree(%p), ", (void *)addr); - dumpchain(); - } - } - - return; -} - -/* -:h3.combine() - Subroutine of xiFree() to Combine Blocks - -This routine tries to combine the block just before 'firstcombined'. -In any event, that block will be moved to the end of the list (after -'firstcombined'). -*/ - -static void -combine(void) -{ - register struct freeblock *p; /* block we will try to combine */ - register long *addr; /* identical to 'p' for 'long' access */ - register long size; /* size of this block */ - register long size2; /* size of potential combinee */ - - p = firstcombined->back; - if (p == &firstfree) - Abort("why are we combining?"); - - addr = (long *) p; - size = - p->size; - if (--uncombined < 0) - Abort("too many combine()s"); - - if (addr[-1] < 0 && addr[size] < 0) { -/* -We special case the situation where no combining can be done. Then, we -just mark the chain "combined" (i.e., positive size), move the -'firstcombined' pointer back in the chain, and return. -*/ - addr[0] = addr[size - 1] = size; - firstcombined = (struct freeblock *) addr; - return; - } -/* -Otherwise, we unhook this pointer from the chain: -*/ - unhook(p); -/* -First we attempt to combine this with the block immediately above: -*/ - size2 = addr[-1]; - if (size2 > 0) { /* i.e., block above is free */ - *addr = COMBINED; /* might help debug */ - addr -= size2; - if (addr[0] != size2) - Abort("bad block above"); - unhook((struct freeblock *)addr); - size += size2; - } -/* -At this point 'addr' and 'size' may be the original block, or it may be -the newly combined block. Now we attempt to combine it with the block -below: -*/ - p = (struct freeblock *) (addr + size); - size2 = p->size; - - if (size2 > 0) { /* i.e., block below is free */ - p->size = COMBINED; - if (size2 != ((long *) p)[size2 - 1]) - Abort("bad block below"); - unhook(p); - size += size2; - } -/* -Finally we take the newly combined block and put it on the end of the -chain by calling the "freeuncombinable" subroutine: -*/ - freeuncombinable(addr, size); -} - -/* -:h3.freeuncombinable() - Free a Block That Need Not be Combined - -This block is "uncombinable" either because we have already combined -it with its eligible neighbors, or perhaps because we know it has -no neighbors. -*/ - -static void -freeuncombinable(long *addr, /* address of the block to be freed */ - long size) /* size of block in words */ -{ - register struct freeblock *p; /* a convenient synonym for 'addr' */ - -/* -Mark block allocated and combined by setting its 'size' positive: -*/ - addr[size - 1] = addr[0] = size; -/* -Now tack the block on the end of the doubly-linked free list: -*/ - p = (struct freeblock *) addr; - p->fore = &lastfree; - (p->back = lastfree.back)->fore = p; - lastfree.back = p; -/* -If we have previously had no combined blocks, we must update -'firstcombined' to point to this block: -*/ - if (firstcombined->fore == NULL) - firstcombined = p; -} - -/* -:h3.unhook() - Unhook a Block from the Doubly-linked List - -The only tricky thing here is to make sure that 'firstcombined' is -updated if this block happened to be the old 'firstcombined'. (We -would never be unhooking 'firstfree' or 'lastfree', so we do not -have to worry about the end cases.) -*/ - -static void -unhook(struct freeblock *p) /* block to unhook */ -{ - p->back->fore = p->fore; - p->fore->back = p->back; - - if (firstcombined == p) - firstcombined = p->fore; -} -/* -:h2.xiMalloc() - Main User Entry Point for Getting Memory - -We have two slightly different versions of xiMalloc(). In the case -where we have TYPE1IMAGER and a font cache, we are prepared, when nominally -out of memory, to loop calling TYPE1IMAGER's GimeSpace() to release font -cache. -*/ - -/* The following code put in by MDC on 11/10/90 */ - -#ifdef TYPE1IMAGER - -static char *malloc_local(unsigned size); - -char * -xiMalloc(unsigned size) -{ - char *memaddr; - - while ( (memaddr = malloc_local(size)) == NULL ) { - /* Ask TYPE1IMAGER to give us some of its cache back */ - if ( I_GimeSpace() == 0 ) break; /* We are really, really, out of memory */ - } - - return(memaddr); -} -#endif - -/* -Now begins the real workhorse xiMalloc() (called 'malloc_local' if -we are taking advantage of TYPE1IMAGER). Its argument is an unsigned; -at least that lets users with 16-bit integers get a 64K chunk of -memory, and it is also compatible with the definition of a "size_t" -in most systems. -*/ -#ifdef TYPE1IMAGER -static char * -malloc_local(unsigned Size) /* number of bytes the user requested */ -#else -char * -xiMalloc(unsigned Size) -#endif -{ - register long size = (long)Size; /* a working register for size */ - register struct freeblock *p; /* tentative block to be returned */ - register long excess; /* words in excess of user request */ - register long *area; /* a convenient synonym for 'p' */ - -/* -First, we increase 'size' to allow for the two size fields we will -save with the block, plus any information for debug purposes. -Then we ensure that the block will be large enough to hold our -'freeblock' information. Finally we convert it to be in words -(longs), not bytes, increased to span an integral number of double -words, so that all memory blocks dispensed with be properly aligned. -*/ - size += 2*sizeof(long) + DEBUGWORDS*sizeof(long); - if (size < sizeof(struct freeblock) + sizeof(long)) - size = sizeof(struct freeblock) + sizeof(long); - size = ((unsigned) (size + sizeof(double) - 1) / sizeof(double)) * (sizeof(double)/sizeof(long)); - -/* -For speed, we will try first to give the user back a very recently -returned block--one that is on the front of the chain before -'firstcombined'. These blocks still have negative sizes, and need -only to be "unhook"ed: -*/ - size = -size; - for (p=firstfree.fore; p != firstcombined; p=p->fore) { - if (p->size == size) { - unhook(p); - uncombined--; - if (mallocdebug) { - printf("fast xiMalloc(%ld) = %p, ", size, - (void *)p); - dumpchain(); - } - AvailableWords += size; /* decreases AvailableWords */ - whocalledme(p, &Size); - return((char *)&p->fore); - } - } -/* -Well, if we get here, there are no uncombined blocks matching the user's -request. So, we search the rest of the chain for a block that is big -enough. ('size' becomes positive again): -*/ - size = -size; - for (;; p = p->fore) { -/* -If we hit the end of the chain (p->size == 0), we are probably out of -memory. However, we should first try to combine any memory that has -not yet been combined before we give that pessimistic answer. If -we succeed in combining, we can call ourselves recursively to try to -allocate the requested amount: -*/ - if (p->size == 0) { - if (uncombined <= 0) - return(NULL); - while (firstfree.fore != firstcombined) - combine(); - return(xiMalloc(sizeof(long) * (size - 2 - DEBUGWORDS))); - } -/* -Otherwise, we keep searching until we find a big enough block: -*/ - if (p->size >= size) - break; - } -/* -At this point, 'p' contains a block at least as big as what the user -requested, so we take it off the free chain. If it is excessively big, -we return the excess to the free chain: -*/ - unhook(p); - excess = p->size - size; - area = (long *) p; - - if (excess > MINEXCESS) - freeuncombinable(area + size, excess); - else - size = p->size; - - AvailableWords -= size; -/* -Mark first and last word of block with the negative of the size, to -flag that this block is allocated: -*/ - area[size - 1] = area[0] = - size; - - if (mallocdebug) { - printf("slow xiMalloc(%ld) @ %p, ", size, (void *)area); - dumpchain(); - } - whocalledme(area, &Size); -/* -The address we return to the user is one 'long' BELOW the address of -the block. This protects our 'size' field, so we can tell the size -of the block when he returns it to us with xiFree(). Also, he better not -touch the 'size' field at the end of the block either. (That would be -nasty of him, as he would be touching memory outside of the bytes he -requested). -*/ - return((char *) (area + 1)); -} - -/* -:h2 id=addmem.addmemory() - Initialize Free Memory - -This routine should be called at initialization to initialize the -free chain. There is no standard way to do this in C. -We want the memory dispensed by malloc to be aligned on a double word -boundary (because some machines either require alignment, or are -more efficient if accesses are aligned). Since the total size of -any block created by malloc is an integral number of double words, -all we have to do to ensure alignment is to adjust each large block -added to the free chain to start on an odd long-word boundary. -(Malloc's size field will occupy the odd long and the user's memory -will then begin on an even boundary.) Since we fill in additional -size fields at the beginning and end of each of the large freeblocks, -we need only adjust the address passed to addmemory to a double word -boundary. -*/ - -#define MAXAREAS 10 /* there can be this many calls to addmemory() */ - -static long *freearea[MAXAREAS] = { NULL }; /* so we can report later */ - -void -addmemory(long *addr, /* beginning of free area */ - long size) /* number of bytes of free area */ -{ - register int i; /* loop index variable */ - register long *aaddr; /* aligned beginning of free area */ - -#if DEBUGWORDS - printf("malloc has DEBUGWORDS=%d\n", DEBUGWORDS); -#endif -/* -First link together firstfree and lastfree if necessary: -*/ - if (firstfree.fore == NULL) { - firstfree.fore = &lastfree; - lastfree.back = &firstfree; - } -/* -We'll record where the area was that was given to us for later reports: -*/ - for (i=0; i < MAXAREAS; i++) - if (freearea[i] == NULL) break; - if (i >= MAXAREAS) - Abort("too many addmemory()s"); - aaddr = (long *) ( ((long) addr + sizeof(double) - 1) & - (long)sizeof(double) ); - size -= (char *) aaddr - (char *) addr; - freearea[i] = aaddr; -/* -Convert 'size' to number of longs, and store '-size' guards at the -beginning and end of this area so we will not accidentally recombine the -first or last block: -*/ - size /= sizeof(long); - - AvailableWords += size - 2; - - aaddr[size - 1] = aaddr[0] = -size; -/* -Finally, call 'freeuncombinable' to put the remaining memory on the -free list: -*/ - freeuncombinable(aaddr + 1, size - 2); -} - -/* -:h3.delmemory() - Delete Memory Pool -*/ -void -delmemory(void) -{ - register int i; - - AvailableWords = 0; - firstfree.fore = &lastfree; - lastfree.back = &firstfree; - firstcombined = &lastfree; - uncombined = 0; - for (i=0; i<MAXAREAS; i++) - freearea[i] = NULL; -} - -/* -:h2.Debug Routines - -:h3.dumpchain() - Print the Chain of Free Blocks -*/ - -static void -dumpchain(void) -{ - register struct freeblock *p; /* current free block */ - register long size; /* size of block */ - register struct freeblock *back; /* block before 'p' */ - register int i; /* temp variable for counting */ - - printf("DUMPING FAST FREE LIST:\n"); - back = &firstfree; - for (p = firstfree.fore, i=uncombined; p != firstcombined; - p = p->fore) { - if (--i < 0) - Abort("too many uncombined areas"); - size = p->size; - printf(". . . area @ %p, size = %ld\n", (void *)p, -size); - if (size >= 0 || size != ((int *) p)[-1 - size]) - Abort("dumpchain: bad size"); - if (p->back != back) - Abort("dumpchain: bad back"); - back = p; - } - printf("DUMPING COMBINED FREE LIST:\n"); - for (; p != &lastfree; p = p->fore) { - size = p->size; - printf(". . . area @ %p, size = %ld\n", (void *)p, size); - if (size <= 0 || size != ((int *) p)[size - 1]) - Abort("dumpchain: bad size"); - if (p->back != back) - Abort("dumpchain: bad back"); - back = p; - } - if (back != lastfree.back) - Abort("dumpchain: bad lastfree"); -} - -#ifdef notused -/* -:h3.reportarea() - Display a Contiguous Set of Memory Blocks -*/ - -static void -reportarea(long *area) /* start of blocks (from addmemory) */ -{ - register long size; /* size of current block */ - register long wholesize; /* size of original area */ - register struct freeblock *p; /* pointer to block */ - - if (area == NULL) - return; - wholesize = - *area++; - wholesize -= 2; - - while (wholesize > 0) { - size = *area; - if (size < 0) { - register int i,j; - - size = -size; - printf("Allocated %5ld bytes at %p, first words=%08lx %08lx\n", - size * sizeof(long), area + 1, area[1], area[2]); -#if DEBUGWORDS - printf(" ...Last operator: %s\n", - (char *)area[size-DEBUGWORDS-1]); -#endif - for (i = size - DEBUGWORDS; i < size - 2; i += 8) { - printf(" ..."); - for (j=0; j<8; j++) - printf(" %08lx", area[i+j]); - printf("\n"); - } - - } - else { - printf("Free %ld bytes at %p\n", size * sizeof(long), - area); - if (size == 0) - Abort("zero sized memory block"); - - for (p = firstfree.fore; p != NULL; p = p->fore) - if ((long *) p == area) break; - if ((long *) p != area) - Abort("not found on forward chain"); - - for (p = lastfree.back; p != NULL; p = p->back) - if ((long *) p == area) break; - if ((long *) p != area) - Abort("not found on backward chain"); - } - if (area[0] != area[size - 1]) - Abort("unmatched check sizes"); - area += size; - wholesize -= size; - } -} - -/* -:h3.MemReport() - Display All of Memory -*/ - -void -MemReport(void) -{ - register int i; - - dumpchain(); - - for (i=0; i<MAXAREAS; i++) - reportarea(freearea[i]); -} - -/* -:h3.MemBytesAvail - Display Number of Bytes Now Available -*/ - -void -MemBytesAvail(void) -{ - printf("There are now %ld bytes available\n", AvailableWords * - sizeof(long) ); -} -#endif diff --git a/nx-X11/lib/font/Type1/t1snap.c b/nx-X11/lib/font/Type1/t1snap.c deleted file mode 100644 index 5618b58..0000000 --- a/nx-X11/lib/font/Type1/t1snap.c +++ /dev/null @@ -1,85 +0,0 @@ -/* $Xorg: t1snap.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/t1snap.c,v 1.3 1999/08/22 08:58:54 dawes Exp $ */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "pictures.h" - -/* -:h2.Handle Functions - -:h3.Phantom() - Returns a Move Segment Equivalent to Handles - -This is a user operator. Its new name is QueryHandle. -*/ - -struct segment * -t1_Phantom(struct segment *p) /* object to take the Phantom of */ -{ - struct fractpoint pt; /* handle size will built here */ - - if (p == NULL) - pt.x = pt.y = 0; - else - PathDelta(p, &pt); - - return(PathSegment(MOVETYPE, pt.x, pt.y)); -} - -/* -:h3.Snap() - Force Ending Handle of Object to Origin - -This is a user operator. -*/ - -struct segment * -t1_Snap(struct segment *p) /* path to snap */ -{ - struct fractpoint pt; /* for finding length of path */ - - if (p == NULL) - return(NULL); - p = UniquePath(p); - - PathDelta(p, &pt); - if (p->last->type == MOVETYPE) { - p->last->dest.x -= pt.x; - p->last->dest.y -= pt.y; - } - else - p = JoinSegment(p, MOVETYPE, -pt.x, -pt.y, NULL); - return(p); -} diff --git a/nx-X11/lib/font/Type1/t1stdio.h b/nx-X11/lib/font/Type1/t1stdio.h deleted file mode 100644 index 2ed0832..0000000 --- a/nx-X11/lib/font/Type1/t1stdio.h +++ /dev/null @@ -1,101 +0,0 @@ -/* $Xorg: t1stdio.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/t1stdio.h,v 1.9 2001/01/17 19:43:24 dawes Exp $ */ -/* T1IO FILE structure and related stuff */ -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifdef XFree86LOADER -#undef FILE -#endif -#define FILE F_FILE -typedef unsigned char F_char; - -typedef struct F_FILE { - F_char *b_base; /* Pointer to beginning of buffer */ - long b_size; /* Size of the buffer */ - F_char *b_ptr; /* Pointer to next char in buffer */ - long b_cnt; /* Number of chars remaining in buffer */ - F_char flags; /* other flags; != 0 means getc must call fgetc */ - F_char ungotc; /* Place for ungotten char; flag set if present */ - short error; /* error status */ - int fd; /* underlying file descriptor */ -} F_FILE; - - -/* defines for flags */ -#define UNGOTTENC (0x01) -#define FIOEOF (0x80) -#define FIOERROR (0x40) - -#ifndef NULL -#include <stddef.h> -#endif - -#define EOF (-1) /* end of file */ -#define F_BUFSIZ (512) - -#define _XT1getc(f) \ - ( \ - ( ((f)->b_cnt > 0) && ((f)->flags == 0) ) ? \ - ( (f)->b_cnt--, (unsigned int)*( (f)->b_ptr++ ) ) : \ - T1Getc(f) \ - ) - -#define T1Feof(f) (((f)->flags & FIOEOF) && ((f)->b_cnt==0)) - -#if XFONT_CID -extern F_FILE *CIDeexec ( FILE *f ); -#endif - -extern FILE *T1Open ( char *fn, char *mode ); -extern int T1Getc ( FILE *f ); -extern int T1Ungetc ( int c, FILE *f ); -extern int T1Read ( char *buffP, int size, int n, FILE *f ); -extern int T1Close ( FILE *f ); -extern FILE *T1eexec ( FILE *f ); -extern void resetDecrypt ( void ); - -#undef fclose -#undef fopen -#undef ungetc -#undef fgetc -#undef fread -#undef feof -#undef ferror -#define fclose(f) T1Close(f) -#define fopen(name,mode) T1Open(name,mode) -#define ungetc(c,f) T1Ungetc(c,f) -#define fgetc(f) T1Getc(f) - -#define fread(bufP,size,n,f) T1Read(bufP,size,n,f) -#define feof(f) (((f)->flags & FIOEOF) && ((f)->b_cnt==0)) -#define ferror(f) (((f)->flags & FIOERROR)?(f)->error:0) diff --git a/nx-X11/lib/font/Type1/t1stub.c b/nx-X11/lib/font/Type1/t1stub.c deleted file mode 100644 index 2fb1d79..0000000 --- a/nx-X11/lib/font/Type1/t1stub.c +++ /dev/null @@ -1,56 +0,0 @@ -/* $Xorg: t1stub.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/t1stub.c,v 1.8 2001/01/17 19:43:24 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef FONTMODULE -#include "Xdefs.h" /* Bool declaration */ -#include "Xmd.h" /* INT32 declaration */ -#include "os.h" -#include "xf86_ansic.h" -#else -#include <stdio.h> -#endif -#include "objects.h" /* get #define for Abort() */ - -static void -xiStub(void) -{ - printf("xiStub called\n"); - Abort("xiStub called"); -} - -void -t1_DumpText(void) -{ - xiStub(); -} diff --git a/nx-X11/lib/font/Type1/t1test.c b/nx-X11/lib/font/Type1/t1test.c deleted file mode 100644 index 1da7416..0000000 --- a/nx-X11/lib/font/Type1/t1test.c +++ /dev/null @@ -1,246 +0,0 @@ -/* $Xorg: t1test.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/FSproto.h> - -#define DECIPOINTSPERINCH 722.7 -#define DEFAULTRES 75 -#define DEFAULTPOINTSIZE 120 - -FontScalableRec vals; -FontEntryRec entry; - -int main(argc, argv) - int argc; - char *argv[]; -{ - int h; - char temp[80]; - char file[80]; - char glyphcode[1]; - FontPtr fontptr; - CharInfoRec *glyphs[1]; - int count; - int code; - int rc = -1; - - T1FillVals(&vals); - Type1RegisterFontFileFunctions(); - entry.name.name = "-adobe-utopia-medium-r-normal--0-0-0-0-p-0-iso8859-1"; - - for (;;) { - printf("T1TEST: "); - gets(temp); - glyphcode[0] = '\0'; - - switch(temp[0]) { - - case 'c': - if (1 != sscanf(&temp[2], "%c", glyphcode)) - printf("glyph code?\n"); - break; - - case 'x': - if (1 != sscanf(&temp[2], "%x", &code)) - printf("glyph code?\n"); - else - glyphcode[0] = code; - break; - - case 'd': - if (1 != sscanf(&temp[2], "%d", &code)) - printf("glyph code?\n"); - else - glyphcode[0] = code; - break; - - case 'h': - if (1 != sscanf(&temp[2], "%d", &h)) - printf("height?\n"); - vals.pixel = h; - rc = Type1OpenScalable(NULL, &fontptr, 0, &entry, file, &vals, 0, 0); - break; - - case 'f': - if (1 != sscanf(&temp[2], "%s", file)) - printf("file name?\n"); - rc = Type1OpenScalable(NULL, &fontptr, 0, &entry, file, &vals, 0, 0); - break; - - case 't': - if (1 != sscanf(&temp[2], "%s", file)) - printf("file name?\n"); - vals.pixel = 8; - rc = Type1OpenScalable(NULL, &fontptr, 0, &entry, file, &vals, 0, 0); - if (rc != Successful) break; - vals.pixel = 20; - rc = Type1OpenScalable(NULL, &fontptr, 0, &entry, file, &vals, 0, 0); - if (rc != Successful) break; - vals.pixel = 50; - rc = Type1OpenScalable(NULL, &fontptr, 0, &entry, file, &vals, 0, 0); - glyphcode[0] = 'A'; - printf("From font '%s':\n", file); - break; - - case 'q': - return 0; - - default: - printf("unknown command '%c', must one of 'qfchdxt'\n", temp[0]); - - } - if (rc == Successful) { - if (glyphcode[0] != '\0') { - (*fontptr->get_glyphs)(fontptr, 1, glyphcode, 0, &count, glyphs); - if (count > 0) - Display(glyphs[0]); - else - printf("Code %x not valid in this font\n", glyphcode[0]); - } - } - else - printf("Bad font (rc = %d, file='%s')\n", rc, file); - } -} - -static void Display(glyph) - CharInfoRec *glyph; -{ - int h,w; - unsigned char *p; - int data; - int i; - - p = glyph->bits; - - printf("Metrics: left=%d, right=%d, w=%d, above=%d, below=%d\n", - glyph->metrics.leftSideBearing, - glyph->metrics.rightSideBearing, - glyph->metrics.characterWidth, - glyph->metrics.ascent, - glyph->metrics.descent); - - for (h=glyph->metrics.ascent + glyph->metrics.descent; --h >= 0;) { - w = glyph->metrics.rightSideBearing - glyph->metrics.leftSideBearing; - while (w > 0) { - data = *p++; - for (i=0; i<8; i++) { - if (--w < 0) - break; - if (data & 0x80) - printf("X"); - else - printf("."); - data <<= 1; - } - } - printf("\n"); - } -} - -T1FillVals(vals) - FontScalablePtr vals; -{ - FontResolutionPtr res; - int x_res = DEFAULTRES; - int y_res = DEFAULTRES; - int pointsize = DEFAULTPOINTSIZE; /* decipoints */ - int num_res; - - /* Must have x, y, and pixel */ - if (!vals->x || !vals->y || !vals->pixel) { - res = GetClientResolutions(&num_res); - if (num_res) { - if (res->x_resolution) - x_res = res->x_resolution; - if (res->y_resolution) - y_res = res->y_resolution; - if (res->point_size) - pointsize = res->point_size; - } - if (!vals->x) - vals->x = x_res; - if (!vals->y) - vals->y = y_res; - if (!vals->point) { - if (!vals->pixel) vals->point = pointsize; - else vals->point = (vals->pixel * DECIPOINTSPERINCH) / vals->y; - } - if (!vals->pixel) - vals->pixel = (vals->point * vals->y) / DECIPOINTSPERINCH; - /* Make sure above arithmetic is normally in range and will - round properly. +++ */ - } -} - -int CheckFSFormat(format, fmask, bit, byte, scan, glyph, image) - int format,fmask,*bit,*byte,*scan,*glyph,*image; -{ - *bit = *byte = 1; - *glyph = *scan = *image = 1; - return Successful; - -} - -char *MakeAtom(p) - char *p; -{ - return p; -} - - -FontResolutionPtr GetClientResolutions(resP) - int *resP; -{ - *resP = 0; -}; - -char *Xalloc(size) - int size; -{ - extern char *malloc(); - return(malloc(size)); -} - -void Xfree() -{ - free(); -} - -FontDefaultFormat() { ; } - -FontFileRegisterRenderer() { ; } - -GenericGetBitmaps() { ; } -GenericGetExtents() { ; } - -FontParseXLFDName() { ; } -FontComputeInfoAccelerators() { ; } diff --git a/nx-X11/lib/font/Type1/t1unicode.c b/nx-X11/lib/font/Type1/t1unicode.c deleted file mode 100644 index 136cc44..0000000 --- a/nx-X11/lib/font/Type1/t1unicode.c +++ /dev/null @@ -1,251 +0,0 @@ -/* -Copyright (c) 1998 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "t1unicode.h" - -static char* table_32[] = -{ "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", - "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", - "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", - "three", "four", "five", "six", "seven", "eight", "nine", "colon", - "semicolon", "less", "equal", "greater", "question", "at", "A", "B", - "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", - "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", - "backslash", "bracketright", "asciicircum", "underscore", "grave", - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", - "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "braceleft", "bar", "braceright", "asciitilde", 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, "space", "exclamdown", "cent", "sterling", "currency", "yen", - "brokenbar", "section", "dieresis", "copyright", "ordfeminine", - "guillemotleft", "logicalnot", "hyphen", "registered", "macron", - "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu", - "paragraph", "periodcentered", "cedilla", "onesuperior", - "ordmasculine", "guillemotright", "onequarter", "onehalf", - "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", - "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", - "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex", - "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", - "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute", - "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave", - "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", - "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", - "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve", - "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", - "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn", - "ydieresis", "Amacron", "amacron", "Abreve", "abreve", "Aogonek", - "aogonek", "Cacute", "cacute", "Ccircumflex", "ccircumflex", - "Cdotaccent", "cdotaccent", "Ccaron", "ccaron", "Dcaron", "dcaron", - "Dcroat", "dcroat", "Emacron", "emacron", "Ebreve", "ebreve", - "Edotaccent", "edotaccent", "Eogonek", "eogonek", "Ecaron", "ecaron", - "Gcircumflex", "gcircumflex", "Gbreve", "gbreve", "Gdotaccent", - "gdotaccent", "Gcommaaccent", "gcommaaccent", "Hcircumflex", - "hcircumflex", "Hbar", "hbar", "Itilde", "itilde", "Imacron", - "imacron", "Ibreve", "ibreve", "Iogonek", "iogonek", "Idotaccent", - "dotlessi", "IJ", "ij", "Jcircumflex", "jcircumflex", "Kcommaaccent", - "kcommaaccent", "kgreenlandic", "Lacute", "lacute", "Lcommaaccent", - "lcommaaccent", "Lcaron", "lcaron", "Ldot", "ldot", "Lslash", - "lslash", "Nacute", "nacute", "Ncommaaccent", "ncommaaccent", - "Ncaron", "ncaron", "napostrophe", "Eng", "eng", "Omacron", "omacron", - "Obreve", "obreve", "Ohungarumlaut", "ohungarumlaut", "OE", "oe", - "Racute", "racute", "Rcommaaccent", "rcommaaccent", "Rcaron", - "rcaron", "Sacute", "sacute", "Scircumflex", "scircumflex", - "Scommaaccent", "scommaaccent", "Scaron", "scaron", "Tcommaaccent", - "tcommaaccent", "Tcaron", "tcaron", "Tbar", "tbar", "Utilde", - "utilde", "Umacron", "umacron", "Ubreve", "ubreve", "Uring", "uring", - "Uhungarumlaut", "uhungarumlaut", "Uogonek", "uogonek", "Wcircumflex", - "wcircumflex", "Ycircumflex", "ycircumflex", "Ydieresis", "Zacute", - "zacute", "Zdotaccent", "zdotaccent", "Zcaron", "zcaron", "longs", 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "florin", 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Ohorn", "ohorn", 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, "Uhorn", "uhorn", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Gcaron", - "gcaron", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "Aringacute", "aringacute", "AEacute", "aeacute", "Oslashacute", - "oslashacute", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57929", "afii64937", 0, 0, 0, 0, 0, 0, - 0, 0, "circumflex", "caron", 0, "macron", 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, "breve", "dotaccent", "ring", "ogonek", "tilde", - "hungarumlaut", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "gravecomb", - "acutecomb", 0, "tildecomb", 0, 0, 0, 0, 0, "hookabovecomb", 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "dotbelowcomb", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, "tonos", "dieresistonos", "Alphatonos", - "anoteleia", "Epsilontonos", "Etatonos", "Iotatonos", 0, - "Omicrontonos", 0, "Upsilontonos", "Omegatonos", "iotadieresistonos", - "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", - "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", - 0, "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega", - "Iotadieresis", "Upsilondieresis", "alphatonos", "epsilontonos", - "etatonos", "iotatonos", "upsilondieresistonos", "alpha", "beta", - "gamma", "delta", "epsilon", "zeta", "eta", "theta", "iota", "kappa", - "lambda", "mu", "nu", "xi", "omicron", "pi", "rho", "sigma1", "sigma", - "tau", "upsilon", "phi", "chi", "psi", "omega", "iotadieresis", - "upsilondieresis", "omicrontonos", "upsilontonos", "omegatonos", 0, 0, - "theta1", "Upsilon1", 0, 0, "phi1", "omega1", 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii10023", "afii10051", - "afii10052", "afii10053", "afii10054", "afii10055", "afii10056", - "afii10057", "afii10058", "afii10059", "afii10060", "afii10061", 0, - "afii10062", "afii10145", "afii10017", "afii10018", "afii10019", - "afii10020", "afii10021", "afii10022", "afii10024", "afii10025", - "afii10026", "afii10027", "afii10028", "afii10029", "afii10030", - "afii10031", "afii10032", "afii10033", "afii10034", "afii10035", - "afii10036", "afii10037", "afii10038", "afii10039", "afii10040", - "afii10041", "afii10042", "afii10043", "afii10044", "afii10045", - "afii10046", "afii10047", "afii10048", "afii10049", "afii10065", - "afii10066", "afii10067", "afii10068", "afii10069", "afii10070", - "afii10072", "afii10073", "afii10074", "afii10075", "afii10076", - "afii10077", "afii10078", "afii10079", "afii10080", "afii10081", - "afii10082", "afii10083", "afii10084", "afii10085", "afii10086", - "afii10087", "afii10088", "afii10089", "afii10090", "afii10091", - "afii10092", "afii10093", "afii10094", "afii10095", "afii10096", - "afii10097", 0, "afii10071", "afii10099", "afii10100", "afii10101", - "afii10102", "afii10103", "afii10104", "afii10105", "afii10106", - "afii10107", "afii10108", "afii10109", 0, "afii10110", "afii10193", 0, - 0, "afii10146", "afii10194", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "afii10147", "afii10195", "afii10148", "afii10196", 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "afii10050", "afii10098", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii10846", 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "afii57799", "afii57801", "afii57800", "afii57802", "afii57793", - "afii57794", "afii57795", "afii57798", "afii57797", "afii57806", 0, - "afii57796", "afii57807", "afii57839", "afii57645", "afii57841", - "afii57842", "afii57804", "afii57803", "afii57658", 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, "afii57664", "afii57665", "afii57666", "afii57667", - "afii57668", "afii57669", "afii57670", "afii57671", "afii57672", - "afii57673", "afii57674", "afii57675", "afii57676", "afii57677", - "afii57678", "afii57679", "afii57680", "afii57681", "afii57682", - "afii57683", "afii57684", "afii57685", "afii57686", "afii57687", - "afii57688", "afii57689", "afii57690", 0, 0, 0, 0, 0, "afii57716", - "afii57717", "afii57718", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57388", 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, "afii57403", 0, 0, 0, "afii57407", 0, "afii57409", - "afii57410", "afii57411", "afii57412", "afii57413", "afii57414", - "afii57415", "afii57416", "afii57417", "afii57418", "afii57419", - "afii57420", "afii57421", "afii57422", "afii57423", "afii57424", - "afii57425", "afii57426", "afii57427", "afii57428", "afii57429", - "afii57430", "afii57431", "afii57432", "afii57433", "afii57434", 0, 0, - 0, 0, 0, "afii57440", "afii57441", "afii57442", "afii57443", - "afii57444", "afii57445", "afii57446", "afii57470", "afii57448", - "afii57449", "afii57450", "afii57451", "afii57452", "afii57453", - "afii57454", "afii57455", "afii57456", "afii57457", "afii57458", 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57392", "afii57393", - "afii57394", "afii57395", "afii57396", "afii57397", "afii57398", - "afii57399", "afii57400", "afii57401", "afii57381", 0, 0, "afii63167", - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57511", 0, 0, 0, 0, "afii57506", - 0, 0, 0, 0, 0, 0, 0, "afii57507", 0, "afii57512", 0, 0, 0, 0, 0, 0, 0, - 0, "afii57513", 0, 0, 0, 0, 0, 0, "afii57508", 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, "afii57505", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57509", 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, "afii57514", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57519", 0, 0, "afii57534", 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - -static char* table_2000[] = /* general punctuation, s*scripts, currency */ -{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii61664", "afii301", "afii299", - "afii300", 0, 0, "figuredash", "endash", "emdash", "afii00208", 0, - "underscoredbl", "quoteleft", "quoteright", "quotesinglbase", - "quotereversed", "quotedblleft", "quotedblright", "quotedblbase", 0, - "dagger", "daggerdbl", "bullet", 0, "onedotenleader", - "twodotenleader", "ellipsis", 0, 0, 0, 0, 0, "afii61573", "afii61574", - "afii61575", 0, "perthousand", 0, "minute", "second", 0, 0, 0, 0, 0, - "guilsinglleft", "guilsinglright", 0, "exclamdbl", 0, 0, 0, 0, 0, 0, - 0, "fraction", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, "zerosuperior", 0, 0, 0, "foursuperior", "fivesuperior", - "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", 0, 0, - 0, "parenleftsuperior", "parenrightsuperior", "nsuperior", - "zeroinferior", "oneinferior", "twoinferior", "threeinferior", - "fourinferior", "fiveinferior", "sixinferior", "seveninferior", - "eightinferior", "nineinferior", 0, 0, 0, "parenleftinferior", - "parenrightinferior", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, "colonmonetary", 0, "franc", "lira", 0, 0, "peseta", 0, 0, - "afii57636", "dong", "Euro", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - -static char* table_2500[]= /* line and box drawing */ -{ "SF100000", 0, "SF110000", 0, 0, 0, 0, 0, 0, 0, 0, 0, "SF010000", 0, - 0, 0, "SF030000", 0, 0, 0, "SF020000", 0, 0, 0, "SF040000", 0, 0, 0, - "SF080000", 0, 0, 0, 0, 0, 0, 0, "SF090000", 0, 0, 0, 0, 0, 0, 0, - "SF060000", 0, 0, 0, 0, 0, 0, 0, "SF070000", 0, 0, 0, 0, 0, 0, 0, - "SF050000", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - "SF430000", "SF240000", "SF510000", "SF520000", "SF390000", - "SF220000", "SF210000", "SF250000", "SF500000", "SF490000", - "SF380000", "SF280000", "SF270000", "SF260000", "SF360000", - "SF370000", "SF420000", "SF190000", "SF200000", "SF230000", - "SF470000", "SF480000", "SF410000", "SF450000", "SF460000", - "SF400000", "SF540000", "SF530000", "SF440000", 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "upblock", 0, 0, 0, "dnblock", 0, - 0, 0, "block", 0, 0, 0, "lfblock", 0, 0, 0, "rtblock", "ltshade", - "shade", "dkshade", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - -static char* table_FB00[] = /* alphabetic presentation forms */ -{ "ff", "fi", "fl", "ffi", "ffl", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57705", 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, "afii57694", "afii57695", 0, 0, 0, 0, 0, 0, 0, 0, 0, - "afii57723", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, "afii57700", 0, 0, 0, 0 }; - -char* -unicodetoPSname(unsigned short code) -{ - if(code<32) return 0; - else if(code<0x6FF) return table_32[code-32]; - else if(code<0x2000) return 0; - else if(code<0x20D0) return table_2000[code-0x2000]; - else if(code==0x2116) return "afii61352"; /* numero sign, for Koi */ - else if(code==0x2122) return "trademark"; - else if(code<0x2500) return 0; - else if(code<0x25A0) return table_2500[code-0x2500]; - else if(code<0xFB00) return 0; - else if(code<0xFB50) return table_FB00[code-0xFB00]; - else return 0; -} diff --git a/nx-X11/lib/font/Type1/t1unicode.h b/nx-X11/lib/font/Type1/t1unicode.h deleted file mode 100644 index bad0274..0000000 --- a/nx-X11/lib/font/Type1/t1unicode.h +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright (c) 1998 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* $XFree86$ */ - -char *unicodetoPSname(unsigned short code); diff --git a/nx-X11/lib/font/Type1/token.c b/nx-X11/lib/font/Type1/token.c deleted file mode 100644 index 71a968b..0000000 --- a/nx-X11/lib/font/Type1/token.c +++ /dev/null @@ -1,1208 +0,0 @@ -/* $Xorg: token.c,v 1.4 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/token.c,v 1.5tsi Exp $ */ -/* Authors: Sig Nin & Carol Thompson IBM Almaden Research Laboratory */ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "t1stdio.h" -#include "util.h" -#include "digit.h" -#include "token.h" -#include "tokst.h" -#include "hdigit.h" - -/* - * ------------------------------------------------------------------- - * Globals - * ------------------------------------------------------------------- - */ - -/* These variables are set by the caller */ -char *tokenStartP; /* Pointer to token buffer in VM */ -char *tokenMaxP; /* Pointer to last byte in buffer + 1 */ - -/* These variables are set by TOKEN */ -int tokenLength; /* Characters in token */ -boolean tokenTooLong; /* Token too long for buffer */ -int tokenType; /* Type of token identified */ -psvalue tokenValue; /* Token value */ - -/* - * ------------------------------------------------------------------- - * Private variables - * ------------------------------------------------------------------- - */ - -static FILE *inputFileP; /* Current input file */ - - -/* Token */ -static char *tokenCharP; /* Pointer to next character in token */ - -/* - * ------------------------------------------------------------------- - * Private routines for manipulating numbers - * ------------------------------------------------------------------- - */ - -#define Exp10(e) \ -((e) == 0\ - ? (double)(1.0)\ - : (-64 <= (e) && (e) <= 63\ - ? Exp10T[(e)+64]\ - : P10(e)\ - )\ -) - -static double Exp10T[128] = { - 1e-64, 1e-63, 1e-62, 1e-61, 1e-60, 1e-59, 1e-58, 1e-57, - 1e-56, 1e-55, 1e-54, 1e-53, 1e-52, 1e-51, 1e-50, 1e-49, - 1e-48, 1e-47, 1e-46, 1e-45, 1e-44, 1e-43, 1e-42, 1e-41, - 1e-40, 1e-39, 1e-38, 1e-37, 1e-36, 1e-35, 1e-34, 1e-33, - 1e-32, 1e-31, 1e-30, 1e-29, 1e-28, 1e-27, 1e-26, 1e-25, - 1e-24, 1e-23, 1e-22, 1e-21, 1e-20, 1e-19, 1e-18, 1e-17, - 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, - 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, - 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, - 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, - 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23, - 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31, - 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, - 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, - 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, 1e55, - 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, 1e63 -}; - -static double -P10(long exponent) -{ - double value, power; - - if (exponent < 0) { - power = 0.1; - value = (exponent & 1 ? power : 1.0); - exponent++; - exponent = -(exponent >> 1); /* portable C for -(exponent/2) */ - } - else { - power = 10.0; - value = (exponent & 1 ? power : 1.0); - exponent = exponent >> 1; - } - - while(exponent > 0) { - power *= power; - if (exponent & 1) - value *= power; - exponent >>= 1; - } - - return(value); -} - -/* - * ------------------------------------------------------------------- - * Private routines and macros for manipulating the input - * ------------------------------------------------------------------- - */ - -/* Get next character from the input -- - * - */ -#define next_ch() (_XT1getc(inputFileP)) - -/* Push a character back into the input -- - * - * Ungetc of EOF will fail, but that's ok: the next getc will - * return EOF. - * - * NOTE: These macros are presently written to return the character - * pushed, or EOF if none was pushed. However, they are not - * required to return anything in particular, and callers should - * not rely on the returned value. - */ -#define back_ch(ch) (T1Ungetc(ch, inputFileP)) - -/* Push a character back into the input if it was not white space. - * If it is a carriage return (\r) then check next char for - * linefeed and consume them both, otherwise put next char back. - * - */ -#define back_ch_not_white(ch) \ -(\ -isWHITE_SPACE(ch)\ - ? ((ch == '\r')\ - ? (((ch = next_ch()) == '\n')\ - ? EOF\ - : back_ch(ch)\ - )\ - : EOF\ - )\ - : back_ch(ch)\ -) - -/* - * ------------------------------------------------------------------- - * Private routines and macros for manipulating the token buffer - * ------------------------------------------------------------------- - */ - -/* Add a character to the token - * ---- use ONLY when you KNOW that this character will - * be stored within the token buffer. - */ -#define save_unsafe_ch(ch) (*tokenCharP++ = ch) - -/* Add a character to the token, if not too long to fit */ -#define save_ch(ch) \ -((tokenCharP < tokenMaxP)\ - ? save_unsafe_ch(ch)\ - : (tokenTooLong = TRUE)\ -) - -#define save_ch_no_inc(ch) \ -if (tokenCharP < tokenMaxP) *tokenCharP = ch - -/* - * ------------------------------------------------------------------- - * Action Routines - * - * These routines all - * -- take int ch as a parameter - * -- return int ch if no token was recognized, DONE otherwise - * -- leave the next character in the input, if returning DONE - * ------------------------------------------------------------------- - */ - -#define DONE (256) - -/* Get the next input character */ -static int -next_char(int ch) -{ - return(next_ch()); -} - -/* Add character to token */ -static int -add_char(int ch) -{ - save_ch(ch); - return(next_ch()); -} - - -/* ------------------------------------------------------------------- - * Skip white space and comments - */ - -/* Skip white space */ -static int -skip_space(int ch) -{ - do { - ch = next_ch(); - } while(isWHITE_SPACE(ch)); - return(ch); -} - -/* Skip comments */ -static int -skip_comment(int ch) -{ - do { - ch = next_ch(); - } while(isCOMMENT(ch)); - return(ch); -} - -/* ------------------------------------------------------------------- - * Collect value elements for a number - */ - -/* decimal integer or real number mantissa */ -static int m_sign; -static long m_value; -static long m_scale; - -/* real number exponent */ -static int e_sign; -static long e_value; - -/* radix number */ -static long r_base; -static long r_value; -static long r_scale; - -static int -add_sign(int ch) -{ - m_sign = ch; - save_unsafe_ch(ch); - return(next_ch()); -} - -static int -add_1st_digits(int ch) -{ - m_sign = '+'; - return(add_digits(ch)); -} - -static int -add_digits(int ch) -{ - long value, p_value, scale; - int digit; - - /* On entry, expect m_sign to be set to '+' or '-'; - * ch is a decimal digit. - * Expect at most one character saved at this point, - * a sign. This routine will save up to 10 more - * characters without checking the buffer boundary. - */ - - value = ch - '0'; - save_unsafe_ch(ch); - ch = next_ch(); - - while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) { - value = (value << 3) + (value << 1) + (ch - '0'); - save_unsafe_ch(ch); - ch = next_ch(); - } - - /* Quick exit for small integers -- - * |x| <= 10*((MAX_INTEGER/10)-1)+9 - * |x| <= 2,147,483,639 for 32 bit integers - */ - if (isNUMBER_ENDER(ch)) { - back_ch_not_white(ch); - tokenValue.integer = (m_sign == '-' ? -value : value); - tokenType = TOKEN_INTEGER; - return(DONE); - } - - /* Handle additional digits. Beyond the boundary case, - * 10*(MAX_INTEGER/10) <= |number| <= MAX_INTEGER - * just count the digits: the number is too large to - * represent as an integer and will be returned as a real. - * The mantissa of a real holds fewer bits than an integer. - */ - p_value = value; - value = (m_sign == '-' ? -value : value); - scale = 0; - - if (isDECIMAL_DIGIT(ch)) { - - /* Handle the boundary case */ - if (p_value == (MAX_INTEGER/10)) { - digit = ch - '0'; - - /* Must handle positive and negative values separately */ - /* for 2's complement arithmetic */ - if (value > 0) { - if (digit <= MAX_INTEGER%10) - value = (value << 3) + (value << 1) + digit; - else - ++scale; /* Too big, just count it */ - } - else { - /* Use positive % operands for portability */ - if (digit <= -(MIN_INTEGER+10)%10) - value = (value << 3) + (value << 1) - digit; - else - ++scale; /* Too big, just count it */ - } - } - else - ++scale; /* Not boundary case, just count digit */ - - save_unsafe_ch(ch); - ch = next_ch(); - - /* Continue scanning digits, but can't store them */ - while(isDECIMAL_DIGIT(ch)) { - ++scale; - save_ch(ch); - ch = next_ch(); - } - } - - /* Continue from here scanning radix integer or real */ - m_value = value; - m_scale = scale; - - /* Initialize for possible real */ - e_sign = '+'; - e_value = 0; - - return(ch); -} - -static int -add_1st_decpt(int ch) -{ - m_sign = '+'; - return(add_decpt(ch)); -} - -static int -add_decpt(int ch) -{ - /* On entry, expect m_sign to be set to '+' or '-' */ - m_value = 0; - m_scale = 0; - save_unsafe_ch(ch); - return(next_ch()); -} - -static int -add_fraction(int ch) -{ - long value, scale; - int digit; - - /* On entry, expect m_value and m_scale to be initialized, - * and m_sign to be set to '+' or '-'. Expect m_value and m_sign - * to be consistent (this is not checked). - */ - value = m_value; - scale = m_scale; - - /* Scan leading zeroes */ - if (value == 0) { - while(ch == '0') { - --scale; - save_ch(ch); - ch = next_ch(); - } - - /* Scan first significant digit */ - if (isDECIMAL_DIGIT(ch)) { - --scale; - value = ch - '0'; - value = (m_sign == '-' ? -value : value); - save_ch(ch); - ch = next_ch(); - } - else - /* no significant digits -- number is zero */ - scale = 0; - } - /* value != 0 || value == 0 && !isDECIMAL_DIGIT(ch) */ - - /* Scan additional significant digits */ - if (isDECIMAL_DIGIT(ch)) { - if (value > 0) { - while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) { - --scale; - value = (value << 3) + (value << 1) + (ch - '0'); - save_ch(ch); - ch = next_ch(); - } - /* Check boundary case */ - if (isDECIMAL_DIGIT(ch) && value == (MAX_INTEGER/10)) { - digit = ch - '0'; - if (digit <= MAX_INTEGER%10) { - --scale; - value = (value << 3) + (value << 1) + digit; - save_ch(ch); - ch = next_ch(); - } - } - } - else { - /* value < 0 */ - while(isDECIMAL_DIGIT(ch) && value > -(-(MIN_INTEGER+10)/10+1)) { - /* Use positive / operands for portability */ - --scale; - value = (value << 3) + (value << 1) - (ch - '0'); - save_ch(ch); - ch = next_ch(); - } - /* Check boundary case */ - if (isDECIMAL_DIGIT(ch) - && value == -(-(MIN_INTEGER+10)/10+1)) { - digit = ch - '0'; - if (digit <= -(MIN_INTEGER+10)%10) { - /* Use positive % operands for portability */ - --scale; - value = (value << 3) + (value << 1) - digit; - save_ch(ch); - ch = next_ch(); - } - } - } - - /* Additional digits can be discarded */ - while(isDECIMAL_DIGIT(ch)) { - save_ch(ch); - ch = next_ch(); - } - } - - /* Store results */ - m_value = value; - m_scale = scale; - - /* Initialize for possible real */ - e_sign = '+'; - e_value = 0; - - return(ch); -} - -static int -add_e_sign(int ch) -{ - e_sign = ch; - save_ch(ch); - return(next_ch()); -} - -static int -add_exponent(int ch) -{ - long value, p_value; - long scale = 0; - int digit; - - /* On entry, expect e_sign to be set to '+' or '-' */ - - value = ch - '0'; - save_ch(ch); - ch = next_ch(); - - while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) { - value = (value << 3) + (value << 1) + (ch - '0'); - save_ch(ch); - ch = next_ch(); - } - - p_value = value; - value = (e_sign == '-' ? -value : value); - - /* Handle additional digits. Beyond the boundary case, - * 10*(MAX_INTEGER/10) <= |number| <= MAX_INTEGER - * just count the digits: the number is too large to - * represent as an integer. - */ - if (isDECIMAL_DIGIT(ch)) { - - /* Examine boundary case */ - if (p_value == (MAX_INTEGER/10)) { - digit = ch - '0'; - - /* Must handle positive and negative values separately */ - /* for 2's complement arithmetic */ - if (value > 0) { - if (digit <= MAX_INTEGER%10) - value = (value << 3) + (value << 1) + digit; - else - ++scale; /* Too big, just count it */ - } - else { - /* Use positive % operands for portability */ - if (digit <= -(MIN_INTEGER+10)%10) - value = (value << 3) + (value << 1) - digit; - else - ++scale; /* Too big, just count it */ - } - } - else - ++scale; /* Not boundary case, just count digit */ - - save_ch(ch); - ch = next_ch(); - - /* Continue scanning digits, but can't store any more */ - while(isDECIMAL_DIGIT(ch)) { - ++scale; - save_ch(ch); - ch = next_ch(); - } - } - - /* Store results */ - e_value = value; - - return(ch); -} - -static int -add_radix(int ch) -{ - if (2 <= m_value && m_value <= 36 && m_scale == 0) { - r_base = m_value; - save_ch(ch); - return(next_ch()); - } - else { - /* Radix invalid, complete a name token */ - return(AAH_NAME(ch)); - } -} - -static int -add_r_digits(int ch) -{ - unsigned long value; - long radix, scale; - int digit; - - /* NOTE: The syntax of a radix number allows only for - * values of zero or more. The value will be stored as - * a 32 bit integer, which PostScript then interprets - * as signed. This means, for example, that the numbers: - * - * 8#37777777777 - * 10#4294967295 - * 16#FFFFFFFF - * 36#1Z141Z3 - * - * are all interpreted as -1. This routine implements this - * idea explicitly: it accumulates the number's value - * as unsigned, then casts it to signed when done. - */ - - /* Expect r_base to be initialized */ - radix = r_base; - value = 0; - scale = 0; - - /* Scan leading zeroes */ - while(ch == '0') { - save_ch(ch); - ch = next_ch(); - } - - /* Handle first non-zero digit */ - if ((digit=digit_value[ch]) < radix) { - value = digit; - save_ch(ch); - ch = next_ch(); - - /* Add digits until boundary case reached */ - while((digit=digit_value[ch]) < radix - && value < (MAX_ULONG / radix)) { - value = value * radix + digit; - save_ch(ch); - ch = next_ch(); - }; - - /* Scan remaining digits */ - if ((digit=digit_value[ch]) < radix) { - - /* Examine boundary case --- - * radix*(MAX_ULONG/radix) <= number <= MAX_ULONG - */ - if (value == (MAX_ULONG/radix) && digit <= MAX_ULONG%radix) - value = value * radix + digit; - else - ++scale; - - /* Continue scanning digits, but can't store them */ - save_ch(ch); - ch = next_ch(); - while(digit_value[ch] < radix) { - ++scale; - save_ch(ch); - ch = next_ch(); - } - } - } - - /* Store result */ - r_value = (long) value; /* result is signed */ - r_scale = scale; - - return(ch); -} - -/* ------------------------------------------------------------------- - * Complete a number; set token type and done flag. - * Put current input character back, if it is not white space. - */ - -/* Done: Radix Number */ -static int -RADIX_NUMBER(int ch) -{ - back_ch_not_white(ch); - if (r_scale == 0) { - tokenValue.integer = r_value; - tokenType = TOKEN_INTEGER; - } - else { - tokenType = TOKEN_NAME; - } - return(DONE); -} - -/* Done: Integer */ -static int -INTEGER(int ch) -{ - back_ch_not_white(ch); - if (m_scale == 0) { - tokenValue.integer = m_value; - tokenType = TOKEN_INTEGER; - } - else { - tokenValue.real = (double)(m_value) * Exp10(m_scale); - tokenType = TOKEN_REAL; - } - return(DONE); -} - -/* Done: Real */ -static int -REAL(int ch) -{ - double temp; - - back_ch_not_white(ch); - - /* HAZARD: exponent overflow of intermediate result - * (e.g., in 370 floating point); this should not be a problem - * with IEEE floating point. Reduce exponent overflow hazard by - * combining m_scale and e_value first, if they have different signs, - * or multiplying m_value and one of the other factors, if both - * m_scale and e_value are negative. - */ - if ((m_scale >= 0 && e_value <= 0) - || (m_scale <= 0 && e_value >= 0)) { - tokenValue.real = (double)(m_value) * Exp10(m_scale + e_value); - } - else { - temp = (double)(m_value) * Exp10(m_scale); - tokenValue.real = temp * Exp10(e_value); - } - - tokenType = TOKEN_REAL; - return(DONE); -} - - -/* ------------------------------------------------------------------- - * Assemble a hex string; set token type and done flag. - */ - -/* Done: Hex String */ -static int -HEX_STRING(int ch) -{ - int value; - - while(TRUE) { - - /* Process odd digit */ - ch = next_ch(); - if (!isHEX_DIGIT(ch)) { - - /* Skip white space */ - while(isWHITE_SPACE(ch)) - ch = next_ch(); - - /* Check for terminator */ - if (!isHEX_DIGIT(ch)) { - break; - } - } - value = digit_value[ch] << 4; - - /* Process even digit */ - ch = next_ch(); - if (!isHEX_DIGIT(ch)) { - - /* Skip white space */ - while(isWHITE_SPACE(ch)) - ch = next_ch(); - - /* Check for terminator */ - if (!isHEX_DIGIT(ch)) { - save_ch(value); - break; - } - } - save_ch(value + digit_value[ch]); - } - - /* Classify result, based on why loop ended */ - if (ch == '>') - tokenType = TOKEN_HEX_STRING; - else { - /* save the invalid character for error reporting */ - save_ch(ch); - tokenType = TOKEN_INVALID; - } - - return(DONE); -} - -/* ------------------------------------------------------------------- - * Assemble a string; set token type and done flag - */ - -/* Save a backslash-coded character in a string -- - * - * Store the proper character for special cases - * "\b", "\f", "\n", "\r", and "\t". - * - * Decode and store octal-coded character, up to - * three octal digits, "\o", "\oo", and "\ooo". - * - * The sequence "\<newline>" is a line continuation, - * so consume both without storing anything. - * - * The sequence "\<EOF>" is an error; exit without - * storing anything and let the caller handle it. - * - * For other characters, including the sequences - * "\\", "\(", and "\)", simply store the second - * character. - */ -static void -save_digraph(int ch) -{ - int value; - - switch (ch) { - - case 'b': /* backspace */ - ch = '\b'; - break; - - case 'f': /* formfeed */ - ch = '\f'; - break; - - case 'n': /* newline */ - ch = '\n'; - break; - - case 'r': /* carriage return */ - ch = '\r'; - break; - - case 't': /* horizontal tab */ - ch = '\t'; - break; - - case '\n': /* line continuation -- consume it */ - return; - - case '\r': /* carriage return -- consume it */ - ch = next_ch(); /* look at next character, is it \n? */ - if (ch == '\n') return; - back_ch(ch); /* if not a line feed, then return it */ - return; - - case EOF: /* end of file -- forget it */ - return; - - default: - /* scan up to three octal digits to get value */ - if (isOCTAL_DIGIT(ch)) { - value = digit_value[ch]; - ch = next_ch(); - if (isOCTAL_DIGIT(ch)) { - value = (value << 3) + digit_value[ch]; - ch = next_ch(); - if (isOCTAL_DIGIT(ch)) - value = (value << 3) + digit_value[ch]; - else - back_ch(ch); - } - else - back_ch(ch); - ch = value; - } - } - - /* Found a character to save */ - save_ch(ch); -} - -/* Done: String */ -static int -STRING(int ch) -{ - int nest_level = 1; - - tokenType = TOKEN_STRING; - - do { - - ch = next_ch(); - while(!isSTRING_SPECIAL(ch)) { - save_ch(ch); - ch = next_ch(); - }; - - switch (ch) { - - case '(': - ++nest_level; - save_ch(ch); - break; - - case ')': - if (--nest_level > 0) - save_ch(ch); - break; - - case '\\': - save_digraph(next_ch()); - break; - - case '\r': - /* All carriage returns (\r) are turned into linefeeds (\n)*/ - ch = next_ch(); /* get the next one, is it \n? */ - if (ch != '\n') { /* if not, then put it back. */ - back_ch(ch); - } - save_ch('\n'); /* in either case, save a linefeed */ - break; - - - case EOF: - tokenType = TOKEN_INVALID; /* Unterminated string */ - nest_level = 0; - break; - } - - } while(nest_level > 0); - - /* If there's room, add a 0-byte termination without increasing string - length. This fixes certain dependencies on 0-terminated strings */ - save_ch_no_inc(0); - - return(DONE); -} - - -/* ------------------------------------------------------------------- - * Assemble a name; set token type and done flag. - * Put current input character back, if it is not white space. - */ - -/* Done: Name - * (Safe version used to complete name tokens that - * start out looking like something else). - */ - -static int -AAH_NAME(int ch) -{ - do { - save_ch(ch); - ch = next_ch(); - } while(isNAME(ch)); - - back_ch_not_white(ch); - tokenType = TOKEN_NAME; - return(DONE); -} - -/* Done: Name */ -static int -NAME(int ch) -{ - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - while(isNAME(ch)) { - save_ch(ch); - ch = next_ch(); - } - } - } - } - } - } - } - - back_ch_not_white(ch); - tokenType = TOKEN_NAME; - return(DONE); -} - -/* Done: Literal Name */ -static int -LITERAL_NAME(int ch) -{ - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - while(isNAME(ch)) { - save_ch(ch); - ch = next_ch(); - } - } - } - } - } - } - } - - back_ch_not_white(ch); - tokenType = TOKEN_LITERAL_NAME; - return(DONE); -} - -/* Done: immediate Name */ -static int -IMMED_NAME(int ch) -{ - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - if (isNAME(ch)) { - save_unsafe_ch(ch); - ch = next_ch(); - while(isNAME(ch)) { - save_ch(ch); - ch = next_ch(); - } - } - } - } - } - } - } - - back_ch_not_white(ch); - tokenType = TOKEN_IMMED_NAME; - return(DONE); -} - -/* Done: Name found while looking for something else */ -static int -OOPS_NAME(int ch) -{ - back_ch_not_white(ch); - tokenType = TOKEN_NAME; - return(DONE); -} - - -/* ------------------------------------------------------------------- - * Complete a miscellaneous token; set token type and done flag. - */ - -/* Done: Unmatched Right Angle-Bracket */ -static int -RIGHT_ANGLE(int ch) -{ - tokenType = TOKEN_RIGHT_ANGLE; - return(DONE); -} - -/* Done: Unmatched Right Parenthesis */ -static int -RIGHT_PAREN(int ch) -{ - tokenType = TOKEN_RIGHT_PAREN; - return(DONE); -} - -/* Done: Left Brace */ -static int -LEFT_BRACE(int ch) -{ - tokenType = TOKEN_LEFT_BRACE; - return(DONE); -} - -/* Done: Right Brace */ -static int -RIGHT_BRACE(int ch) -{ - tokenType = TOKEN_RIGHT_BRACE; - return(DONE); -} - -/* Done: Left Bracket */ -static int -LEFT_BRACKET(int ch) -{ - save_unsafe_ch(ch); - tokenType = TOKEN_LEFT_BRACKET; - return(DONE); -} - -/* Done: Right Bracket */ -static int -RIGHT_BRACKET(int ch) -{ - save_unsafe_ch(ch); - tokenType = TOKEN_RIGHT_BRACKET; - return(DONE); -} - -/* Done: Break */ -static int -BREAK_SIGNAL(int ch) -{ - tokenType = TOKEN_BREAK; - return(DONE); -} - -/* Done: No Token Found */ -static int -NO_TOKEN(int ch) -{ - tokenType = TOKEN_EOF; - return(DONE); -} - - -/* - * ------------------------------------------------------------------- - * scan_token -- scan one token from the input. It uses a simple - * finite state machine to recognize token classes. - * - * The input is from a file. - * - * On entry -- - * - * inputP -> input PostScript object, a file. - * tokenStartP -> buffer in VM for accumulating the token. - * tokenMaxP -> last character in the token buffer - * - * On exit -- - * - * tokenLength = number of characters in the token - * tokenTooLong = TRUE if the token did not fit in the buffer - * tokenType = code for the type of token parsed. - * tokenValue = converted value of a numeric token. - * - * - * ------------------------------------------------------------------- - */ -void -scan_token(psobj *inputP) -{ - int ch; - unsigned char *stateP = s0; - unsigned char entry; - int (*actionP)(int); - - /* Define input source */ - inputFileP = inputP->data.fileP; - if (inputFileP == NULL) { - tokenType = TOKEN_EOF; - return; - } - - /* Ensure enough space for most cases - * (so we don't have to keep checking) - * The length needs to cover the maximum number - * of save_unsafe_ch() calls that might be executed. - * That number is 11 (a sign and 10 decimal digits, e.g., - * when scanning -2147483648), but use MAX_NAME_LEN - * in case someone changes that without checking. - */ - tokenStartP = vm_next_byte(); - tokenMaxP = tokenStartP + MIN(vm_free_bytes(), MAX_STRING_LEN); - - if ((tokenMaxP-tokenStartP) < (MAX_NAME_LEN)) { - tokenLength = 0; - tokenTooLong = TRUE; - tokenType = TOKEN_NONE; - tokenValue.integer = 0; - return; - } - - /* Reset token */ - tokenCharP = tokenStartP; - tokenTooLong = FALSE; - - /* Scan one token */ - ch = next_ch(); - do { - entry = stateP[ch]; - stateP = classActionTable[entry].nextStateP; - actionP = classActionTable[entry].actionRoutineP; - ch = (*actionP)(ch); - } while(ch != DONE); - - - /* Return results */ - tokenLength = tokenCharP - tokenStartP; -} diff --git a/nx-X11/lib/font/Type1/token.h b/nx-X11/lib/font/Type1/token.h deleted file mode 100644 index 6639828..0000000 --- a/nx-X11/lib/font/Type1/token.h +++ /dev/null @@ -1,79 +0,0 @@ -/* $Xorg: token.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/token.h,v 1.3 1999/08/22 08:58:54 dawes Exp $ */ - -#ifndef TOKEN_H -#define TOKEN_H - -/* Special characters */ -#define CONTROL_C (3) - -/* Token type codes */ -#define TOKEN_INVALID (-3) -#define TOKEN_BREAK (-2) -#define TOKEN_EOF (-1) -#define TOKEN_NONE (0) -#define TOKEN_LEFT_PAREN (1) -#define TOKEN_RIGHT_PAREN (2) -#define TOKEN_LEFT_ANGLE (3) -#define TOKEN_RIGHT_ANGLE (4) -#define TOKEN_LEFT_BRACE (5) -#define TOKEN_RIGHT_BRACE (6) -#define TOKEN_LEFT_BRACKET (7) -#define TOKEN_RIGHT_BRACKET (8) -#define TOKEN_NAME (9) -#define TOKEN_LITERAL_NAME (10) -#define TOKEN_INTEGER (11) -#define TOKEN_REAL (12) -#define TOKEN_RADIX_NUMBER (13) -#define TOKEN_HEX_STRING (14) -#define TOKEN_STRING (15) -#define TOKEN_IMMED_NAME (16) - -/* Token routines */ -extern void scan_token( psobj *inputP ); - -/* - * ------------------------------------------------------------------------- - * Globals shared -- (everyone else KEEP YOUR MITTS OFF THEM!) - * ------------------------------------------------------------------------- - */ - -/* These variables are set by the caller */ -extern char *tokenStartP; /* Pointer to token buffer in VM */ -extern char *tokenMaxP; /* Pointer to end of VM we may use + 1 */ - -/* These variables are set by P_TOKEN */ -extern int tokenLength; /* Characters in token */ -extern boolean tokenTooLong; /* Token too long for space available */ -extern int tokenType; /* Type of token identified */ -extern psvalue tokenValue; /* Token value */ - -#endif /* TOKEN_H */ diff --git a/nx-X11/lib/font/Type1/tokst.h b/nx-X11/lib/font/Type1/tokst.h deleted file mode 100644 index 02166af..0000000 --- a/nx-X11/lib/font/Type1/tokst.h +++ /dev/null @@ -1,510 +0,0 @@ -/* $Xorg: tokst.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* $XFree86: xc/lib/font/Type1/tokst.h,v 1.3 1999/08/22 08:58:54 dawes Exp $ */ - -/* -------------------------------------- */ -/* --- MACHINE GENERATED, DO NOT EDIT --- */ -/* -------------------------------------- */ - -#ifndef TOKST -#define TOKST 1 - -/* - * State Index Tables -- - * - * These tables map the input character to the - * proper entry in the Class Action Table. - * There is one table for each state. - * - */ -#define s0 (si0+2) -static unsigned char si0[258] = { 0x10,0x11, - 0x02,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x02,0x02,0x0F,0x0F,0x02,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x02,0x0F,0x0F,0x0F,0x0F,0x03,0x0F,0x0F,0x05,0x0B,0x0F,0x0D,0x0F,0x0D,0x0E,0x04, - 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x0F,0x08,0x0F,0x0C,0x0F, - 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x0A,0x0F,0x0F, - 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x0F,0x09,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, - 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F -}; - -#define s1 (si1+2) -static unsigned char si1[258] = { 0x14,0x15, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, - 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13 -}; - -#define s2 (si2+2) -static unsigned char si2[258] = { 0x1B,0x1C, - 0x16,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x16,0x16,0x1A,0x1A,0x16,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x16,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x1A,0x17,0x17,0x1A,0x1A,0x1A,0x1A,0x19,0x17, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1A,0x1A,0x17,0x1A,0x17,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x17,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x17,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A, - 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A -}; - -#define s3 (si3+2) -static unsigned char si3[258] = { 0x23,0x24, - 0x1D,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1D,0x1D,0x22,0x22,0x1D,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x1D,0x22,0x22,0x20,0x22,0x1E,0x22,0x22,0x1E,0x1E,0x22,0x22,0x22,0x22,0x1F,0x1E, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22, - 0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, - 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22 -}; - -#define s4 (si4+2) -static unsigned char si4[258] = { 0x29,0x2A, - 0x25,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x25,0x25,0x28,0x28,0x25,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x25,0x28,0x28,0x28,0x28,0x26,0x28,0x28,0x26,0x26,0x28,0x28,0x28,0x28,0x28,0x26, - 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x26,0x28,0x26,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28 -}; - -#define s5 (si5+2) -static unsigned char si5[258] = { 0x30,0x31, - 0x2B,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2B,0x2B,0x2F,0x2F,0x2B,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2B,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2F,0x2C,0x2C,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C, - 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F, - 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F -}; - -#define s6 (si6+2) -static unsigned char si6[258] = { 0x36,0x37, - 0x32,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x32,0x32,0x35,0x35,0x32,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x32,0x35,0x35,0x35,0x35,0x33,0x35,0x35,0x33,0x33,0x35,0x35,0x35,0x35,0x35,0x33, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35, - 0x35,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35, - 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35 -}; - -#define s7 (si7+2) -static unsigned char si7[258] = { 0x3D,0x3E, - 0x38,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x38,0x38,0x3C,0x3C,0x38,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x38,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x3C,0x39,0x39,0x3C,0x3A,0x3C,0x3A,0x3C,0x39, - 0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3C,0x3C,0x39,0x3C,0x39,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x39,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x39,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C, - 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C -}; - -#define s8 (si8+2) -static unsigned char si8[258] = { 0x43,0x44, - 0x3F,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3F,0x3F,0x42,0x42,0x3F,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x3F,0x42,0x42,0x42,0x42,0x40,0x42,0x42,0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x40, - 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x40,0x42,0x40,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x42,0x40,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x42,0x40,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42, - 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42 -}; - -#define s9 (si9+2) -static unsigned char si9[258] = { 0x48,0x49, - 0x45,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x45,0x45,0x47,0x47,0x45,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x45,0x47,0x47,0x47,0x47,0x46,0x47,0x47,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x46, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47, - 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47 -}; - -#define s10 (si10+2) -static unsigned char si10[258] = { 0x4E,0x4F, - 0x4A,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4A,0x4A,0x4D,0x4D,0x4A,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4A,0x4D,0x4D,0x4D,0x4D,0x4B,0x4D,0x4D,0x4B,0x4B,0x4D,0x4D,0x4D,0x4D,0x4D,0x4B, - 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4D,0x4D,0x4B,0x4D,0x4B,0x4D, - 0x4D,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C, - 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4B,0x4D,0x4B,0x4D,0x4D, - 0x4D,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C, - 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4B,0x4D,0x4B,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D, - 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D -}; - -#define s11 (si11+2) -static unsigned char si11[258] = { 0x53,0x54, - 0x50,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x50,0x50,0x52,0x52,0x50,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x50,0x52,0x52,0x52,0x52,0x51,0x52,0x52,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x51, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52, - 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52 -}; - -/* - * Class Action Table -- - * - * The entries in the Class Action Table indicate the - * action routine to be called, and the next state to - * enter, for each relevant character class in each. - * state. There are several entries for each state. - * - */ -static int AAH_NAME ( int ch ); -static int BREAK_SIGNAL ( int ch ); -static int HEX_STRING ( int ch ); -static int IMMED_NAME ( int ch ); -static int INTEGER ( int ch ); -static int LEFT_BRACE ( int ch ); -static int LEFT_BRACKET ( int ch ); -static int LITERAL_NAME ( int ch ); -static int NAME ( int ch ); -static int NO_TOKEN ( int ch ); -static int OOPS_NAME ( int ch ); -static int RADIX_NUMBER ( int ch ); -static int REAL ( int ch ); -static int RIGHT_ANGLE ( int ch ); -static int RIGHT_BRACE ( int ch ); -static int RIGHT_BRACKET ( int ch ); -static int RIGHT_PAREN ( int ch ); -static int STRING ( int ch ); -static int add_1st_decpt ( int ch ); -static int add_1st_digits ( int ch ); -static int add_char ( int ch ); -static int add_decpt ( int ch ); -static int add_digits ( int ch ); -static int add_exponent ( int ch ); -static int add_e_sign ( int ch ); -static int add_fraction ( int ch ); -static int add_radix ( int ch ); -static int add_r_digits ( int ch ); -static int add_sign ( int ch ); -static int next_char ( int ch ); -static int skip_comment ( int ch ); -static int skip_space ( int ch ); - -static struct cat { - int (*actionRoutineP)(int); - unsigned char *nextStateP; -} classActionTable[] = { - - /* s0: Classify initial character */ - /* 00 ALPHA */ {NAME, s0}, /* executable name */ - /* 01 DIGIT */ {add_1st_digits, s3}, /* number? */ - /* 02 WHITE_SPACE */ {skip_space, s0}, /* skip white space */ - /* 03 PERCENT */ {skip_comment, s0}, /* comment? */ - /* 04 SLASH */ {next_char, s1}, /* literal or imm name */ - /* 05 LEFT_PAREN */ {STRING, s0}, /* string */ - /* 06 LEFT_BRACE */ {LEFT_BRACE, s0}, /* begin procedure body */ - /* 07 LEFT_BRACKET */ {LEFT_BRACKET, s0}, /* begin array */ - /* 08 LEFT_ANGLE */ {HEX_STRING, s0}, /* hex string? */ - /* 09 RIGHT_BRACE */ {RIGHT_BRACE, s0}, /* end procedure body */ - /* 0A RIGHT_BRACKET */ {RIGHT_BRACKET, s0}, /* end array */ - /* 0B RIGHT_PAREN */ {RIGHT_PAREN, s0}, /* unmatched right paren */ - /* 0C RIGHT_ANGLE */ {RIGHT_ANGLE, s0}, /* unmatched right angle */ - /* 0D SIGN */ {add_sign, s2}, /* signed number? */ - /* 0E DECIMAL_POINT */ {add_1st_decpt, s4}, /* real number? */ - /* 0F ANY */ {NAME, s0}, /* executable name */ - /* 10 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 11 EOF */ {NO_TOKEN, s0}, /* no token found */ - - /* s1: Further classify a '/' */ - /* 12 SLASH */ {IMMED_NAME, s0}, /* immediate name */ - /* 13 ANY */ {LITERAL_NAME, s0}, /* literal name */ - /* 14 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 15 EOF */ {OOPS_NAME, s0}, /* isolated sign */ - - /* s2: sign */ - /* 16 WHITE_SPACE */ {OOPS_NAME, s0}, /* isolated sign */ - /* 17 SPECIAL */ {OOPS_NAME, s0}, /* isolated sign */ - /* 18 DIGIT */ {add_digits, s3}, /* number? */ - /* 19 DECIMAL_POINT */ {add_decpt, s4}, /* real number? */ - /* 1A ANY */ {NAME, s0}, /* executable name */ - /* 1B BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 1C EOF */ {OOPS_NAME, s0}, /* isolated sign */ - - /* s3: sign? digit+ */ - /* 1D WHITE_SPACE */ {INTEGER, s0}, /* n-digit integer */ - /* 1E SPECIAL */ {INTEGER, s0}, /* n-digit integer */ - /* 1F DECIMAL_POINT */ {add_char, s5}, /* real number? */ - /* 20 POUND */ {add_radix, s10}, /* radix number? */ - /* 21 eE */ {add_char, s7}, /* real with exponent? */ - /* 22 ANY */ {AAH_NAME, s0}, /* executable name */ - /* 23 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 24 EOF */ {INTEGER, s0}, /* n-digit integer */ - - /* s4: sign? . */ - /* 25 WHITE_SPACE */ {OOPS_NAME, s0}, /* isolated +. or -. */ - /* 26 SPECIAL */ {OOPS_NAME, s0}, /* isolated +. or -. */ - /* 27 DIGIT */ {add_fraction, s6}, /* number? */ - /* 28 ANY */ {NAME, s0}, /* executable name */ - /* 29 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 2A EOF */ {OOPS_NAME, s0}, /* isolated +. or -. */ - - /* s5: sign? digit+ . */ - /* 2B WHITE_SPACE */ {REAL, s0}, /* real with fraction */ - /* 2C SPECIAL */ {REAL, s0}, /* real with fraction */ - /* 2D eE */ {add_char, s7}, /* real with exponent? */ - /* 2E DIGIT */ {add_fraction, s6}, /* number? */ - /* 2F ANY */ {AAH_NAME, s0}, /* executable name */ - /* 30 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 31 EOF */ {REAL, s0}, /* real with fraction */ - - /* s6: sign? (digit+ . digit+) | (. digit+) */ - /* 32 WHITE_SPACE */ {REAL, s0}, /* real with fraction */ - /* 33 SPECIAL */ {REAL, s0}, /* real with fraction */ - /* 34 eE */ {add_char, s7}, /* real with exponent? */ - /* 35 ANY */ {AAH_NAME, s0}, /* executable name */ - /* 36 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 37 EOF */ {REAL, s0}, /* real with fraction */ - - /* s7: sign? ((digit+ (. digit*)?) | (. digit+)) Ee */ - /* 38 WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid real number */ - /* 39 SPECIAL */ {OOPS_NAME, s0}, /* invalid real number */ - /* 3A SIGN */ {add_e_sign, s8}, /* real w signed exponent? */ - /* 3B DIGIT */ {add_exponent, s9}, /* real w exponent ? */ - /* 3C ANY */ {AAH_NAME, s0}, /* executable name */ - /* 3D BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 3E EOF */ {OOPS_NAME, s0}, /* invalid real number */ - - /* s8: sign? (digit+ (. digit*)? | (digit* . digit+) Ee sign */ - /* 3F WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid real number */ - /* 40 SPECIAL */ {OOPS_NAME, s0}, /* invalid real number */ - /* 41 DIGIT */ {add_exponent, s9}, /* real w exponent? */ - /* 42 ANY */ {AAH_NAME, s0}, /* executable name */ - /* 43 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 44 EOF */ {OOPS_NAME, s0}, /* invalid real number */ - - /* s9: sign? (digit+ (. digit*)? | (digit* . digit+) Ee sign? digit+ */ - /* 45 WHITE_SPACE */ {REAL, s0}, /* real w exponent */ - /* 46 SPECIAL */ {REAL, s0}, /* real w exponent */ - /* 47 ANY */ {AAH_NAME, s0}, /* executable name */ - /* 48 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 49 EOF */ {REAL, s0}, /* real w exponent */ - - /* s10: digit+ # */ - /* 4A WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid radix number */ - /* 4B SPECIAL */ {OOPS_NAME, s0}, /* invalid radix number */ - /* 4C R_DIGIT */ {add_r_digits, s11}, /* radix number? */ - /* 4D ANY */ {AAH_NAME, s0}, /* executable name */ - /* 4E BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 4F EOF */ {OOPS_NAME, s0}, /* invalid radix number */ - - /* s11: digit+ # r_digit+ */ - /* 50 WHITE_SPACE */ {RADIX_NUMBER, s0}, /* radix number */ - /* 51 SPECIAL */ {RADIX_NUMBER, s0}, /* radix number */ - /* 52 ANY */ {AAH_NAME, s0}, /* executable name */ - /* 53 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */ - /* 54 EOF */ {RADIX_NUMBER, s0} /* radix number */ -}; - -/* - * Character Classification Tables -- - * - * The entries in the Character Classification Tables - * map character codes to character classes. The - * tables contains one entry per code. The bits in - * each entry indicate which classes the character - * code belongs to. - * - * The macros 'isInCLASS(ch)' generate code to test - * whether 'ch' is a character in 'CLASS'. - * - */ -/* Membership macros for classes defined in table 1 ... */ -#define isRADIX_DIGIT(c) ((isInP1[c] & 0x80) != 0) -#define isHEX_DIGIT(c) ((isInP1[c] & 0x40) != 0) -#define isDECIMAL_DIGIT(c) ((isInP1[c] & 0x10) != 0) -#define isOCTAL_DIGIT(c) ((isInP1[c] & 0x20) != 0) - -/* Membership macros for classes defined in table 2 ... */ -#define isWHITE_SPACE(c) ((isInP2[c] & 0x80) != 0) -#define isCOMMENT(c) ((isInP2[c] & 0x40) != 0) -#define isNAME(c) ((isInP2[c] & 0x20) != 0) -#define isSTRING_SPECIAL(c) ((isInP2[c] & 0x10) != 0) -#define isNUMBER_ENDER(c) ((isInP2[c] & 0x08) != 0) - -#define isInP1 (isInT1+2) -static unsigned char isInT1[258] = { 0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xD0,0xD0,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, - 0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 -}; - -#define isInP2 (isInT2+2) -static unsigned char isInT2[258] = { 0x18,0x18, - 0xC8,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xC8,0x88,0x60,0x60,0x98,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0xC8,0x60,0x60,0x60,0x60,0x48,0x60,0x60,0x58,0x58,0x60,0x60,0x60,0x60,0x60,0x48, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x60,0x48,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x70,0x48,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x60,0x48,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60, - 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60 -}; - -#endif diff --git a/nx-X11/lib/font/Type1/trig.h b/nx-X11/lib/font/Type1/trig.h deleted file mode 100644 index d569ed0..0000000 --- a/nx-X11/lib/font/Type1/trig.h +++ /dev/null @@ -1,41 +0,0 @@ -/* $Xorg: trig.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/*SHARED*/ - -/* $XFree86: xc/lib/font/Type1/trig.h,v 1.2 1998/07/25 06:57:00 dawes Exp $ */ - -#undef DegreeCos -#undef DegreeSin -#undef sqrt - -#define DegreeCos(d) xiStub() -#define DegreeSin(d) xiStub() -#define sqrt(d) xiStub() - diff --git a/nx-X11/lib/font/Type1/type1.c b/nx-X11/lib/font/Type1/type1.c deleted file mode 100644 index b3fa496..0000000 --- a/nx-X11/lib/font/Type1/type1.c +++ /dev/null @@ -1,1892 +0,0 @@ -/* $Xorg: type1.c,v 1.4 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines, Corp. 1991 - * All Rights Reserved - * Copyright Lexmark International, Inc. 1991 - * All Rights Reserved - * Portions Copyright (c) 1990 Adobe Systems Incorporated. - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of IBM or Lexmark or Adobe - * not be used in advertising or publicity pertaining to distribution of - * the software without specific, written prior permission. - * - * IBM, LEXMARK, AND ADOBE PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY - * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE - * ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING - * ANY DUTY TO SUPPORT OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY - * PORTION OF THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM, - * LEXMARK, OR ADOBE) ASSUMES THE ENTIRE COST OF ALL SERVICING, REPAIR AND - * CORRECTION. IN NO EVENT SHALL IBM, LEXMARK, OR ADOBE BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/type1.c,v 1.9tsi Exp $ */ - -/*********************************************************************/ -/* */ -/* Type 1 module - Converting fonts in Adobe Type 1 Font Format */ -/* to scaled and hinted paths for rasterization. */ -/* Files: type1.c, type1.h, and blues.h. */ -/* */ -/* Authors: Sten F. Andler, IBM Almaden Research Center */ -/* (Type 1 interpreter, stem & flex hints) */ -/* */ -/* Patrick A. Casey, Lexmark International, Inc. */ -/* (Font level hints & stem hints) */ -/* */ -/*********************************************************************/ - -/******************/ -/* Include Files: */ -/******************/ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifndef FONTMODULE -#include <stdio.h> /* a system-dependent include, usually */ -#include <math.h> -#else -#include "Xdefs.h" -#include "Xmd.h" -#include "xf86_ansic.h" -#endif -#include "objects.h" -#include "spaces.h" -#include "paths.h" -#include "fonts.h" /* understands about TEXTTYPEs */ -#include "pictures.h" /* understands about handles */ -#include "range.h" - -typedef struct xobject xobject; -#include "util.h" /* PostScript objects */ -#include "fontfcn.h" -#include "blues.h" /* Blues structure for font-level hints */ - -/**********************************/ -/* Type1 Constants and Structures */ -/**********************************/ -#define MAXSTACK 24 /* Adobe Type1 limit */ -#define MAXCALLSTACK 10 /* Adobe Type1 limit */ -#define MAXPSFAKESTACK 32 /* Max depth of fake PostScript stack (local) */ -#define MAXSTRLEN 512 /* Max length of a Type 1 string (local) */ -#define MAXLABEL 256 /* Maximum number of new hints */ -#if XFONT_CID -#define MAXSTEMS 500 /* Maximum number of VSTEM and HSTEM hints */ -#else -#define MAXSTEMS 128 /* Maximum number of VSTEM and HSTEM hints */ -#endif -#define EPS 0.001 /* Small number for comparisons */ - -/************************************/ -/* Adobe Type 1 CharString commands */ -/************************************/ -#define HSTEM 1 -#define VSTEM 3 -#define VMOVETO 4 -#define RLINETO 5 -#define HLINETO 6 -#define VLINETO 7 -#define RRCURVETO 8 -#define CLOSEPATH 9 -#define CALLSUBR 10 -#define RETURN 11 -#define ESCAPE 12 -#define HSBW 13 -#define ENDCHAR 14 -#define RMOVETO 21 -#define HMOVETO 22 -#define VHCURVETO 30 -#define HVCURVETO 31 - -/*******************************************/ -/* Adobe Type 1 CharString Escape commands */ -/*******************************************/ -#define DOTSECTION 0 -#define VSTEM3 1 -#define HSTEM3 2 -#define SEAC 6 -#define SBW 7 -#define DIV 12 -#define CALLOTHERSUBR 16 -#define POP 17 -#define SETCURRENTPOINT 33 - -/*****************/ -/* Useful macros */ -/*****************/ - -#define FABS(x) fabs(x) - -#define CEIL(x) ceil(x) - -#define FLOOR(x) floor(x) - -#define ROUND(x) FLOOR((x) + 0.5) - -#define ODD(x) (((int)(x)) & 01) - -#define Error {errflag = TRUE; return;} -#define ErrorRet(ret) {errflag = TRUE; return (ret);} - -/********************/ -/* global variables */ -/********************/ -struct stem { /* representation of a STEM hint */ - int vertical; /* TRUE if vertical, FALSE otherwise */ - double x, dx; /* interval of vertical stem */ - double y, dy; /* interval of horizontal stem */ - struct segment *lbhint, *lbrevhint; /* left or bottom hint adjustment */ - struct segment *rthint, *rtrevhint; /* right or top hint adjustment */ -}; - -struct xobject *Type1Char(char *env, struct XYspace *S, - psobj *charstrP, psobj *subrsP, psobj *osubrsP, - struct blues_struct *bluesP, int *modeP); -#if XFONT_CID -struct xobject *CIDChar(char *env, struct XYspace *S, - psobj *charstrP, psobj *subrsP, psobj *osubrsP, - struct blues_struct *bluesP, int *modeP); -#endif - -static double escapementX, escapementY; -static double sidebearingX, sidebearingY; -static double accentoffsetX, accentoffsetY; - -static struct segment *path; -static int errflag; - -/*************************************************/ -/* Global variables to hold Type1Char parameters */ -/*************************************************/ -static char *Environment; -static struct XYspace *CharSpace; -static psobj *CharStringP, *SubrsP; - -/************************/ -/* Forward declarations */ -/************************/ -static struct segment *Applyhint ( struct segment *p, int stemnumber, - int half ); -static struct segment *Applyrevhint ( struct segment *p, int stemnumber, - int half ); -static void CallOtherSubr ( int othersubrno ); -static void CallSubr ( int subrno ); -static struct segment *CenterStem ( double edge1, double edge2 ); -static void ClearCallStack ( void ); -static void ClearPSFakeStack ( void ); -static void ClearStack ( void ); -static void ComputeAlignmentZones ( void ); -static void ComputeStem ( int stemno ); -static void Decode ( int Code ); -static unsigned char Decrypt ( unsigned char cipher ); -static double Div ( double num1, double num2 ); -static void DoClosePath ( void ); -static void DoCommand ( int Code ); -static int DoRead ( int *CodeP ); -static void DotSection ( void ); -static void EndChar ( void ); -static void Escape ( int Code ); -static struct segment *FindStems ( double x, double y, double dx, double dy ); -static void FinitStems ( void ); -static void FlxProc ( double c1x2, double c1y2, double c3x0, double c3y0, - double c3x1, double c3y1, double c3x2, double c3y2, - double c4x0, double c4y0, double c4x1, double c4y1, - double c4x2, double c4y2, double epY, double epX, - int idmin ); -static void FlxProc1 ( void ); -static void FlxProc2 ( void ); -static void HintReplace ( void ); -static void HStem ( double y, double dy ); -static void InitStems ( void ); -static void PopCall ( psobj **CurrStrPP, int *CurrIndexP, - unsigned short *CurrKeyP ); -static double PSFakePop ( void ); -static void PSFakePush ( double Num ); -static void Push ( double Num ); -static void PushCall ( psobj *CurrStrP, int CurrIndex, - unsigned short CurrKey ); -static void Return ( void ); -static void RLineTo ( double dx, double dy ); -static void RMoveTo ( double dx, double dy ); -static void RRCurveTo ( double dx1, double dy1, double dx2, double dy2, - double dx3, double dy3 ); -static void Sbw ( double sbx, double sby, double wx, double wy ); -static void Seac ( double asb, double adx, double ady, unsigned char bchar, - unsigned char achar ); -static void SetCurrentPoint ( double x, double y ); -static void StartDecrypt ( void ); -static void VStem ( double x, double dx ); - -/*****************************************/ -/* statics for Flex procedures (FlxProc) */ -/*****************************************/ -static struct segment *FlxOldPath; /* save path before Flex feature */ - -/******************************************************/ -/* statics for Font level hints (Blues) (see blues.h) */ -/******************************************************/ -static struct blues_struct *blues; /* the blues structure */ -static struct alignmentzone alignmentzones[MAXALIGNMENTZONES]; -static int numalignmentzones; /* total number of alignment zones */ - -/****************************************************************/ -/* Subroutines for the Font level hints (Alignment zones, etc.) */ -/****************************************************************/ - -/******************************************/ -/* Fill in the alignment zone structures. */ -/******************************************/ -static void -ComputeAlignmentZones(void) -{ - int i; - double dummy, bluezonepixels, familyzonepixels; - struct segment *p; - - numalignmentzones = 0; /* initialize total # of zones */ - - /* do the BlueValues zones */ - for (i = 0; i < blues->numBlueValues; i +=2, ++numalignmentzones) { - /* the 0th & 1st numbers in BlueValues are for a bottom zone */ - /* the rest are topzones */ - if (i == 0) /* bottom zone */ - alignmentzones[numalignmentzones].topzone = FALSE; - else /* top zone */ - alignmentzones[numalignmentzones].topzone = TRUE; - if (i < blues->numFamilyBlues) { /* we must consider FamilyBlues */ - p = ILoc(CharSpace,0,blues->BlueValues[i] - blues->BlueValues[i+1]); - QueryLoc(p, IDENTITY, &dummy, &bluezonepixels); - Destroy(p); - p = ILoc(CharSpace,0,blues->FamilyBlues[i]-blues->FamilyBlues[i+1]); - QueryLoc(p, IDENTITY, &dummy, &familyzonepixels); - Destroy(p); - /* is the difference in size of the zones less than 1 pixel? */ - if (FABS(bluezonepixels - familyzonepixels) < 1.0) { - /* use the Family zones */ - alignmentzones[numalignmentzones].bottomy = - blues->FamilyBlues[i]; - alignmentzones[numalignmentzones].topy = - blues->FamilyBlues[i+1]; - continue; - } - } - /* use this font's Blue zones */ - alignmentzones[numalignmentzones].bottomy = blues->BlueValues[i]; - alignmentzones[numalignmentzones].topy = blues->BlueValues[i+1]; - } - - /* do the OtherBlues zones */ - for (i = 0; i < blues->numOtherBlues; i +=2, ++numalignmentzones) { - /* all of the OtherBlues zones are bottom zones */ - alignmentzones[numalignmentzones].topzone = FALSE; - if (i < blues->numFamilyOtherBlues) {/* consider FamilyOtherBlues */ - p = ILoc(CharSpace,0,blues->OtherBlues[i] - blues->OtherBlues[i+1]); - QueryLoc(p, IDENTITY, &dummy, &bluezonepixels); - Destroy(p); - p = ILoc(CharSpace,0,blues->FamilyOtherBlues[i] - - blues->FamilyOtherBlues[i+1]); - QueryLoc(p, IDENTITY, &dummy, &familyzonepixels); - Destroy(p); - /* is the difference in size of the zones less than 1 pixel? */ - if (FABS(bluezonepixels - familyzonepixels) < 1.0) { - /* use the Family zones */ - alignmentzones[numalignmentzones].bottomy = - blues->FamilyOtherBlues[i]; - alignmentzones[numalignmentzones].topy = - blues->FamilyOtherBlues[i+1]; - continue; - } - } - /* use this font's Blue zones (as opposed to the Family Blues */ - alignmentzones[numalignmentzones].bottomy = blues->OtherBlues[i]; - alignmentzones[numalignmentzones].topy = blues->OtherBlues[i+1]; - } -} - -/**********************************************************************/ -/* Subroutines and statics for handling of the VSTEM and HSTEM hints. */ -/**********************************************************************/ -static int InDotSection; /* DotSection flag */ -static struct stem stems[MAXSTEMS]; /* All STEM hints */ -static int numstems; /* Number of STEM hints */ -static int currstartstem; /* The current starting stem. */ -static int oldvert, oldhor; /* Remember hint in effect */ -static int oldhorhalf, oldverthalf; /* Remember which half of the stem */ -static double wsoffsetX, wsoffsetY; /* White space offset - for VSTEM3,HSTEM3 */ -static int wsset; /* Flag for whether we've set wsoffsetX,Y */ - -static void -InitStems(void) /* Initialize the STEM hint data structures */ -{ - InDotSection = FALSE; - currstartstem = numstems = 0; - oldvert = oldhor = -1; -} - -static void -FinitStems(void) /* Terminate the STEM hint data structures */ -{ - int i; - - for (i = 0; i < numstems; i++) { - Destroy(stems[i].lbhint); - Destroy(stems[i].lbrevhint); - Destroy(stems[i].rthint); - Destroy(stems[i].rtrevhint); - } -} - -/*******************************************************************/ -/* Compute the dislocation that a stemhint should cause for points */ -/* inside the stem. */ -/*******************************************************************/ -static void -ComputeStem(int stemno) -{ - int verticalondevice, idealwidth; - double stemstart, stemwidth; - struct segment *p; - int i; - double stembottom, stemtop, flatposition; - double Xpixels, Ypixels; - double unitpixels, onepixel; - int suppressovershoot, enforceovershoot; - double stemshift, flatpospixels, overshoot; - double widthdiff; /* Number of character space units to adjust width */ - double lbhintvalue, rthintvalue; - double cxx, cyx, cxy, cyy; /* Transformation matrix */ - int rotated; /* TRUE if character is on the side, FALSE if upright */ - - /************************************************/ - /* DETERMINE ORIENTATION OF CHARACTER ON DEVICE */ - /************************************************/ - - QuerySpace(CharSpace, &cxx, &cyx, &cxy, &cyy); /* Transformation matrix */ - - if (FABS(cxx) < 0.00001 || FABS(cyy) < 0.00001) - rotated = TRUE; /* Char is on side (90 or 270 degrees), possibly oblique. */ - else if (FABS(cyx) < 0.00001 || FABS(cxy) < 0.00001) - rotated = FALSE; /* Char is upright (0 or 180 degrees), possibly oblique. */ - else { - stems[stemno].lbhint = NULL; /* Char is at non-axial angle, ignore hints. */ - stems[stemno].lbrevhint = NULL; - stems[stemno].rthint = NULL; - stems[stemno].rtrevhint = NULL; - return; - } - - /* Determine orientation of stem */ - - if (stems[stemno].vertical) { - verticalondevice = !rotated; - stemstart = stems[stemno].x; - stemwidth = stems[stemno].dx; - } else { - verticalondevice = rotated; - stemstart = stems[stemno].y; - stemwidth = stems[stemno].dy; - } - - /* Determine how many pixels (non-negative) correspond to 1 character space - unit (unitpixels), and how many character space units (non-negative) - correspond to one pixel (onepixel). */ - - if (stems[stemno].vertical) - p = ILoc(CharSpace, 1, 0); - else - p = ILoc(CharSpace, 0, 1); - QueryLoc(p, IDENTITY, &Xpixels, &Ypixels); - Destroy(p); - if (verticalondevice) - unitpixels = FABS(Xpixels); - else - unitpixels = FABS(Ypixels); - - onepixel = 1.0 / unitpixels; - - /**********************/ - /* ADJUST STEM WIDTHS */ - /**********************/ - - widthdiff = 0.0; - - /* Find standard stem with smallest width difference from this stem */ - if (stems[stemno].vertical) { /* vertical stem */ - if (blues->StdVW != 0) /* there is an entry for StdVW */ - widthdiff = blues->StdVW - stemwidth; - for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */ - if (blues->StemSnapV[i] - stemwidth < widthdiff) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapV[i] - stemwidth; - } - } else { /* horizontal stem */ - if (blues->StdHW != 0) /* there is an entry for StdHW */ - widthdiff = blues->StdHW - stemwidth; - for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */ - if (blues->StemSnapH[i] - stemwidth < widthdiff) - /* this standard width is the best match so far for this stem */ - widthdiff = blues->StemSnapH[i] - stemwidth; - } - } - - /* Only expand or contract stems if they differ by less than 1 pixel from - the closest standard width, otherwise make the width difference = 0. */ - if (FABS(widthdiff) > onepixel) - widthdiff = 0.0; - - /* Expand or contract stem to the nearest integral number of pixels. */ - idealwidth = ROUND((stemwidth + widthdiff) * unitpixels); - /* Ensure that all stems are at least one pixel wide. */ - if (idealwidth == 0) - idealwidth = 1; - /* Apply ForceBold to vertical stems. */ - if (blues->ForceBold && stems[stemno].vertical) - /* Force this vertical stem to be at least DEFAULTBOLDSTEMWIDTH wide. */ - if (idealwidth < DEFAULTBOLDSTEMWIDTH) - idealwidth = DEFAULTBOLDSTEMWIDTH; - /* Now compute the number of character space units necessary */ - widthdiff = idealwidth * onepixel - stemwidth; - - /*********************************************************************/ - /* ALIGNMENT ZONES AND OVERSHOOT SUPPRESSION - HORIZONTAL STEMS ONLY */ - /*********************************************************************/ - - stemshift = 0.0; - - if (!stems[stemno].vertical) { - - /* Get bottom and top boundaries of the stem. */ - stembottom = stemstart; - stemtop = stemstart + stemwidth; - - /* Find out if this stem intersects an alignment zone (the BlueFuzz */ - /* entry in the Private dictionary specifies the number of character */ - /* units to extend (in both directions) the effect of an alignment */ - /* zone on a horizontal stem. The default value of BlueFuzz is 1. */ - for (i = 0; i < numalignmentzones; ++i) { - if (alignmentzones[i].topzone) { - if (stemtop >= alignmentzones[i].bottomy && - stemtop <= alignmentzones[i].topy + blues->BlueFuzz) { - break; /* We found a top-zone */ - } - } else { - if (stembottom <= alignmentzones[i].topy && - stembottom >= alignmentzones[i].bottomy - blues->BlueFuzz) { - break; /* We found a bottom-zone */ - } - } - } - - if (i < numalignmentzones) { /* We found an intersecting zone (number i). */ - suppressovershoot = FALSE; - enforceovershoot = FALSE; - - /* When 1 character space unit is rendered smaller than BlueScale - device units (pixels), we must SUPPRESS overshoots. Otherwise, - if the top (or bottom) of this stem is more than BlueShift character - space units away from the flat position, we must ENFORCE overshoot. */ - - if (unitpixels < blues->BlueScale) - suppressovershoot = TRUE; - else - if (alignmentzones[i].topzone) { - if (stemtop >= alignmentzones[i].bottomy + blues->BlueShift) - enforceovershoot = TRUE; - } else - if (stembottom <= alignmentzones[i].topy - blues->BlueShift) - enforceovershoot = TRUE; - - /*************************************************/ - /* ALIGN THE FLAT POSITION OF THE ALIGNMENT ZONE */ - /*************************************************/ - - /* Compute the position of the alignment zone's flat position in - device space and the amount of shift needed to align it on a - pixel boundary. Move all stems this amount. */ - - if (alignmentzones[i].topzone) - flatposition = alignmentzones[i].bottomy; - else - flatposition = alignmentzones[i].topy; - - /* Find the flat position in pixels */ - flatpospixels = flatposition * unitpixels; - - /* Find the stem shift necessary to align the flat - position on a pixel boundary, and use this shift for all stems */ - stemshift = (ROUND(flatpospixels) - flatpospixels) * onepixel; - - /************************************************/ - /* HANDLE OVERSHOOT ENFORCEMENT AND SUPPRESSION */ - /************************************************/ - - /* Compute overshoot amount (non-negative) */ - if (alignmentzones[i].topzone) - overshoot = stemtop - flatposition; - else - overshoot = flatposition - stembottom; - - if (overshoot > 0.0) { - /* ENFORCE overshoot by shifting the entire stem (if necessary) so that - it falls at least one pixel beyond the flat position. */ - - if (enforceovershoot) - if (overshoot < onepixel) { - if (alignmentzones[i].topzone) - stemshift += onepixel - overshoot; - else - stemshift -= onepixel - overshoot; - } - /* SUPPRESS overshoot by aligning the stem to the alignment zone's - flat position. */ - - if (suppressovershoot) { - if (alignmentzones[i].topzone) - stemshift -= overshoot; - else - stemshift += overshoot; - } - } - - /************************************************************/ - /* COMPUTE HINT VALUES FOR EACH SIDE OF THE HORIZONTAL STEM */ - /************************************************************/ - - /* If the stem was aligned by a topzone, we expand or contract the stem - only at the bottom - since the stem top was aligned by the zone. - If the stem was aligned by a bottomzone, we expand or contract the stem - only at the top - since the stem bottom was aligned by the zone. */ - if (alignmentzones[i].topzone) { - lbhintvalue = stemshift - widthdiff; /* bottom */ - rthintvalue = stemshift; /* top */ - } else { - lbhintvalue = stemshift; /* bottom */ - rthintvalue = stemshift + widthdiff; /* top */ - } - - stems[stemno].lbhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, lbhintvalue)); - stems[stemno].lbrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -lbhintvalue)); - stems[stemno].rthint = (struct segment *)Permanent(Loc(CharSpace, 0.0, rthintvalue)); - stems[stemno].rtrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -rthintvalue)); - - return; - - } /* endif (i < numalignmentzones) */ - - /* We didn't find any alignment zones intersecting this stem, so - proceed with normal stem alignment below. */ - - } /* endif (!stems[stemno].vertical) */ - - /* Align stem with pixel boundaries on device */ - stemstart = stemstart - widthdiff / 2; - stemshift = ROUND(stemstart * unitpixels) * onepixel - stemstart; - - /* Adjust the boundaries of the stem */ - lbhintvalue = stemshift - widthdiff / 2; /* left or bottom */ - rthintvalue = stemshift + widthdiff / 2; /* right or top */ - - if (stems[stemno].vertical) { - stems[stemno].lbhint = (struct segment *)Permanent(Loc(CharSpace, lbhintvalue, 0.0)); - stems[stemno].lbrevhint = (struct segment *)Permanent(Loc(CharSpace, -lbhintvalue, 0.0)); - stems[stemno].rthint = (struct segment *)Permanent(Loc(CharSpace, rthintvalue, 0.0)); - stems[stemno].rtrevhint = (struct segment *)Permanent(Loc(CharSpace, -rthintvalue, 0.0)); - } else { - stems[stemno].lbhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, lbhintvalue)); - stems[stemno].lbrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -lbhintvalue)); - stems[stemno].rthint = (struct segment *)Permanent(Loc(CharSpace, 0.0, rthintvalue)); - stems[stemno].rtrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -rthintvalue)); - } -} - -#define LEFT 1 -#define RIGHT 2 -#define BOTTOM 3 -#define TOP 4 - -/*********************************************************************/ -/* Adjust a point using the given stem hint. Use the left/bottom */ -/* hint value or the right/top hint value depending on where the */ -/* point lies in the stem. */ -/*********************************************************************/ -static struct segment * -Applyhint(struct segment *p, int stemnumber, int half) -{ - if (half == LEFT || half == BOTTOM) - return Join(p, stems[stemnumber].lbhint); /* left or bottom hint */ - else - return Join(p, stems[stemnumber].rthint); /* right or top hint */ -} - -/*********************************************************************/ -/* Adjust a point using the given reverse hint. Use the left/bottom */ -/* hint value or the right/top hint value depending on where the */ -/* point lies in the stem. */ -/*********************************************************************/ -static struct segment * -Applyrevhint(struct segment *p, int stemnumber, int half) -{ - if (half == LEFT || half == BOTTOM) - return Join(p, stems[stemnumber].lbrevhint); /* left or bottom hint */ - else - return Join(p, stems[stemnumber].rtrevhint); /* right or top hint */ -} - -/***********************************************************************/ -/* Find the vertical and horizontal stems that the current point */ -/* (x, y) may be involved in. At most one horizontal and one vertical */ -/* stem can apply to a single point, since there are no overlaps */ -/* allowed. */ -/* The actual hintvalue is returned as a location. */ -/* Hints are ignored inside a DotSection. */ -/***********************************************************************/ -static struct segment * -FindStems(double x, double y, double dx, double dy) -{ - int i; - int newvert, newhor; - struct segment *p; - int newhorhalf, newverthalf; - - if (InDotSection) return(NULL); - - newvert = newhor = -1; - newhorhalf = newverthalf = -1; - - for (i = currstartstem; i < numstems; i++) { - if (stems[i].vertical) { /* VSTEM hint */ - if ((x >= stems[i].x - EPS) && - (x <= stems[i].x+stems[i].dx + EPS)) { - newvert = i; - if (dy != 0.0) { - if (dy < 0) newverthalf = LEFT; - else newverthalf = RIGHT; - } else { - if (x < stems[i].x+stems[i].dx / 2) newverthalf = LEFT; - else newverthalf = RIGHT; - } - } - } else { /* HSTEM hint */ - if ((y >= stems[i].y - EPS) && - (y <= stems[i].y+stems[i].dy + EPS)) { - newhor = i; - if (dx != 0.0) { - if (dx < 0) newhorhalf = TOP; - else newhorhalf = BOTTOM; - } else { - if (y < stems[i].y+stems[i].dy / 2) newhorhalf = BOTTOM; - else newhorhalf = TOP; - } - } - } - } - - p = NULL; - - if (newvert == -1 && oldvert == -1) ; /* Outside of any hints */ - else if (newvert == oldvert && - newverthalf == oldverthalf); /* No hint change */ - else if (oldvert == -1) { /* New vertical hint in effect */ - p = Applyhint(p, newvert, newverthalf); - } else if (newvert == -1) { /* Old vertical hint no longer in effect */ - p = Applyrevhint(p, oldvert, oldverthalf); - } else { /* New vertical hint in effect, old hint no longer in effect */ - p = Applyrevhint(p, oldvert, oldverthalf); - p = Applyhint(p, newvert, newverthalf); - } - - if (newhor == -1 && oldhor == -1) ; /* Outside of any hints */ - else if (newhor == oldhor && - newhorhalf == oldhorhalf) ; /* No hint change */ - else if (oldhor == -1) { /* New horizontal hint in effect */ - p = Applyhint(p, newhor, newhorhalf); - } else if (newhor == -1) { /* Old horizontal hint no longer in effect */ - p = Applyrevhint(p, oldhor, oldhorhalf); - } - else { /* New horizontal hint in effect, old hint no longer in effect */ - p = Applyrevhint(p, oldhor, oldhorhalf); - p = Applyhint(p, newhor, newhorhalf); - } - - oldvert = newvert; oldverthalf = newverthalf; - oldhor = newhor; oldhorhalf = newhorhalf; - - return p; -} - -/******************************************************/ -/* Subroutines and statics for the Type1Char routines */ -/******************************************************/ - -static int strindex; /* index into PostScript string being interpreted */ -static double currx, curry; /* accumulated x and y values for hints */ - -struct callstackentry { - psobj *currstrP; /* current CharStringP */ - int currindex; /* current strindex */ - unsigned short currkey; /* current decryption key */ - }; - -static double Stack[MAXSTACK]; -static int Top; -static struct callstackentry CallStack[MAXCALLSTACK]; -static int CallTop; -static double PSFakeStack[MAXPSFAKESTACK]; -static int PSFakeTop; - -static void -ClearStack(void) -{ - Top = -1; -} - -static void -Push(double Num) -{ - if (++Top < MAXSTACK) Stack[Top] = Num; - else Error; -} - -static void -ClearCallStack(void) -{ - CallTop = -1; -} - -static void -PushCall(psobj *CurrStrP, int CurrIndex, unsigned short CurrKey) -{ - if (++CallTop < MAXCALLSTACK) { - CallStack[CallTop].currstrP = CurrStrP; /* save CharString pointer */ - CallStack[CallTop].currindex = CurrIndex; /* save CharString index */ - CallStack[CallTop].currkey = CurrKey; /* save decryption key */ - } - else Error; -} - -static void -PopCall(psobj **CurrStrPP, int *CurrIndexP, unsigned short *CurrKeyP) -{ - if (CallTop >= 0) { - *CurrStrPP = CallStack[CallTop].currstrP; /* restore CharString pointer */ - *CurrIndexP = CallStack[CallTop].currindex; /* restore CharString index */ - *CurrKeyP = CallStack[CallTop--].currkey; /* restore decryption key */ - } - else Error; -} - -static void -ClearPSFakeStack(void) -{ - PSFakeTop = -1; -} - -/* PSFakePush: Pushes a number onto the fake PostScript stack */ -static void -PSFakePush(double Num) -{ - if (++PSFakeTop < MAXPSFAKESTACK) PSFakeStack[PSFakeTop] = Num; - else Error; -} - -/* PSFakePop: Removes a number from the top of the fake PostScript stack */ -static double -PSFakePop (void) -{ - if (PSFakeTop >= 0) return(PSFakeStack[PSFakeTop--]); - else ErrorRet(0.0); - /*NOTREACHED*/ -} - -/***********************************************************************/ -/* Center a stem on the pixel grid -- used by HStem3 and VStem3 */ -/***********************************************************************/ -static struct segment * -CenterStem(double edge1, double edge2) -{ - int idealwidth, verticalondevice; - double leftx, lefty, rightx, righty, center, width; - double widthx, widthy; - double shift, shiftx, shifty; - double Xpixels, Ypixels; - struct segment *p; - - p = Loc(CharSpace, edge1, 0.0); - QueryLoc(p, IDENTITY, &leftx, &lefty); - - p = Join(p, Loc(CharSpace, edge2, 0.0)); - QueryLoc(p, IDENTITY, &rightx, &righty); - Destroy(p); - - widthx = FABS(rightx - leftx); - widthy = FABS(righty - lefty); - - if (widthy <= EPS) { /* verticalondevice hint */ - verticalondevice = TRUE; - center = (rightx + leftx) / 2.0; - width = widthx; - } - else if (widthx <= EPS) { /* horizontal hint */ - verticalondevice = FALSE; - center = (righty + lefty) / 2.0; - width = widthy; - } - else { /* neither horizontal nor verticalondevice and not oblique */ - return (NULL); - } - - idealwidth = ROUND(width); - if (idealwidth == 0) idealwidth = 1; - if (ODD(idealwidth)) { /* is ideal width odd? */ - /* center stem over pixel */ - shift = FLOOR(center) + 0.5 - center; - } - else { - /* align stem on pixel boundary */ - shift = ROUND(center) - center; - } - - if (verticalondevice) { - shiftx = shift; - shifty = 0.0; - } else { - shifty = shift; - shiftx = 0.0; - } - - p = Loc(IDENTITY, shiftx, shifty); - QueryLoc(p, CharSpace, &Xpixels, &Ypixels); - wsoffsetX = Xpixels; wsoffsetY = Ypixels; - currx += wsoffsetX; curry += wsoffsetY; - - return (p); -} - -/*----------------------------------------------------------------------- - Decrypt - From Adobe Type 1 book page 63, with some modifications ------------------------------------------------------------------------*/ -#define KEY 4330 /* Initial key (seed) for CharStrings decryption */ -#define C1 52845 /* Multiplier for pseudo-random number generator */ -#define C2 22719 /* Constant for pseudo-random number generator */ - -static unsigned short r; /* Pseudo-random sequence of keys */ - -static unsigned char -Decrypt(unsigned char cipher) -{ - unsigned char plain; - - plain = cipher ^ (r >> 8); - r = (cipher + r) * C1 + C2; - return plain; -} - -/* Get the next byte from the codestring being interpreted */ -static int -DoRead(int *CodeP) -{ - if (strindex >= CharStringP->len) return(FALSE); /* end of string */ - *CodeP = Decrypt((unsigned char) CharStringP->data.stringP[strindex++]); - return(TRUE); -} - -/* Strip blues->lenIV bytes from CharString and update encryption key */ -/* (the lenIV entry in the Private dictionary specifies the number of */ -/* random bytes at the beginning of each CharString; default is 4) */ -static void -StartDecrypt(void) -{ - int Code; - - r = KEY; /* Initial key (seed) for CharStrings decryption */ - for (strindex = 0; strindex < blues->lenIV;) - if (!DoRead(&Code)) /* Read a byte and update decryption key */ - Error; -} - -static void -Decode(int Code) -{ - int Code1, Code2, Code3, Code4; - - if (Code <= 31) /* Code is [0,31] */ - DoCommand(Code); - else if (Code <= 246) /* Code is [32,246] */ - Push((double)(Code - 139)); - else if (Code <= 250) { /* Code is [247,250] */ - if (!DoRead(&Code2)) goto ended; - Push((double)(((Code - 247) << 8) + Code2 + 108)); - } - else if (Code <= 254) { /* Code is [251,254] */ - if (!DoRead(&Code2)) goto ended; - Push((double)( -((Code - 251) << 8) - Code2 - 108)); - } - else { /* Code is 255 */ - if (!DoRead(&Code1)) goto ended; - if (!DoRead(&Code2)) goto ended; - if (!DoRead(&Code3)) goto ended; - if (!DoRead(&Code4)) goto ended; - Push((double)((((((Code1<<8) + Code2)<<8) + Code3)<<8) + Code4)); - } - return; - -ended: Error; -} - -/* Interpret a command code */ -static void -DoCommand(int Code) -{ - switch(Code) { - case HSTEM: /* |- y dy HSTEM |- */ - /* Vertical range of a horizontal stem zone */ - if (Top < 1) Error; - HStem(Stack[0], Stack[1]); - ClearStack(); - break; - case VSTEM: /* |- x dx VSTEM |- */ - /* Horizontal range of a vertical stem zone */ - if (Top < 1) Error; - VStem(Stack[0], Stack[1]); - ClearStack(); - break; - case VMOVETO: /* |- dy VMOVETO |- */ - /* Vertical MOVETO, equivalent to 0 dy RMOVETO */ - if (Top < 0) Error; - RMoveTo(0.0, Stack[0]); - ClearStack(); - break; - case RLINETO: /* |- dx dy RLINETO |- */ - /* Like RLINETO in PostScript */ - if (Top < 1) Error; - RLineTo(Stack[0], Stack[1]); - ClearStack(); - break; - case HLINETO: /* |- dx HLINETO |- */ - /* Horizontal LINETO, equivalent to dx 0 RLINETO */ - if (Top < 0) Error; - RLineTo(Stack[0], 0.0); - ClearStack(); - break; - case VLINETO: /* |- dy VLINETO |- */ - /* Vertical LINETO, equivalent to 0 dy RLINETO */ - if (Top < 0) Error; - RLineTo(0.0, Stack[0]); - ClearStack(); - break; - case RRCURVETO: - /* |- dx1 dy1 dx2 dy2 dx3 dy3 RRCURVETO |- */ - /* Relative RCURVETO, equivalent to dx1 dy1 */ - /* (dx1+dx2) (dy1+dy2) (dx1+dx2+dx3) */ - /* (dy1+dy2+dy3) RCURVETO in PostScript */ - if (Top < 5) Error; - RRCurveTo(Stack[0], Stack[1], Stack[2], Stack[3], - Stack[4], Stack[5]); - ClearStack(); - break; - case CLOSEPATH: /* - CLOSEPATH |- */ - /* Closes a subpath without repositioning the */ - /* current point */ - DoClosePath(); - ClearStack(); - break; - case CALLSUBR: /* subr# CALLSUBR - */ - /* Calls a CharString subroutine with index */ - /* subr# from the Subrs array */ - if (Top < 0) Error; - CallSubr((int)Stack[Top--]); - break; - case RETURN: /* - RETURN - */ - /* Returns from a Subrs array CharString */ - /* subroutine called with CALLSUBR */ - Return(); - break; - case ESCAPE: /* ESCAPE to two-byte command code */ - if (!DoRead(&Code)) Error; - Escape(Code); - break; - case HSBW: /* |- sbx wx HSBW |- */ - /* Set the left sidebearing point to (sbx,0), */ - /* set the character width vector to (wx,0). */ - /* Equivalent to sbx 0 wx 0 SBW. Space */ - /* character should have sbx = 0 */ - if (Top < 1) Error; - Sbw(Stack[0], 0.0, Stack[1], 0.0); - ClearStack(); - break; - case ENDCHAR: /* - ENDCHAR |- */ - /* Finishes a CharString outline */ - EndChar(); - ClearStack(); - break; - case RMOVETO: /* |- dx dy RMOVETO |- */ - /* Behaves like RMOVETO in PostScript */ - if (Top < 1) Error; - RMoveTo(Stack[0], Stack[1]); - ClearStack(); - break; - case HMOVETO: /* |- dx HMOVETO |- */ - /* Horizontal MOVETO. Equivalent to dx 0 RMOVETO */ - if (Top < 0) Error; - RMoveTo(Stack[0], 0.0); - ClearStack(); - break; - case VHCURVETO: /* |- dy1 dx2 dy2 dx3 VHCURVETO |- */ - /* Vertical-Horizontal CURVETO, equivalent to */ - /* 0 dy1 dx2 dy2 dx3 0 RRCURVETO */ - if (Top < 3) Error; - RRCurveTo(0.0, Stack[0], Stack[1], Stack[2], - Stack[3], 0.0); - ClearStack(); - break; - case HVCURVETO: /* |- dx1 dx2 dy2 dy3 HVCURVETO |- */ - /* Horizontal-Vertical CURVETO, equivalent to */ - /* dx1 0 dx2 dy2 0 dy3 RRCURVETO */ - if (Top < 3) Error; - RRCurveTo(Stack[0], 0.0, Stack[1], Stack[2], 0.0, Stack[3]); - ClearStack(); - break; - default: /* Unassigned command code */ - ClearStack(); - Error; - } -} - -static void -Escape(int Code) -{ - int i, Num; - struct segment *p; - - switch(Code) { - case DOTSECTION: /* - DOTSECTION |- */ - /* Brackets an outline section for the dots in */ - /* letters such as "i", "j", and "!". */ - DotSection(); - ClearStack(); - break; - case VSTEM3: /* |- x0 dx0 x1 dx1 x2 dx2 VSTEM3 |- */ - /* Declares the horizontal ranges of three */ - /* vertical stem zones between x0 and x0+dx0, */ - /* x1 and x1+dx1, and x2 and x2+dx2. */ - if (Top < 5) Error; - if (!wsset && ProcessHints) { - /* Shift the whole character so that the middle stem is centered. */ - p = CenterStem(Stack[2] + sidebearingX, Stack[3]); - path = Join(path, p); - wsset = 1; - } - - VStem(Stack[0], Stack[1]); - VStem(Stack[2], Stack[3]); - VStem(Stack[4], Stack[5]); - ClearStack(); - break; - case HSTEM3: /* |- y0 dy0 y1 dy1 y2 dy2 HSTEM3 |- */ - /* Declares the vertical ranges of three hori- */ - /* zontal stem zones between y0 and y0+dy0, */ - /* y1 and y1+dy1, and y2 and y2+dy2. */ - if (Top < 5) Error; - HStem(Stack[0], Stack[1]); - HStem(Stack[2], Stack[3]); - HStem(Stack[4], Stack[5]); - ClearStack(); - break; - case SEAC: /* |- asb adx ady bchar achar SEAC |- */ - /* Standard Encoding Accented Character. */ - if (Top < 4) Error; - Seac(Stack[0], Stack[1], Stack[2], - (unsigned char) Stack[3], - (unsigned char) Stack[4]); - ClearStack(); - break; - case SBW: /* |- sbx sby wx wy SBW |- */ - /* Set the left sidebearing point to (sbx,sby), */ - /* set the character width vector to (wx,wy). */ - if (Top < 3) Error; - Sbw(Stack[0], Stack[1], Stack[2], Stack[3]); - ClearStack(); - break; - case DIV: /* num1 num2 DIV quotient */ - /* Behaves like DIV in the PostScript language */ - if (Top < 1) Error; - Stack[Top-1] = Div(Stack[Top-1], Stack[Top]); - Top--; - break; - case CALLOTHERSUBR: - /* arg1 ... argn n othersubr# CALLOTHERSUBR - */ - /* Make calls on the PostScript interpreter */ - if (Top < 1) Error; - Num = Stack[Top-1]; - if (Top < Num+1) Error; - for (i = 0; i < Num; i++) PSFakePush(Stack[Top - i - 2]); - Top -= Num + 2; -#if XFONT_CID - if ((int)Stack[Top + Num + 2] > 3) - ClearPSFakeStack(); - else - CallOtherSubr((int)Stack[Top + Num + 2]); -#else - CallOtherSubr((int)Stack[Top + Num + 2]); -#endif - break; - case POP: /* - POP number */ - /* Removes a number from the top of the */ - /* PostScript interpreter stack and pushes it */ - /* onto the Type 1 BuildChar operand stack */ - Push(PSFakePop()); - break; - case SETCURRENTPOINT: /* |- x y SETCURRENTPOINT |- */ - /* Sets the current point to (x,y) in absolute */ - /* character space coordinates without per- */ - /* forming a CharString MOVETO command */ - if (Top < 1) Error; - SetCurrentPoint(Stack[0], Stack[1]); - ClearStack(); - break; - default: /* Unassigned escape code command */ - ClearStack(); - Error; - } -} - -/* |- y dy HSTEM |- */ -/* Declares the vertical range of a horizontal stem zone */ -/* between coordinates y and y + dy */ -/* y is relative to the left sidebearing point */ -static void -HStem(double y, double dy) -{ - if (ProcessHints) { - if (numstems >= MAXSTEMS) Error; - if (dy < 0.0) {y += dy; dy = -dy;} - stems[numstems].vertical = FALSE; - stems[numstems].x = 0.0; - stems[numstems].y = sidebearingY + y + wsoffsetY; - stems[numstems].dx = 0.0; - stems[numstems].dy = dy; - ComputeStem(numstems); - numstems++; - } -} - -/* |- x dx VSTEM |- */ -/* Declares the horizontal range of a vertical stem zone */ -/* between coordinates x and x + dx */ -/* x is relative to the left sidebearing point */ - -static void -VStem(double x, double dx) -{ - if (ProcessHints) { - if (numstems >= MAXSTEMS) Error; - if (dx < 0.0) {x += dx; dx = -dx;} - stems[numstems].vertical = TRUE; - stems[numstems].x = sidebearingX + x + wsoffsetX; - stems[numstems].y = 0.0; - stems[numstems].dx = dx; - stems[numstems].dy = 0.0; - ComputeStem(numstems); - numstems++; - } -} - -/* |- dx dy RLINETO |- */ -/* Behaves like RLINETO in PostScript */ -static void -RLineTo(double dx, double dy) -{ - struct segment *B; - - B = Loc(CharSpace, dx, dy); - - if (ProcessHints) { - currx += dx; - curry += dy; - /* B = Join(B, FindStems(currx, curry)); */ - B = Join(B, FindStems(currx, curry, dx, dy)); - } - - path = Join(path, Line(B)); -} - -/* |- dx1 dy1 dx2 dy2 dx3 dy3 RRCURVETO |- */ -/* Relative RCURVETO, equivalent to dx1 dy1 */ -/* (dx1+dx2) (dy1+dy2) (dx1+dx2+dx3) */ -/* (dy1+dy2+dy3) RCURVETO in PostScript */ -static void -RRCurveTo(double dx1, double dy1, double dx2, double dy2, - double dx3, double dy3) -{ - struct segment *B, *C, *D; - - B = Loc(CharSpace, dx1, dy1); - C = Loc(CharSpace, dx2, dy2); - D = Loc(CharSpace, dx3, dy3); - - if (ProcessHints) { - /* For a Bezier curve, we apply the full hint value to - the Bezier C point (and thereby D point). */ - currx += dx1 + dx2 + dx3; - curry += dy1 + dy2 + dy3; - /* C = Join(C, FindStems(currx, curry)); */ - C = Join(C, FindStems(currx, curry, dx3, dy3)); - } - - /* Since XIMAGER is not completely relative, */ - /* we need to add up the delta values */ - - C = Join(C, (struct segment *)Dup(B)); - D = Join(D, (struct segment *)Dup(C)); - - path = Join(path, (struct segment *)Bezier(B, C, D)); -} - -/* - CLOSEPATH |- */ -/* Closes a subpath WITHOUT repositioning the */ -/* current point */ -static void -DoClosePath(void) -{ - struct segment *CurrentPoint; - - CurrentPoint = Phantom(path); - path = ClosePath(path); - path = Join(Snap(path), CurrentPoint); -} - -/* subr# CALLSUBR - */ -/* Calls a CharString subroutine with index */ -/* subr# from the Subrs array */ -static void -CallSubr(int subrno) -{ - if ((subrno < 0) || (subrno >= SubrsP->len)) - Error; - PushCall(CharStringP, strindex, r); - CharStringP = &SubrsP->data.arrayP[subrno]; - StartDecrypt(); -} - -/* - RETURN - */ -/* Returns from a Subrs array CharString */ -/* subroutine called with CALLSUBR */ -static void -Return(void) -{ - PopCall(&CharStringP, &strindex, &r); -} - -/* - ENDCHAR |- */ -/* Finishes a CharString outline */ -/* Executes SETCHACHEDEVICE using a bounding box */ -/* it computes directly from the character outline */ -/* and using the width information acquired from a previous */ -/* HSBW or SBW. It then calls a special version of FILL */ -/* or STROKE depending on the value of PaintType in the */ -/* font dictionary */ -static void -EndChar(void) -{ - /* There is no need to compute and set bounding box for - the cache, since XIMAGER does that on the fly. */ - - /* Perform a Closepath just in case the command was left out */ - path = ClosePath(path); - - /* Set character width */ - path = Join(Snap(path), Loc(CharSpace, escapementX, escapementY)); - -} - -/* |- dx dy RMOVETO |- */ -/* Behaves like RMOVETO in PostScript */ -static void -RMoveTo(double dx, double dy) -{ - struct segment *B; - - B = Loc(CharSpace, dx, dy); - - if (ProcessHints) { - currx += dx; - curry += dy; - /* B = Join(B, FindStems(currx, curry)); */ - B = Join(B, FindStems(currx, curry, 0.0, 0.0)); - } - - path = Join(path, B); -} - -/* - DOTSECTION |- */ -/* Brackets an outline section for the dots in */ -/* letters such as "i", "j", and "!". */ -static void -DotSection(void) -{ - InDotSection = !InDotSection; -} - -/* |- asb adx ady bchar achar SEAC |- */ -/* Standard Encoding Accented Character. */ -static void -Seac(double asb, double adx, double ady, - unsigned char bchar, unsigned char achar) -{ - int Code; - struct segment *mypath; - - /* Move adx - asb, ady over and up from base char's sbpoint. */ - /* (We use adx - asb to counteract the accents sb shift.) */ - /* The variables accentoffsetX/Y modify sidebearingX/Y in Sbw(). */ - /* Note that these incorporate the base character's sidebearing shift by */ - /* using the current sidebearingX, Y values. */ - accentoffsetX = sidebearingX + adx - asb; - accentoffsetY = sidebearingY + ady; - - /* Set path = NULL to avoid complaints from Sbw(). */ - path = NULL; - - /* Go find the CharString for the accent's code via an upcall */ - CharStringP = GetType1CharString((psfont *)Environment, achar); - StartDecrypt(); - - ClearStack(); - ClearPSFakeStack(); - ClearCallStack(); - - for (;;) { - if (!DoRead(&Code)) break; - Decode(Code); - if (errflag) return; - } - /* Copy snapped path to mypath and set path to NULL as above. */ - mypath = Snap(path); - path = NULL; - - /* We must reset these to null now. */ - accentoffsetX = accentoffsetY = 0; - - /* go find the CharString for the base char's code via an upcall */ - CharStringP = GetType1CharString((psfont *)Environment, bchar); - StartDecrypt(); - - ClearStack(); - ClearPSFakeStack(); - ClearCallStack(); - - FinitStems(); - InitStems(); - - for (;;) { - if (!DoRead(&Code)) break; - Decode(Code); - if (errflag) return; - } - path = Join(mypath, path); -} - - -/* |- sbx sby wx wy SBW |- */ -/* Set the left sidebearing point to (sbx,sby), */ -/* set the character width vector to (wx,wy). */ -static void -Sbw(double sbx, double sby, double wx, double wy) -{ - escapementX = wx; /* Character width vector */ - escapementY = wy; - - /* Sidebearing values are sbx, sby args, plus accent offset from Seac(). */ - sidebearingX = sbx + accentoffsetX; - sidebearingY = sby + accentoffsetY; - - path = Join(path, Loc(CharSpace, sidebearingX, sidebearingY)); - if (ProcessHints) {currx = sidebearingX; curry = sidebearingY;} -} - - /* num1 num2 DIV quotient */ -/* Behaves like DIV in the PostScript language */ -static double -Div(double num1, double num2) -{ - return(num1 / num2); -} - -/* - The following four subroutines (FlxProc, FlxProc1, FlxProc2, and - HintReplace) are C versions of the OtherSubrs Programs, which were - were published in the Adobe Type 1 Font Format book. - - The Flex outline fragment is described by - c1: (x0, y0) = c3: (x0, yshrink(y0)) or (xshrink(x0), y0) - " (x1, y1) = " (x1, yshrink(y1)) or (xshrink(x1), y1) - " (x2, y2) - reference point - c2: (x0, y0) = c4: (x0, yshrink(y0)) or (xshrink(x0), y0) - " (x1, y1) = " (x1, yshrink(y1)) or (xshrink(x1), y1) - " (x2, y2) = " (x2, y2), rightmost endpoint - c3: (x0, y0) - control point, 1st Bezier curve - " (x1, y1) - control point, -"- - " (x2, y2) - end point, -"- - c4: (x0, y0) - control point, 2nd Bezier curve - " (x1, y1) - control point, -"- - " (x2, y2) - end point, -"- - ep: (epY, epX) - final endpoint (should be same as c4: (x2, y2)) - idmin - minimum Flex height (1/100 pixel) at which to render curves -*/ - -#define dtransform(dxusr,dyusr,dxdev,dydev) { \ - register struct segment *point = Loc(CharSpace, dxusr, dyusr); \ - QueryLoc(point, IDENTITY, dxdev, dydev); \ - Destroy(point); \ -} - -#define itransform(xdev,ydev,xusr,yusr) { \ - register struct segment *point = Loc(IDENTITY, xdev, ydev); \ - QueryLoc(point, CharSpace, xusr, yusr); \ - Destroy(point); \ -} - -#define transform(xusr,yusr,xdev,ydev) dtransform(xusr,yusr,xdev,ydev) - -#define PaintType (0) - -#define lineto(x,y) { \ - struct segment *CurrentPoint; \ - double CurrentX, CurrentY; \ - CurrentPoint = Phantom(path); \ - QueryLoc(CurrentPoint, CharSpace, &CurrentX, &CurrentY); \ - Destroy(CurrentPoint); \ - RLineTo(x - CurrentX, y - CurrentY); \ -} - -#define curveto(x0,y0,x1,y1,x2,y2) { \ - struct segment *CurrentPoint; \ - double CurrentX, CurrentY; \ - CurrentPoint = Phantom(path); \ - QueryLoc(CurrentPoint, CharSpace, &CurrentX, &CurrentY); \ - Destroy(CurrentPoint); \ - RRCurveTo(x0 - CurrentX, y0 - CurrentY, x1 - x0, y1 - y0, x2 - x1, y2 - y1); \ -} - -#define xshrink(x) ((x - c4x2) * shrink +c4x2) -#define yshrink(y) ((y - c4y2) * shrink +c4y2) - -#define PickCoords(flag) \ - if (flag) { /* Pick "shrunk" coordinates */ \ - x0 = c1x0; y0 = c1y0; \ - x1 = c1x1; y1 = c1y1; \ - x2 = c1x2; y2 = c1y2; \ - x3 = c2x0; y3 = c2y0; \ - x4 = c2x1; y4 = c2y1; \ - x5 = c2x2; y5 = c2y2; \ - } else { /* Pick original coordinates */ \ - x0 = c3x0; y0 = c3y0; \ - x1 = c3x1; y1 = c3y1; \ - x2 = c3x2; y2 = c3y2; \ - x3 = c4x0; y3 = c4y0; \ - x4 = c4x1; y4 = c4y1; \ - x5 = c4x2; y5 = c4y2; \ - } - -/* FlxProc() = OtherSubrs[0]; Main part of Flex */ -/* Calling sequence: 'idmin epX epY 3 0 callothersubr' */ -/* Computes Flex values, and renders the Flex path, */ -/* and returns (leaves) ending coordinates on stack */ -static void -FlxProc(double c1x2, double c1y2, double c3x0, double c3y0, - double c3x1, double c3y1, double c3x2, double c3y2, - double c4x0, double c4y0, double c4x1, double c4y1, - double c4x2, double c4y2, double epY, double epX, int idmin) -{ - double dmin; - double c1x0, c1y0, c1x1, c1y1; - double c2x0, c2y0, c2x1, c2y1, c2x2, c2y2; - char yflag; - double x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5; - double cxx, cyx, cxy, cyy; /* Transformation matrix */ - int flipXY; - double x, y; - double erosion = 1; /* Device parameter */ - /* Erosion may have different value specified in 'internaldict' */ - double shrink; - double dX, dY; - char erode; - double eShift; - double cx, cy; - double ex, ey; - - c1x0 = c1y0 = c1x1 = c1y1 = c2x0 = c2y0 = c2x1 = c2y1 = c2x2 = c2y2 = 0.0; - - Destroy(path); - path = FlxOldPath; /* Restore previous path (stored in FlxProc1) */ - - if (ProcessHints) { - dmin = ABS(idmin) / 100.0; /* Minimum Flex height in pixels */ - - c2x2 = c4x2; c2y2 = c4y2; /* Point c2 = c4 */ - - yflag = FABS(c1y2 - c3y2) > FABS(c1x2 - c3x2); /* Flex horizontal? */ - - QuerySpace(CharSpace, &cxx, &cyx, &cxy, &cyy); /* Transformation matrix */ - - if (FABS(cxx) < 0.00001 || FABS(cyy) < 0.00001) - flipXY = -1; /* Char on side */ - else if (FABS(cyx) < 0.00001 || FABS(cxy) < 0.00001) - flipXY = 1; /* Char upright */ - else - flipXY = 0; /* Char at angle */ - - if (yflag) { /* Flex horizontal */ - if (flipXY == 0 || c3y2 == c4y2) { /* Char at angle or Flex height = 0 */ - PickCoords(FALSE); /* Pick original control points */ - } else { - shrink = FABS((c1y2 - c4y2) / (c3y2 - c4y2)); /* Slope */ - - c1x0 = c3x0; c1y0 = yshrink(c3y0); - c1x1 = c3x1; c1y1 = yshrink(c3y1); - c2x0 = c4x0; c2y0 = yshrink(c4y0); - c2x1 = c4x1; c2y1 = yshrink(c4y1); - - dtransform(0.0, ROUND(c3y2-c1y2), &x, &y); /* Flex height in pixels */ - dY = FABS((flipXY == 1) ? y : x); - PickCoords(dY < dmin); /* If Flex small, pick 'shrunk' control points */ - - if (FABS(y2 - c1y2) > 0.001) { /* Flex 'non-zero'? */ - transform(c1x2, c1y2, &x, &y); - - if (flipXY == 1) { - cx = x; cy = y; - } else { - cx = y; cy = x; - } - - dtransform(0.0, ROUND(y2-c1y2), &x, &y); - dY = (flipXY == 1) ? y : x; - if (ROUND(dY) != 0) - dY = ROUND(dY); - else - dY = (dY < 0) ? -1 : 1; - - erode = PaintType != 2 && erosion >= 0.5; - if (erode) - cy -= 0.5; - ey = cy + dY; - ey = CEIL(ey) - ey; - ey = ey + FLOOR(cy + dY); - if (erode) - ey += 0.5; - - if (flipXY == 1) { - itransform(cx, ey, &x, &y); - } else { - itransform(ey, cx, &x, &y); - } - - eShift = y - y2; - y1 += eShift; - y2 += eShift; - y3 += eShift; - } - } - } else { /* Flex vertical */ - if (flipXY == 0 || c3x2 == c4x2) { /* Char at angle or Flex height = 0 */ - PickCoords(FALSE); /* Pick original control points */ - } else { - shrink = FABS((c1x2 - c4x2) / (c3x2 - c4x2)); /* Slope */ - - c1x0 = xshrink(c3x0); c1y0 = c3y0; - c1x1 = xshrink(c3x1); c1y1 = c3y1; - c2x0 = xshrink(c4x0); c2y0 = c4y0; - c2x1 = xshrink(c4x1); c2y1 = c4y1; - - dtransform(ROUND(c3x2 - c1x2), 0.0, &x, &y); /* Flex height in pixels */ - dX = FABS((flipXY == -1) ? y : x); - PickCoords(dX < dmin); /* If Flex small, pick 'shrunk' control points */ - - if (FABS(x2 - c1x2) > 0.001) { - transform(c1x2, c1y2, &x, &y); - if (flipXY == -1) { - cx = y; cy = x; - } else { - cx = x; cy = y; - } - - dtransform(ROUND(x2-c1x2), 0.0, &x, &y); - dX = (flipXY == -1) ? y : x; - if (ROUND(dX) != 0) - dX = ROUND(dX); - else - dX = (dX < 0) ? -1 : 1; - - erode = PaintType != 2 && erosion >= 0.5; - if (erode) - cx -= 0.5; - ex = cx + dX; - ex = CEIL(ex) - ex; - ex = ex + FLOOR(cx + dX); - if (erode) - ex += 0.5; - - if (flipXY == -1) { - itransform(cy, ex, &x, &y); - } else { - itransform(ex, cy, &x, &y); - } - - eShift = x - x2; - x1 += eShift; - x2 += eShift; - x3 += eShift; - } - } - } - - if (x2 == x5 || y2 == y5) { - lineto(x5, y5); - } else { - curveto(x0, y0, x1, y1, x2, y2); - curveto(x3, y3, x4, y4, x5, y5); - } - } else { /* ProcessHints is off */ - PickCoords(FALSE); /* Pick original control points */ - curveto(x0, y0, x1, y1, x2, y2); - curveto(x3, y3, x4, y4, x5, y5); - } - - PSFakePush(epY); - PSFakePush(epX); -} - -/* FlxProc1() = OtherSubrs[1]; Part of Flex */ -/* Calling sequence: '0 1 callothersubr' */ -/* Saves and clears path, then restores currentpoint */ -static void -FlxProc1(void) -{ - struct segment *CurrentPoint; - - CurrentPoint = Phantom(path); - - FlxOldPath = path; - path = CurrentPoint; -} - -/* FlxProc2() = OtherSubrs[2]; Part of Flex */ -/* Calling sequence: '0 2 callothersubr' */ -/* Returns currentpoint on stack */ -static void -FlxProc2(void) -{ - struct segment *CurrentPoint; - double CurrentX, CurrentY; - - CurrentPoint = Phantom(path); - QueryLoc(CurrentPoint, CharSpace, &CurrentX, &CurrentY); - Destroy(CurrentPoint); - - /* Push CurrentPoint on fake PostScript stack */ - PSFakePush(CurrentX); - PSFakePush(CurrentY); -} - -/* HintReplace() = OtherSubrs[3]; Hint Replacement */ -/* Calling sequence: 'subr# 1 3 callothersubr pop callsubr' */ -/* Reinitializes stem hint structure */ -static void -HintReplace(void) -{ - /* Effectively retire the current stems, but keep them around for */ - /* revhint use in case we are in a stem when we replace hints. */ - currstartstem = numstems; - - /* 'subr#' is left on PostScript stack (for 'pop callsubr') */ -} - -/* arg1 ... argn n othersubr# CALLOTHERSUBR - */ -/* Make calls on the PostScript interpreter (or call equivalent C code) */ -/* NOTE: The n arguments have been pushed on the fake PostScript stack */ -static void -CallOtherSubr(int othersubrno) -{ - switch(othersubrno) { - case 0: /* OtherSubrs[0]; Main part of Flex */ - if (PSFakeTop < 16) Error; - ClearPSFakeStack(); - FlxProc( - PSFakeStack[0], PSFakeStack[1], PSFakeStack[2], PSFakeStack[3], - PSFakeStack[4], PSFakeStack[5], PSFakeStack[6], PSFakeStack[7], - PSFakeStack[8], PSFakeStack[9], PSFakeStack[10], PSFakeStack[11], - PSFakeStack[12], PSFakeStack[13], PSFakeStack[14], PSFakeStack[15], - (int) PSFakeStack[16] - ); - break; - case 1: /* OtherSubrs[1]; Part of Flex */ - FlxProc1(); - break; - case 2: /* OtherSubrs[2]; Part of Flex */ - FlxProc2(); - break; - case 3: /* OtherSubrs[3]; Hint Replacement */ - HintReplace(); - break; - default: { /* call OtherSubrs[4] or higher if PostScript is present */ - } - } -} - -/* |- x y SETCURRENTPOINT |- */ -/* Sets the current point to (x,y) in absolute */ -/* character space coordinates without per- */ -/* forming a CharString MOVETO command */ -static void -SetCurrentPoint(double x, double y) -{ - currx = x; - curry = y; -} - -/* The Type1Char routine for use by PostScript. */ -/************************************************/ -struct xobject * -Type1Char(char *env, struct XYspace *S, psobj *charstrP, psobj *subrsP, - psobj *osubrsP, - struct blues_struct *bluesP, /* FontID's ptr to the blues struct */ - int *modeP) -{ - int Code; - - path = NULL; - errflag = FALSE; - - /* Make parameters available to all Type1 routines */ - Environment = env; - CharSpace = S; /* used when creating path elements */ - CharStringP = charstrP; - SubrsP = subrsP; - - blues = bluesP; - - /* compute the alignment zones */ - ComputeAlignmentZones(); - - StartDecrypt(); - - ClearStack(); - ClearPSFakeStack(); - ClearCallStack(); - - InitStems(); - - currx = curry = 0; - escapementX = escapementY = 0; - sidebearingX = sidebearingY = 0; - accentoffsetX = accentoffsetY = 0; - wsoffsetX = wsoffsetY = 0; /* No shift to preserve whitspace. */ - wsset = 0; /* wsoffsetX,Y haven't been set yet. */ - - for (;;) { - if (!DoRead(&Code)) break; - Decode(Code); - if (errflag) break; - } - - FinitStems(); - - - /* Clean up if an error has occurred */ - if (errflag) { - if (path != NULL) { - Destroy(path); /* Reclaim storage */ - path = NULL; /* Indicate that character could not be built */ - } - } - - return((struct xobject *) path); -} - -#if XFONT_CID -struct xobject * -CIDChar(char *env, struct XYspace *S, - psobj *charstrP, psobj *subrsP, psobj *osubrsP, - struct blues_struct *bluesP, /* FontID's ptr to the blues struct */ - int *modeP) -{ - int Code; - - path = NULL; - errflag = FALSE; - - /* Make parameters available to all CID routines */ - Environment = env; - CharSpace = S; /* used when creating path elements */ - CharStringP = charstrP; - SubrsP = subrsP; - - blues = bluesP; - - /* compute the alignment zones */ - ComputeAlignmentZones(); - - StartDecrypt(); - - ClearStack(); - ClearPSFakeStack(); - ClearCallStack(); - - InitStems(); - - currx = curry = 0; - escapementX = escapementY = 0; - sidebearingX = sidebearingY = 0; - accentoffsetX = accentoffsetY = 0; - wsoffsetX = wsoffsetY = 0; /* No shift to preserve whitspace. */ - wsset = 0; /* wsoffsetX,Y haven't been set yet. */ - - for (;;) { - if (!DoRead(&Code)) break; - Decode(Code); - if (errflag) break; - } - - FinitStems(); - - /* Clean up if an error has occurred */ - if (errflag) { - if (path != NULL) { - Destroy(path); /* Reclaim storage */ - path = NULL; /* Indicate that character could not be built */ - } - } - - return((struct xobject *) path); -} -#endif diff --git a/nx-X11/lib/font/Type1/util.c b/nx-X11/lib/font/Type1/util.c deleted file mode 100644 index 7c5a81d..0000000 --- a/nx-X11/lib/font/Type1/util.c +++ /dev/null @@ -1,222 +0,0 @@ -/* $Xorg: util.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/util.c,v 1.5 1999/08/21 13:47:53 dawes Exp $ */ -/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifndef FONTMODULE -#include <stdio.h> -#else -#include "Xdefs.h" -#include "Xmd.h" -#include "xf86_ansic.h" -#endif -#include "util.h" -#include <X11/fonts/fontmisc.h> /* for xalloc/xfree */ - -static char *vm_base = NULL; /* Start of virtual memory area */ - char *vm_next = NULL; /* Pointer to first free byte */ - long vm_free = 0; /* Count of free bytes */ - long vm_size = 0; /* Total size of memory */ - -/* - * Initialize memory. - */ -boolean -vm_init(int cnt) -{ -#if XFONT_CID - if (vm_base == NULL || (vm_base != NULL && vm_size != cnt)) { - if (vm_base != NULL) xfree(vm_base); - vm_next = vm_base = (char *)xalloc (cnt); - } else - vm_next = vm_base; -#else - vm_next = vm_base = (char *)xalloc (cnt); -#endif - - if (vm_base != NULL) { - vm_free = cnt; - vm_size = cnt; - return(TRUE); - } - else - return(FALSE); - -} - -char * -vm_alloc(int bytes) -{ - char *answer; - - /* Round to next word multiple */ - bytes = (bytes + 7) & ~7; - - /* Allocate the space, if it is available */ - if (bytes > 0 && bytes <= vm_free) { - answer = vm_next; - vm_free -= bytes; - vm_next += bytes; - } - else - answer = NULL; - - return(answer); -} - -/* - * Format an Integer object - */ -void -objFormatInteger(psobj *objP, int value) -{ - if (objP != NULL) { - objP->type = OBJ_INTEGER; - objP->len = 0; - objP->data.integer = value; - } -} - -/* - * Format a Real object - */ -void -objFormatReal(psobj *objP, float value) -{ - if (objP != NULL) { - objP->type = OBJ_REAL; - objP->len = 0; - objP->data.real = value; - } -} - -/* - * Format a Boolean object - */ -void -objFormatBoolean(psobj *objP, boolean value) -{ - if (objP != NULL) { - objP->type = OBJ_BOOLEAN; - objP->len = 0; - objP->data.boolean = value; - } -} - -/* - * Format an Encoding object - */ -void -objFormatEncoding(psobj *objP, int length, psobj *valueP) -{ - if (objP != NULL) { - objP->type = OBJ_ENCODING; - objP->len = length; - objP->data.arrayP = valueP; - } -} - -/* - * Format an Array object - */ -void -objFormatArray(psobj *objP, int length, psobj *valueP) -{ - if (objP != NULL) { - objP->type = OBJ_ARRAY; - objP->len = length; - objP->data.arrayP = valueP; - } -} - - -/* - * Format a String object - */ -void -objFormatString(psobj *objP, int length, char *valueP) -{ - if (objP != NULL) { - objP->type = OBJ_STRING; - objP->len = length; - objP->data.valueP = valueP; - } -} - -/* - * Format a Name object - */ -void -objFormatName(psobj *objP, int length, char *valueP) -{ - if (objP != NULL) { - objP->type = OBJ_NAME; - objP->len = length; - objP->data.nameP = valueP; - } -} - -/* - * Format a File object - */ -void -objFormatFile(psobj *objP, FILE *valueP) -{ - if (objP != NULL) { - objP->type = OBJ_FILE; - objP->len = 0; - objP->data.fileP = valueP; - } -} - diff --git a/nx-X11/lib/font/Type1/util.h b/nx-X11/lib/font/Type1/util.h deleted file mode 100644 index a1a8b3e..0000000 --- a/nx-X11/lib/font/Type1/util.h +++ /dev/null @@ -1,217 +0,0 @@ -/* $Xorg: util.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */ -/* Copyright International Business Machines,Corp. 1991 - * All Rights Reserved - * - * License to use, copy, modify, and distribute this software - * and its documentation for any purpose and without fee is - * hereby granted, provided that the above copyright notice - * appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, - * and that the name of IBM not be used in advertising or - * publicity pertaining to distribution of the software without - * specific, written prior permission. - * - * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES - * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT - * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF - * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND - * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT - * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF - * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES - * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN - * NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ -/* Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved. - * - * The contents of this file are subject to the CID Font Code Public Licence - * Version 1.0 (the "License"). You may not use this file except in compliance - * with the Licence. You may obtain a copy of the License at Silicon Graphics, - * Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA - * 94043 or at http://www.sgi.com/software/opensource/cid/license.html. - * - * Software distributed under the License is distributed on an "AS IS" basis. - * ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED - * WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF - * NON-INFRINGEMENT. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Software is CID font code that was developed by Silicon - * Graphics, Inc. - */ -/* $XFree86: xc/lib/font/Type1/util.h,v 1.4 1999/08/22 08:58:55 dawes Exp $ */ - -#ifndef UTIL_H -#define UTIL_H - -#ifdef BUILDCID -#define XFONT_CID 1 -#endif - -#ifndef boolean -typedef int boolean; -#endif - -#ifndef TRUE -#define TRUE (1) -#endif - -#ifndef FALSE -#define FALSE (0) -#endif - -/***================================================================***/ -/* Portable definitions for 2's complement machines. - * NOTE: These really should be based on PostScript types, - * for example, sizeof(ps_integer), or sizeof(ps_unsigned) - */ -#define MAX_ULONG (~(unsigned long)(0)) -/* This code is portable, assuming K&R C and 2's complement arithmetic */ -#define MAX_INTEGER \ - ((long)((((unsigned long) 1)<<(sizeof(unsigned long)*8-1))-1)) -#define MIN_INTEGER ((-MAX_INTEGER)-1) - -#define MAX_ARRAY_CNT (65535) -#define MAX_DICT_CNT (65535) -#define MAX_STRING_LEN (65535) -#define MAX_NAME_LEN (128) - -/* this is the size of memory allocated for reading fonts */ - -#if XFONT_CID -#define VM_SIZE (100*1024) -#else -#define VM_SIZE (50*1024) -#endif -/***================================================================***/ - -#ifndef MIN -#define MIN(a,b) (((a)<(b)) ? a : b ) -#endif - -/***================================================================***/ -/* Routines for managing virtual memory */ -/***================================================================***/ - -extern boolean vm_init ( int cnt ); -extern long vm_free; -extern long vm_size; -extern char *vm_next; -extern char *vm_alloc ( int bytes ); - -/***================================================================***/ -/* Macros for managing virtual memory */ -/***================================================================***/ -#define vm_next_byte() (vm_next) -#define vm_free_bytes() (vm_free) -#define vm_avail(B) (B <= vm_free) - - - -/***================================================================***/ -/* Types of PostScript objects */ -/***================================================================***/ -#define OBJ_INTEGER (0) -#define OBJ_REAL (1) -#define OBJ_BOOLEAN (2) -#define OBJ_ARRAY (3) -#define OBJ_STRING (4) -#define OBJ_NAME (5) -#define OBJ_FILE (6) -#define OBJ_ENCODING (7) - -/***================================================================***/ -/* Value of PostScript objects */ -/***================================================================***/ -typedef union ps_value { - char *valueP; /* value pointer for unspecified type */ - int value; /* value for unspecified type */ - int integer; /* when type is OBJ_INTEGER */ - float real; /* when type is OBJ_REAL */ - int boolean; /* when type is OBJ_BOOLEAN */ - struct ps_obj *arrayP; /* when type is OBJ_ARRAY */ - unsigned char *stringP; /* when type is OBJ_STRING */ - char *nameP; /* when type is OBJ_NAME */ - FILE *fileP; /* when type is OBJ_FILE */ -} psvalue; - -/***================================================================***/ -/* Definition of a PostScript object */ -/***================================================================***/ -typedef struct ps_obj { - char type; - char unused; - unsigned short len; - union ps_value data; -} psobj; - -/***================================================================***/ -/* Definition of a PostScript Dictionary Entry */ -/***================================================================***/ -typedef struct ps_dict { - psobj key; - psobj value; -} psdict; - -/***================================================================***/ -/* Macros for testing type of PostScript objects */ -/***================================================================***/ -#define objIsInteger(o) ((o).type == OBJ_INTEGER) -#define objIsReal(o) ((o).type == OBJ_REAL) -#define objIsBoolean(o) ((o).type == OBJ_BOOLEAN) -#define objIsArray(o) ((o).type == OBJ_ARRAY) -#define objIsString(o) ((o).type == OBJ_STRING) -#define objIsName(o) ((o).type == OBJ_NAME) -#define objIsFile(o) ((o).type == OBJ_FILE) - -/***================================================================***/ -/* Macros for setting type of PostScript objects */ -/***================================================================***/ -#define objSetInteger(o) ((o).type = OBJ_INTEGER) -#define objSetReal(o) ((o).type = OBJ_REAL) -#define objSetBoolean(o) ((o).type = OBJ_BOOLEAN) -#define objSetArray(o) ((o).type = OBJ_ARRAY) -#define objSetString(o) ((o).type = OBJ_STRING) -#define objSetName(o) ((o).type = OBJ_NAME) -#define objSetFile(o) ((o).type = OBJ_FILE) - -/***================================================================***/ -/* Macros for testing type of PostScript objects (pointer access) */ -/***================================================================***/ -#define objPIsInteger(o) ((o)->type == OBJ_INTEGER) -#define objPIsReal(o) ((o)->type == OBJ_REAL) -#define objPIsBoolean(o) ((o)->type == OBJ_BOOLEAN) -#define objPIsArray(o) ((o)->type == OBJ_ARRAY) -#define objPIsString(o) ((o)->type == OBJ_STRING) -#define objPIsName(o) ((o)->type == OBJ_NAME) -#define objPIsFile(o) ((o)->type == OBJ_FILE) - -/***================================================================***/ -/* Macros for setting type of PostScript objects (pointer access) */ -/***================================================================***/ -#define objPSetInteger(o) ((o)->type = OBJ_INTEGER) -#define objPSetReal(o) ((o)->type = OBJ_REAL) -#define objPSetBoolean(o) ((o)->type = OBJ_BOOLEAN) -#define objPSetArray(o) ((o)->type = OBJ_ARRAY) -#define objPSetString(o) ((o)->type = OBJ_STRING) -#define objPSetName(o) ((o)->type = OBJ_NAME) -#define objPSetFile(o) ((o)->type = OBJ_FILE) - -/***================================================================***/ -/* Prototypes of object formatting functions */ -/***================================================================***/ -extern void objFormatInteger ( psobj *objP, int value ); -extern void objFormatReal ( psobj *objP, float value ); -extern void objFormatBoolean ( psobj *objP, boolean value ); -extern void objFormatEncoding ( psobj *objP, int length, psobj *valueP ); -extern void objFormatArray ( psobj *objP, int length, psobj *valueP ); -extern void objFormatString ( psobj *objP, int length, char *valueP ); -extern void objFormatName ( psobj *objP, int length, char *valueP ); -extern void objFormatFile ( psobj *objP, FILE *valueP ); - -#endif diff --git a/nx-X11/lib/font/bitmap/Imakefile b/nx-X11/lib/font/bitmap/Imakefile deleted file mode 100644 index 9acbe77..0000000 --- a/nx-X11/lib/font/bitmap/Imakefile +++ /dev/null @@ -1,71 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ - - - - -XCOMM $XFree86: xc/lib/font/bitmap/Imakefile,v 1.11 2001/04/03 17:51:59 paulo Exp $ - -#if BuildServer && DoLoadableServer -#define IHaveSubdirs -#define NoLibSubdirs -#define PassCDebugFlags -SUBDIRS = module -#endif - -BDFSRCS=bdfread.c bdfutils.c -BDFOBJS=bdfread.o bdfutils.o -#ifndef KDriveXServer -BDFDEFS=-DBDFFORMAT - -SNFSRCS=snfread.c -SNFOBJS=snfread.o -SNFDEFS=-DSNFFORMAT -#endif - -PCFSRCS=pcfread.c pcfwrite.c -PCFOBJS=pcfread.o pcfwrite.o -PCFDEFS=-DPCFFORMAT - - - INCLUDES = -I$(FONTINCSRC) -I../include - HEADERS = bdfint.h pcf.h -#ifdef FontFormatDefines - FORMAT_DEFS = FontFormatDefines -#endif -#if GzipFontCompression - GZIP_DEFS = -DX_GZIP_FONT_COMPRESSION -#endif - DEFINES = $(BDFDEFS) $(PCFDEFS) $(SNFDEFS) - - SRCS = $(BDFSRCS) bitmap.c bitmaputil.c bitscale.c \ - bitmapfunc.c $(PCFSRCS) $(SNFSRCS) \ - fontink.c - - OBJS = $(BDFOBJS) bitmap.o bitmaputil.o bitscale.o \ - bitmapfunc.o $(PCFOBJS) $(SNFOBJS) \ - fontink.o - -#if BuildFontLib -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont -#include <Library.tmpl> -LibraryObjectRule() - -SpecialCLibObjectRule(bitmapfunc,$(ICONFIGFILES),$(GZIP_DEFS)) -SpecialCLibObjectRule(bitscale,$(ICONFIGFILES),$(GZIP_DEFS)) - -SubdirLibraryRule($(OBJS)) -NormalLintTarget($(SRCS)) -#endif - -#if BuildServer && DoLoadableServer -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) -#endif - -BuildIncludes($(HEADERS),X11/fonts,../..) -InstallMultipleFlags($(HEADERS),$(INCDIR)/X11/fonts,$(INSTINCFLAGS)) - -DependTarget() diff --git a/nx-X11/lib/font/bitmap/bdfint.h b/nx-X11/lib/font/bitmap/bdfint.h deleted file mode 100644 index d41c4a5..0000000 --- a/nx-X11/lib/font/bitmap/bdfint.h +++ /dev/null @@ -1,90 +0,0 @@ -/* $Xorg: bdfint.h,v 1.4 2001/02/09 02:04:01 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/bdfint.h,v 1.4 2001/01/17 19:43:26 dawes Exp $ */ - -#ifndef BDFINT_H -#define BDFINT_H - -#define bdfIsPrefix(buf,str) (!strncmp((char *)buf,str,strlen(str))) -#define bdfStrEqual(s1,s2) (!strcmp(s1,s2)) - -#define BDF_GENPROPS 6 -#define NullProperty ((FontPropPtr)0) - -/* - * This structure holds some properties we need to generate if they aren't - * specified in the BDF file and some other values read from the file - * that we'll need to calculate them. We need to keep track of whether - * or not we've read them. - */ -typedef struct BDFSTAT { - int linenum; - char *fileName; - char fontName[MAXFONTNAMELEN]; - float pointSize; - int resolution_x; - int resolution_y; - int digitCount; - int digitWidths; - int exHeight; - - FontPropPtr fontProp; - FontPropPtr pointSizeProp; - FontPropPtr resolutionXProp; - FontPropPtr resolutionYProp; - FontPropPtr resolutionProp; - FontPropPtr xHeightProp; - FontPropPtr weightProp; - FontPropPtr quadWidthProp; - BOOL haveFontAscent; - BOOL haveFontDescent; - BOOL haveDefaultCh; -} bdfFileState; - -extern void bdfError ( char * message, ... ); -extern void bdfWarning ( char *message, ... ); -extern unsigned char * bdfGetLine ( FontFilePtr file, unsigned char *buf, - int len ); -extern Atom bdfForceMakeAtom ( char *str, int *size ); -extern Atom bdfGetPropertyValue ( char *s ); -extern int bdfIsInteger ( char *str ); -extern unsigned char bdfHexByte ( unsigned char *s ); -extern Bool bdfSpecialProperty ( FontPtr pFont, FontPropPtr prop, - char isString, bdfFileState *bdfState ); -extern int bdfReadFont( FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan ); -extern int bdfReadFontInfo( FontInfoPtr pFontInfo, FontFilePtr file ); - -extern void FontCharInkMetrics ( FontPtr pFont, CharInfoPtr pCI, - xCharInfo *pInk ); -extern void FontCharReshape ( FontPtr pFont, CharInfoPtr pSrc, - CharInfoPtr pDst ); - -#endif /* BDFINT_H */ diff --git a/nx-X11/lib/font/bitmap/bdfread.c b/nx-X11/lib/font/bitmap/bdfread.c deleted file mode 100644 index bccabd7..0000000 --- a/nx-X11/lib/font/bitmap/bdfread.c +++ /dev/null @@ -1,967 +0,0 @@ -/* $Xorg: bdfread.c,v 1.5 2001/02/09 02:04:01 xorgcvs Exp $ */ - -/************************************************************************ -Copyright 1989 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -************************************************************************/ - -/* - -Copyright 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/bdfread.c,v 1.12tsi Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifndef FONTMODULE -#include <ctype.h> -#endif -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/fontutil.h> -/* use bitmap structure */ -#include <X11/fonts/bitmap.h> -#include <X11/fonts/bdfint.h> - -#if HAVE_STDINT_H -#include <stdint.h> -#elif !defined(INT32_MAX) -#define INT32_MAX 0x7fffffff -#endif - -#define INDICES 256 -#define MAXENCODING 0xFFFF -#define BDFLINELEN 1024 - -static Bool bdfPadToTerminal(FontPtr pFont); -extern int bdfFileLineNum; - -/***====================================================================***/ - -static Bool -bdfReadBitmap(CharInfoPtr pCI, FontFilePtr file, int bit, int byte, - int glyph, int scan, CARD32 *sizes) -{ - int widthBits, - widthBytes, - widthHexChars; - int height, - row; - int i, - inLineLen, - nextByte; - unsigned char *pInBits, - *picture, - *line = NULL; - unsigned char lineBuf[BDFLINELEN]; - - widthBits = GLYPHWIDTHPIXELS(pCI); - height = GLYPHHEIGHTPIXELS(pCI); - - widthBytes = BYTES_PER_ROW(widthBits, glyph); - if (widthBytes * height > 0) { - picture = (unsigned char *) xalloc(widthBytes * height); - if (!picture) { - bdfError("Couldn't allocate picture (%d*%d)\n", widthBytes, height); - goto BAILOUT; - } - } else - picture = NULL; - pCI->bits = (char *) picture; - - if (sizes) { - for (i = 0; i < GLYPHPADOPTIONS; i++) - sizes[i] += BYTES_PER_ROW(widthBits, (1 << i)) * height; - } - nextByte = 0; - widthHexChars = BYTES_PER_ROW(widthBits, 1); - -/* 5/31/89 (ef) -- hack, hack, hack. what *am* I supposed to do with */ -/* 0 width characters? */ - - for (row = 0; row < height; row++) { - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line) - break; - - if (widthBits == 0) { - if ((!line) || (bdfIsPrefix(line, "ENDCHAR"))) - break; - else - continue; - } - pInBits = line; - inLineLen = strlen((char *) pInBits); - - if (inLineLen & 1) { - bdfError("odd number of characters in hex encoding\n"); - line[inLineLen++] = '0'; - line[inLineLen] = '\0'; - } - inLineLen >>= 1; - i = inLineLen; - if (i > widthHexChars) - i = widthHexChars; - for (; i > 0; i--, pInBits += 2) - picture[nextByte++] = bdfHexByte(pInBits); - - /* pad if line is too short */ - if (inLineLen < widthHexChars) { - for (i = widthHexChars - inLineLen; i > 0; i--) - picture[nextByte++] = 0; - } else { - unsigned char mask; - - mask = 0xff << (8 - (widthBits & 0x7)); - if (mask && picture[nextByte - 1] & ~mask) { - picture[nextByte - 1] &= mask; - } - } - - if (widthBytes > widthHexChars) { - i = widthBytes - widthHexChars; - while (i-- > 0) - picture[nextByte++] = 0; - } - } - - if ((line && (!bdfIsPrefix(line, "ENDCHAR"))) || (height == 0)) - line = bdfGetLine(file, lineBuf, BDFLINELEN); - - if ((!line) || (!bdfIsPrefix(line, "ENDCHAR"))) { - bdfError("missing 'ENDCHAR'\n"); - goto BAILOUT; - } - if (nextByte != height * widthBytes) { - bdfError("bytes != rows * bytes_per_row (%d != %d * %d)\n", - nextByte, height, widthBytes); - goto BAILOUT; - } - if (picture != NULL) { - if (bit == LSBFirst) - BitOrderInvert(picture, nextByte); - if (bit != byte) { - if (scan == 2) - TwoByteSwap(picture, nextByte); - else if (scan == 4) - FourByteSwap(picture, nextByte); - } - } - return (TRUE); -BAILOUT: - if (picture) - xfree(picture); - pCI->bits = NULL; - return (FALSE); -} - -/***====================================================================***/ - -static Bool -bdfSkipBitmap(FontFilePtr file, int height) -{ - unsigned char *line; - int i = 0; - unsigned char lineBuf[BDFLINELEN]; - - do { - line = bdfGetLine(file, lineBuf, BDFLINELEN); - i++; - } while (line && !bdfIsPrefix(line, "ENDCHAR") && i <= height); - - if (i > 1 && line && !bdfIsPrefix(line, "ENDCHAR")) { - bdfError("Error in bitmap, missing 'ENDCHAR'\n"); - return (FALSE); - } - return (TRUE); -} - -/***====================================================================***/ - -static void -bdfFreeFontBits(FontPtr pFont) -{ - BitmapFontPtr bitmapFont; - BitmapExtraPtr bitmapExtra; - int i, nencoding; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - bitmapExtra = (BitmapExtraPtr) bitmapFont->bitmapExtra; - xfree(bitmapFont->ink_metrics); - if(bitmapFont->encoding) { - nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) * - (pFont->info.lastRow - pFont->info.firstRow + 1); - for(i=0; i<NUM_SEGMENTS(nencoding); i++) - xfree(bitmapFont->encoding[i]); - } - xfree(bitmapFont->encoding); - for (i = 0; i < bitmapFont->num_chars; i++) - xfree(bitmapFont->metrics[i].bits); - xfree(bitmapFont->metrics); - if (bitmapExtra) - { - xfree (bitmapExtra->glyphNames); - xfree (bitmapExtra->sWidths); - xfree (bitmapExtra); - } - xfree(pFont->info.props); - xfree(bitmapFont); -} - - -static Bool -bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState, - int bit, int byte, int glyph, int scan) -{ - unsigned char *line; - register CharInfoPtr ci; - int i, - ndx, - nchars, - nignored; - unsigned int char_row, char_col; - int numEncodedGlyphs = 0; - CharInfoPtr *bdfEncoding[256]; - BitmapFontPtr bitmapFont; - BitmapExtraPtr bitmapExtra; - CARD32 *bitmapsSizes; - unsigned char lineBuf[BDFLINELEN]; - int nencoding; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - bitmapExtra = (BitmapExtraPtr) bitmapFont->bitmapExtra; - - if (bitmapExtra) { - bitmapsSizes = bitmapExtra->bitmapsSizes; - for (i = 0; i < GLYPHPADOPTIONS; i++) - bitmapsSizes[i] = 0; - } else - bitmapsSizes = NULL; - - bzero(bdfEncoding, sizeof(bdfEncoding)); - bitmapFont->metrics = NULL; - ndx = 0; - - line = bdfGetLine(file, lineBuf, BDFLINELEN); - - if ((!line) || (sscanf((char *) line, "CHARS %d", &nchars) != 1)) { - bdfError("bad 'CHARS' in bdf file\n"); - return (FALSE); - } - if (nchars < 1) { - bdfError("invalid number of CHARS in BDF file\n"); - return (FALSE); - } - if (nchars > INT32_MAX / sizeof(CharInfoRec)) { - bdfError("Couldn't allocate pCI (%d*%d)\n", nchars, - sizeof(CharInfoRec)); - goto BAILOUT; - } - ci = (CharInfoPtr) xalloc(nchars * sizeof(CharInfoRec)); - if (!ci) { - bdfError("Couldn't allocate pCI (%d*%d)\n", nchars, - sizeof(CharInfoRec)); - goto BAILOUT; - } - bzero((char *)ci, nchars * sizeof(CharInfoRec)); - bitmapFont->metrics = ci; - - if (bitmapExtra) { - bitmapExtra->glyphNames = (Atom *) xalloc(nchars * sizeof(Atom)); - if (!bitmapExtra->glyphNames) { - bdfError("Couldn't allocate glyphNames (%d*%d)\n", - nchars, sizeof(Atom)); - goto BAILOUT; - } - } - if (bitmapExtra) { - bitmapExtra->sWidths = (int *) xalloc(nchars * sizeof(int)); - if (!bitmapExtra->sWidths) { - bdfError("Couldn't allocate sWidth (%d *%d)\n", - nchars, sizeof(int)); - return FALSE; - } - } - line = bdfGetLine(file, lineBuf, BDFLINELEN); - pFont->info.firstRow = 256; - pFont->info.lastRow = 0; - pFont->info.firstCol = 256; - pFont->info.lastCol = 0; - nignored = 0; - for (ndx = 0; (ndx < nchars) && (line) && (bdfIsPrefix(line, "STARTCHAR"));) { - int t; - int wx; /* x component of width */ - int wy; /* y component of width */ - int bw; /* bounding-box width */ - int bh; /* bounding-box height */ - int bl; /* bounding-box left */ - int bb; /* bounding-box bottom */ - int enc, - enc2; /* encoding */ - unsigned char *p; /* temp pointer into line */ - char charName[100]; - int ignore; - - if (sscanf((char *) line, "STARTCHAR %99s", charName) != 1) { - bdfError("bad character name in BDF file\n"); - goto BAILOUT; /* bottom of function, free and return error */ - } - if (bitmapExtra) - bitmapExtra->glyphNames[ndx] = bdfForceMakeAtom(charName, NULL); - - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line || (t = sscanf((char *) line, "ENCODING %d %d", &enc, &enc2)) < 1) { - bdfError("bad 'ENCODING' in BDF file\n"); - goto BAILOUT; - } - if (enc < -1 || (t == 2 && enc2 < -1)) { - bdfError("bad ENCODING value"); - goto BAILOUT; - } - if (t == 2 && enc == -1) - enc = enc2; - ignore = 0; - if (enc == -1) { - if (!bitmapExtra) { - nignored++; - ignore = 1; - } - } else if (enc > MAXENCODING) { - bdfError("char '%s' has encoding too large (%d)\n", - charName, enc); - } else { - char_row = (enc >> 8) & 0xFF; - char_col = enc & 0xFF; - if (char_row < pFont->info.firstRow) - pFont->info.firstRow = char_row; - if (char_row > pFont->info.lastRow) - pFont->info.lastRow = char_row; - if (char_col < pFont->info.firstCol) - pFont->info.firstCol = char_col; - if (char_col > pFont->info.lastCol) - pFont->info.lastCol = char_col; - if (bdfEncoding[char_row] == (CharInfoPtr *) NULL) { - bdfEncoding[char_row] = - (CharInfoPtr *) xalloc(256 * sizeof(CharInfoPtr)); - if (!bdfEncoding[char_row]) { - bdfError("Couldn't allocate row %d of encoding (%d*%d)\n", - char_row, INDICES, sizeof(CharInfoPtr)); - goto BAILOUT; - } - for (i = 0; i < 256; i++) - bdfEncoding[char_row][i] = (CharInfoPtr) NULL; - } - if (bdfEncoding[char_row] != NULL) { - bdfEncoding[char_row][char_col] = ci; - numEncodedGlyphs++; - } - } - - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if ((!line) || (sscanf((char *) line, "SWIDTH %d %d", &wx, &wy) != 2)) { - bdfError("bad 'SWIDTH'\n"); - goto BAILOUT; - } - if (wy != 0) { - bdfError("SWIDTH y value must be zero\n"); - goto BAILOUT; - } - if (bitmapExtra) - bitmapExtra->sWidths[ndx] = wx; - -/* 5/31/89 (ef) -- we should be able to ditch the character and recover */ -/* from all of these. */ - - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if ((!line) || (sscanf((char *) line, "DWIDTH %d %d", &wx, &wy) != 2)) { - bdfError("bad 'DWIDTH'\n"); - goto BAILOUT; - } - if (wy != 0) { - bdfError("DWIDTH y value must be zero\n"); - goto BAILOUT; - } - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if ((!line) || (sscanf((char *) line, "BBX %d %d %d %d", &bw, &bh, &bl, &bb) != 4)) { - bdfError("bad 'BBX'\n"); - goto BAILOUT; - } - if ((bh < 0) || (bw < 0)) { - bdfError("character '%s' has a negative sized bitmap, %dx%d\n", - charName, bw, bh); - goto BAILOUT; - } - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if ((line) && (bdfIsPrefix(line, "ATTRIBUTES"))) { - for (p = line + strlen("ATTRIBUTES "); - (*p == ' ') || (*p == '\t'); - p++) - /* empty for loop */ ; - ci->metrics.attributes = (bdfHexByte(p) << 8) + bdfHexByte(p + 2); - line = bdfGetLine(file, lineBuf, BDFLINELEN); - } else - ci->metrics.attributes = 0; - - if (!line || !bdfIsPrefix(line, "BITMAP")) { - bdfError("missing 'BITMAP'\n"); - goto BAILOUT; - } - /* collect data for generated properties */ - if ((strlen(charName) == 1)) { - if ((charName[0] >= '0') && (charName[0] <= '9')) { - pState->digitWidths += wx; - pState->digitCount++; - } else if (charName[0] == 'x') { - pState->exHeight = (bh + bb) <= 0 ? bh : bh + bb; - } - } - if (!ignore) { - ci->metrics.leftSideBearing = bl; - ci->metrics.rightSideBearing = bl + bw; - ci->metrics.ascent = bh + bb; - ci->metrics.descent = -bb; - ci->metrics.characterWidth = wx; - ci->bits = NULL; - bdfReadBitmap(ci, file, bit, byte, glyph, scan, bitmapsSizes); - ci++; - ndx++; - } else - bdfSkipBitmap(file, bh); - - line = bdfGetLine(file, lineBuf, BDFLINELEN); /* get STARTCHAR or - * ENDFONT */ - } - - if (ndx + nignored != nchars) { - bdfError("%d too few characters\n", nchars - (ndx + nignored)); - goto BAILOUT; - } - nchars = ndx; - bitmapFont->num_chars = nchars; - if ((line) && (bdfIsPrefix(line, "STARTCHAR"))) { - bdfError("more characters than specified\n"); - goto BAILOUT; - } - if ((!line) || (!bdfIsPrefix(line, "ENDFONT"))) { - bdfError("missing 'ENDFONT'\n"); - goto BAILOUT; - } - if (numEncodedGlyphs == 0) - bdfWarning("No characters with valid encodings\n"); - - nencoding = (pFont->info.lastRow - pFont->info.firstRow + 1) * - (pFont->info.lastCol - pFont->info.firstCol + 1); - bitmapFont->encoding = - (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nencoding), - sizeof(CharInfoPtr*)); - if (!bitmapFont->encoding) { - bdfError("Couldn't allocate ppCI (%d,%d)\n", - NUM_SEGMENTS(nencoding), - sizeof(CharInfoPtr*)); - goto BAILOUT; - } - pFont->info.allExist = TRUE; - i = 0; - for (char_row = pFont->info.firstRow; - char_row <= pFont->info.lastRow; - char_row++) { - if (bdfEncoding[char_row] == (CharInfoPtr *) NULL) { - pFont->info.allExist = FALSE; - i += pFont->info.lastCol - pFont->info.firstCol + 1; - } else { - for (char_col = pFont->info.firstCol; - char_col <= pFont->info.lastCol; - char_col++) { - if (!bdfEncoding[char_row][char_col]) - pFont->info.allExist = FALSE; - else { - if (!bitmapFont->encoding[SEGMENT_MAJOR(i)]) { - bitmapFont->encoding[SEGMENT_MAJOR(i)]= - (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE, - sizeof(CharInfoPtr)); - if (!bitmapFont->encoding[SEGMENT_MAJOR(i)]) - goto BAILOUT; - } - ACCESSENCODINGL(bitmapFont->encoding,i) = - bdfEncoding[char_row][char_col]; - } - i++; - } - } - } - for (i = 0; i < 256; i++) - if (bdfEncoding[i]) - xfree(bdfEncoding[i]); - return (TRUE); -BAILOUT: - for (i = 0; i < 256; i++) - if (bdfEncoding[i]) - xfree(bdfEncoding[i]); - /* bdfFreeFontBits will clean up the rest */ - return (FALSE); -} - -/***====================================================================***/ - -static Bool -bdfReadHeader(FontFilePtr file, bdfFileState *pState) -{ - unsigned char *line; - char namebuf[BDFLINELEN]; - unsigned char lineBuf[BDFLINELEN]; - - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line || sscanf((char *) line, "STARTFONT %s", namebuf) != 1 || - !bdfStrEqual(namebuf, "2.1")) { - bdfError("bad 'STARTFONT'\n"); - return (FALSE); - } - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line || sscanf((char *) line, "FONT %[^\n]", pState->fontName) != 1) { - bdfError("bad 'FONT'\n"); - return (FALSE); - } - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line || !bdfIsPrefix(line, "SIZE")) { - bdfError("missing 'SIZE'\n"); - return (FALSE); - } - if (sscanf((char *) line, "SIZE %f%d%d", &pState->pointSize, - &pState->resolution_x, &pState->resolution_y) != 3) { - bdfError("bad 'SIZE'\n"); - return (FALSE); - } - if (pState->pointSize < 1 || - pState->resolution_x < 1 || pState->resolution_y < 1) { - bdfError("SIZE values must be > 0\n"); - return (FALSE); - } - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line || !bdfIsPrefix(line, "FONTBOUNDINGBOX")) { - bdfError("missing 'FONTBOUNDINGBOX'\n"); - return (FALSE); - } - return (TRUE); -} - -/***====================================================================***/ - -static Bool -bdfReadProperties(FontFilePtr file, FontPtr pFont, bdfFileState *pState) -{ - int nProps, props_left, - nextProp; - char *stringProps; - FontPropPtr props; - char namebuf[BDFLINELEN], - secondbuf[BDFLINELEN], - thirdbuf[BDFLINELEN]; - unsigned char *line; - unsigned char lineBuf[BDFLINELEN]; - BitmapFontPtr bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line || !bdfIsPrefix(line, "STARTPROPERTIES")) { - bdfError("missing 'STARTPROPERTIES'\n"); - return (FALSE); - } - if (sscanf((char *) line, "STARTPROPERTIES %d", &nProps) != 1) { - bdfError("bad 'STARTPROPERTIES'\n"); - return (FALSE); - } - pFont->info.isStringProp = NULL; - pFont->info.props = NULL; - pFont->info.nprops = 0; - - stringProps = (char *) xalloc((nProps + BDF_GENPROPS) * sizeof(char)); - pFont->info.isStringProp = stringProps; - if (stringProps == NULL) { - bdfError("Couldn't allocate stringProps (%d*%d)\n", - (nProps + BDF_GENPROPS), sizeof(Bool)); - goto BAILOUT; - } - pFont->info.props = props = (FontPropPtr) xalloc((nProps + BDF_GENPROPS) * - sizeof(FontPropRec)); - if (props == NULL) { - bdfError("Couldn't allocate props (%d*%d)\n", nProps + BDF_GENPROPS, - sizeof(FontPropRec)); - goto BAILOUT; - } - bzero((char *)props, (nProps + BDF_GENPROPS) * sizeof(FontPropRec)); - - nextProp = 0; - props_left = nProps; - while (props_left-- > 0) { - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (line == NULL || bdfIsPrefix(line, "ENDPROPERTIES")) { - bdfError("\"STARTPROPERTIES %d\" followed by only %d properties\n", - nProps, nProps - props_left - 1); - goto BAILOUT; - } - while (*line && isspace(*line)) - line++; - - switch (sscanf((char *) line, "%s%s%s", namebuf, secondbuf, thirdbuf)) { - default: - bdfError("missing '%s' parameter value\n", namebuf); - goto BAILOUT; - - case 2: - /* - * Possibilites include: valid quoted string with no white space - * valid integer value invalid value - */ - if (secondbuf[0] == '"') { - stringProps[nextProp] = TRUE; - props[nextProp].value = - bdfGetPropertyValue((char *)line + strlen(namebuf) + 1); - if (!props[nextProp].value) - goto BAILOUT; - break; - } else if (bdfIsInteger(secondbuf)) { - stringProps[nextProp] = FALSE; - props[nextProp].value = atoi(secondbuf); - break; - } else { - bdfError("invalid '%s' parameter value\n", namebuf); - goto BAILOUT; - } - - case 3: - /* - * Possibilites include: valid quoted string with some white space - * invalid value (reject even if second string is integer) - */ - if (secondbuf[0] == '"') { - stringProps[nextProp] = TRUE; - props[nextProp].value = - bdfGetPropertyValue((char *)line + strlen(namebuf) + 1); - if (!props[nextProp].value) - goto BAILOUT; - break; - } else { - bdfError("invalid '%s' parameter value\n", namebuf); - goto BAILOUT; - } - } - props[nextProp].name = bdfForceMakeAtom(namebuf, NULL); - if (props[nextProp].name == None) { - bdfError("Empty property name.\n"); - goto BAILOUT; - } - if (!bdfSpecialProperty(pFont, &props[nextProp], - stringProps[nextProp], pState)) - nextProp++; - } - - line = bdfGetLine(file, lineBuf, BDFLINELEN); - if (!line || !bdfIsPrefix(line, "ENDPROPERTIES")) { - bdfError("missing 'ENDPROPERTIES'\n"); - goto BAILOUT; - } - if (!pState->haveFontAscent || !pState->haveFontDescent) { - bdfError("missing 'FONT_ASCENT' or 'FONT_DESCENT' properties\n"); - goto BAILOUT; - } - if (bitmapFont->bitmapExtra) { - bitmapFont->bitmapExtra->info.fontAscent = pFont->info.fontAscent; - bitmapFont->bitmapExtra->info.fontDescent = pFont->info.fontDescent; - } - if (!pState->pointSizeProp) { - props[nextProp].name = bdfForceMakeAtom("POINT_SIZE", NULL); - props[nextProp].value = (INT32) (pState->pointSize * 10.0); - stringProps[nextProp] = FALSE; - pState->pointSizeProp = &props[nextProp]; - nextProp++; - } - if (!pState->fontProp) { - props[nextProp].name = bdfForceMakeAtom("FONT", NULL); - props[nextProp].value = (INT32) bdfForceMakeAtom(pState->fontName, NULL); - stringProps[nextProp] = TRUE; - pState->fontProp = &props[nextProp]; - nextProp++; - } - if (!pState->weightProp) { - props[nextProp].name = bdfForceMakeAtom("WEIGHT", NULL); - props[nextProp].value = -1; /* computed later */ - stringProps[nextProp] = FALSE; - pState->weightProp = &props[nextProp]; - nextProp++; - } - if (!pState->resolutionProp && - pState->resolution_x == pState->resolution_y) { - props[nextProp].name = bdfForceMakeAtom("RESOLUTION", NULL); - props[nextProp].value = (INT32) ((pState->resolution_x * 100.0) / 72.27); - stringProps[nextProp] = FALSE; - pState->resolutionProp = &props[nextProp]; - nextProp++; - } - if (!pState->resolutionXProp) { - props[nextProp].name = bdfForceMakeAtom("RESOLUTION_X", NULL); - props[nextProp].value = (INT32) pState->resolution_x; - stringProps[nextProp] = FALSE; - pState->resolutionProp = &props[nextProp]; - nextProp++; - } - if (!pState->resolutionYProp) { - props[nextProp].name = bdfForceMakeAtom("RESOLUTION_Y", NULL); - props[nextProp].value = (INT32) pState->resolution_y; - stringProps[nextProp] = FALSE; - pState->resolutionProp = &props[nextProp]; - nextProp++; - } - if (!pState->xHeightProp) { - props[nextProp].name = bdfForceMakeAtom("X_HEIGHT", NULL); - props[nextProp].value = -1; /* computed later */ - stringProps[nextProp] = FALSE; - pState->xHeightProp = &props[nextProp]; - nextProp++; - } - if (!pState->quadWidthProp) { - props[nextProp].name = bdfForceMakeAtom("QUAD_WIDTH", NULL); - props[nextProp].value = -1; /* computed later */ - stringProps[nextProp] = FALSE; - pState->quadWidthProp = &props[nextProp]; - nextProp++; - } - pFont->info.nprops = nextProp; - return (TRUE); -BAILOUT: - if (pFont->info.isStringProp) { - xfree(pFont->info.isStringProp); - pFont->info.isStringProp = NULL; - } - if (pFont->info.props) { - xfree(pFont->info.props); - pFont->info.props = NULL; - } - while (line && bdfIsPrefix(line, "ENDPROPERTIES")) - line = bdfGetLine(file, lineBuf, BDFLINELEN); - return (FALSE); -} - -/***====================================================================***/ - -static void -bdfUnloadFont(FontPtr pFont) -{ - bdfFreeFontBits (pFont); - DestroyFontRec(pFont); -} - -int -bdfReadFont(FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan) -{ - bdfFileState state; - xCharInfo *min, - *max; - BitmapFontPtr bitmapFont; - - pFont->fontPrivate = 0; - - bzero(&state, sizeof(bdfFileState)); - bdfFileLineNum = 0; - - if (!bdfReadHeader(file, &state)) - goto BAILOUT; - - bitmapFont = (BitmapFontPtr) xalloc(sizeof(BitmapFontRec)); - if (!bitmapFont) { - bdfError("Couldn't allocate bitmapFontRec (%d)\n", sizeof(BitmapFontRec)); - goto BAILOUT; - } - bzero((char *)bitmapFont, sizeof(BitmapFontRec)); - - pFont->fontPrivate = (pointer) bitmapFont; - bitmapFont->metrics = 0; - bitmapFont->ink_metrics = 0; - bitmapFont->bitmaps = 0; - bitmapFont->encoding = 0; - bitmapFont->pDefault = NULL; - - bitmapFont->bitmapExtra = (BitmapExtraPtr) xalloc(sizeof(BitmapExtraRec)); - if (!bitmapFont->bitmapExtra) { - bdfError("Couldn't allocate bitmapExtra (%d)\n", sizeof(BitmapExtraRec)); - goto BAILOUT; - } - bzero((char *)bitmapFont->bitmapExtra, sizeof(BitmapExtraRec)); - - bitmapFont->bitmapExtra->glyphNames = 0; - bitmapFont->bitmapExtra->sWidths = 0; - - if (!bdfReadProperties(file, pFont, &state)) - goto BAILOUT; - - if (!bdfReadCharacters(file, pFont, &state, bit, byte, glyph, scan)) - goto BAILOUT; - - if (state.haveDefaultCh) { - unsigned int r, c, cols; - - r = pFont->info.defaultCh >> 8; - c = pFont->info.defaultCh & 0xFF; - if (pFont->info.firstRow <= r && r <= pFont->info.lastRow && - pFont->info.firstCol <= c && c <= pFont->info.lastCol) { - cols = pFont->info.lastCol - pFont->info.firstCol + 1; - r = r - pFont->info.firstRow; - c = c - pFont->info.firstCol; - bitmapFont->pDefault = ACCESSENCODING(bitmapFont->encoding, - r * cols + c); - } - } - pFont->bit = bit; - pFont->byte = byte; - pFont->glyph = glyph; - pFont->scan = scan; - pFont->info.anamorphic = FALSE; - pFont->info.cachable = TRUE; - bitmapComputeFontBounds(pFont); - if (FontCouldBeTerminal(&pFont->info)) { - bdfPadToTerminal(pFont); - bitmapComputeFontBounds(pFont); - } - FontComputeInfoAccelerators(&pFont->info); - if (bitmapFont->bitmapExtra) - FontComputeInfoAccelerators(&bitmapFont->bitmapExtra->info); - if (pFont->info.constantMetrics) { - if (!bitmapAddInkMetrics(pFont)) { - bdfError("Failed to add bitmap ink metrics\n"); - goto BAILOUT; - } - } - if (bitmapFont->bitmapExtra) - bitmapFont->bitmapExtra->info.inkMetrics = pFont->info.inkMetrics; - - bitmapComputeFontInkBounds(pFont); -/* ComputeFontAccelerators (pFont); */ - - /* generate properties */ - min = &pFont->info.ink_minbounds; - max = &pFont->info.ink_maxbounds; - if (state.xHeightProp && (state.xHeightProp->value == -1)) - state.xHeightProp->value = state.exHeight ? - state.exHeight : min->ascent; - - if (state.quadWidthProp && (state.quadWidthProp->value == -1)) - state.quadWidthProp->value = state.digitCount ? - (INT32) (state.digitWidths / state.digitCount) : - (min->characterWidth + max->characterWidth) / 2; - - if (state.weightProp && (state.weightProp->value == -1)) - state.weightProp->value = bitmapComputeWeight(pFont); - - pFont->get_glyphs = bitmapGetGlyphs; - pFont->get_metrics = bitmapGetMetrics; - pFont->unload_font = bdfUnloadFont; - pFont->unload_glyphs = NULL; - return Successful; -BAILOUT: - if (pFont->fontPrivate) - bdfFreeFontBits (pFont); - return AllocError; -} - -int -bdfReadFontInfo(FontInfoPtr pFontInfo, FontFilePtr file) -{ - FontRec font; - int ret; - - bzero(&font, sizeof (FontRec)); - - ret = bdfReadFont(&font, file, MSBFirst, LSBFirst, 1, 1); - if (ret == Successful) { - *pFontInfo = font.info; - font.info.props = 0; - font.info.isStringProp = 0; - font.info.nprops = 0; - bdfFreeFontBits (&font); - } - return ret; -} - -static Bool -bdfPadToTerminal(FontPtr pFont) -{ - BitmapFontPtr bitmapFont; - BitmapExtraPtr bitmapExtra; - int i; - int new_size; - CharInfoRec new; - int w, - h; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - - bzero(&new, sizeof(CharInfoRec)); - new.metrics.ascent = pFont->info.fontAscent; - new.metrics.descent = pFont->info.fontDescent; - new.metrics.leftSideBearing = 0; - new.metrics.rightSideBearing = pFont->info.minbounds.characterWidth; - new.metrics.characterWidth = new.metrics.rightSideBearing; - new_size = BYTES_FOR_GLYPH(&new, pFont->glyph); - - for (i = 0; i < bitmapFont->num_chars; i++) { - new.bits = (char *) xalloc(new_size); - if (!new.bits) { - bdfError("Couldn't allocate bits (%d)\n", new_size); - return FALSE; - } - FontCharReshape(pFont, &bitmapFont->metrics[i], &new); - new.metrics.attributes = bitmapFont->metrics[i].metrics.attributes; - xfree(bitmapFont->metrics[i].bits); - bitmapFont->metrics[i] = new; - } - bitmapExtra = bitmapFont->bitmapExtra; - if (bitmapExtra) { - w = GLYPHWIDTHPIXELS(&new); - h = GLYPHHEIGHTPIXELS(&new); - for (i = 0; i < GLYPHPADOPTIONS; i++) - bitmapExtra->bitmapsSizes[i] = bitmapFont->num_chars * - (BYTES_PER_ROW(w, 1 << i) * h); - } - return TRUE; -} diff --git a/nx-X11/lib/font/bitmap/bdfutils.c b/nx-X11/lib/font/bitmap/bdfutils.c deleted file mode 100644 index a0c5ae9..0000000 --- a/nx-X11/lib/font/bitmap/bdfutils.c +++ /dev/null @@ -1,340 +0,0 @@ -/* $Xorg: bdfutils.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */ -/************************************************************************ -Copyright 1989 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -************************************************************************/ - -/* - -Copyright 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/bdfutils.c,v 1.10 2001/12/14 19:56:45 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifndef FONTMODULE -#include <ctype.h> -#include <stdio.h> -#include <stdarg.h> -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/fontstruct.h> -/* use bitmap structure */ -#include <X11/fonts/bitmap.h> -#include <X11/fonts/bdfint.h> - -int bdfFileLineNum; - -/***====================================================================***/ - -void -bdfError(char* message, ...) -{ - va_list args; - - va_start (args, message); - fprintf(stderr, "BDF Error on line %d: ", bdfFileLineNum); - vfprintf(stderr, message, args); - va_end (args); -} - -/***====================================================================***/ - -void -bdfWarning(char *message, ...) -{ - va_list args; - - va_start (args, message); - fprintf(stderr, "BDF Warning on line %d: ", bdfFileLineNum); - vfprintf(stderr, message, args); - va_end (args); -} - -/* - * read the next (non-comment) line and keep a count for error messages. - * Returns buf, or NULL if EOF. - */ - -unsigned char * -bdfGetLine(FontFilePtr file, unsigned char *buf, int len) -{ - int c; - unsigned char *b; - - for (;;) { - b = buf; - while ((c = FontFileGetc(file)) != FontFileEOF) { - if (c == '\r') - continue; - if (c == '\n') { - bdfFileLineNum++; - break; - } - if (b - buf >= (len - 1)) - break; - *b++ = c; - } - *b = '\0'; - if (c == FontFileEOF) - return NULL; - if (b != buf && !bdfIsPrefix(buf, "COMMENT")) - break; - } - return buf; -} - -/***====================================================================***/ - -Atom -bdfForceMakeAtom(char *str, int *size) -{ - register int len = strlen(str); - Atom the_atom; - - if (size != NULL) - *size += len + 1; - the_atom = MakeAtom(str, len, TRUE); - if (the_atom == None) - bdfError("Atom allocation failed\n"); - return the_atom; -} - -/***====================================================================***/ - -/* - * Handle quoted strings. - */ - -Atom -bdfGetPropertyValue(char *s) -{ - register char *p, - *pp; - char *orig_s = s; - Atom atom; - - /* strip leading white space */ - while (*s && (*s == ' ' || *s == '\t')) - s++; - if (*s == 0) { - return bdfForceMakeAtom(s, NULL); - } - if (*s != '"') { - pp = s; - /* no white space in value */ - for (pp = s; *pp; pp++) - if (*pp == ' ' || *pp == '\t' || *pp == '\015' || *pp == '\n') { - *pp = 0; - break; - } - return bdfForceMakeAtom(s, NULL); - } - /* quoted string: strip outer quotes and undouble inner quotes */ - s++; - pp = p = (char *) xalloc((unsigned) strlen(s) + 1); - if (pp == NULL) { - bdfError("Couldn't allocate property value string (%d)\n", strlen(s) + 1); - return None; - } - while (*s) { - if (*s == '"') { - if (*(s + 1) != '"') { - *p++ = 0; - atom = bdfForceMakeAtom(pp, NULL); - xfree(pp); - return atom; - } else { - s++; - } - } - *p++ = *s++; - } - xfree (pp); - bdfError("unterminated quoted string property: %s\n", (pointer) orig_s); - return None; -} - -/***====================================================================***/ - -/* - * return TRUE if string is a valid integer - */ -int -bdfIsInteger(char *str) -{ - char c; - - c = *str++; - if (!(isdigit(c) || c == '-' || c == '+')) - return (FALSE); - - while ((c = *str++)) - if (!isdigit(c)) - return (FALSE); - - return (TRUE); -} - -/***====================================================================***/ - -/* - * make a byte from the first two hex characters in glyph picture - */ - -unsigned char -bdfHexByte(unsigned char *s) -{ - unsigned char b = 0; - register char c; - int i; - - for (i = 2; i; i--) { - c = *s++; - if ((c >= '0') && (c <= '9')) - b = (b << 4) + (c - '0'); - else if ((c >= 'A') && (c <= 'F')) - b = (b << 4) + 10 + (c - 'A'); - else if ((c >= 'a') && (c <= 'f')) - b = (b << 4) + 10 + (c - 'a'); - else - bdfError("bad hex char '%c'", c); - } - return b; -} - -/***====================================================================***/ - -/* - * check for known special property values - */ - -static char *SpecialAtoms[] = { - "FONT_ASCENT", -#define BDF_FONT_ASCENT 0 - "FONT_DESCENT", -#define BDF_FONT_DESCENT 1 - "DEFAULT_CHAR", -#define BDF_DEFAULT_CHAR 2 - "POINT_SIZE", -#define BDF_POINT_SIZE 3 - "RESOLUTION", -#define BDF_RESOLUTION 4 - "X_HEIGHT", -#define BDF_X_HEIGHT 5 - "WEIGHT", -#define BDF_WEIGHT 6 - "QUAD_WIDTH", -#define BDF_QUAD_WIDTH 7 - "FONT", -#define BDF_FONT 8 - "RESOLUTION_X", -#define BDF_RESOLUTION_X 9 - "RESOLUTION_Y", -#define BDF_RESOLUTION_Y 10 - 0, -}; - -Bool -bdfSpecialProperty(FontPtr pFont, FontPropPtr prop, - char isString, bdfFileState *bdfState) -{ - char **special; - char *name; - - name = NameForAtom(prop->name); - for (special = SpecialAtoms; *special; special++) - if (!strcmp(name, *special)) - break; - - switch (special - SpecialAtoms) { - case BDF_FONT_ASCENT: - if (!isString) { - pFont->info.fontAscent = prop->value; - bdfState->haveFontAscent = TRUE; - } - return TRUE; - case BDF_FONT_DESCENT: - if (!isString) { - pFont->info.fontDescent = prop->value; - bdfState->haveFontDescent = TRUE; - } - return TRUE; - case BDF_DEFAULT_CHAR: - if (!isString) { - pFont->info.defaultCh = prop->value; - bdfState->haveDefaultCh = TRUE; - } - return TRUE; - case BDF_POINT_SIZE: - bdfState->pointSizeProp = prop; - return FALSE; - case BDF_RESOLUTION: - bdfState->resolutionProp = prop; - return FALSE; - case BDF_X_HEIGHT: - bdfState->xHeightProp = prop; - return FALSE; - case BDF_WEIGHT: - bdfState->weightProp = prop; - return FALSE; - case BDF_QUAD_WIDTH: - bdfState->quadWidthProp = prop; - return FALSE; - case BDF_FONT: - bdfState->fontProp = prop; - return FALSE; - case BDF_RESOLUTION_X: - bdfState->resolutionXProp = prop; - return FALSE; - case BDF_RESOLUTION_Y: - bdfState->resolutionYProp = prop; - return FALSE; - default: - return FALSE; - } -} diff --git a/nx-X11/lib/font/bitmap/bitmap.c b/nx-X11/lib/font/bitmap/bitmap.c deleted file mode 100644 index d238f4d..0000000 --- a/nx-X11/lib/font/bitmap/bitmap.c +++ /dev/null @@ -1,160 +0,0 @@ -/* $Xorg: bitmap.c,v 1.4 2001/02/09 02:04:02 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/bitmap.c,v 1.6 2001/01/17 19:43:27 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> - -int -bitmapGetGlyphs(FontPtr pFont, unsigned long count, unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - CharInfoPtr *glyphs) /* RETURN */ -{ - BitmapFontPtr bitmapFont; - unsigned int firstCol; - register unsigned int numCols; - unsigned int firstRow; - unsigned int numRows; - CharInfoPtr *glyphsBase; - register unsigned int c; - register CharInfoPtr pci; - unsigned int r; - CharInfoPtr **encoding; - CharInfoPtr pDefault; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - encoding = bitmapFont->encoding; - pDefault = bitmapFont->pDefault; - firstCol = pFont->info.firstCol; - numCols = pFont->info.lastCol - firstCol + 1; - glyphsBase = glyphs; - switch (charEncoding) { - - case Linear8Bit: - case TwoD8Bit: - if (pFont->info.firstRow > 0) - break; - if (pFont->info.allExist && pDefault) { - while (count--) { - c = (*chars++) - firstCol; - if (c < numCols) - *glyphs++ = ACCESSENCODING(encoding,c); - else - *glyphs++ = pDefault; - } - } else { - while (count--) { - c = (*chars++) - firstCol; - if (c < numCols && (pci = ACCESSENCODING(encoding,c))) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - } - break; - case Linear16Bit: - if (pFont->info.allExist && pDefault) { - while (count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols) - *glyphs++ = ACCESSENCODING(encoding,c); - else - *glyphs++ = pDefault; - } - } else { - while (count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols && (pci = ACCESSENCODING(encoding,c))) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - } - break; - - case TwoD16Bit: - firstRow = pFont->info.firstRow; - numRows = pFont->info.lastRow - firstRow + 1; - while (count--) { - r = (*chars++) - firstRow; - c = (*chars++) - firstCol; - if (r < numRows && c < numCols && - (pci = ACCESSENCODING(encoding, r * numCols + c))) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - break; - } - *glyphCount = glyphs - glyphsBase; - return Successful; -} - -static CharInfoRec nonExistantChar; - -int -bitmapGetMetrics(FontPtr pFont, unsigned long count, unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - xCharInfo **glyphs) /* RETURN */ -{ - int ret; - xCharInfo *ink_metrics; - CharInfoPtr metrics; - BitmapFontPtr bitmapFont; - CharInfoPtr oldDefault; - int i; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - oldDefault = bitmapFont->pDefault; - bitmapFont->pDefault = &nonExistantChar; - ret = bitmapGetGlyphs(pFont, count, chars, charEncoding, glyphCount, (CharInfoPtr *) glyphs); - if (ret == Successful) { - if (bitmapFont->ink_metrics) { - metrics = bitmapFont->metrics; - ink_metrics = bitmapFont->ink_metrics; - for (i = 0; i < *glyphCount; i++) { - if (glyphs[i] != (xCharInfo *) & nonExistantChar) - glyphs[i] = ink_metrics + (((CharInfoPtr) glyphs[i]) - metrics); - } - } - } - bitmapFont->pDefault = oldDefault; - return ret; -} diff --git a/nx-X11/lib/font/bitmap/bitmapfunc.c b/nx-X11/lib/font/bitmap/bitmapfunc.c deleted file mode 100644 index e6187e5..0000000 --- a/nx-X11/lib/font/bitmap/bitmapfunc.c +++ /dev/null @@ -1,240 +0,0 @@ -/* $Xorg: bitmapfunc.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - -/* $XFree86: xc/lib/font/bitmap/bitmapfunc.c,v 3.17 2002/09/19 13:21:58 tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -/* - * Translate monolithic #defines to modular definitions - */ - -#ifdef PCFFORMAT -#define XFONT_PCFFORMAT 1 -#endif - -#ifdef SNFFORMAT -#define XFONT_SNFFORMAT 1 -#endif - -#ifdef BDFFORMAT -#define XFONT_BDFFORMAT 1 -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#include <X11/fonts/fontutil.h> -#include <X11/fonts/bdfint.h> -#include <X11/fonts/pcf.h> -#include "snfstr.h" - -typedef struct _BitmapFileFunctions { - int (*ReadFont) (FontPtr /* pFont */, FontFilePtr /* file */, - int /* bit */, int /* byte */, - int /* glyph */, int /* scan */); - int (*ReadInfo) ( FontInfoPtr /* pFontInfo */, - FontFilePtr /* file */ ); -} BitmapFileFunctionsRec, *BitmapFileFunctionsPtr; - - -/* - * the readers[] and renderers[] arrays must be in the same order, - * and also in the same order as scale[] and find_scale[] in bitscale.c - * - */ -static BitmapFileFunctionsRec readers[] = { -#if XFONT_PCFFORMAT - { pcfReadFont, pcfReadFontInfo} , - { pcfReadFont, pcfReadFontInfo} , -#ifdef X_GZIP_FONT_COMPRESSION - { pcfReadFont, pcfReadFontInfo} , -#endif -#endif -#if XFONT_SNFFORMAT - { snfReadFont, snfReadFontInfo}, - { snfReadFont, snfReadFontInfo}, -#ifdef X_GZIP_FONT_COMPRESSION - { snfReadFont, snfReadFontInfo} , -#endif -#endif -#if XFONT_BDFFORMAT - { bdfReadFont, bdfReadFontInfo} , - { bdfReadFont, bdfReadFontInfo} , -#ifdef X_GZIP_FONT_COMPRESSION - { bdfReadFont, bdfReadFontInfo} , -#endif -#endif -#if XFONT_PCFFORMAT - { pmfReadFont, pcfReadFontInfo} , -#endif -}; - - -#define CAPABILITIES (CAP_MATRIX | CAP_CHARSUBSETTING) - -static FontRendererRec renderers[] = { -#if XFONT_PCFFORMAT - { ".pcf", 4, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, - { ".pcf.Z", 6, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, -#ifdef X_GZIP_FONT_COMPRESSION - { ".pcf.gz", 7, - BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, -#endif -#endif -#if XFONT_SNFFORMAT - { ".snf", 4, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, - { ".snf.Z", 6, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, -#ifdef X_GZIP_FONT_COMPRESSION - { ".snf.gz", 7, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, -#endif -#endif -#if XFONT_BDFFORMAT - { ".bdf", 4, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, - { ".bdf.Z", 6, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, -#ifdef X_GZIP_FONT_COMPRESSION - { ".bdf.gz", 7, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES }, -#endif -#endif -#if XFONT_PCFFORMAT - { ".pmf", 4, BitmapOpenBitmap, BitmapOpenScalable, - BitmapGetInfoBitmap, BitmapGetInfoScalable, 0, - CAPABILITIES } -#endif -}; - -int -BitmapOpenBitmap (FontPathElementPtr fpe, FontPtr *ppFont, int flags, - FontEntryPtr entry, char *fileName, - fsBitmapFormat format, fsBitmapFormatMask fmask, - FontPtr non_cachable_font) /* We don't do licensing */ -{ - FontFilePtr file; - FontPtr pFont; - int i; - int ret; - int bit, - byte, - glyph, - scan, - image; - - i = BitmapGetRenderIndex(entry->u.bitmap.renderer); - file = FontFileOpen (fileName); - if (!file) - return BadFontName; - if (!(pFont = CreateFontRec())) { - fprintf(stderr, "Error: Couldn't allocate pFont (%ld)\n", - (unsigned long)sizeof(FontRec)); - FontFileClose (file); - return AllocError; - } - /* set up default values */ - FontDefaultFormat(&bit, &byte, &glyph, &scan); - /* get any changes made from above */ - ret = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image); - - /* Fill in font record. Data format filled in by reader. */ - pFont->refcnt = 0; - - ret = (*readers[i].ReadFont) (pFont, file, bit, byte, glyph, scan); - - FontFileClose (file); - if (ret != Successful) { - xfree(pFont); - } else { - *ppFont = pFont; - } - return ret; -} - -int -BitmapGetInfoBitmap (FontPathElementPtr fpe, FontInfoPtr pFontInfo, - FontEntryPtr entry, char *fileName) -{ - FontFilePtr file; - int i; - int ret; - FontRendererPtr renderer; - - renderer = FontFileMatchRenderer (fileName); - if (!renderer) - return BadFontName; - i = BitmapGetRenderIndex(renderer); - file = FontFileOpen (fileName); - if (!file) - return BadFontName; - ret = (*readers[i].ReadInfo) (pFontInfo, file); - FontFileClose (file); - return ret; -} - -#define numRenderers (sizeof renderers / sizeof renderers[0]) - -void -BitmapRegisterFontFileFunctions (void) -{ - int i; - - for (i = 0; i < numRenderers; i++) - FontFileRegisterRenderer (&renderers[i]); -} - -/* - * compute offset into renderers array - used to find the font reader, - * the font info reader, and the bitmap scaling routine. All users - * of this routine must be kept in step with the renderer array. - */ -int -BitmapGetRenderIndex(FontRendererPtr renderer) -{ - return renderer - renderers; -} diff --git a/nx-X11/lib/font/bitmap/bitmaputil.c b/nx-X11/lib/font/bitmap/bitmaputil.c deleted file mode 100644 index 3487f7f..0000000 --- a/nx-X11/lib/font/bitmap/bitmaputil.c +++ /dev/null @@ -1,232 +0,0 @@ -/* $Xorg: bitmaputil.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/bitmaputil.c,v 1.10 2002/09/24 20:52:48 tsi Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#include <X11/fonts/bdfint.h> - -#ifndef MAXSHORT -#define MAXSHORT 32767 -#endif - -#ifndef MINSHORT -#define MINSHORT -32768 -#endif - -static xCharInfo initMinMetrics = { -MAXSHORT, MAXSHORT, MAXSHORT, MAXSHORT, MAXSHORT, 0xFFFF}; -static xCharInfo initMaxMetrics = { -MINSHORT, MINSHORT, MINSHORT, MINSHORT, MINSHORT, 0x0000}; - -#define MINMAX(field,ci) \ - if (minbounds->field > (ci)->field) \ - minbounds->field = (ci)->field; \ - if (maxbounds->field < (ci)->field) \ - maxbounds->field = (ci)->field; - -#define COMPUTE_MINMAX(ci) \ - if ((ci)->ascent || (ci)->descent || \ - (ci)->leftSideBearing || (ci)->rightSideBearing || \ - (ci)->characterWidth) \ - { \ - MINMAX(ascent, (ci)); \ - MINMAX(descent, (ci)); \ - MINMAX(leftSideBearing, (ci)); \ - MINMAX(rightSideBearing, (ci)); \ - MINMAX(characterWidth, (ci)); \ - } - -void -bitmapComputeFontBounds(FontPtr pFont) -{ - BitmapFontPtr bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - int nchars; - int r, - c; - CharInfoPtr ci; - int maxOverlap; - int overlap; - xCharInfo *minbounds, - *maxbounds; - int i; - int numneg = 0, numpos = 0; - - if (bitmapFont->bitmapExtra) { - minbounds = &bitmapFont->bitmapExtra->info.minbounds; - maxbounds = &bitmapFont->bitmapExtra->info.maxbounds; - } else { - minbounds = &pFont->info.minbounds; - maxbounds = &pFont->info.maxbounds; - } - *minbounds = initMinMetrics; - *maxbounds = initMaxMetrics; - maxOverlap = MINSHORT; - nchars = bitmapFont->num_chars; - for (i = 0, ci = bitmapFont->metrics; i < nchars; i++, ci++) { - COMPUTE_MINMAX(&ci->metrics); - if (ci->metrics.characterWidth < 0) - numneg++; - else - numpos++; - minbounds->attributes &= ci->metrics.attributes; - maxbounds->attributes |= ci->metrics.attributes; - overlap = ci->metrics.rightSideBearing - ci->metrics.characterWidth; - if (maxOverlap < overlap) - maxOverlap = overlap; - } - if (bitmapFont->bitmapExtra) { - if (numneg > numpos) - bitmapFont->bitmapExtra->info.drawDirection = RightToLeft; - else - bitmapFont->bitmapExtra->info.drawDirection = LeftToRight; - bitmapFont->bitmapExtra->info.maxOverlap = maxOverlap; - minbounds = &pFont->info.minbounds; - maxbounds = &pFont->info.maxbounds; - *minbounds = initMinMetrics; - *maxbounds = initMaxMetrics; - i = 0; - maxOverlap = MINSHORT; - for (r = pFont->info.firstRow; r <= pFont->info.lastRow; r++) { - for (c = pFont->info.firstCol; c <= pFont->info.lastCol; c++) { - ci = ACCESSENCODING(bitmapFont->encoding, i); - if (ci) { - COMPUTE_MINMAX(&ci->metrics); - if (ci->metrics.characterWidth < 0) - numneg++; - else - numpos++; - minbounds->attributes &= ci->metrics.attributes; - maxbounds->attributes |= ci->metrics.attributes; - overlap = ci->metrics.rightSideBearing - - ci->metrics.characterWidth; - if (maxOverlap < overlap) - maxOverlap = overlap; - } - i++; - } - } - } - if (numneg > numpos) - pFont->info.drawDirection = RightToLeft; - else - pFont->info.drawDirection = LeftToRight; - pFont->info.maxOverlap = maxOverlap; -} - -void -bitmapComputeFontInkBounds(FontPtr pFont) -{ - BitmapFontPtr bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - int nchars; - int r, - c; - CharInfoPtr cit; - xCharInfo *ci; - int offset; - xCharInfo *minbounds, - *maxbounds; - int i; - - if (!bitmapFont->ink_metrics) { - if (bitmapFont->bitmapExtra) { - bitmapFont->bitmapExtra->info.ink_minbounds = bitmapFont->bitmapExtra->info.minbounds; - bitmapFont->bitmapExtra->info.ink_maxbounds = bitmapFont->bitmapExtra->info.maxbounds; - } - pFont->info.ink_minbounds = pFont->info.minbounds; - pFont->info.ink_maxbounds = pFont->info.maxbounds; - } else { - if (bitmapFont->bitmapExtra) { - minbounds = &bitmapFont->bitmapExtra->info.ink_minbounds; - maxbounds = &bitmapFont->bitmapExtra->info.ink_maxbounds; - } else { - minbounds = &pFont->info.ink_minbounds; - maxbounds = &pFont->info.ink_maxbounds; - } - *minbounds = initMinMetrics; - *maxbounds = initMaxMetrics; - nchars = bitmapFont->num_chars; - for (i = 0, ci = bitmapFont->ink_metrics; i < nchars; i++, ci++) { - COMPUTE_MINMAX(ci); - minbounds->attributes &= ci->attributes; - maxbounds->attributes |= ci->attributes; - } - if (bitmapFont->bitmapExtra) { - minbounds = &pFont->info.ink_minbounds; - maxbounds = &pFont->info.ink_maxbounds; - *minbounds = initMinMetrics; - *maxbounds = initMaxMetrics; - i=0; - for (r = pFont->info.firstRow; r <= pFont->info.lastRow; r++) { - for (c = pFont->info.firstCol; c <= pFont->info.lastCol; c++) { - cit = ACCESSENCODING(bitmapFont->encoding, i); - if (cit) { - offset = cit - bitmapFont->metrics; - ci = &bitmapFont->ink_metrics[offset]; - COMPUTE_MINMAX(ci); - minbounds->attributes &= ci->attributes; - maxbounds->attributes |= ci->attributes; - } - i++; - } - } - } - } -} - -Bool -bitmapAddInkMetrics(FontPtr pFont) -{ - BitmapFontPtr bitmapFont; - int i; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - bitmapFont->ink_metrics = (xCharInfo *) xalloc(bitmapFont->num_chars * sizeof(xCharInfo)); - if (!bitmapFont->ink_metrics) { - fprintf(stderr, "Error: Couldn't allocate ink_metrics (%d*%ld)\n", - bitmapFont->num_chars, (unsigned long)sizeof(xCharInfo)); - return FALSE; - } - for (i = 0; i < bitmapFont->num_chars; i++) - FontCharInkMetrics(pFont, &bitmapFont->metrics[i], &bitmapFont->ink_metrics[i]); - pFont->info.inkMetrics = TRUE; - return TRUE; -} - -/* ARGSUSED */ -int -bitmapComputeWeight(FontPtr pFont) -{ - return 10; -} diff --git a/nx-X11/lib/font/bitmap/bitscale.c b/nx-X11/lib/font/bitmap/bitscale.c deleted file mode 100644 index 8f7247e..0000000 --- a/nx-X11/lib/font/bitmap/bitscale.c +++ /dev/null @@ -1,1978 +0,0 @@ -/* $Xorg: bitscale.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */ -/* - -Copyright 1991, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/bitscale.c,v 3.29tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -/* - * Translate monolithic #defines to modular definitions - */ - -#ifdef PCFFORMAT -#define XFONT_PCFFORMAT 1 -#endif - -#ifdef SNFFORMAT -#define XFONT_SNFFORMAT 1 -#endif - -#ifdef BDFFORMAT -#define XFONT_BDFFORMAT 1 -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#include <X11/fonts/fontutil.h> -#ifndef FONTMODULE -#ifdef _XOPEN_SOURCE -#include <math.h> -#else -#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */ -#include <math.h> -#undef _XOPEN_SOURCE -#endif -#endif - -#ifndef MAX -#define MAX(a,b) (((a)>(b)) ? a : b) -#endif - -/* Should get this from elsewhere */ -extern unsigned long serverGeneration; - -static void bitmapUnloadScalable (FontPtr pFont); -static void ScaleBitmap ( FontPtr pFont, CharInfoPtr opci, - CharInfoPtr pci, double *inv_xform, - double widthMult, double heightMult ); -static FontPtr BitmapScaleBitmaps(FontPtr pf, FontPtr opf, - double widthMult, double heightMult, - FontScalablePtr vals); -static FontPtr PrinterScaleBitmaps(FontPtr pf, FontPtr opf, - double widthMult, double heightMult, - FontScalablePtr vals); - -enum scaleType { - atom, truncate_atom, pixel_size, point_size, resolution_x, - resolution_y, average_width, scaledX, scaledY, unscaled, fontname, - raw_ascent, raw_descent, raw_pixelsize, raw_pointsize, - raw_average_width, uncomputed -}; - -typedef struct _fontProp { - char *name; - Atom atom; - enum scaleType type; -} fontProp; - -typedef FontPtr (*ScaleFunc) ( FontPtr /* pf */, - FontPtr /* opf */, - double /* widthMult */, - double /* heightMult */, - FontScalablePtr /* vals */); - -/* These next two arrays must be kept in step with the renderer array */ -ScaleFunc scale[] = -{ -#if XFONT_PCFFORMAT - BitmapScaleBitmaps, - BitmapScaleBitmaps, -#ifdef X_GZIP_FONT_COMPRESSION - BitmapScaleBitmaps, -#endif -#endif -#if XFONT_SNFFORMAT - BitmapScaleBitmaps, - BitmapScaleBitmaps, -#ifdef X_GZIP_FONT_COMPRESSION - BitmapScaleBitmaps, -#endif -#endif -#if XFONT_BDFFORMAT - BitmapScaleBitmaps, - BitmapScaleBitmaps, -#ifdef X_GZIP_FONT_COMPRESSION - BitmapScaleBitmaps, -#endif -#endif -#if XFONT_PCFFORMAT - PrinterScaleBitmaps, -#endif -}; - -static FontEntryPtr FindBestToScale ( FontPathElementPtr fpe, - FontEntryPtr entry, - FontScalablePtr vals, - FontScalablePtr best, - double *dxp, double *dyp, - double *sdxp, double *sdyp, - FontPathElementPtr *fpep ); -static FontEntryPtr FindPmfToScale ( FontPathElementPtr fpe, - FontEntryPtr entry, - FontScalablePtr vals, - FontScalablePtr best, - double *dxp, double *dyp, - double *sdxp, double *sdyp, - FontPathElementPtr *fpep ); - -typedef FontEntryPtr (*FindToScale) (FontPathElementPtr fpe, - FontEntryPtr entry, - FontScalablePtr vals, - FontScalablePtr best, - double *dxp, double *dyp, - double *sdxp, double *sdyp, - FontPathElementPtr *fpep); -FindToScale find_scale[] = -{ -#if XFONT_PCFFORMAT - FindBestToScale, - FindBestToScale, -#ifdef X_GZIP_FONT_COMPRESSION - FindBestToScale, -#endif -#endif -#if XFONT_SNFFORMAT - FindBestToScale, - FindBestToScale, -#ifdef X_GZIP_FONT_COMPRESSION - FindBestToScale, -#endif -#endif -#if XFONT_BDFFORMAT - FindBestToScale, - FindBestToScale, -#ifdef X_GZIP_FONT_COMPRESSION - FindBestToScale, -#endif -#endif -#if XFONT_PCFFORMAT - FindPmfToScale, -#endif -}; - -static unsigned long bitscaleGeneration = 0; /* initialization flag */ - -static fontProp fontNamePropTable[] = { - { "FOUNDRY", 0, atom }, - { "FAMILY_NAME", 0, atom }, - { "WEIGHT_NAME", 0, atom }, - { "SLANT", 0, atom }, - { "SETWIDTH_NAME", 0, atom }, - { "ADD_STYLE_NAME", 0, atom }, - { "PIXEL_SIZE", 0, pixel_size }, - { "POINT_SIZE", 0, point_size }, - { "RESOLUTION_X", 0, resolution_x }, - { "RESOLUTION_Y", 0, resolution_y }, - { "SPACING", 0, atom }, - { "AVERAGE_WIDTH", 0, average_width }, - { "CHARSET_REGISTRY", 0, atom }, - { "CHARSET_ENCODING", 0, truncate_atom }, - { "FONT", 0, fontname }, - { "RAW_ASCENT", 0, raw_ascent }, - { "RAW_DESCENT", 0, raw_descent }, - { "RAW_PIXEL_SIZE", 0, raw_pixelsize }, - { "RAW_POINT_SIZE", 0, raw_pointsize }, - { "RAW_AVERAGE_WIDTH", 0, raw_average_width } -}; - -#define TRANSFORM_POINT(matrix, x, y, dest) \ - ((dest)[0] = (matrix)[0] * (x) + (matrix)[2] * (y), \ - (dest)[1] = (matrix)[1] * (x) + (matrix)[3] * (y)) - -#define CHECK_EXTENT(lsb, rsb, desc, asc, data) \ - ((lsb) > (data)[0] ? (lsb) = (data)[0] : 0 , \ - (rsb) < (data)[0] ? (rsb) = (data)[0] : 0, \ - (-desc) > (data)[1] ? (desc) = -(data)[1] : 0 , \ - (asc) < (data)[1] ? (asc) = (data)[1] : 0) - -#define NPROPS (sizeof(fontNamePropTable) / sizeof(fontProp)) - -/* Warning: order of the next two tables is critically interdependent. - Location of "unscaled" properties at the end of fontPropTable[] - is important. */ - -static fontProp fontPropTable[] = { - { "MIN_SPACE", 0, scaledX }, - { "NORM_SPACE", 0, scaledX }, - { "MAX_SPACE", 0, scaledX }, - { "END_SPACE", 0, scaledX }, - { "AVG_CAPITAL_WIDTH", 0, scaledX }, - { "AVG_LOWERCASE_WIDTH", 0, scaledX }, - { "QUAD_WIDTH", 0, scaledX }, - { "FIGURE_WIDTH", 0, scaledX }, - { "SUPERSCRIPT_X", 0, scaledX }, - { "SUPERSCRIPT_Y", 0, scaledY }, - { "SUBSCRIPT_X", 0, scaledX }, - { "SUBSCRIPT_Y", 0, scaledY }, - { "SUPERSCRIPT_SIZE", 0, scaledY }, - { "SUBSCRIPT_SIZE", 0, scaledY }, - { "SMALL_CAP_SIZE", 0, scaledY }, - { "UNDERLINE_POSITION", 0, scaledY }, - { "UNDERLINE_THICKNESS", 0, scaledY }, - { "STRIKEOUT_ASCENT", 0, scaledY }, - { "STRIKEOUT_DESCENT", 0, scaledY }, - { "CAP_HEIGHT", 0, scaledY }, - { "X_HEIGHT", 0, scaledY }, - { "ITALIC_ANGLE", 0, unscaled }, - { "RELATIVE_SETWIDTH", 0, unscaled }, - { "RELATIVE_WEIGHT", 0, unscaled }, - { "WEIGHT", 0, unscaled }, - { "DESTINATION", 0, unscaled }, - { "PCL_FONT_NAME", 0, unscaled }, - { "_ADOBE_POSTSCRIPT_FONTNAME", 0, unscaled } -}; - -/* sleazy way to shut up the compiler */ -#define zerohack (enum scaleType)0 - -static fontProp rawFontPropTable[] = { - { "RAW_MIN_SPACE", 0, }, - { "RAW_NORM_SPACE", 0, }, - { "RAW_MAX_SPACE", 0, }, - { "RAW_END_SPACE", 0, }, - { "RAW_AVG_CAPITAL_WIDTH", 0, }, - { "RAW_AVG_LOWERCASE_WIDTH", 0, }, - { "RAW_QUAD_WIDTH", 0, }, - { "RAW_FIGURE_WIDTH", 0, }, - { "RAW_SUPERSCRIPT_X", 0, }, - { "RAW_SUPERSCRIPT_Y", 0, }, - { "RAW_SUBSCRIPT_X", 0, }, - { "RAW_SUBSCRIPT_Y", 0, }, - { "RAW_SUPERSCRIPT_SIZE", 0, }, - { "RAW_SUBSCRIPT_SIZE", 0, }, - { "RAW_SMALL_CAP_SIZE", 0, }, - { "RAW_UNDERLINE_POSITION", 0, }, - { "RAW_UNDERLINE_THICKNESS", 0, }, - { "RAW_STRIKEOUT_ASCENT", 0, }, - { "RAW_STRIKEOUT_DESCENT", 0, }, - { "RAW_CAP_HEIGHT", 0, }, - { "RAW_X_HEIGHT", 0, } -}; - -static void -initFontPropTable(void) -{ - int i; - fontProp *t; - - i = sizeof(fontNamePropTable) / sizeof(fontProp); - for (t = fontNamePropTable; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); - - i = sizeof(fontPropTable) / sizeof(fontProp); - for (t = fontPropTable; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); - - i = sizeof(rawFontPropTable) / sizeof(fontProp); - for (t = rawFontPropTable; i; i--, t++) - t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE); -} - -#if 0 -static FontEntryPtr -GetScalableEntry (FontPathElementPtr fpe, FontNamePtr name) -{ - FontDirectoryPtr dir; - - dir = (FontDirectoryPtr) fpe->private; - return FontFileFindNameInDir (&dir->scalable, name); -} -#endif - -static double -get_matrix_horizontal_component(double *matrix) -{ - return hypot(matrix[0], matrix[1]); -} - -static double -get_matrix_vertical_component(double *matrix) -{ - return hypot(matrix[2], matrix[3]); -} - - -static Bool -ComputeScaleFactors(FontScalablePtr from, FontScalablePtr to, - double *dx, double *dy, double *sdx, double *sdy, - double *rescale_x) -{ - double srcpixelset, destpixelset, srcpixel, destpixel; - - srcpixelset = get_matrix_horizontal_component(from->pixel_matrix); - destpixelset = get_matrix_horizontal_component(to->pixel_matrix); - srcpixel = get_matrix_vertical_component(from->pixel_matrix); - destpixel = get_matrix_vertical_component(to->pixel_matrix); - - if (srcpixelset >= EPS) - { - *dx = destpixelset / srcpixelset; - *sdx = 1000.0 / srcpixelset; - } - else - *sdx = *dx = 0; - - *rescale_x = 1.0; - - /* If client specified a width, it overrides setsize; in this - context, we interpret width as applying to the font before any - rotation, even though that's not what is ultimately returned in - the width field. */ - if (from->width > 0 && to->width > 0 && fabs(*dx) > EPS) - { - double rescale = (double)to->width / (double)from->width; - - /* If the client specified a transformation matrix, the rescaling - for width does *not* override the setsize. Instead, just check - for consistency between the setsize from the matrix and the - setsize that would result from rescaling according to the width. - This assumes (perhaps naively) that the width is correctly - reported in the name. As an interesting side effect, this test - may result in choosing a different source bitmap (one that - scales consistently between the setsize *and* the width) than it - would choose if a width were not specified. Sort of a hidden - multiple-master functionality. */ - if ((to->values_supplied & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || - (to->values_supplied & POINTSIZE_MASK) == POINTSIZE_ARRAY) - { - /* Reject if resulting width difference is >= 1 pixel */ - if (fabs(rescale * from->width - *dx * from->width) >= 10) - return FALSE; - } - else - { - *rescale_x = rescale/(*dx); - *dx = rescale; - } - } - - if (srcpixel >= EPS) - { - *dy = destpixel / srcpixel; - *sdy = 1000.0 / srcpixel; - } - else - *sdy = *dy = 0; - - return TRUE; -} - -/* favor enlargement over reduction because of aliasing resulting - from reduction */ -#define SCORE(m,s) \ -if (m >= 1.0) { \ - if (m == 1.0) \ - score += (16 * s); \ - else if (m == 2.0) \ - score += (4 * s); \ - else \ - score += (int)(((double)(3 * s)) / m); \ -} else { \ - score += (int)(((double)(2 * s)) * m); \ -} - -/* don't need to favor enlargement when looking for bitmap that can - be used unscalable */ -#define SCORE2(m,s) \ -if (m >= 1.0) \ - score += (int)(((double)(8 * s)) / m); \ -else \ - score += (int)(((double)(8 * s)) * m); - -static FontEntryPtr -FindBestToScale(FontPathElementPtr fpe, FontEntryPtr entry, - FontScalablePtr vals, FontScalablePtr best, - double *dxp, double *dyp, - double *sdxp, double *sdyp, - FontPathElementPtr *fpep) -{ - FontScalableRec temp; - int source, i; - int best_score, best_unscaled_score, - score; - double dx = 0.0, sdx = 0.0, dx_amount = 0.0, - dy = 0.0, sdy = 0.0, dy_amount = 0.0, - best_dx = 0.0, best_sdx = 0.0, best_dx_amount = 0.0, - best_dy = 0.0, best_sdy = 0.0, best_dy_amount = 0.0, - best_unscaled_sdx = 0.0, best_unscaled_sdy = 0.0, - rescale_x = 0.0, best_rescale_x = 0.0, - best_unscaled_rescale_x = 0.0; - FontEntryPtr zero; - FontNameRec zeroName; - char zeroChars[MAXFONTNAMELEN]; - FontDirectoryPtr dir; - FontScaledPtr scaled; - FontScalableExtraPtr extra; - FontScaledPtr best_scaled, best_unscaled; - FontPathElementPtr best_fpe = NULL, best_unscaled_fpe = NULL; - FontEntryPtr bitmap = NULL; - FontEntryPtr result; - int aliascount = 20; - FontPathElementPtr bitmap_fpe = NULL; - FontNameRec xlfdName; - - /* find the best match */ - rescale_x = 1.0; - best_scaled = 0; - best_score = 0; - best_unscaled = 0; - best_unscaled_score = -1; - best_dx_amount = best_dy_amount = HUGE_VAL; - memcpy (zeroChars, entry->name.name, entry->name.length); - zeroChars[entry->name.length] = '\0'; - zeroName.name = zeroChars; - FontParseXLFDName (zeroChars, &temp, FONT_XLFD_REPLACE_ZERO); - zeroName.length = strlen (zeroChars); - zeroName.ndashes = entry->name.ndashes; - xlfdName.name = vals->xlfdName; - xlfdName.length = strlen(xlfdName.name); - xlfdName.ndashes = FontFileCountDashes(xlfdName.name, xlfdName.length); - restart_bestscale_loop: ; - /* - * Look through all the registered bitmap sources for - * the same zero name as ours; entries along that one - * can be scaled as desired. - */ - for (source = 0; source < FontFileBitmapSources.count; source++) - { - /* There might already be a bitmap that satisfies the request - but didn't have a zero name that was found by the scalable - font matching logic. Keep track if there is. */ - if (bitmap == NULL && vals->xlfdName != NULL) - { - bitmap_fpe = FontFileBitmapSources.fpe[source]; - dir = (FontDirectoryPtr) bitmap_fpe->private; - bitmap = FontFileFindNameInDir (&dir->nonScalable, &xlfdName); - if (bitmap && bitmap->type != FONT_ENTRY_BITMAP) - { - if (bitmap->type == FONT_ENTRY_ALIAS && aliascount > 0) - { - aliascount--; - xlfdName.name = bitmap->u.alias.resolved; - xlfdName.length = strlen(xlfdName.name); - xlfdName.ndashes = FontFileCountDashes(xlfdName.name, - xlfdName.length); - bitmap = NULL; - goto restart_bestscale_loop; - } - else - bitmap = NULL; - } - } - - if (FontFileBitmapSources.fpe[source] == fpe) - zero = entry; - else - { - dir = (FontDirectoryPtr) FontFileBitmapSources.fpe[source]->private; - zero = FontFileFindNameInDir (&dir->scalable, &zeroName); - if (!zero) - continue; - } - extra = zero->u.scalable.extra; - for (i = 0; i < extra->numScaled; i++) - { - scaled = &extra->scaled[i]; - if (!scaled->bitmap) - continue; - if (!ComputeScaleFactors(&scaled->vals, vals, &dx, &dy, &sdx, &sdy, - &rescale_x)) - continue; - score = 0; - dx_amount = dx; - dy_amount = dy; - SCORE(dy_amount, 10); - SCORE(dx_amount, 1); - if ((score > best_score) || - ((score == best_score) && - ((dy_amount < best_dy_amount) || - ((dy_amount == best_dy_amount) && - (dx_amount < best_dx_amount))))) - { - best_fpe = FontFileBitmapSources.fpe[source]; - best_scaled = scaled; - best_score = score; - best_dx = dx; - best_dy = dy; - best_sdx = sdx; - best_sdy = sdy; - best_dx_amount = dx_amount; - best_dy_amount = dy_amount; - best_rescale_x = rescale_x; - } - /* Is this font a candidate for use without ugly rescaling? */ - if (fabs(dx) > EPS && fabs(dy) > EPS && - fabs(vals->pixel_matrix[0] * rescale_x - - scaled->vals.pixel_matrix[0]) < 1 && - fabs(vals->pixel_matrix[1] * rescale_x - - scaled->vals.pixel_matrix[1]) < EPS && - fabs(vals->pixel_matrix[2] - - scaled->vals.pixel_matrix[2]) < EPS && - fabs(vals->pixel_matrix[3] - - scaled->vals.pixel_matrix[3]) < 1) - { - /* Yes. The pixel sizes are close on the diagonal and - extremely close off the diagonal. */ - score = 0; - SCORE2(vals->pixel_matrix[3] / - scaled->vals.pixel_matrix[3], 10); - SCORE2(vals->pixel_matrix[0] * rescale_x / - scaled->vals.pixel_matrix[0], 1); - if (score > best_unscaled_score) - { - best_unscaled_fpe = FontFileBitmapSources.fpe[source]; - best_unscaled = scaled; - best_unscaled_sdx = sdx / dx; - best_unscaled_sdy = sdy / dy; - best_unscaled_score = score; - best_unscaled_rescale_x = rescale_x; - } - } - } - } - if (best_unscaled) - { - *best = best_unscaled->vals; - *fpep = best_unscaled_fpe; - *dxp = 1.0; - *dyp = 1.0; - *sdxp = best_unscaled_sdx; - *sdyp = best_unscaled_sdy; - rescale_x = best_unscaled_rescale_x; - result = best_unscaled->bitmap; - } - else if (best_scaled) - { - *best = best_scaled->vals; - *fpep = best_fpe; - *dxp = best_dx; - *dyp = best_dy; - *sdxp = best_sdx; - *sdyp = best_sdy; - rescale_x = best_rescale_x; - result = best_scaled->bitmap; - } - else - result = NULL; - - if (bitmap != NULL && (result == NULL || *dxp != 1.0 || *dyp != 1.0)) - { - *fpep = bitmap_fpe; - FontParseXLFDName (bitmap->name.name, best, FONT_XLFD_REPLACE_NONE); - if (ComputeScaleFactors(best, best, dxp, dyp, sdxp, sdyp, &rescale_x)) - result = bitmap; - else - result = NULL; - } - - if (result && rescale_x != 1.0) - { - /* We have rescaled horizontally due to an XLFD width field. Change - the matrix appropriately */ - vals->pixel_matrix[0] *= rescale_x; - vals->pixel_matrix[1] *= rescale_x; -#ifdef NOTDEF - /* This would force the pointsize and pixelsize fields in the - FONT property to display as matrices to more accurately - report the font being supplied. It might also break existing - applications that expect a single number in that field. */ - vals->values_supplied = - vals->values_supplied & ~(PIXELSIZE_MASK | POINTSIZE_MASK) | - PIXELSIZE_ARRAY; -#else /* NOTDEF */ - vals->values_supplied = vals->values_supplied & ~POINTSIZE_MASK; -#endif /* NOTDEF */ - /* Recompute and reround the FontScalablePtr values after - rescaling for the new width. */ - FontFileCompleteXLFD(vals, vals); - } - - return result; -} - -static FontEntryPtr -FindPmfToScale(FontPathElementPtr fpe, FontEntryPtr entry, - FontScalablePtr vals, FontScalablePtr best, - double *dxp, double *dyp, - double *sdxp, double *sdyp, - FontPathElementPtr *fpep) -{ - FontEntryPtr result = NULL; - FontScaledPtr scaled; - FontScalableExtraPtr extra; - int i; - - extra = entry->u.scalable.extra; - for (i = 0; i < extra->numScaled; i++) - { - double rescale_x; - - scaled = &extra->scaled[i]; - if (!scaled->bitmap) - continue; - if (!ComputeScaleFactors(&scaled->vals, vals, dxp, dyp, sdxp, sdyp, - &rescale_x)) - continue; - *best = scaled->vals; - *fpep = fpe; - result = scaled->bitmap; - if (rescale_x != 1.0) - { - /* We have rescaled horizontally due to an XLFD width field. Change - the matrix appropriately */ - vals->pixel_matrix[0] *= rescale_x; - vals->pixel_matrix[1] *= rescale_x; -#ifdef NOTDEF - /* This would force the pointsize and pixelsize fields in the - FONT property to display as matrices to more accurately - report the font being supplied. It might also break existing - applications that expect a single number in that field. */ - vals->values_supplied = - vals->values_supplied & ~(PIXELSIZE_MASK | POINTSIZE_MASK) | - PIXELSIZE_ARRAY; -#else /* NOTDEF */ - vals->values_supplied = vals->values_supplied & ~POINTSIZE_MASK; -#endif /* NOTDEF */ - /* Recompute and reround the FontScalablePtr values after - rescaling for the new width. */ - FontFileCompleteXLFD(vals, vals); - } - break; - } - return result; -} - -static long -doround(double x) -{ - return (x >= 0) ? (long)(x + .5) : (long)(x - .5); -} - -static int -computeProps(FontPropPtr pf, char *wasStringProp, - FontPropPtr npf, char *isStringProp, - unsigned int nprops, double xfactor, double yfactor, - double sXfactor, double sYfactor) -{ - int n; - int count; - fontProp *t; - double rawfactor = 0.0; - - for (count = 0; nprops > 0; nprops--, pf++, wasStringProp++) { - n = sizeof(fontPropTable) / sizeof(fontProp); - for (t = fontPropTable; n && (t->atom != pf->name); n--, t++); - if (!n) - continue; - - switch (t->type) { - case scaledX: - npf->value = doround(xfactor * (double)pf->value); - rawfactor = sXfactor; - break; - case scaledY: - npf->value = doround(yfactor * (double)pf->value); - rawfactor = sYfactor; - break; - case unscaled: - npf->value = pf->value; - npf->name = pf->name; - npf++; - count++; - *isStringProp++ = *wasStringProp; - break; - default: - break; - } - if (t->type != unscaled) - { - npf->name = pf->name; - npf++; - count++; - npf->value = doround(rawfactor * (double)pf->value); - npf->name = rawFontPropTable[t - fontPropTable].atom; - npf++; - count++; - *isStringProp++ = *wasStringProp; - *isStringProp++ = *wasStringProp; - } - } - return count; -} - - -static int -ComputeScaledProperties(FontInfoPtr sourceFontInfo, /* the font to be scaled */ - char *name, /* name of resulting font */ - FontScalablePtr vals, - double dx, double dy, /* scale factors in x and y */ - double sdx, double sdy, /* directions */ - long sWidth, /* 1000-pixel average width */ - FontPropPtr *pProps, /* returns properties; - preallocated */ - char **pIsStringProp) /* return booleans; - preallocated */ -{ - int n; - char *ptr1 = NULL, *ptr2 = NULL; - char *ptr3; - FontPropPtr fp; - fontProp *fpt; - char *isStringProp; - int nProps; - - if (bitscaleGeneration != serverGeneration) { - initFontPropTable(); - bitscaleGeneration = serverGeneration; - } - nProps = NPROPS + 1 + sizeof(fontPropTable) / sizeof(fontProp) + - sizeof(rawFontPropTable) / sizeof(fontProp); - fp = (FontPropPtr) xalloc(sizeof(FontPropRec) * nProps); - *pProps = fp; - if (!fp) { - fprintf(stderr, "Error: Couldn't allocate font properties (%ld*%d)\n", - (unsigned long)sizeof(FontPropRec), nProps); - return 1; - } - isStringProp = (char *) xalloc (nProps); - *pIsStringProp = isStringProp; - if (!isStringProp) - { - fprintf(stderr, "Error: Couldn't allocate isStringProp (%d)\n", nProps); - xfree (fp); - return 1; - } - ptr2 = name; - for (fpt = fontNamePropTable, n = NPROPS; - n; - fp++, fpt++, n--, isStringProp++) - { - - if (*ptr2) - { - ptr1 = ptr2 + 1; - if (!(ptr2 = strchr(ptr1, '-'))) ptr2 = strchr(ptr1, '\0'); - } - - *isStringProp = 0; - switch (fpt->type) { - case atom: - fp->value = MakeAtom(ptr1, ptr2 - ptr1, TRUE); - *isStringProp = 1; - break; - case truncate_atom: - for (ptr3 = ptr1; *ptr3; ptr3++) - if (*ptr3 == '[') - break; - if (!*ptr3) ptr3 = ptr2; - fp->value = MakeAtom(ptr1, ptr3 - ptr1, TRUE); - *isStringProp = 1; - break; - case pixel_size: - fp->value = doround(vals->pixel_matrix[3]); - break; - case point_size: - fp->value = doround(vals->point_matrix[3] * 10.0); - break; - case resolution_x: - fp->value = vals->x; - break; - case resolution_y: - fp->value = vals->y; - break; - case average_width: - fp->value = vals->width; - break; - case fontname: - fp->value = MakeAtom(name, strlen(name), TRUE); - *isStringProp = 1; - break; - case raw_ascent: - fp->value = sourceFontInfo->fontAscent * sdy; - break; - case raw_descent: - fp->value = sourceFontInfo->fontDescent * sdy; - break; - case raw_pointsize: - fp->value = (long)(72270.0 / (double)vals->y + .5); - break; - case raw_pixelsize: - fp->value = 1000; - break; - case raw_average_width: - fp->value = sWidth; - break; - default: - break; - } - fp->name = fpt->atom; - } - n = NPROPS; - n += computeProps(sourceFontInfo->props, sourceFontInfo->isStringProp, - fp, isStringProp, sourceFontInfo->nprops, dx, dy, - sdx, sdy); - return n; -} - - -static int -compute_xform_matrix(FontScalablePtr vals, double dx, double dy, - double *xform, double *inv_xform, - double *xmult, double *ymult) -{ - double det; - double pixel = get_matrix_vertical_component(vals->pixel_matrix); - double pixelset = get_matrix_horizontal_component(vals->pixel_matrix); - - if (pixel < EPS || pixelset < EPS) return 0; - - /* Initialize the transformation matrix to the scaling factors */ - xform[0] = dx / pixelset; - xform[1] = xform[2] = 0.0; - xform[3] = dy / pixel; - -/* Inline matrix multiply -- somewhat ugly to minimize register usage */ -#define MULTIPLY_XFORM(a,b,c,d) \ -{ \ - register double aa = (a), bb = (b), cc = (c), dd = (d); \ - register double temp; \ - temp = aa * xform[0] + cc * xform[1]; \ - aa = aa * xform[2] + cc * xform[3]; \ - xform[1] = bb * xform[0] + dd * xform[1]; \ - xform[3] = bb * xform[2] + dd * xform[3]; \ - xform[0] = temp; \ - xform[2] = aa; \ -} - - /* Rescale the transformation matrix for size of source font */ - MULTIPLY_XFORM(vals->pixel_matrix[0], - vals->pixel_matrix[1], - vals->pixel_matrix[2], - vals->pixel_matrix[3]); - - *xmult = xform[0]; - *ymult = xform[3]; - - - if (inv_xform == NULL) return 1; - - /* Compute the determinant for use in inverting the matrix. */ - det = xform[0] * xform[3] - xform[1] * xform[2]; - - /* If the determinant is tiny or zero, give up */ - if (fabs(det) < EPS) return 0; - - /* Compute the inverse */ - inv_xform[0] = xform[3] / det; - inv_xform[1] = -xform[1] / det; - inv_xform[2] = -xform[2] / det; - inv_xform[3] = xform[0] / det; - - return 1; -} - -/* - * ScaleFont - * returns a pointer to the new scaled font, or NULL (due to AllocError). - */ -static FontPtr -ScaleFont(FontPtr opf, /* originating font */ - double widthMult, /* glyphs width scale factor */ - double heightMult, /* glyphs height scale factor */ - double sWidthMult, /* scalable glyphs width scale factor */ - double sHeightMult, /* scalable glyphs height scale factor */ - FontScalablePtr vals, - double *newWidthMult, /* return: X component of glyphs width - scale factor */ - double *newHeightMult, /* return: Y component of glyphs height - scale factor */ - long *sWidth) /* return: average 1000-pixel width */ -{ - FontPtr pf; - FontInfoPtr pfi, - opfi; - BitmapFontPtr bitmapFont, - obitmapFont; - CharInfoPtr pci, - opci; - int nchars = 0; /* how many characters in the font */ - int i; - int firstCol, lastCol, firstRow, lastRow; - double xform[4], inv_xform[4]; - double xmult, ymult; - int totalwidth = 0, totalchars = 0; -#define OLDINDEX(i) (((i)/(lastCol - firstCol + 1) + \ - firstRow - opf->info.firstRow) * \ - (opf->info.lastCol - opf->info.firstCol + 1) + \ - (i)%(lastCol - firstCol + 1) + \ - firstCol - opf->info.firstCol) - - *sWidth = 0; - - opfi = &opf->info; - obitmapFont = (BitmapFontPtr) opf->fontPrivate; - - bitmapFont = 0; - if (!(pf = CreateFontRec())) { - fprintf(stderr, "Error: Couldn't allocate FontRec (%ld)\n", - (unsigned long)sizeof(FontRec)); - goto bail; - } - pf->refcnt = 0; - pf->bit = opf->bit; - pf->byte = opf->byte; - pf->glyph = opf->glyph; - pf->scan = opf->scan; - - pf->get_glyphs = bitmapGetGlyphs; - pf->get_metrics = bitmapGetMetrics; - pf->unload_font = bitmapUnloadScalable; - pf->unload_glyphs = NULL; - - pfi = &pf->info; - *pfi = *opfi; - /* If charset subsetting specified in vals, determine what our range - needs to be for the output font */ - if (vals->nranges) - { - int i; - - pfi->allExist = 0; - firstCol = 255; - lastCol = 0; - firstRow = 255; - lastRow = 0; - - for (i = 0; i < vals->nranges; i++) - { - if (vals->ranges[i].min_char_high != vals->ranges[i].max_char_high) - { - firstCol = opfi->firstCol; - lastCol = opfi->lastCol; - } - if (firstCol > vals->ranges[i].min_char_low) - firstCol = vals->ranges[i].min_char_low; - if (lastCol < vals->ranges[i].max_char_low) - lastCol = vals->ranges[i].max_char_low; - if (firstRow > vals->ranges[i].min_char_high) - firstRow = vals->ranges[i].min_char_high; - if (lastRow < vals->ranges[i].max_char_high) - lastRow = vals->ranges[i].max_char_high; - } - - if (firstCol > lastCol || firstRow > lastRow) - goto bail; - - if (firstCol < opfi->firstCol) - firstCol = opfi->firstCol; - if (lastCol > opfi->lastCol) - lastCol = opfi->lastCol; - if (firstRow < opfi->firstRow) - firstRow = opfi->firstRow; - if (lastRow > opfi->lastRow) - lastRow = opfi->lastRow; - } - else - { - firstCol = opfi->firstCol; - lastCol = opfi->lastCol; - firstRow = opfi->firstRow; - lastRow = opfi->lastRow; - } - - bitmapFont = (BitmapFontPtr) xalloc(sizeof(BitmapFontRec)); - if (!bitmapFont) { - fprintf(stderr, "Error: Couldn't allocate bitmapFont (%ld)\n", - (unsigned long)sizeof(BitmapFontRec)); - goto bail; - } - nchars = (lastRow - firstRow + 1) * (lastCol - firstCol + 1); - pfi->firstRow = firstRow; - pfi->lastRow = lastRow; - pfi->firstCol = firstCol; - pfi->lastCol = lastCol; - pf->fontPrivate = (pointer) bitmapFont; - bitmapFont->version_num = obitmapFont->version_num; - bitmapFont->num_chars = nchars; - bitmapFont->num_tables = obitmapFont->num_tables; - bitmapFont->metrics = 0; - bitmapFont->ink_metrics = 0; - bitmapFont->bitmaps = 0; - bitmapFont->encoding = 0; - bitmapFont->bitmapExtra = 0; - bitmapFont->pDefault = 0; - bitmapFont->metrics = (CharInfoPtr) xalloc(nchars * sizeof(CharInfoRec)); - if (!bitmapFont->metrics) { - fprintf(stderr, "Error: Couldn't allocate metrics (%d*%ld)\n", - nchars, (unsigned long)sizeof(CharInfoRec)); - goto bail; - } - bitmapFont->encoding = - (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nchars), - sizeof(CharInfoPtr*)); - if (!bitmapFont->encoding) { - fprintf(stderr, "Error: Couldn't allocate encoding (%d*%ld)\n", - nchars, (unsigned long)sizeof(CharInfoPtr)); - goto bail; - } - -#undef MAXSHORT -#define MAXSHORT 32767 -#undef MINSHORT -#define MINSHORT -32768 - - pfi->anamorphic = FALSE; - if (heightMult != widthMult) - pfi->anamorphic = TRUE; - pfi->cachable = TRUE; - - if (!compute_xform_matrix(vals, widthMult, heightMult, xform, - inv_xform, &xmult, &ymult)) - goto bail; - - pfi->fontAscent = opfi->fontAscent * ymult; - pfi->fontDescent = opfi->fontDescent * ymult; - - pfi->minbounds.leftSideBearing = MAXSHORT; - pfi->minbounds.rightSideBearing = MAXSHORT; - pfi->minbounds.ascent = MAXSHORT; - pfi->minbounds.descent = MAXSHORT; - pfi->minbounds.characterWidth = MAXSHORT; - pfi->minbounds.attributes = MAXSHORT; - - pfi->maxbounds.leftSideBearing = MINSHORT; - pfi->maxbounds.rightSideBearing = MINSHORT; - pfi->maxbounds.ascent = MINSHORT; - pfi->maxbounds.descent = MINSHORT; - pfi->maxbounds.characterWidth = MINSHORT; - pfi->maxbounds.attributes = MINSHORT; - - /* Compute the transformation and inverse transformation matrices. - Can fail if the determinant is zero. */ - - pci = bitmapFont->metrics; - for (i = 0; i < nchars; i++) - { - if ((opci = ACCESSENCODING(obitmapFont->encoding,OLDINDEX(i)))) - { - double newlsb, newrsb, newdesc, newasc, point[2]; - -#define minchar(p) ((p).min_char_low + ((p).min_char_high << 8)) -#define maxchar(p) ((p).max_char_low + ((p).max_char_high << 8)) - - if (vals->nranges) - { - int row = i / (lastCol - firstCol + 1) + firstRow; - int col = i % (lastCol - firstCol + 1) + firstCol; - int ch = (row << 8) + col; - int j; - for (j = 0; j < vals->nranges; j++) - if (ch >= minchar(vals->ranges[j]) && - ch <= maxchar(vals->ranges[j])) - break; - if (j == vals->nranges) - { - continue; - } - } - - if (opci->metrics.leftSideBearing == 0 && - opci->metrics.rightSideBearing == 0 && - opci->metrics.ascent == 0 && - opci->metrics.descent == 0 && - opci->metrics.characterWidth == 0) - { - continue; - } - - if(!bitmapFont->encoding[SEGMENT_MAJOR(i)]) { - bitmapFont->encoding[SEGMENT_MAJOR(i)]= - (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE, - sizeof(CharInfoPtr)); - if(!bitmapFont->encoding[SEGMENT_MAJOR(i)]) - goto bail; - } - ACCESSENCODINGL(bitmapFont->encoding, i) = pci; - - /* Compute new extents for this glyph */ - TRANSFORM_POINT(xform, - opci->metrics.leftSideBearing, - -opci->metrics.descent, - point); - newlsb = point[0]; - newrsb = newlsb; - newdesc = -point[1]; - newasc = -newdesc; - TRANSFORM_POINT(xform, - opci->metrics.leftSideBearing, - opci->metrics.ascent, - point); - CHECK_EXTENT(newlsb, newrsb, newdesc, newasc, point); - TRANSFORM_POINT(xform, - opci->metrics.rightSideBearing, - -opci->metrics.descent, - point); - CHECK_EXTENT(newlsb, newrsb, newdesc, newasc, point); - TRANSFORM_POINT(xform, - opci->metrics.rightSideBearing, - opci->metrics.ascent, - point); - CHECK_EXTENT(newlsb, newrsb, newdesc, newasc, point); - - pci->metrics.leftSideBearing = (int)floor(newlsb); - pci->metrics.rightSideBearing = (int)floor(newrsb + .5); - pci->metrics.descent = (int)ceil(newdesc); - pci->metrics.ascent = (int)floor(newasc + .5); - /* Accumulate total width of characters before transformation, - to ascertain predominant direction of font. */ - totalwidth += opci->metrics.characterWidth; - pci->metrics.characterWidth = - doround((double)opci->metrics.characterWidth * xmult); - pci->metrics.attributes = - doround((double)opci->metrics.characterWidth * sWidthMult); - if (!pci->metrics.characterWidth) - { - /* Since transformation may shrink width, height, and - escapement to zero, make sure existing characters - are not mistaken for undefined characters. */ - - if (pci->metrics.rightSideBearing == - pci->metrics.leftSideBearing) - pci->metrics.rightSideBearing++; - if (pci->metrics.ascent == -pci->metrics.descent) - pci->metrics.ascent++; - } - - pci++; - } - } - - - /* - * For each character, set the per-character metrics, scale the glyph, and - * check per-font minbounds and maxbounds character information. - */ - - pci = bitmapFont->metrics; - for (i = 0; i < nchars; i++) - { - if ((pci = ACCESSENCODING(bitmapFont->encoding,i)) && - (opci = ACCESSENCODING(obitmapFont->encoding,OLDINDEX(i)))) - { - totalchars++; - *sWidth += abs((int)(INT16)pci->metrics.attributes); -#define MINMAX(field) \ - if (pfi->minbounds.field > pci->metrics.field) \ - pfi->minbounds.field = pci->metrics.field; \ - if (pfi->maxbounds.field < pci->metrics.field) \ - pfi->maxbounds.field = pci->metrics.field - - MINMAX(leftSideBearing); - MINMAX(rightSideBearing); - MINMAX(ascent); - MINMAX(descent); - MINMAX(characterWidth); - - /* Hack: Cast attributes into a signed quantity. Tread lightly - for now and don't go changing the global Xproto.h file */ - if ((INT16)pfi->minbounds.attributes > - (INT16)pci->metrics.attributes) - pfi->minbounds.attributes = pci->metrics.attributes; - if ((INT16)pfi->maxbounds.attributes < - (INT16)pci->metrics.attributes) - pfi->maxbounds.attributes = pci->metrics.attributes; -#undef MINMAX - } - } - pfi->ink_minbounds = pfi->minbounds; - pfi->ink_maxbounds = pfi->maxbounds; - if (totalchars) - { - *sWidth = (*sWidth * 10 + totalchars / 2) / totalchars; - if (totalwidth < 0) - { - /* Dominant direction is R->L */ - *sWidth = -*sWidth; - } - - if (pfi->minbounds.characterWidth == pfi->maxbounds.characterWidth) - vals->width = pfi->minbounds.characterWidth * 10; - else - vals->width = doround((double)*sWidth * vals->pixel_matrix[0] / - 1000.0); - } - else - { - vals->width = 0; - *sWidth = 0; - } - FontComputeInfoAccelerators (pfi); - - if (pfi->defaultCh != (unsigned short) NO_SUCH_CHAR) { - unsigned int r, - c, - cols; - - r = pfi->defaultCh >> 8; - c = pfi->defaultCh & 0xFF; - if (pfi->firstRow <= r && r <= pfi->lastRow && - pfi->firstCol <= c && c <= pfi->lastCol) { - cols = pfi->lastCol - pfi->firstCol + 1; - r = r - pfi->firstRow; - c = c - pfi->firstCol; - bitmapFont->pDefault = - ACCESSENCODING(bitmapFont->encoding, r * cols + c); - } - } - - *newWidthMult = xmult; - *newHeightMult = ymult; - return pf; -bail: - if (pf) - xfree(pf); - if (bitmapFont) { - xfree(bitmapFont->metrics); - xfree(bitmapFont->ink_metrics); - xfree(bitmapFont->bitmaps); - if(bitmapFont->encoding) - for(i=0; i<NUM_SEGMENTS(nchars); i++) - xfree(bitmapFont->encoding[i]); - xfree(bitmapFont->encoding); - } - return NULL; -} - -static void -ScaleBitmap(FontPtr pFont, CharInfoPtr opci, CharInfoPtr pci, - double *inv_xform, double widthMult, double heightMult) -{ - register char *bitmap, /* The bits */ - *newBitmap; - register int bpr, /* Padding information */ - newBpr; - int width, /* Extents information */ - height, - newWidth, - newHeight; - register int row, /* Loop variables */ - col; - INT32 deltaX, /* Increments for resampling loop */ - deltaY; - INT32 xValue, /* Subscripts for resampling loop */ - yValue; - double point[2]; - unsigned char *char_grayscale = 0; - INT32 *diffusion_workspace = NULL, *thisrow = NULL, - *nextrow = NULL, pixmult = 0; - int box_x = 0, box_y = 0; - - static unsigned char masklsb[] = - { 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80 }; - static unsigned char maskmsb[] = - { 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1 }; - unsigned char *mask = (pFont->bit == LSBFirst ? masklsb : maskmsb); - - - bitmap = opci->bits; - newBitmap = pci->bits; - width = GLYPHWIDTHPIXELS(opci); - height = GLYPHHEIGHTPIXELS(opci); - newWidth = GLYPHWIDTHPIXELS(pci); - newHeight = GLYPHHEIGHTPIXELS(pci); - if (!newWidth || !newHeight || !width || !height) - return; - - bpr = BYTES_PER_ROW(width, pFont->glyph); - newBpr = BYTES_PER_ROW(newWidth, pFont->glyph); - - if (widthMult > 0.0 && heightMult > 0.0 && - (widthMult < 1.0 || heightMult < 1.0)) - { - /* We are reducing in one or both dimensions. In an attempt to - reduce aliasing, we'll antialias by passing the original - glyph through a low-pass box filter (which results in a - grayscale image), then use error diffusion to create bitonal - output in the resampling loop. */ - - /* First compute the sizes of the box filter */ - widthMult = ceil(1.0 / widthMult); - heightMult = ceil(1.0 / heightMult); - box_x = width / 2; - box_y = height / 2; - if (widthMult < (double)box_x) box_x = (int)widthMult; - if (heightMult < (double)box_y) box_y = (int)heightMult; - /* The pixmult value (below) is used to darken the image before - we perform error diffusion: a necessary concession to the - fact that it's very difficult to generate readable halftoned - glyphs. The degree of darkening is proportional to the size - of the blurring filter, hence inversely proportional to the - darkness of the lightest gray that results from antialiasing. - The result is that characters that exercise this logic (those - generated by reducing from a larger source font) tend to err - on the side of being too bold instead of being too light to - be readable. */ - pixmult = box_x * box_y * 192; - - if (box_x > 1 || box_y > 1) - { - /* Looks like we need to anti-alias. Create a workspace to - contain the grayscale character plus an additional row and - column for scratch */ - char_grayscale = - (unsigned char *)xalloc((width + 1) * (height + 1)); - if (char_grayscale) - { - diffusion_workspace = - (INT32 *)xalloc((newWidth + 2) * 2 * sizeof(int)); - if (!diffusion_workspace) - { - fprintf(stderr, "Warning: Couldn't allocate diffusion" - " workspace (%ld)\n", - (newWidth + 2) * 2 * (unsigned long)sizeof(int)); - xfree(char_grayscale); - char_grayscale = (unsigned char *)0; - } - /* Initialize our error diffusion workspace for later use */ - bzero((char *)diffusion_workspace + sizeof(INT32), - (newWidth + 3) * sizeof(int)); - thisrow = diffusion_workspace + 1; - nextrow = diffusion_workspace + newWidth + 3; - } else { - fprintf(stderr, "Warning: Couldn't allocate character grayscale (%d)\n", (width + 1) * (height + 1)); - } - } - } - - if (char_grayscale) - { - /* We will be doing antialiasing. First copy the bitmap into - our buffer, mapping input range [0,1] to output range - [0,255]. */ - register unsigned char *srcptr, *dstptr; - srcptr = (unsigned char *)bitmap; - dstptr = char_grayscale; - for (row = 0; row < height; row++) - { - for (col = 0; col < width; col++) - *dstptr++ = (srcptr[col >> 3] & mask[col & 0x7]) ? 255 : 0; - srcptr += bpr; /* On to next row of source */ - dstptr++; /* Skip scratch column in dest */ - } - if (box_x > 1) - { - /* Our box filter has a width > 1... let's filter the rows */ - - int right_width = box_x / 2; - int left_width = box_x - right_width - 1; - - for (row = 0; row < height; row++) - { - int sum = 0; - int left_size = 0, right_size = 0; - - srcptr = char_grayscale + (width + 1) * row; - dstptr = char_grayscale + (width + 1) * height; /* scratch */ - - /* We've computed the shape of our full box filter. Now - compute the right-hand part of the moving sum */ - for (right_size = 0; right_size < right_width; right_size++) - sum += srcptr[right_size]; - - /* Now start moving the sum, growing the box filter, and - dropping averages into our scratch buffer */ - for (left_size = 0; left_size < left_width; left_size++) - { - sum += srcptr[right_width]; - *dstptr++ = sum / (left_size + right_width + 1); - srcptr++; - } - - /* The box filter has reached full width... continue - computation of moving average until the right side - hits the wall. */ - for (col = left_size; col + right_size < width; col++) - { - sum += srcptr[right_width]; - *dstptr++ = sum / box_x; - sum -= srcptr[-left_width]; - srcptr++; - } - - /* Collapse the right side of the box filter */ - for (; right_size > 0; right_size--) - { - *dstptr++ = sum / (left_width + right_size); - sum -= srcptr[-left_width]; - srcptr++; - } - - /* Done with the row... copy dest back over source */ - memmove(char_grayscale + (width + 1) * row, - char_grayscale + (width + 1) * height, - width); - } - } - if (box_y > 1) - { - /* Our box filter has a height > 1... let's filter the columns */ - - int bottom_height = box_y / 2; - int top_height = box_y - bottom_height - 1; - - for (col = 0; col < width; col++) - { - int sum = 0; - int top_size = 0, bottom_size = 0; - - srcptr = char_grayscale + col; - dstptr = char_grayscale + width; /* scratch */ - - /* We've computed the shape of our full box filter. Now - compute the bottom part of the moving sum */ - for (bottom_size = 0; - bottom_size < bottom_height; - bottom_size++) - sum += srcptr[bottom_size * (width + 1)]; - - /* Now start moving the sum, growing the box filter, and - dropping averages into our scratch buffer */ - for (top_size = 0; top_size < top_height; top_size++) - { - sum += srcptr[bottom_height * (width + 1)]; - *dstptr = sum / (top_size + bottom_height + 1); - dstptr += width + 1; - srcptr += width + 1; - } - - /* The box filter has reached full height... continue - computation of moving average until the bottom - hits the wall. */ - for (row = top_size; row + bottom_size < height; row++) - { - sum += srcptr[bottom_height * (width + 1)]; - *dstptr = sum / box_y; - dstptr += width + 1; - sum -= srcptr[-top_height * (width + 1)]; - srcptr += width + 1; - } - - /* Collapse the bottom of the box filter */ - for (; bottom_size > 0; bottom_size--) - { - *dstptr = sum / (top_height + bottom_size); - dstptr += width + 1; - sum -= srcptr[-top_height * (width + 1)]; - srcptr += width + 1; - } - - /* Done with the column... copy dest back over source */ - - dstptr = char_grayscale + col; - srcptr = char_grayscale + width; /* scratch */ - for (row = 0; row < height; row++) - { - *dstptr = *srcptr; - dstptr += width + 1; - srcptr += width + 1; - } - } - } - - /* Increase the grayvalue to increase ink a bit */ - srcptr = char_grayscale; - for (row = 0; row < height; row++) - { - for (col = 0; col < width; col++) - { - register int pixvalue = (int)*srcptr * pixmult / 256; - if (pixvalue > 255) pixvalue = 255; - *srcptr = pixvalue; - srcptr++; - } - srcptr++; - } - } - - /* Compute the increment values for the resampling loop */ - TRANSFORM_POINT(inv_xform, 1, 0, point); - deltaX = (INT32)(point[0] * 65536.0); - deltaY = (INT32)(-point[1] * 65536.0); - - /* Resampling loop: resamples original glyph for generation of new - glyph in transformed coordinate system. */ - - for (row = 0; row < newHeight; row++) - { - /* Compute inverse transformation for start of this row */ - TRANSFORM_POINT(inv_xform, - (double)(pci->metrics.leftSideBearing) + .5, - (double)(pci->metrics.ascent - row) - .5, - point); - - /* Adjust for coordinate system to get resampling point */ - point[0] -= opci->metrics.leftSideBearing; - point[1] = opci->metrics.ascent - point[1]; - - /* Convert to integer coordinates */ - xValue = (INT32)(point[0] * 65536.0); - yValue = (INT32)(point[1] * 65536.0); - - if (char_grayscale) - { - INT32 *temp; - for (col = 0; col < newWidth; col++) - { - register int x = xValue >> 16, y = yValue >> 16; - int pixvalue, error; - - pixvalue = ((x >= 0 && x < width && y >= 0 && y < height) ? - char_grayscale[x + y * (width + 1)] : 0) + - thisrow[col] / 16; - if (pixvalue > 255) pixvalue = 255; - else if (pixvalue < 0) pixvalue = 0; - - /* Choose the bit value and set resulting error value */ - if (pixvalue >= 128) - { - newBitmap[(col >> 3) + row * newBpr] |= mask[col & 0x7]; - error = pixvalue - 255; - } - else - error = -pixvalue; - - /* Diffuse the error */ - thisrow[col + 1] += error * 7; - nextrow[col - 1] += error * 3; - nextrow[col] += error * 5; - nextrow[col + 1] = error; - - xValue += deltaX; - yValue += deltaY; - } - - /* Add in error values that fell off either end */ - nextrow[0] += nextrow[-1]; - nextrow[newWidth - 2] += thisrow[newWidth]; - nextrow[newWidth - 1] += nextrow[newWidth]; - nextrow[newWidth] = 0; - - temp = nextrow; - nextrow = thisrow; - thisrow = temp; - nextrow[-1] = nextrow[0] = 0; - } - else - { - for (col = 0; col < newWidth; col++) - { - register int x = xValue >> 16, y = yValue >> 16; - - if (x >= 0 && x < width && y >= 0 && y < height) - { - /* Use point-sampling for rescaling. */ - - if (bitmap[(x >> 3) + y * bpr] & mask[x & 0x7]) - newBitmap[(col >> 3) + row * newBpr] |= mask[col & 0x7]; - } - - xValue += deltaX; - yValue += deltaY; - } - } - } - - - if (char_grayscale) - { - xfree(char_grayscale); - xfree(diffusion_workspace); - } -} - -static FontPtr -BitmapScaleBitmaps(FontPtr pf, /* scaled font */ - FontPtr opf, /* originating font */ - double widthMult, /* glyphs width scale factor */ - double heightMult, /* glyphs height scale factor */ - FontScalablePtr vals) -{ - register int i; - int nchars = 0; - char *glyphBytes; - BitmapFontPtr bitmapFont, - obitmapFont; - CharInfoPtr pci, - opci; - FontInfoPtr pfi; - int glyph; - unsigned bytestoalloc = 0; - int firstCol, lastCol, firstRow, lastRow; - - double xform[4], inv_xform[4]; - double xmult, ymult; - - bitmapFont = (BitmapFontPtr) pf->fontPrivate; - obitmapFont = (BitmapFontPtr) opf->fontPrivate; - - if (!compute_xform_matrix(vals, widthMult, heightMult, xform, - inv_xform, &xmult, &ymult)) - goto bail; - - pfi = &pf->info; - firstCol = pfi->firstCol; - lastCol = pfi->lastCol; - firstRow = pfi->firstRow; - lastRow = pfi->lastRow; - - nchars = (lastRow - firstRow + 1) * (lastCol - firstCol + 1); - glyph = pf->glyph; - for (i = 0; i < nchars; i++) - { - if ((pci = ACCESSENCODING(bitmapFont->encoding, i))) - bytestoalloc += BYTES_FOR_GLYPH(pci, glyph); - } - - /* Do we add the font malloc stuff for VALUE ADDED ? */ - /* Will need to remember to free in the Unload routine */ - - - bitmapFont->bitmaps = (char *) xalloc(bytestoalloc); - if (!bitmapFont->bitmaps) { - fprintf(stderr, "Error: Couldn't allocate bitmaps (%d)\n", bytestoalloc); - goto bail; - } - bzero(bitmapFont->bitmaps, bytestoalloc); - - glyphBytes = bitmapFont->bitmaps; - for (i = 0; i < nchars; i++) - { - if ((pci = ACCESSENCODING(bitmapFont->encoding, i)) && - (opci = ACCESSENCODING(obitmapFont->encoding, OLDINDEX(i)))) - { - pci->bits = glyphBytes; - ScaleBitmap (pf, opci, pci, inv_xform, - widthMult, heightMult); - glyphBytes += BYTES_FOR_GLYPH(pci, glyph); - } - } - return pf; - -bail: - if (pf) - xfree(pf); - if (bitmapFont) { - xfree(bitmapFont->metrics); - xfree(bitmapFont->ink_metrics); - xfree(bitmapFont->bitmaps); - if(bitmapFont->encoding) - for(i=0; i<NUM_SEGMENTS(nchars); i++) - xfree(bitmapFont->encoding[i]); - xfree(bitmapFont->encoding); - } - return NULL; -} - -static FontPtr -PrinterScaleBitmaps(FontPtr pf, /* scaled font */ - FontPtr opf, /* originating font */ - double widthMult, /* glyphs width scale factor */ - double heightMult, /* glyphs height scale factor */ - FontScalablePtr vals) -{ - register int i; - int nchars = 0; - char *glyphBytes; - BitmapFontPtr bitmapFont, - obitmapFont; - CharInfoPtr pci; - FontInfoPtr pfi; - int glyph; - unsigned bytestoalloc = 0; - int firstCol, lastCol, firstRow, lastRow; - - double xform[4], inv_xform[4]; - double xmult, ymult; - - bitmapFont = (BitmapFontPtr) pf->fontPrivate; - obitmapFont = (BitmapFontPtr) opf->fontPrivate; - - if (!compute_xform_matrix(vals, widthMult, heightMult, xform, - inv_xform, &xmult, &ymult)) - goto bail; - - pfi = &pf->info; - firstCol = pfi->firstCol; - lastCol = pfi->lastCol; - firstRow = pfi->firstRow; - lastRow = pfi->lastRow; - - nchars = (lastRow - firstRow + 1) * (lastCol - firstCol + 1); - glyph = pf->glyph; - for (i = 0; i < nchars; i++) - { - if ((pci = ACCESSENCODING(bitmapFont->encoding, i))) - bytestoalloc = MAX(bytestoalloc,BYTES_FOR_GLYPH(pci, glyph)); - } - - /* Do we add the font malloc stuff for VALUE ADDED ? */ - /* Will need to remember to free in the Unload routine */ - - - bitmapFont->bitmaps = (char *) xalloc(bytestoalloc); - if (!bitmapFont->bitmaps) { - fprintf(stderr, "Error: Couldn't allocate bitmaps (%d)\n", bytestoalloc); - goto bail; - } - bzero(bitmapFont->bitmaps, bytestoalloc); - - glyphBytes = bitmapFont->bitmaps; - for (i = 0; i < nchars; i++) - { - if ((pci = ACCESSENCODING(bitmapFont->encoding, i)) && - (ACCESSENCODING(obitmapFont->encoding, OLDINDEX(i)))) - { - pci->bits = glyphBytes; - } - } - return pf; - -bail: - if (pf) - xfree(pf); - if (bitmapFont) { - xfree(bitmapFont->metrics); - xfree(bitmapFont->ink_metrics); - xfree(bitmapFont->bitmaps); - if(bitmapFont->encoding) - for(i=0; i<NUM_SEGMENTS(nchars); i++) - xfree(bitmapFont->encoding[i]); - xfree(bitmapFont->encoding); - } - return NULL; -} - -#ifdef NOTDEF -/* - * exported interfaces - */ - -FontFileLoadName(FontFileDirPtr *dirs, int ndirs, char *name, FontPtr *pfont, - fsBitmapFormat format, fsBitmapFormatMask fmask) -{ - FontFileNamePtr fname; - char full_name[1024]; - int ret = BadFontName; - int i; - - i = 0; - while (i < ndirs) { - if (fname = FontFileFindNameInDir(dirs[i], name)) { - if (!fname->alias) { - if (!fname->font) { - strcpy(full_name, dirs[i]->dir); - strcat(full_name, fname->file); - ret = FontFileLoad(pfont, full_name, format, fmask); - if (ret == Successful) { - fname->font = *pfont; - (*pfont)->fpePrivate = (pointer) fname; - } - return ret; - } - *pfont = fname->font; - return Successful; - } - name = fname->file; - i = 0; - } else - i++; - } - return BadFontName; -} -#endif - -/* ARGSUSED */ -int -BitmapOpenScalable (FontPathElementPtr fpe, - FontPtr *pFont, - int flags, - FontEntryPtr entry, - char *fileName, /* unused */ - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font) /* We don't do licensing */ -{ - FontScalableRec best; - FontPtr font = NullFont; - double dx, sdx, - dy, sdy, - savedX, savedY; - FontPropPtr props; - char *isStringProp; - int propCount; - int status; - long sWidth; - - FontEntryPtr scaleFrom; - FontPathElementPtr scaleFPE; - FontPtr sourceFont; - char fontName[MAXFONTNAMELEN]; - - /* Can't deal with mix-endian fonts yet */ - -#ifdef NOTDEF /* XXX need better test */ - if ((format & BitmapFormatByteOrderMask) != - (format & BitmapFormatBitOrderMask)) - return NullFontFileName; -#endif - - /* Reject outrageously small font sizes to keep the math from - blowing up. */ - if (get_matrix_vertical_component(vals->pixel_matrix) < 1.0 || - get_matrix_horizontal_component(vals->pixel_matrix) < 1.0) - return BadFontName; - - scaleFrom = (*find_scale[BitmapGetRenderIndex(entry->u.bitmap.renderer)]) - (fpe, entry, vals, &best, &dx, &dy, &sdx, &sdy, &scaleFPE); - - if (!scaleFrom) - return BadFontName; - - status = FontFileOpenBitmap(scaleFPE, &sourceFont, LoadAll, scaleFrom, - format, fmask); - - if (status != Successful) - return BadFontName; - - if (!vals->width) - vals->width = best.width * dx; - - /* Compute the scaled font */ - - savedX = dx; - savedY = dy; - font = ScaleFont(sourceFont, dx, dy, sdx, sdy, vals, &dx, &dy, &sWidth); - if (font) - font = (*scale[ BitmapGetRenderIndex(entry->u.bitmap.renderer) ]) - (font, sourceFont, savedX, savedY, vals); - - if (!font) - { - if (!sourceFont->refcnt) - FontFileCloseFont((FontPathElementPtr) 0, sourceFont); - return AllocError; - } - - /* Prepare font properties for the new font */ - - strcpy (fontName, scaleFrom->name.name); - FontParseXLFDName (fontName, vals, FONT_XLFD_REPLACE_VALUE); - - propCount = ComputeScaledProperties(&sourceFont->info, fontName, vals, - dx, dy, sdx, sdy, sWidth, &props, - &isStringProp); - - if (!sourceFont->refcnt) - FontFileCloseFont((FontPathElementPtr) 0, sourceFont); - - if (propCount && (!props || !isStringProp)) - { - font->info.nprops = 0; - font->info.props = (FontPropPtr)0; - font->info.isStringProp = (char *)0; - bitmapUnloadScalable(font); - return AllocError; - } - - font->info.props = props; - font->info.nprops = propCount; - font->info.isStringProp = isStringProp; - - *pFont = font; - return Successful; -} - -int -BitmapGetInfoScalable (FontPathElementPtr fpe, - FontInfoPtr pFontInfo, - FontEntryPtr entry, - FontNamePtr fontName, - char *fileName, - FontScalablePtr vals) -{ - FontPtr pfont; - int flags = 0; - long format = 0; /* It doesn't matter what format for just info */ - long fmask = 0; - int ret; - - ret = BitmapOpenScalable(fpe, &pfont, flags, entry, fileName, vals, - format, fmask, NULL); - if (ret != Successful) - return ret; - *pFontInfo = pfont->info; - - pfont->info.nprops = 0; - pfont->info.props = NULL; - pfont->info.isStringProp = NULL; - - (*pfont->unload_font)(pfont); - return Successful; -} - -static void -bitmapUnloadScalable (FontPtr pFont) -{ - BitmapFontPtr bitmapFont; - FontInfoPtr pfi; - int i, nencoding; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - pfi = &pFont->info; - xfree (pfi->props); - xfree (pfi->isStringProp); - if(bitmapFont->encoding) { - nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) * - (pFont->info.lastRow - pFont->info.firstRow + 1); - for(i=0; i<NUM_SEGMENTS(nencoding); i++) - xfree(bitmapFont->encoding[i]); - } - xfree (bitmapFont->encoding); - xfree (bitmapFont->bitmaps); - xfree (bitmapFont->ink_metrics); - xfree (bitmapFont->metrics); - xfree (pFont->fontPrivate); - DestroyFontRec (pFont); -} diff --git a/nx-X11/lib/font/bitmap/fontink.c b/nx-X11/lib/font/bitmap/fontink.c deleted file mode 100644 index a9606f0..0000000 --- a/nx-X11/lib/font/bitmap/fontink.c +++ /dev/null @@ -1,219 +0,0 @@ -/* $Xorg: fontink.c,v 1.4 2001/02/09 02:04:02 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/fontink.c,v 1.6 2001/01/17 19:43:27 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#include <X11/fonts/bdfint.h> - -static unsigned char ink_mask_msb[8] = { - 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, -}; - -static unsigned char ink_mask_lsb[8] = { - 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, -}; - -void -FontCharInkMetrics(FontPtr pFont, CharInfoPtr pCI, xCharInfo *pInk) -{ - int leftBearing, - ascent, - descent; - register int vpos, - hpos, - bpos = 0; - int bitmapByteWidth, - bitmapByteWidthPadded; - int bitmapBitWidth; - int span; - register unsigned char *p; - unsigned char *ink_mask = 0; - register int bmax; - register unsigned char charbits; - - if (pFont->bit == MSBFirst) - ink_mask = ink_mask_msb; - else if (pFont->bit == LSBFirst) - ink_mask = ink_mask_lsb; - pInk->characterWidth = pCI->metrics.characterWidth; - pInk->attributes = pCI->metrics.attributes; - - leftBearing = pCI->metrics.leftSideBearing; - ascent = pCI->metrics.ascent; - descent = pCI->metrics.descent; - bitmapBitWidth = GLYPHWIDTHPIXELS(pCI); - bitmapByteWidth = GLYPHWIDTHBYTES(pCI); - bitmapByteWidthPadded = BYTES_PER_ROW(bitmapBitWidth, pFont->glyph); - span = bitmapByteWidthPadded - bitmapByteWidth; - - p = (unsigned char *) pCI->bits; - for (vpos = descent + ascent; --vpos >= 0;) { - for (hpos = bitmapByteWidth; --hpos >= 0;) { - if (*p++ != 0) - goto found_ascent; - } - p += span; - } - /* - * special case -- font with no bits gets all zeros - */ - pInk->leftSideBearing = leftBearing; - pInk->rightSideBearing = leftBearing; - pInk->ascent = 0; - pInk->descent = 0; - return; -found_ascent: - pInk->ascent = vpos - descent + 1; - - p = ((unsigned char *) pCI->bits) + bitmapByteWidthPadded * - (descent + ascent - 1) + bitmapByteWidth; - - for (vpos = descent + ascent; --vpos >= 0;) { - for (hpos = bitmapByteWidth; --hpos >= 0;) { - if (*--p != 0) - goto found_descent; - } - p -= span; - } -found_descent: - pInk->descent = vpos - ascent + 1; - - bmax = 8; - for (hpos = 0; hpos < bitmapByteWidth; hpos++) { - charbits = 0; - p = (unsigned char *) pCI->bits + hpos; - for (vpos = descent + ascent; --vpos >= 0; p += bitmapByteWidthPadded) - charbits |= *p; - if (charbits) { - if (hpos == bitmapByteWidth - 1) - bmax = bitmapBitWidth - (hpos << 3); - p = ink_mask; - for (bpos = bmax; --bpos >= 0;) { - if (charbits & *p++) - goto found_left; - } - } - } -found_left: - pInk->leftSideBearing = leftBearing + (hpos << 3) + bmax - bpos - 1; - - bmax = bitmapBitWidth - ((bitmapByteWidth - 1) << 3); - for (hpos = bitmapByteWidth; --hpos >= 0;) { - charbits = 0; - p = (unsigned char *) pCI->bits + hpos; - for (vpos = descent + ascent; --vpos >= 0; p += bitmapByteWidthPadded) - charbits |= *p; - if (charbits) { - p = ink_mask + bmax; - for (bpos = bmax; --bpos >= 0;) { - if (charbits & *--p) - goto found_right; - } - } - bmax = 8; - } -found_right: - pInk->rightSideBearing = leftBearing + (hpos << 3) + bpos + 1; -} - -#define ISBITONMSB(x, line) ((line)[(x)/8] & (1 << (7-((x)%8)))) -#define SETBITMSB(x, line) ((line)[(x)/8] |= (1 << (7-((x)%8)))) -#define ISBITONLSB(x, line) ((line)[(x)/8] & (1 << ((x)%8))) -#define SETBITLSB(x, line) ((line)[(x)/8] |= (1 << ((x)%8))) - -#define Min(a,b) ((a)<(b)?(a):(b)) -#define Max(a,b) ((a)>(b)?(a):(b)) - -void -FontCharReshape(FontPtr pFont, CharInfoPtr pSrc, CharInfoPtr pDst) -{ - int x, - y; - unsigned char *in_line, - *out_line; - unsigned char *oldglyph, - *newglyph; - int inwidth; - int outwidth, - outheight; - int out_bytes, - in_bytes; - int y_min, - y_max, - x_min, - x_max; - - newglyph = (unsigned char *) pDst->bits; - outwidth = pDst->metrics.rightSideBearing - pDst->metrics.leftSideBearing; - outheight = pDst->metrics.descent + pDst->metrics.ascent; - out_bytes = BYTES_PER_ROW(outwidth, pFont->glyph); - - oldglyph = (unsigned char *) pSrc->bits; - inwidth = pSrc->metrics.rightSideBearing - pSrc->metrics.leftSideBearing; - in_bytes = BYTES_PER_ROW(inwidth, pFont->glyph); - - bzero(newglyph, out_bytes * outheight); - in_line = oldglyph; - out_line = newglyph; - y_min = Max(-pSrc->metrics.ascent, -pDst->metrics.ascent); - y_max = Min(pSrc->metrics.descent, pDst->metrics.descent); - x_min = Max(pSrc->metrics.leftSideBearing, pDst->metrics.leftSideBearing); - x_max = Min(pSrc->metrics.rightSideBearing, pDst->metrics.rightSideBearing); - in_line += (y_min + pSrc->metrics.ascent) * in_bytes; - out_line += (y_min + pDst->metrics.ascent) * out_bytes; - if (pFont->bit == MSBFirst) { - for (y = y_min; y < y_max; y++) { - for (x = x_min; x < x_max; x++) { - if (ISBITONMSB(x - pSrc->metrics.leftSideBearing, in_line)) - SETBITMSB(x - pDst->metrics.leftSideBearing, out_line); - } - in_line += in_bytes; - out_line += out_bytes; - } - } else { - for (y = y_min; y < y_max; y++) { - for (x = x_min; x < x_max; x++) { - if (ISBITONLSB(x - pSrc->metrics.leftSideBearing, in_line)) - SETBITLSB(x - pDst->metrics.leftSideBearing, out_line); - } - in_line += in_bytes; - out_line += out_bytes; - } - } -} diff --git a/nx-X11/lib/font/bitmap/module/Imakefile b/nx-X11/lib/font/bitmap/module/Imakefile deleted file mode 100644 index 29a49c6..0000000 --- a/nx-X11/lib/font/bitmap/module/Imakefile +++ /dev/null @@ -1,45 +0,0 @@ -XCOMM $XFree86: xc/lib/font/bitmap/module/Imakefile,v 1.5 1999/12/03 19:17:18 eich Exp $ - -#define IHaveModules -#include <Server.tmpl> - - INCLUDES = -I$(FONTINCSRC) -I../../include -I$(SERVERSRC)/include \ - -I$(XINCLUDESRC) -I../ - HEADERS = - DEFINES = -DFONTMODULE -DBDFFORMAT -DSNFFORMAT -DPCFFORMAT - -#ifdef FontFormatDefines - FORMAT_DEFS = FontFormatDefines -#endif -#if GzipFontCompression - GZIP_DEFS = -DX_GZIP_FONT_COMPRESSION -#endif - - SRCS = bdfread.c bdfutils.c bitmap.c bitmaputil.c bitscale.c \ - bitmapfunc.c pcfread.c pcfwrite.c snfread.c \ - fontink.c bitmapmod.c - - OBJS = bdfread.o bdfutils.o bitmap.o bitmaputil.o bitscale.o \ - bitmapfunc.o pcfread.o pcfwrite.o snfread.o \ - fontink.o bitmapmod.o - -SpecialCObjectRule(bitmapfunc,$(ICONFIGFILES),$(GZIP_DEFS)) - -LinkSourceFile(bdfread.c,..) -LinkSourceFile(bdfutils.c,..) -LinkSourceFile(bitmap.c,..) -LinkSourceFile(bitmaputil.c,..) -LinkSourceFile(bitscale.c,..) -LinkSourceFile(bitmapfunc.c,..) -LinkSourceFile(pcfread.c,..) -LinkSourceFile(pcfwrite.c,..) -LinkSourceFile(snfread.c,..) -LinkSourceFile(fontink.c,..) - -ModuleObjectRule() -LibraryModuleTarget(bitmap,$(OBJS)) -InstallLibraryModule(bitmap,$(MODULEDIR),fonts) - -DependTarget() - -InstallDriverSDKLibraryModule(bitmap,$(DRIVERSDKMODULEDIR),fonts) diff --git a/nx-X11/lib/font/bitmap/module/bitmapmod.c b/nx-X11/lib/font/bitmap/module/bitmapmod.c deleted file mode 100644 index 0ae9ff7..0000000 --- a/nx-X11/lib/font/bitmap/module/bitmapmod.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 1998 The XFree86 Project, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the XFree86 Project shall - * not be used in advertising or otherwise to promote the sale, use or other - * dealings in this Software without prior written authorization from the - * XFree86 Project. - */ -/* $XFree86: xc/lib/font/bitmap/module/bitmapmod.c,v 1.7 1999/01/26 05:53:47 dawes Exp $ */ - -#ifdef HAVE_XORG_CONFIG_H -#include <xorg-config.h> -#endif - -#include <X11/Xdefs.h> - -#include <X11/fonts/fontmod.h> -#include "xf86Module.h" - -static MODULESETUPPROTO(bitmapSetup); - - /* - * This is the module data function that is accessed when loading - * libbitmap as a module. - */ - -static XF86ModuleVersionInfo VersRec = -{ - "bitmap", - MODULEVENDORSTRING, - MODINFOSTRING1, - MODINFOSTRING2, - XORG_VERSION_CURRENT, - 1, 0, 0, - ABI_CLASS_FONT, /* Font module */ - ABI_FONT_VERSION, - MOD_CLASS_FONT, - {0,0,0,0} /* signature, to be patched into the file by a tool */ -}; - -XF86ModuleData bitmapModuleData = { &VersRec, bitmapSetup, NULL }; - -extern void BitmapRegisterFontFileFunctions(void); - -FontModule bitmapModule = { - BitmapRegisterFontFileFunctions, - "Bitmap", - NULL -}; - -static pointer -bitmapSetup(pointer mod, pointer opts, int *errmaj, int *errmin) -{ - bitmapModule.module = mod; - LoadFont(&bitmapModule); - - /* Need a non-NULL return */ - return (pointer)1; -} diff --git a/nx-X11/lib/font/bitmap/pcf.h b/nx-X11/lib/font/bitmap/pcf.h deleted file mode 100644 index 33b0cef..0000000 --- a/nx-X11/lib/font/bitmap/pcf.h +++ /dev/null @@ -1,100 +0,0 @@ -/* $Xorg: pcf.h,v 1.4 2001/02/09 02:04:02 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/pcf.h,v 1.4 2001/12/14 19:56:47 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifndef _PCF_H_ -#define _PCF_H_ - -/* - * Information used to read/write PCF fonts - */ - -typedef struct _PCFTable { - CARD32 type; - CARD32 format; - CARD32 size; - CARD32 offset; -} PCFTableRec, *PCFTablePtr; - -#define PCF_FILE_VERSION (('p'<<24)|('c'<<16)|('f'<<8)|1) -#define PCF_FORMAT_MASK 0xffffff00 - -#define PCF_DEFAULT_FORMAT 0x00000000 -#define PCF_INKBOUNDS 0x00000200 -#define PCF_ACCEL_W_INKBOUNDS 0x00000100 -#define PCF_COMPRESSED_METRICS 0x00000100 - -#define PCF_FORMAT_MATCH(a,b) (((a)&PCF_FORMAT_MASK) == ((b)&PCF_FORMAT_MASK)) - -#define PCF_GLYPH_PAD_MASK (3<<0) -#define PCF_BYTE_MASK (1<<2) -#define PCF_BIT_MASK (1<<3) -#define PCF_SCAN_UNIT_MASK (3<<4) - -#define PCF_BYTE_ORDER(f) (((f) & PCF_BYTE_MASK)?MSBFirst:LSBFirst) -#define PCF_BIT_ORDER(f) (((f) & PCF_BIT_MASK)?MSBFirst:LSBFirst) -#define PCF_GLYPH_PAD_INDEX(f) ((f) & PCF_GLYPH_PAD_MASK) -#define PCF_GLYPH_PAD(f) (1<<PCF_GLYPH_PAD_INDEX(f)) -#define PCF_SCAN_UNIT_INDEX(f) (((f) & PCF_SCAN_UNIT_MASK) >> 4) -#define PCF_SCAN_UNIT(f) (1<<PCF_SCAN_UNIT_INDEX(f)) -#define PCF_FORMAT_BITS(f) ((f) & (PCF_GLYPH_PAD_MASK|PCF_BYTE_MASK|PCF_BIT_MASK|PCF_SCAN_UNIT_MASK)) - -#define PCF_SIZE_TO_INDEX(s) ((s) == 4 ? 2 : (s) == 2 ? 1 : 0) -#define PCF_INDEX_TO_SIZE(b) (1<<b) - -#define PCF_FORMAT(bit,byte,glyph,scan) (\ - (PCF_SIZE_TO_INDEX(scan) << 4) | \ - (((bit) == MSBFirst ? 1 : 0) << 3) | \ - (((byte) == MSBFirst ? 1 : 0) << 2) | \ - (PCF_SIZE_TO_INDEX(glyph) << 0)) - -#define PCF_PROPERTIES (1<<0) -#define PCF_ACCELERATORS (1<<1) -#define PCF_METRICS (1<<2) -#define PCF_BITMAPS (1<<3) -#define PCF_INK_METRICS (1<<4) -#define PCF_BDF_ENCODINGS (1<<5) -#define PCF_SWIDTHS (1<<6) -#define PCF_GLYPH_NAMES (1<<7) -#define PCF_BDF_ACCELERATORS (1<<8) - -extern int pcfReadFont ( FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan ); -extern int pcfReadFontInfo ( FontInfoPtr pFontInfo, FontFilePtr file ); -extern int pmfReadFont ( FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan ); -extern int pcfWriteFont ( FontPtr pFont, FontFilePtr file ); -extern void pcfError ( const char *, ... ); - -#endif /* _PCF_H_ */ diff --git a/nx-X11/lib/font/bitmap/pcfread.c b/nx-X11/lib/font/bitmap/pcfread.c deleted file mode 100644 index 75916da..0000000 --- a/nx-X11/lib/font/bitmap/pcfread.c +++ /dev/null @@ -1,997 +0,0 @@ -/* $Xorg: pcfread.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */ -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/pcfread.c,v 1.21 2003/11/17 22:20:22 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#include <X11/fonts/pcf.h> - -#ifndef MAX -#define MAX(a,b) (((a)>(b)) ? a : b) -#endif - -#include <stdarg.h> - -void -pcfError(const char* message, ...) -{ - va_list args; - - va_start(args, message); - - fprintf(stderr, "PCF Error: "); - vfprintf(stderr, message, args); - va_end(args); -} - -/* Read PCF font files */ - -static void pcfUnloadFont ( FontPtr pFont ); -static int position; - - -#define IS_EOF(file) ((file)->eof == BUFFILEEOF) - -#define FONT_FILE_GETC_ERR(f) (tmp = FontFileGetc(f), BAIL_ON_EOF) - -static int -pcfGetLSB32(FontFilePtr file) -{ - int c; - - c = FontFileGetc(file); - c |= FontFileGetc(file) << 8; - c |= FontFileGetc(file) << 16; - c |= FontFileGetc(file) << 24; - position += 4; - return c; -} - -static int -pcfGetINT32(FontFilePtr file, CARD32 format) -{ - int c; - - if (PCF_BYTE_ORDER(format) == MSBFirst) { - c = FontFileGetc(file) << 24; - c |= FontFileGetc(file) << 16; - c |= FontFileGetc(file) << 8; - c |= FontFileGetc(file); - } else { - c = FontFileGetc(file); - c |= FontFileGetc(file) << 8; - c |= FontFileGetc(file) << 16; - c |= FontFileGetc(file) << 24; - } - position += 4; - return c; -} - -static int -pcfGetINT16(FontFilePtr file, CARD32 format) -{ - int c; - - if (PCF_BYTE_ORDER(format) == MSBFirst) { - c = FontFileGetc(file) << 8; - c |= FontFileGetc(file); - } else { - c = FontFileGetc(file); - c |= FontFileGetc(file) << 8; - } - position += 2; - return c; -} - -#define pcfGetINT8(file, format) (position++, FontFileGetc(file)) - -static PCFTablePtr -pcfReadTOC(FontFilePtr file, int *countp) -{ - CARD32 version; - PCFTablePtr tables; - int count; - int i; - - position = 0; - version = pcfGetLSB32(file); - if (version != PCF_FILE_VERSION) - return (PCFTablePtr) NULL; - count = pcfGetLSB32(file); - if (IS_EOF(file)) return (PCFTablePtr) NULL; - tables = (PCFTablePtr) xalloc(count * sizeof(PCFTableRec)); - if (!tables) { - pcfError("pcfReadTOC(): Couldn't allocate tables (%d*%d)\n", count, sizeof(PCFTableRec)); - return (PCFTablePtr) NULL; - } - for (i = 0; i < count; i++) { - tables[i].type = pcfGetLSB32(file); - tables[i].format = pcfGetLSB32(file); - tables[i].size = pcfGetLSB32(file); - tables[i].offset = pcfGetLSB32(file); - if (IS_EOF(file)) goto Bail; - } - - *countp = count; - return tables; - - Bail: - xfree(tables); - return (PCFTablePtr) NULL; -} - -/* - * PCF supports two formats for metrics, both the regular - * jumbo size, and 'lite' metrics, which are useful - * for most fonts which have even vaguely reasonable - * metrics - */ - -static Bool -pcfGetMetric(FontFilePtr file, CARD32 format, xCharInfo *metric) -{ - metric->leftSideBearing = pcfGetINT16(file, format); - metric->rightSideBearing = pcfGetINT16(file, format); - metric->characterWidth = pcfGetINT16(file, format); - metric->ascent = pcfGetINT16(file, format); - metric->descent = pcfGetINT16(file, format); - metric->attributes = pcfGetINT16(file, format); - if (IS_EOF(file)) return FALSE; - - return TRUE; -} - -static Bool -pcfGetCompressedMetric(FontFilePtr file, CARD32 format, xCharInfo *metric) -{ - metric->leftSideBearing = pcfGetINT8(file, format) - 0x80; - metric->rightSideBearing = pcfGetINT8(file, format) - 0x80; - metric->characterWidth = pcfGetINT8(file, format) - 0x80; - metric->ascent = pcfGetINT8(file, format) - 0x80; - metric->descent = pcfGetINT8(file, format) - 0x80; - metric->attributes = 0; - if (IS_EOF(file)) return FALSE; - - return TRUE; -} - -/* - * Position the file to the begining of the specified table - * in the font file - */ -static Bool -pcfSeekToType(FontFilePtr file, PCFTablePtr tables, int ntables, - CARD32 type, CARD32 *formatp, CARD32 *sizep) -{ - int i; - - for (i = 0; i < ntables; i++) - if (tables[i].type == type) { - if (position > tables[i].offset) - return FALSE; - if (!FontFileSkip(file, tables[i].offset - position)) - return FALSE; - position = tables[i].offset; - *sizep = tables[i].size; - *formatp = tables[i].format; - return TRUE; - } - return FALSE; -} - -static Bool -pcfHasType (PCFTablePtr tables, int ntables, CARD32 type) -{ - int i; - - for (i = 0; i < ntables; i++) - if (tables[i].type == type) - return TRUE; - return FALSE; -} - -/* - * pcfGetProperties - * - * Reads the font properties from the font file, filling in the FontInfo rec - * supplied. Used by by both ReadFont and ReadFontInfo routines. - */ - -static Bool -pcfGetProperties(FontInfoPtr pFontInfo, FontFilePtr file, - PCFTablePtr tables, int ntables) -{ - FontPropPtr props = 0; - int nprops; - char *isStringProp = 0; - CARD32 format; - int i; - CARD32 size; - int string_size; - char *strings; - - /* font properties */ - - if (!pcfSeekToType(file, tables, ntables, PCF_PROPERTIES, &format, &size)) - goto Bail; - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - goto Bail; - nprops = pcfGetINT32(file, format); - if (IS_EOF(file)) goto Bail; - props = (FontPropPtr) xalloc(nprops * sizeof(FontPropRec)); - if (!props) { - pcfError("pcfGetProperties(): Couldn't allocate props (%d*%d)\n", nprops, sizeof(FontPropRec)); - goto Bail; - } - isStringProp = (char *) xalloc(nprops * sizeof(char)); - if (!isStringProp) { - pcfError("pcfGetProperties(): Couldn't allocate isStringProp (%d*%d)\n", nprops, sizeof(char)); - goto Bail; - } - for (i = 0; i < nprops; i++) { - props[i].name = pcfGetINT32(file, format); - isStringProp[i] = pcfGetINT8(file, format); - props[i].value = pcfGetINT32(file, format); - if (IS_EOF(file)) goto Bail; - } - /* pad the property array */ - /* - * clever here - nprops is the same as the number of odd-units read, as - * only isStringProp are odd length - */ - if (nprops & 3) - { - i = 4 - (nprops & 3); - (void)FontFileSkip(file, i); - position += i; - } - if (IS_EOF(file)) goto Bail; - string_size = pcfGetINT32(file, format); - if (IS_EOF(file)) goto Bail; - strings = (char *) xalloc(string_size); - if (!strings) { - pcfError("pcfGetProperties(): Couldn't allocate strings (%d)\n", string_size); - goto Bail; - } - FontFileRead(file, strings, string_size); - if (IS_EOF(file)) goto Bail; - position += string_size; - for (i = 0; i < nprops; i++) { - props[i].name = MakeAtom(strings + props[i].name, - strlen(strings + props[i].name), TRUE); - if (isStringProp[i]) { - props[i].value = MakeAtom(strings + props[i].value, - strlen(strings + props[i].value), TRUE); - } - } - xfree(strings); - pFontInfo->isStringProp = isStringProp; - pFontInfo->props = props; - pFontInfo->nprops = nprops; - return TRUE; -Bail: - xfree(isStringProp); - xfree(props); - return FALSE; -} - - -/* - * pcfReadAccel - * - * Fill in the accelerator information from the font file; used - * to read both BDF_ACCELERATORS and old style ACCELERATORS - */ - -static Bool -pcfGetAccel(FontInfoPtr pFontInfo, FontFilePtr file, - PCFTablePtr tables, int ntables, CARD32 type) -{ - CARD32 format; - CARD32 size; - - if (!pcfSeekToType(file, tables, ntables, type, &format, &size) || - IS_EOF(file)) - goto Bail; - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT) && - !PCF_FORMAT_MATCH(format, PCF_ACCEL_W_INKBOUNDS)) - { - goto Bail; - } - pFontInfo->noOverlap = pcfGetINT8(file, format); - pFontInfo->constantMetrics = pcfGetINT8(file, format); - pFontInfo->terminalFont = pcfGetINT8(file, format); - pFontInfo->constantWidth = pcfGetINT8(file, format); - pFontInfo->inkInside = pcfGetINT8(file, format); - pFontInfo->inkMetrics = pcfGetINT8(file, format); - pFontInfo->drawDirection = pcfGetINT8(file, format); - pFontInfo->anamorphic = FALSE; - pFontInfo->cachable = TRUE; - /* natural alignment */ pcfGetINT8(file, format); - pFontInfo->fontAscent = pcfGetINT32(file, format); - pFontInfo->fontDescent = pcfGetINT32(file, format); - pFontInfo->maxOverlap = pcfGetINT32(file, format); - if (IS_EOF(file)) goto Bail; - if (!pcfGetMetric(file, format, &pFontInfo->minbounds)) - goto Bail; - if (!pcfGetMetric(file, format, &pFontInfo->maxbounds)) - goto Bail; - if (PCF_FORMAT_MATCH(format, PCF_ACCEL_W_INKBOUNDS)) { - if (!pcfGetMetric(file, format, &pFontInfo->ink_minbounds)) - goto Bail; - if (!pcfGetMetric(file, format, &pFontInfo->ink_maxbounds)) - goto Bail; - } else { - pFontInfo->ink_minbounds = pFontInfo->minbounds; - pFontInfo->ink_maxbounds = pFontInfo->maxbounds; - } - return TRUE; -Bail: - return FALSE; -} - -int -pcfReadFont(FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan) -{ - CARD32 format; - CARD32 size; - BitmapFontPtr bitmapFont = 0; - int i; - PCFTablePtr tables = 0; - int ntables; - int nmetrics; - int nbitmaps; - int sizebitmaps; - int nink_metrics; - CharInfoPtr metrics = 0; - xCharInfo *ink_metrics = 0; - char *bitmaps = 0; - CharInfoPtr **encoding = 0; - int nencoding = 0; - int encodingOffset; - CARD32 bitmapSizes[GLYPHPADOPTIONS]; - CARD32 *offsets = 0; - Bool hasBDFAccelerators; - - pFont->info.nprops = 0; - pFont->info.props = 0; - if (!(tables = pcfReadTOC(file, &ntables))) - goto Bail; - - /* properties */ - - if (!pcfGetProperties(&pFont->info, file, tables, ntables)) - goto Bail; - - /* Use the old accelerators if no BDF accelerators are in the file */ - - hasBDFAccelerators = pcfHasType (tables, ntables, PCF_BDF_ACCELERATORS); - if (!hasBDFAccelerators) - if (!pcfGetAccel (&pFont->info, file, tables, ntables, PCF_ACCELERATORS)) - goto Bail; - - /* metrics */ - - if (!pcfSeekToType(file, tables, ntables, PCF_METRICS, &format, &size)) { - goto Bail; - } - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT) && - !PCF_FORMAT_MATCH(format, PCF_COMPRESSED_METRICS)) { - goto Bail; - } - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - nmetrics = pcfGetINT32(file, format); - else - nmetrics = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec)); - if (!metrics) { - pcfError("pcfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec)); - goto Bail; - } - for (i = 0; i < nmetrics; i++) - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) { - if (!pcfGetMetric(file, format, &(metrics + i)->metrics)) - goto Bail; - } else { - if (!pcfGetCompressedMetric(file, format, &(metrics + i)->metrics)) - goto Bail; - } - - /* bitmaps */ - - if (!pcfSeekToType(file, tables, ntables, PCF_BITMAPS, &format, &size)) - goto Bail; - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - goto Bail; - - nbitmaps = pcfGetINT32(file, format); - if (nbitmaps != nmetrics || IS_EOF(file)) - goto Bail; - - offsets = (CARD32 *) xalloc(nbitmaps * sizeof(CARD32)); - if (!offsets) { - pcfError("pcfReadFont(): Couldn't allocate offsets (%d*%d)\n", nbitmaps, sizeof(CARD32)); - goto Bail; - } - for (i = 0; i < nbitmaps; i++) { - offsets[i] = pcfGetINT32(file, format); - if (IS_EOF(file)) goto Bail; - } - - for (i = 0; i < GLYPHPADOPTIONS; i++) { - bitmapSizes[i] = pcfGetINT32(file, format); - if (IS_EOF(file)) goto Bail; - } - - sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX(format)]; - /* guard against completely empty font */ - bitmaps = xalloc(sizebitmaps ? sizebitmaps : 1); - if (!bitmaps) { - pcfError("pcfReadFont(): Couldn't allocate bitmaps (%d)\n", sizebitmaps ? sizebitmaps : 1); - goto Bail; - } - FontFileRead(file, bitmaps, sizebitmaps); - if (IS_EOF(file)) goto Bail; - position += sizebitmaps; - - if (PCF_BIT_ORDER(format) != bit) - BitOrderInvert((unsigned char *)bitmaps, sizebitmaps); - if ((PCF_BYTE_ORDER(format) == PCF_BIT_ORDER(format)) != (bit == byte)) { - switch (bit == byte ? PCF_SCAN_UNIT(format) : scan) { - case 1: - break; - case 2: - TwoByteSwap((unsigned char *)bitmaps, sizebitmaps); - break; - case 4: - FourByteSwap((unsigned char *)bitmaps, sizebitmaps); - break; - } - } - if (PCF_GLYPH_PAD(format) != glyph) { - char *padbitmaps; - int sizepadbitmaps; - int old, - new; - xCharInfo *metric; - - sizepadbitmaps = bitmapSizes[PCF_SIZE_TO_INDEX(glyph)]; - padbitmaps = (char *) xalloc(sizepadbitmaps); - if (!padbitmaps) { - pcfError("pcfReadFont(): Couldn't allocate padbitmaps (%d)\n", sizepadbitmaps); - goto Bail; - } - new = 0; - for (i = 0; i < nbitmaps; i++) { - old = offsets[i]; - metric = &metrics[i].metrics; - offsets[i] = new; - new += RepadBitmap(bitmaps + old, padbitmaps + new, - PCF_GLYPH_PAD(format), glyph, - metric->rightSideBearing - metric->leftSideBearing, - metric->ascent + metric->descent); - } - xfree(bitmaps); - bitmaps = padbitmaps; - } - for (i = 0; i < nbitmaps; i++) - metrics[i].bits = bitmaps + offsets[i]; - - xfree(offsets); - offsets = NULL; - - /* ink metrics ? */ - - ink_metrics = NULL; - if (pcfSeekToType(file, tables, ntables, PCF_INK_METRICS, &format, &size)) { - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT) && - !PCF_FORMAT_MATCH(format, PCF_COMPRESSED_METRICS)) { - goto Bail; - } - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - nink_metrics = pcfGetINT32(file, format); - else - nink_metrics = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - if (nink_metrics != nmetrics) - goto Bail; - ink_metrics = (xCharInfo *) xalloc(nink_metrics * sizeof(xCharInfo)); - if (!ink_metrics) { - pcfError("pcfReadFont(): Couldn't allocate ink_metrics (%d*%d)\n", nink_metrics, sizeof(xCharInfo)); - goto Bail; - } - for (i = 0; i < nink_metrics; i++) - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) { - if (!pcfGetMetric(file, format, ink_metrics + i)) - goto Bail; - } else { - if (!pcfGetCompressedMetric(file, format, ink_metrics + i)) - goto Bail; - } - } - - /* encoding */ - - if (!pcfSeekToType(file, tables, ntables, PCF_BDF_ENCODINGS, &format, &size)) - goto Bail; - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - goto Bail; - - pFont->info.firstCol = pcfGetINT16(file, format); - pFont->info.lastCol = pcfGetINT16(file, format); - pFont->info.firstRow = pcfGetINT16(file, format); - pFont->info.lastRow = pcfGetINT16(file, format); - pFont->info.defaultCh = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - if (pFont->info.firstCol > pFont->info.lastCol || - pFont->info.firstRow > pFont->info.lastRow || - pFont->info.lastCol-pFont->info.firstCol > 255) goto Bail; - - nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) * - (pFont->info.lastRow - pFont->info.firstRow + 1); - - encoding = (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nencoding), - sizeof(CharInfoPtr*)); - if (!encoding) { - pcfError("pcfReadFont(): Couldn't allocate encoding (%d*%d)\n", nencoding, sizeof(CharInfoPtr)); - goto Bail; - } - - pFont->info.allExist = TRUE; - for (i = 0; i < nencoding; i++) { - encodingOffset = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - if (encodingOffset == 0xFFFF) { - pFont->info.allExist = FALSE; - } else { - if(!encoding[SEGMENT_MAJOR(i)]) { - encoding[SEGMENT_MAJOR(i)]= - (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE, - sizeof(CharInfoPtr)); - if(!encoding[SEGMENT_MAJOR(i)]) - goto Bail; - } - ACCESSENCODINGL(encoding, i) = metrics + encodingOffset; - } - } - - /* BDF style accelerators (i.e. bounds based on encoded glyphs) */ - - if (hasBDFAccelerators) - if (!pcfGetAccel (&pFont->info, file, tables, ntables, PCF_BDF_ACCELERATORS)) - goto Bail; - - bitmapFont = (BitmapFontPtr) xalloc(sizeof *bitmapFont); - if (!bitmapFont) { - pcfError("pcfReadFont(): Couldn't allocate bitmapFont (%d)\n", sizeof *bitmapFont); - goto Bail; - } - - bitmapFont->version_num = PCF_FILE_VERSION; - bitmapFont->num_chars = nmetrics; - bitmapFont->num_tables = ntables; - bitmapFont->metrics = metrics; - bitmapFont->ink_metrics = ink_metrics; - bitmapFont->bitmaps = bitmaps; - bitmapFont->encoding = encoding; - bitmapFont->pDefault = (CharInfoPtr) 0; - if (pFont->info.defaultCh != (unsigned short) NO_SUCH_CHAR) { - unsigned int r, - c, - cols; - - r = pFont->info.defaultCh >> 8; - c = pFont->info.defaultCh & 0xFF; - if (pFont->info.firstRow <= r && r <= pFont->info.lastRow && - pFont->info.firstCol <= c && c <= pFont->info.lastCol) { - cols = pFont->info.lastCol - pFont->info.firstCol + 1; - r = r - pFont->info.firstRow; - c = c - pFont->info.firstCol; - bitmapFont->pDefault = ACCESSENCODING(encoding, r * cols + c); - } - } - bitmapFont->bitmapExtra = (BitmapExtraPtr) 0; - pFont->fontPrivate = (pointer) bitmapFont; - pFont->get_glyphs = bitmapGetGlyphs; - pFont->get_metrics = bitmapGetMetrics; - pFont->unload_font = pcfUnloadFont; - pFont->unload_glyphs = NULL; - pFont->bit = bit; - pFont->byte = byte; - pFont->glyph = glyph; - pFont->scan = scan; - xfree(tables); - return Successful; -Bail: - xfree(ink_metrics); - if(encoding) { - for(i=0; i<NUM_SEGMENTS(nencoding); i++) - xfree(encoding[i]); - } - xfree(encoding); - xfree(bitmaps); - xfree(metrics); - xfree(pFont->info.props); - pFont->info.nprops = 0; - pFont->info.props = 0; - xfree (pFont->info.isStringProp); - xfree(bitmapFont); - xfree(tables); - xfree(offsets); - return AllocError; -} - -int -pcfReadFontInfo(FontInfoPtr pFontInfo, FontFilePtr file) -{ - PCFTablePtr tables; - int ntables; - CARD32 format; - CARD32 size; - int nencoding; - Bool hasBDFAccelerators; - - pFontInfo->isStringProp = NULL; - pFontInfo->props = NULL; - pFontInfo->nprops = 0; - - if (!(tables = pcfReadTOC(file, &ntables))) - goto Bail; - - /* properties */ - - if (!pcfGetProperties(pFontInfo, file, tables, ntables)) - goto Bail; - - /* Use the old accelerators if no BDF accelerators are in the file */ - - hasBDFAccelerators = pcfHasType (tables, ntables, PCF_BDF_ACCELERATORS); - if (!hasBDFAccelerators) - if (!pcfGetAccel (pFontInfo, file, tables, ntables, PCF_ACCELERATORS)) - goto Bail; - - /* encoding */ - - if (!pcfSeekToType(file, tables, ntables, PCF_BDF_ENCODINGS, &format, &size)) - goto Bail; - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - goto Bail; - - pFontInfo->firstCol = pcfGetINT16(file, format); - pFontInfo->lastCol = pcfGetINT16(file, format); - pFontInfo->firstRow = pcfGetINT16(file, format); - pFontInfo->lastRow = pcfGetINT16(file, format); - pFontInfo->defaultCh = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - if (pFontInfo->firstCol > pFontInfo->lastCol || - pFontInfo->firstRow > pFontInfo->lastRow || - pFontInfo->lastCol-pFontInfo->firstCol > 255) goto Bail; - - nencoding = (pFontInfo->lastCol - pFontInfo->firstCol + 1) * - (pFontInfo->lastRow - pFontInfo->firstRow + 1); - - pFontInfo->allExist = TRUE; - while (nencoding--) { - if (pcfGetINT16(file, format) == 0xFFFF) - pFontInfo->allExist = FALSE; - if (IS_EOF(file)) goto Bail; - } - if (IS_EOF(file)) goto Bail; - - /* BDF style accelerators (i.e. bounds based on encoded glyphs) */ - - if (hasBDFAccelerators) - if (!pcfGetAccel (pFontInfo, file, tables, ntables, PCF_BDF_ACCELERATORS)) - goto Bail; - - xfree(tables); - return Successful; -Bail: - pFontInfo->nprops = 0; - xfree (pFontInfo->props); - xfree (pFontInfo->isStringProp); - xfree(tables); - return AllocError; -} - -static void -pcfUnloadFont(FontPtr pFont) -{ - BitmapFontPtr bitmapFont; - int i,nencoding; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - xfree(bitmapFont->ink_metrics); - if(bitmapFont->encoding) { - nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) * - (pFont->info.lastRow - pFont->info.firstRow + 1); - for(i=0; i<NUM_SEGMENTS(nencoding); i++) - xfree(bitmapFont->encoding[i]); - } - xfree(bitmapFont->encoding); - xfree(bitmapFont->bitmaps); - xfree(bitmapFont->metrics); - xfree(pFont->info.isStringProp); - xfree(pFont->info.props); - xfree(bitmapFont); - DestroyFontRec(pFont); -} - -int -pmfReadFont(FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan) -{ - CARD32 format; - CARD32 size; - BitmapFontPtr bitmapFont = 0; - int i; - PCFTablePtr tables = 0; - int ntables; - int nmetrics; - int sizebitmaps; - int nink_metrics; - CharInfoPtr metrics = 0; - xCharInfo *ink_metrics = 0; - char *bitmaps = 0; - CharInfoPtr **encoding = 0; - int nencoding = 0; - int encodingOffset; - Bool hasBDFAccelerators; - CharInfoPtr pci; - - pFont->info.nprops = 0; - pFont->info.props = 0; - - if (!(tables = pcfReadTOC(file, &ntables))) - goto Bail; - - /* properties */ - - if (!pcfGetProperties(&pFont->info, file, tables, ntables)) - goto Bail; - - /* Use the old accelerators if no BDF accelerators are in the file */ - - hasBDFAccelerators = pcfHasType (tables, ntables, PCF_BDF_ACCELERATORS); - if (!hasBDFAccelerators) - if (!pcfGetAccel (&pFont->info, file, tables, ntables, PCF_ACCELERATORS)) - goto Bail; - - /* metrics */ - - if (!pcfSeekToType(file, tables, ntables, PCF_METRICS, &format, &size)) { - goto Bail; - } - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT) && - !PCF_FORMAT_MATCH(format, PCF_COMPRESSED_METRICS)) { - goto Bail; - } - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - nmetrics = pcfGetINT32(file, format); - else - nmetrics = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec)); - if (!metrics) { - pcfError("pmfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec)); - goto Bail; - } - for (i = 0; i < nmetrics; i++) - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) { - if (!pcfGetMetric(file, format, &(metrics + i)->metrics)) - goto Bail; - } else { - if (!pcfGetCompressedMetric(file, format, &(metrics + i)->metrics)) - goto Bail; - } - - /* Set the bitmaps to all point to the same zero filled array - * that is the size of the largest bitmap. - */ - - pci = metrics; - sizebitmaps = 0; - for (i = 0; i < nmetrics; i++) - { - sizebitmaps = MAX(sizebitmaps,BYTES_FOR_GLYPH(pci, glyph)); - pci++; - } - -#ifdef FONTMODULE - sizebitmaps = 1024; /* Default - we xalloc the size anyway */ -#else - sizebitmaps = BUFSIZ; -#endif - /* guard against completely empty font */ - bitmaps = (char *) xalloc(sizebitmaps); - if (!bitmaps) { - pcfError("pmfReadFont(): Couldn't allocate bitmaps (%d)\n", sizebitmaps); - goto Bail; - } - - memset(bitmaps,0,sizebitmaps); - for (i = 0; i < nmetrics; i++) - metrics[i].bits = bitmaps; - - /* ink metrics ? */ - - ink_metrics = NULL; - if (pcfSeekToType(file, tables, ntables, PCF_INK_METRICS, &format, &size)) { - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT) && - !PCF_FORMAT_MATCH(format, PCF_COMPRESSED_METRICS)) { - goto Bail; - } - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - nink_metrics = pcfGetINT32(file, format); - else - nink_metrics = pcfGetINT16(file, format); - if (nink_metrics != nmetrics) - goto Bail; - if (IS_EOF(file)) goto Bail; - ink_metrics = (xCharInfo *) xalloc(nink_metrics * sizeof(xCharInfo)); - if (!ink_metrics) { - pcfError("pmfReadFont(): Couldn't allocate ink_metrics (%d*%d)\n", nink_metrics, sizeof(xCharInfo)); - goto Bail; - } - for (i = 0; i < nink_metrics; i++) - if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) { - if (!pcfGetMetric(file, format, ink_metrics + i)) - goto Bail; - } else { - if (!pcfGetCompressedMetric(file, format, ink_metrics + i)) - goto Bail; - } - } - - /* encoding */ - - if (!pcfSeekToType(file, tables, ntables, PCF_BDF_ENCODINGS, &format, &size)) - goto Bail; - format = pcfGetLSB32(file); - if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) - goto Bail; - - pFont->info.firstCol = pcfGetINT16(file, format); - pFont->info.lastCol = pcfGetINT16(file, format); - pFont->info.firstRow = pcfGetINT16(file, format); - pFont->info.lastRow = pcfGetINT16(file, format); - pFont->info.defaultCh = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - - nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) * - (pFont->info.lastRow - pFont->info.firstRow + 1); - - encoding = (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nencoding), - sizeof(CharInfoPtr*)); - if (!encoding) { - pcfError("pmfReadFont(): Couldn't allocate encoding (%d*%d)\n", nencoding, sizeof(CharInfoPtr)); - goto Bail; - } - pFont->info.allExist = TRUE; - for (i = 0; i < nencoding; i++) { - encodingOffset = pcfGetINT16(file, format); - if (IS_EOF(file)) goto Bail; - if (encodingOffset == 0xFFFF) { - pFont->info.allExist = FALSE; - } else { - if(!encoding[SEGMENT_MAJOR(i)]) { - encoding[SEGMENT_MAJOR(i)]= - (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE, - sizeof(CharInfoPtr)); - if(!encoding[SEGMENT_MAJOR(i)]) - goto Bail; - } - ACCESSENCODINGL(encoding, i) = metrics + encodingOffset; - } - } - if (IS_EOF(file)) goto Bail; - - /* BDF style accelerators (i.e. bounds based on encoded glyphs) */ - - if (hasBDFAccelerators) - if (!pcfGetAccel (&pFont->info, file, tables, ntables, PCF_BDF_ACCELERATORS)) - goto Bail; - - bitmapFont = (BitmapFontPtr) xalloc(sizeof *bitmapFont); - if (!bitmapFont) { - pcfError("pmfReadFont(): Couldn't allocate bitmapFont (%d)\n", sizeof *bitmapFont); - goto Bail; - } - - bitmapFont->version_num = PCF_FILE_VERSION; - bitmapFont->num_chars = nmetrics; - bitmapFont->num_tables = ntables; - bitmapFont->metrics = metrics; - bitmapFont->ink_metrics = ink_metrics; - bitmapFont->bitmaps = bitmaps; - bitmapFont->encoding = encoding; - bitmapFont->pDefault = (CharInfoPtr) 0; - if (pFont->info.defaultCh != (unsigned short) NO_SUCH_CHAR) { - unsigned int r, - c, - cols; - - r = pFont->info.defaultCh >> 8; - c = pFont->info.defaultCh & 0xFF; - if (pFont->info.firstRow <= r && r <= pFont->info.lastRow && - pFont->info.firstCol <= c && c <= pFont->info.lastCol) { - cols = pFont->info.lastCol - pFont->info.firstCol + 1; - r = r - pFont->info.firstRow; - c = c - pFont->info.firstCol; - bitmapFont->pDefault = ACCESSENCODING(encoding, r * cols + c); - } - } - bitmapFont->bitmapExtra = (BitmapExtraPtr) 0; - pFont->fontPrivate = (pointer) bitmapFont; - pFont->get_glyphs = bitmapGetGlyphs; - pFont->get_metrics = bitmapGetMetrics; - pFont->unload_font = pcfUnloadFont; - pFont->unload_glyphs = NULL; - pFont->bit = bit; - pFont->byte = byte; - pFont->glyph = glyph; - pFont->scan = scan; - xfree(tables); - return Successful; -Bail: - xfree(ink_metrics); - if(encoding) { - for(i=0; i<NUM_SEGMENTS(nencoding); i++) - xfree(encoding[i]); - } - xfree(encoding); - xfree(bitmaps); - xfree(metrics); - xfree(pFont->info.props); - pFont->info.nprops = 0; - pFont->info.props = 0; - xfree (pFont->info.isStringProp); - xfree(bitmapFont); - xfree(tables); - return AllocError; -} diff --git a/nx-X11/lib/font/bitmap/pcfwrite.c b/nx-X11/lib/font/bitmap/pcfwrite.c deleted file mode 100644 index 8d5e942..0000000 --- a/nx-X11/lib/font/bitmap/pcfwrite.c +++ /dev/null @@ -1,468 +0,0 @@ -/* $Xorg: pcfwrite.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */ -/* - -Copyright 1990, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/pcfwrite.c,v 1.11 2003/11/17 22:20:22 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#include <X11/fonts/pcf.h> - -/* Write PCF font files */ - -static CARD32 current_position; - -static int -pcfWrite(FontFilePtr file, char *b, int c) -{ - current_position += c; - return FontFileWrite(file, b, c); -} - -static int -pcfPutLSB32(FontFilePtr file, int c) -{ - current_position += 4; - (void) FontFilePutc(c, file); - (void) FontFilePutc(c >> 8, file); - (void) FontFilePutc(c >> 16, file); - return FontFilePutc(c >> 24, file); -} - -static int -pcfPutINT32(FontFilePtr file, CARD32 format, int c) -{ - current_position += 4; - if (PCF_BYTE_ORDER(format) == MSBFirst) { - (void) FontFilePutc(c >> 24, file); - (void) FontFilePutc(c >> 16, file); - (void) FontFilePutc(c >> 8, file); - return FontFilePutc(c, file); - } else { - (void) FontFilePutc(c, file); - (void) FontFilePutc(c >> 8, file); - (void) FontFilePutc(c >> 16, file); - return FontFilePutc(c >> 24, file); - } -} - -static int -pcfPutINT16(FontFilePtr file, CARD32 format, int c) -{ - current_position += 2; - if (PCF_BYTE_ORDER(format) == MSBFirst) { - (void) FontFilePutc(c >> 8, file); - return FontFilePutc(c, file); - } else { - (void) FontFilePutc(c, file); - return FontFilePutc(c >> 8, file); - } -} - -/*ARGSUSED*/ -static int -pcfPutINT8(FontFilePtr file, CARD32 format, int c) -{ - current_position += 1; - return FontFilePutc(c, file); -} - -static void -pcfWriteTOC(FontFilePtr file, PCFTablePtr table, int count) -{ - CARD32 version; - int i; - - version = PCF_FILE_VERSION; - pcfPutLSB32(file, version); - pcfPutLSB32(file, count); - for (i = 0; i < count; i++) { - pcfPutLSB32(file, table->type); - pcfPutLSB32(file, table->format); - pcfPutLSB32(file, table->size); - pcfPutLSB32(file, table->offset); - table++; - } -} - -static void -pcfPutCompressedMetric(FontFilePtr file, CARD32 format, xCharInfo *metric) -{ - pcfPutINT8(file, format, metric->leftSideBearing + 0x80); - pcfPutINT8(file, format, metric->rightSideBearing + 0x80); - pcfPutINT8(file, format, metric->characterWidth + 0x80); - pcfPutINT8(file, format, metric->ascent + 0x80); - pcfPutINT8(file, format, metric->descent + 0x80); -} - -static void -pcfPutMetric(FontFilePtr file, CARD32 format, xCharInfo *metric) -{ - pcfPutINT16(file, format, metric->leftSideBearing); - pcfPutINT16(file, format, metric->rightSideBearing); - pcfPutINT16(file, format, metric->characterWidth); - pcfPutINT16(file, format, metric->ascent); - pcfPutINT16(file, format, metric->descent); - pcfPutINT16(file, format, metric->attributes); -} - -static void -pcfPutBitmap(FontFilePtr file, CARD32 format, CharInfoPtr pCI) -{ - int count; - unsigned char *bits; - - count = BYTES_FOR_GLYPH(pCI, PCF_GLYPH_PAD(format)); - bits = (unsigned char *) pCI->bits; - current_position += count; - while (count--) - FontFilePutc(*bits++, file); -} - -static void -pcfPutAccel(FontFilePtr file, CARD32 format, FontInfoPtr pFontInfo) -{ - pcfPutINT8(file, format, pFontInfo->noOverlap); - pcfPutINT8(file, format, pFontInfo->constantMetrics); - pcfPutINT8(file, format, pFontInfo->terminalFont); - pcfPutINT8(file, format, pFontInfo->constantWidth); - pcfPutINT8(file, format, pFontInfo->inkInside); - pcfPutINT8(file, format, pFontInfo->inkMetrics); - pcfPutINT8(file, format, pFontInfo->drawDirection); - pcfPutINT8(file, format, 0); - pcfPutINT32(file, format, pFontInfo->fontAscent); - pcfPutINT32(file, format, pFontInfo->fontDescent); - pcfPutINT32(file, format, pFontInfo->maxOverlap); - pcfPutMetric(file, format, &pFontInfo->minbounds); - pcfPutMetric(file, format, &pFontInfo->maxbounds); - if (PCF_FORMAT_MATCH(format, PCF_ACCEL_W_INKBOUNDS)) { - pcfPutMetric(file, format, &pFontInfo->ink_minbounds); - pcfPutMetric(file, format, &pFontInfo->ink_maxbounds); - } -} - -#define S32 4 -#define S16 2 -#define S8 1 - -#define Pad(s) (RoundUp(s) - (s)) -#define RoundUp(s) (((s) + 3) & ~3) - -#define Compressable(i) (-128 <= (i) && (i) <= 127) - -#define CanCompressMetric(m) (Compressable((m)->leftSideBearing) && \ - Compressable((m)->rightSideBearing) && \ - Compressable((m)->characterWidth) && \ - Compressable((m)->ascent) && \ - Compressable((m)->descent) && \ - (m)->attributes == 0) - -#define CanCompressMetrics(min,max) (CanCompressMetric(min) && CanCompressMetric(max)) - -static char * -pcfNameForAtom(Atom a) -{ - return NameForAtom(a); -} - -int -pcfWriteFont(FontPtr pFont, FontFilePtr file) -{ - PCFTableRec tables[32], - *table; - CARD32 mask, - bit; - int ntables; - int size; - CARD32 format; - int i; - int cur_table; - int prop_string_size; - int glyph_string_size; - xCharInfo *minbounds, - *maxbounds; - xCharInfo *ink_minbounds, - *ink_maxbounds; - BitmapFontPtr bitmapFont; - int nencodings = 0; - int header_size; - FontPropPtr offsetProps; - int prop_pad = 0; - char *atom_name; - int glyph; - CARD32 offset; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - if (bitmapFont->bitmapExtra) { - minbounds = &bitmapFont->bitmapExtra->info.minbounds; - maxbounds = &bitmapFont->bitmapExtra->info.maxbounds; - ink_minbounds = &bitmapFont->bitmapExtra->info.ink_minbounds; - ink_maxbounds = &bitmapFont->bitmapExtra->info.ink_maxbounds; - } else { - minbounds = &pFont->info.minbounds; - maxbounds = &pFont->info.maxbounds; - ink_minbounds = &pFont->info.ink_minbounds; - ink_maxbounds = &pFont->info.ink_maxbounds; - } - offsetProps = (FontPropPtr) xalloc(pFont->info.nprops * sizeof(FontPropRec)); - if (!offsetProps) { - pcfError("pcfWriteFont(): Couldn't allocate offsetProps (%d*%d)", pFont->info.nprops, sizeof(FontPropRec)); - return AllocError; - } - prop_string_size = 0; - for (i = 0; i < pFont->info.nprops; i++) { - offsetProps[i].name = prop_string_size; - prop_string_size += strlen(pcfNameForAtom(pFont->info.props[i].name)) + 1; - if (pFont->info.isStringProp[i]) { - offsetProps[i].value = prop_string_size; - prop_string_size += strlen(pcfNameForAtom(pFont->info.props[i].value)) + 1; - } else - offsetProps[i].value = pFont->info.props[i].value; - } - format = PCF_FORMAT(pFont->bit, pFont->byte, pFont->glyph, pFont->scan); - mask = 0xFFFFFFF; - ntables = 0; - table = tables; - while (mask) { - bit = lowbit(mask); - mask &= ~bit; - table->type = bit; - switch (bit) { - case PCF_PROPERTIES: - table->format = PCF_DEFAULT_FORMAT | format; - size = S32 + S32 + (S32 + S8 + S32) * pFont->info.nprops; - prop_pad = Pad(size); - table->size = RoundUp(size) + S32 + - RoundUp(prop_string_size); - table++; - break; - case PCF_ACCELERATORS: - if (bitmapFont->bitmapExtra->info.inkMetrics) - table->format = PCF_ACCEL_W_INKBOUNDS | format; - else - table->format = PCF_DEFAULT_FORMAT | format; - table->size = 100; - table++; - break; - case PCF_METRICS: - if (CanCompressMetrics(minbounds, maxbounds)) { - table->format = PCF_COMPRESSED_METRICS | format; - size = S32 + S16 + bitmapFont->num_chars * (5 * S8); - table->size = RoundUp(size); - } else { - table->format = PCF_DEFAULT_FORMAT | format; - table->size = S32 + S32 + bitmapFont->num_chars * (6 * S16); - } - table++; - break; - case PCF_BITMAPS: - table->format = PCF_DEFAULT_FORMAT | format; - size = S32 + S32 + bitmapFont->num_chars * S32 + - GLYPHPADOPTIONS * S32 + - bitmapFont->bitmapExtra->bitmapsSizes[PCF_GLYPH_PAD_INDEX(format)]; - table->size = RoundUp(size); - table++; - break; - case PCF_INK_METRICS: - if (bitmapFont->ink_metrics) { - if (CanCompressMetrics(ink_minbounds, ink_maxbounds)) { - table->format = PCF_COMPRESSED_METRICS | format; - size = S32 + S16 + bitmapFont->num_chars * (5 * S8); - table->size = RoundUp(size); - } else { - table->format = PCF_DEFAULT_FORMAT | format; - table->size = S32 + S32 + bitmapFont->num_chars * (6 * S16); - } - table++; - } - break; - case PCF_BDF_ENCODINGS: - table->format = PCF_DEFAULT_FORMAT | format; - nencodings = (pFont->info.lastRow - pFont->info.firstRow + 1) * - (pFont->info.lastCol - pFont->info.firstCol + 1); - size = S32 + 5 * S16 + nencodings * S16; - table->size = RoundUp(size); - table++; - break; - case PCF_SWIDTHS: - table->format = PCF_DEFAULT_FORMAT | format; - table->size = S32 + S32 + bitmapFont->num_chars * S32; - table++; - break; - case PCF_GLYPH_NAMES: - table->format = PCF_DEFAULT_FORMAT | format; - glyph_string_size = 0; - for (i = 0; i < bitmapFont->num_chars; i++) - glyph_string_size += strlen(pcfNameForAtom(bitmapFont->bitmapExtra->glyphNames[i])) + 1; - table->size = S32 + S32 + bitmapFont->num_chars * S32 + - S32 + RoundUp(glyph_string_size); - table++; - break; - case PCF_BDF_ACCELERATORS: - if (pFont->info.inkMetrics) - table->format = PCF_ACCEL_W_INKBOUNDS | format; - else - table->format = PCF_DEFAULT_FORMAT | format; - table->size = 100; - table++; - break; - } - } - ntables = table - tables; - offset = 0; - header_size = S32 + S32 + ntables * (4 * S32); - offset = header_size; - for (cur_table = 0, table = tables; - cur_table < ntables; - cur_table++, table++) { - table->offset = offset; - offset += table->size; - } - current_position = 0; - pcfWriteTOC(file, tables, ntables); - for (cur_table = 0, table = tables; - cur_table < ntables; - cur_table++, table++) { - if (current_position > table->offset) { - printf("can't go backwards... %d > %d\n", - (int)current_position, (int)table->offset); - xfree(offsetProps); - return BadFontName; - } - while (current_position < table->offset) - pcfPutINT8(file, format, '\0'); - pcfPutLSB32(file, table->format); - switch (table->type) { - case PCF_PROPERTIES: - pcfPutINT32(file, format, pFont->info.nprops); - for (i = 0; i < pFont->info.nprops; i++) { - pcfPutINT32(file, format, offsetProps[i].name); - pcfPutINT8(file, format, pFont->info.isStringProp[i]); - pcfPutINT32(file, format, offsetProps[i].value); - } - for (i = 0; i < prop_pad; i++) - pcfPutINT8(file, format, 0); - pcfPutINT32(file, format, prop_string_size); - for (i = 0; i < pFont->info.nprops; i++) { - atom_name = pcfNameForAtom(pFont->info.props[i].name); - pcfWrite(file, atom_name, strlen(atom_name) + 1); - if (pFont->info.isStringProp[i]) { - atom_name = pcfNameForAtom(pFont->info.props[i].value); - pcfWrite(file, atom_name, strlen(atom_name) + 1); - } - } - break; - case PCF_ACCELERATORS: - pcfPutAccel(file, table->format, &bitmapFont->bitmapExtra->info); - break; - case PCF_METRICS: - if (PCF_FORMAT_MATCH(table->format, PCF_COMPRESSED_METRICS)) { - pcfPutINT16(file, format, bitmapFont->num_chars); - for (i = 0; i < bitmapFont->num_chars; i++) - pcfPutCompressedMetric(file, format, &bitmapFont->metrics[i].metrics); - } else { - pcfPutINT32(file, format, bitmapFont->num_chars); - for (i = 0; i < bitmapFont->num_chars; i++) - pcfPutMetric(file, format, &bitmapFont->metrics[i].metrics); - } - break; - case PCF_BITMAPS: - pcfPutINT32(file, format, bitmapFont->num_chars); - glyph = PCF_GLYPH_PAD(format); - offset = 0; - for (i = 0; i < bitmapFont->num_chars; i++) { - pcfPutINT32(file, format, offset); - offset += BYTES_FOR_GLYPH(&bitmapFont->metrics[i], glyph); - } - for (i = 0; i < GLYPHPADOPTIONS; i++) { - pcfPutINT32(file, format, - bitmapFont->bitmapExtra->bitmapsSizes[i]); - } - for (i = 0; i < bitmapFont->num_chars; i++) - pcfPutBitmap(file, format, &bitmapFont->metrics[i]); - break; - case PCF_INK_METRICS: - if (PCF_FORMAT_MATCH(table->format, PCF_COMPRESSED_METRICS)) { - pcfPutINT16(file, format, bitmapFont->num_chars); - for (i = 0; i < bitmapFont->num_chars; i++) - pcfPutCompressedMetric(file, format, &bitmapFont->ink_metrics[i]); - } else { - pcfPutINT32(file, format, bitmapFont->num_chars); - for (i = 0; i < bitmapFont->num_chars; i++) - pcfPutMetric(file, format, &bitmapFont->ink_metrics[i]); - } - break; - case PCF_BDF_ENCODINGS: - pcfPutINT16(file, format, pFont->info.firstCol); - pcfPutINT16(file, format, pFont->info.lastCol); - pcfPutINT16(file, format, pFont->info.firstRow); - pcfPutINT16(file, format, pFont->info.lastRow); - pcfPutINT16(file, format, pFont->info.defaultCh); - for (i = 0; i < nencodings; i++) { - if (ACCESSENCODING(bitmapFont->encoding,i)) - pcfPutINT16(file, format, - ACCESSENCODING(bitmapFont->encoding, i) - - bitmapFont->metrics); - else - pcfPutINT16(file, format, 0xFFFF); - } - break; - case PCF_SWIDTHS: - pcfPutINT32(file, format, bitmapFont->num_chars); - for (i = 0; i < bitmapFont->num_chars; i++) - pcfPutINT32(file, format, bitmapFont->bitmapExtra->sWidths[i]); - break; - case PCF_GLYPH_NAMES: - pcfPutINT32(file, format, bitmapFont->num_chars); - offset = 0; - for (i = 0; i < bitmapFont->num_chars; i++) { - pcfPutINT32(file, format, offset); - offset += strlen(pcfNameForAtom(bitmapFont->bitmapExtra->glyphNames[i])) + 1; - } - pcfPutINT32(file, format, offset); - for (i = 0; i < bitmapFont->num_chars; i++) { - atom_name = pcfNameForAtom(bitmapFont->bitmapExtra->glyphNames[i]); - pcfWrite(file, atom_name, strlen(atom_name) + 1); - } - break; - case PCF_BDF_ACCELERATORS: - pcfPutAccel(file, table->format, &pFont->info); - break; - } - } - - xfree(offsetProps); - return Successful; -} diff --git a/nx-X11/lib/font/bitmap/snfread.c b/nx-X11/lib/font/bitmap/snfread.c deleted file mode 100644 index 01b6bf3..0000000 --- a/nx-X11/lib/font/bitmap/snfread.c +++ /dev/null @@ -1,514 +0,0 @@ -/* $Xorg: snfread.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */ -/************************************************************************ -Copyright 1989 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -************************************************************************/ - -/* - -Copyright 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/snfread.c,v 1.12 2003/11/17 22:20:22 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifndef FONTMODULE -#include <ctype.h> -#endif - -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#include "snfstr.h" - -#include <stdarg.h> - -void -snfError(const char* message, ...) -{ - va_list args; - - va_start(args, message); - - fprintf(stderr, "SNF Error: "); - vfprintf(stderr, message, args); - va_end(args); -} - -static void snfUnloadFont(FontPtr pFont); - -static int -snfReadCharInfo(FontFilePtr file, CharInfoPtr charInfo, char *base) -{ - snfCharInfoRec snfCharInfo; - -#define Width(m) ((m).rightSideBearing - (m).leftSideBearing) -#define Height(m) ((m).ascent + (m).descent) - - if (FontFileRead(file, (char *) &snfCharInfo, sizeof snfCharInfo) != - sizeof(snfCharInfo)) { - return BadFontName; - } - charInfo->metrics = snfCharInfo.metrics; - if (snfCharInfo.exists) - charInfo->bits = base + snfCharInfo.byteOffset; - else - charInfo->bits = 0; - return Successful; -} - -static int -snfReadxCharInfo(FontFilePtr file, xCharInfo *charInfo) -{ - snfCharInfoRec snfCharInfo; - - if (FontFileRead(file, (char *) &snfCharInfo, sizeof snfCharInfo) != - sizeof(snfCharInfo)) { - return BadFontName; - } - *charInfo = snfCharInfo.metrics; - return Successful; -} - -static void -snfCopyInfo(snfFontInfoPtr snfInfo, FontInfoPtr pFontInfo) -{ - pFontInfo->firstCol = snfInfo->firstCol; - pFontInfo->lastCol = snfInfo->lastCol; - pFontInfo->firstRow = snfInfo->firstRow; - pFontInfo->lastRow = snfInfo->lastRow; - pFontInfo->defaultCh = snfInfo->chDefault; - pFontInfo->noOverlap = snfInfo->noOverlap; - pFontInfo->terminalFont = snfInfo->terminalFont; - pFontInfo->constantMetrics = snfInfo->constantMetrics; - pFontInfo->constantWidth = snfInfo->constantWidth; - pFontInfo->inkInside = snfInfo->inkInside; - pFontInfo->inkMetrics = snfInfo->inkMetrics; - pFontInfo->allExist = snfInfo->allExist; - pFontInfo->drawDirection = snfInfo->drawDirection; - pFontInfo->anamorphic = FALSE; - pFontInfo->cachable = TRUE; - pFontInfo->maxOverlap = 0; - pFontInfo->minbounds = snfInfo->minbounds.metrics; - pFontInfo->maxbounds = snfInfo->maxbounds.metrics; - pFontInfo->fontAscent = snfInfo->fontAscent; - pFontInfo->fontDescent = snfInfo->fontDescent; - pFontInfo->nprops = snfInfo->nProps; -} - -static int -snfReadProps(snfFontInfoPtr snfInfo, FontInfoPtr pFontInfo, FontFilePtr file) -{ - char *strings; - FontPropPtr pfp; - snfFontPropPtr psnfp; - char *propspace; - int bytestoalloc; - int i; - - bytestoalloc = snfInfo->nProps * sizeof(snfFontPropRec) + - BYTESOFSTRINGINFO(snfInfo); - propspace = (char *) xalloc(bytestoalloc); - if (!propspace) { - snfError("snfReadProps(): Couldn't allocate propspace (%d)\n", bytestoalloc); - return AllocError; - } - - if (FontFileRead(file, propspace, bytestoalloc) != bytestoalloc) { - xfree(propspace); - return BadFontName; - } - psnfp = (snfFontPropPtr) propspace; - - strings = propspace + BYTESOFPROPINFO(snfInfo); - - for (i = 0, pfp = pFontInfo->props; i < snfInfo->nProps; i++, pfp++, psnfp++) { - pfp->name = MakeAtom(&strings[psnfp->name], - (unsigned) strlen(&strings[psnfp->name]), 1); - pFontInfo->isStringProp[i] = psnfp->indirect; - if (psnfp->indirect) - pfp->value = (INT32) MakeAtom(&strings[psnfp->value], - (unsigned) strlen(&strings[psnfp->value]), 1); - else - pfp->value = psnfp->value; - } - - xfree(propspace); - return Successful; -} - -static int -snfReadHeader(snfFontInfoPtr snfInfo, FontFilePtr file) -{ - if (FontFileRead(file, (char *) snfInfo, sizeof *snfInfo) != sizeof *snfInfo) - return BadFontName; - - if (snfInfo->version1 != FONT_FILE_VERSION || - snfInfo->version2 != FONT_FILE_VERSION) - return BadFontName; - return Successful; -} - -static int snf_set; -static int snf_bit, snf_byte, snf_glyph, snf_scan; - -void -SnfSetFormat (int bit, int byte, int glyph, int scan) -{ - snf_bit = bit; - snf_byte = byte; - snf_glyph = glyph; - snf_scan = scan; - snf_set = 1; -} - -static void -SnfGetFormat (int *bit, int *byte, int *glyph, int *scan) -{ - if (!snf_set) - FontDefaultFormat (&snf_bit, &snf_byte, &snf_glyph, &snf_scan); - *bit = snf_bit; - *byte = snf_byte; - *glyph = snf_glyph; - *scan = snf_scan; -} - -int -snfReadFont(FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan) -{ - snfFontInfoRec fi; - unsigned bytestoalloc; - int i, j; - char *fontspace; - BitmapFontPtr bitmapFont; - int num_chars; - int bitmapsSize; - int ret; - int metrics_off; - int encoding_off; - int props_off; - int isStringProp_off; - int ink_off; - char *bitmaps; - int def_bit, def_byte, def_glyph, def_scan; - - ret = snfReadHeader(&fi, file); - if (ret != Successful) - return ret; - - SnfGetFormat (&def_bit, &def_byte, &def_glyph, &def_scan); - - /* - * we'll allocate one chunk of memory and split it among the various parts - * of the font: - * - * BitmapFontRec CharInfoRec's Glyphs Encoding DIX Properties Ink CharInfoRec's - * - * If the glyphpad is not the same as the font file, then the glyphs - * are allocated separately, to be later realloc'ed when we know - * how big to make them. - */ - - bitmapsSize = BYTESOFGLYPHINFO(&fi); - num_chars = n2dChars(&fi); - bytestoalloc = sizeof(BitmapFontRec); /* bitmapFont */ - metrics_off = bytestoalloc; - bytestoalloc += num_chars * sizeof(CharInfoRec); /* metrics */ - encoding_off = bytestoalloc; - bytestoalloc += NUM_SEGMENTS(num_chars) * sizeof(CharInfoPtr**); - /* encoding */ - props_off = bytestoalloc; - bytestoalloc += fi.nProps * sizeof(FontPropRec); /* props */ - isStringProp_off = bytestoalloc; - bytestoalloc += fi.nProps * sizeof(char); /* isStringProp */ - bytestoalloc = (bytestoalloc + 3) & ~3; - ink_off = bytestoalloc; - if (fi.inkMetrics) - bytestoalloc += num_chars * sizeof(xCharInfo); /* ink_metrics */ - - fontspace = (char *) xalloc(bytestoalloc); - if (!fontspace) { - snfError("snfReadFont(): Couldn't allocate fontspace (%d)\n", bytestoalloc); - return AllocError; - } - bitmaps = (char *) xalloc (bitmapsSize); - if (!bitmaps) - { - snfError("snfReadFont(): Couldn't allocate bitmaps (%d)\n", bitmapsSize); - xfree (fontspace); - return AllocError; - } - /* - * now fix up pointers - */ - - bitmapFont = (BitmapFontPtr) fontspace; - bitmapFont->num_chars = num_chars; - bitmapFont->metrics = (CharInfoPtr) (fontspace + metrics_off); - bitmapFont->encoding = (CharInfoPtr **) (fontspace + encoding_off); - bitmapFont->bitmaps = bitmaps; - bitmapFont->pDefault = NULL; - bitmapFont->bitmapExtra = NULL; - pFont->info.props = (FontPropPtr) (fontspace + props_off); - pFont->info.isStringProp = (char *) (fontspace + isStringProp_off); - if (fi.inkMetrics) - bitmapFont->ink_metrics = (xCharInfo *) (fontspace + ink_off); - else - bitmapFont->ink_metrics = 0; - - /* - * read the CharInfo - */ - - ret = Successful; - memset(bitmapFont->encoding, 0, - NUM_SEGMENTS(num_chars)*sizeof(CharInfoPtr*)); - for (i = 0; ret == Successful && i < num_chars; i++) { - ret = snfReadCharInfo(file, &bitmapFont->metrics[i], bitmaps); - if (bitmapFont->metrics[i].bits) { - if (!bitmapFont->encoding[SEGMENT_MAJOR(i)]) { - bitmapFont->encoding[SEGMENT_MAJOR(i)]= - (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE, - sizeof(CharInfoPtr)); - if (!bitmapFont->encoding[SEGMENT_MAJOR(i)]) { - ret = AllocError; - break; - } - } - ACCESSENCODINGL(bitmapFont->encoding,i) = &bitmapFont->metrics[i]; - } - } - - if (ret != Successful) { - xfree(bitmaps); - if(bitmapFont->encoding) { - for(j=0; j<SEGMENT_MAJOR(i); j++) - xfree(bitmapFont->encoding[i]); - } - xfree(fontspace); - return ret; - } - /* - * read the glyphs - */ - - if (FontFileRead(file, bitmaps, bitmapsSize) != bitmapsSize) { - xfree(bitmaps); - xfree(fontspace); - return BadFontName; - } - - if (def_bit != bit) - BitOrderInvert((unsigned char *)bitmaps, bitmapsSize); - if ((def_byte == def_bit) != (bit == byte)) { - switch (bit == byte ? def_scan : scan) { - case 1: - break; - case 2: - TwoByteSwap((unsigned char *)bitmaps, bitmapsSize); - break; - case 4: - FourByteSwap((unsigned char *)bitmaps, bitmapsSize); - break; - } - } - if (def_glyph != glyph) { - char *padbitmaps; - int sizepadbitmaps; - int sizechar; - CharInfoPtr metric; - - sizepadbitmaps = 0; - metric = bitmapFont->metrics; - for (i = 0; i < num_chars; i++) - { - if (metric->bits) - sizepadbitmaps += BYTES_FOR_GLYPH(metric,glyph); - metric++; - } - padbitmaps = (char *) xalloc(sizepadbitmaps); - if (!padbitmaps) { - snfError("snfReadFont(): Couldn't allocate padbitmaps (%d)\n", sizepadbitmaps); - xfree (bitmaps); - xfree (fontspace); - return AllocError; - } - metric = bitmapFont->metrics; - bitmapFont->bitmaps = padbitmaps; - for (i = 0; i < num_chars; i++) { - sizechar = RepadBitmap(metric->bits, padbitmaps, - def_glyph, glyph, - metric->metrics.rightSideBearing - - metric->metrics.leftSideBearing, - metric->metrics.ascent + metric->metrics.descent); - metric->bits = padbitmaps; - padbitmaps += sizechar; - metric++; - } - xfree(bitmaps); - } - - /* now read and atom'ize properties */ - - ret = snfReadProps(&fi, &pFont->info, file); - if (ret != Successful) { - xfree(fontspace); - return ret; - } - snfCopyInfo(&fi, &pFont->info); - - /* finally, read the ink metrics if the exist */ - - if (fi.inkMetrics) { - ret = Successful; - ret = snfReadxCharInfo(file, &pFont->info.ink_minbounds); - ret = snfReadxCharInfo(file, &pFont->info.ink_maxbounds); - for (i = 0; ret == Successful && i < num_chars; i++) - ret = snfReadxCharInfo(file, &bitmapFont->ink_metrics[i]); - if (ret != Successful) { - xfree(fontspace); - return ret; - } - } else { - pFont->info.ink_minbounds = pFont->info.minbounds; - pFont->info.ink_maxbounds = pFont->info.maxbounds; - } - - if (pFont->info.defaultCh != (unsigned short) NO_SUCH_CHAR) { - unsigned int r, - c, - cols; - - r = pFont->info.defaultCh >> 8; - c = pFont->info.defaultCh & 0xFF; - if (pFont->info.firstRow <= r && r <= pFont->info.lastRow && - pFont->info.firstCol <= c && c <= pFont->info.lastCol) { - cols = pFont->info.lastCol - pFont->info.firstCol + 1; - r = r - pFont->info.firstRow; - c = c - pFont->info.firstCol; - bitmapFont->pDefault = &bitmapFont->metrics[r * cols + c]; - } - } - bitmapFont->bitmapExtra = (BitmapExtraPtr) 0; - pFont->fontPrivate = (pointer) bitmapFont; - pFont->get_glyphs = bitmapGetGlyphs; - pFont->get_metrics = bitmapGetMetrics; - pFont->unload_font = snfUnloadFont; - pFont->unload_glyphs = NULL; - pFont->bit = bit; - pFont->byte = byte; - pFont->glyph = glyph; - pFont->scan = scan; - return Successful; -} - -int -snfReadFontInfo(FontInfoPtr pFontInfo, FontFilePtr file) -{ - int ret; - snfFontInfoRec fi; - int bytestoskip; - int num_chars; - - ret = snfReadHeader(&fi, file); - if (ret != Successful) - return ret; - snfCopyInfo(&fi, pFontInfo); - - pFontInfo->props = (FontPropPtr) xalloc(fi.nProps * sizeof(FontPropRec)); - if (!pFontInfo->props) { - snfError("snfReadFontInfo(): Couldn't allocate props (%d*%d)\n", fi.nProps, sizeof(FontPropRec)); - return AllocError; - } - pFontInfo->isStringProp = (char *) xalloc(fi.nProps * sizeof(char)); - if (!pFontInfo->isStringProp) { - snfError("snfReadFontInfo(): Couldn't allocate isStringProp (%d*%d)\n", fi.nProps, sizeof(char)); - xfree(pFontInfo->props); - return AllocError; - } - num_chars = n2dChars(&fi); - bytestoskip = num_chars * sizeof(snfCharInfoRec); /* charinfos */ - bytestoskip += BYTESOFGLYPHINFO(&fi); - (void)FontFileSkip(file, bytestoskip); - - ret = snfReadProps(&fi, pFontInfo, file); - if (ret != Successful) { - xfree(pFontInfo->props); - xfree(pFontInfo->isStringProp); - return ret; - } - if (fi.inkMetrics) { - ret = snfReadxCharInfo(file, &pFontInfo->ink_minbounds); - if (ret != Successful) { - xfree(pFontInfo->props); - xfree(pFontInfo->isStringProp); - return ret; - } - ret = snfReadxCharInfo(file, &pFontInfo->ink_maxbounds); - if (ret != Successful) { - xfree(pFontInfo->props); - xfree(pFontInfo->isStringProp); - return ret; - } - } else { - pFontInfo->ink_minbounds = pFontInfo->minbounds; - pFontInfo->ink_maxbounds = pFontInfo->maxbounds; - } - return Successful; - -} - -static void -snfUnloadFont(FontPtr pFont) -{ - BitmapFontPtr bitmapFont; - - bitmapFont = (BitmapFontPtr) pFont->fontPrivate; - xfree (bitmapFont->bitmaps); - xfree (bitmapFont); - DestroyFontRec (pFont); -} - diff --git a/nx-X11/lib/font/bitmap/snfstr.h b/nx-X11/lib/font/bitmap/snfstr.h deleted file mode 100644 index 8158089..0000000 --- a/nx-X11/lib/font/bitmap/snfstr.h +++ /dev/null @@ -1,185 +0,0 @@ -/* $Xorg: snfstr.h,v 1.4 2001/02/09 02:04:02 xorgcvs Exp $ */ -/*********************************************************** -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the name of Digital not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -/* - -Copyright 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/bitmap/snfstr.h,v 1.5 2001/12/14 19:56:47 dawes Exp $ */ - -#ifndef SNFSTR_H -#define SNFSTR_H 1 - -#include <X11/fonts/fntfilio.h> - -/*- - * This file describes the Server Natural Font format. - * SNF fonts are both CPU-dependent and frame buffer bit order dependent. - * This file is used by: - * 1) the server, to hold font information read out of font files. - * 2) font converters - * - * Each font file contains the following - * data structures, with no padding in-between. - * - * 1) The XFONTINFO structure - * hand-padded to a two-short boundary. - * maxbounds.byteoffset is the total number of bytes in the - * glpyh array - * maxbounds.bitOffset is thetotal width of the unpadded font - * - * 2) The XCHARINFO array - * indexed directly with character codes, both on disk - * and in memory. - * - * 3) Character glyphs - * padded in the server-natural way, and - * ordered in the device-natural way. - * End of glyphs padded to 32-bit boundary. - * - * 4) nProps font properties - * - * 5) a sequence of null-terminated strings, for font properties - */ - -#define FONT_FILE_VERSION 4 - -typedef struct _snfFontProp { - CARD32 name; /* offset of string */ - INT32 value; /* number or offset of string */ - Bool indirect; /* value is a string offset */ -} snfFontPropRec; - -/* - * the following macro definitions describe a font file image in memory - */ -#define ADDRCharInfoRec( pfi) \ - ((snfCharInfoRec *) &(pfi)[1]) - -#define ADDRCHARGLYPHS( pfi) \ - (((char *) &(pfi)[1]) + BYTESOFCHARINFO(pfi)) - -/* - * pad out glyphs to a CARD32 boundary - */ -#define ADDRXFONTPROPS( pfi) \ - ((snfFontPropRec *) ((char *)ADDRCHARGLYPHS( pfi) + BYTESOFGLYPHINFO(pfi))) - -#define ADDRSTRINGTAB( pfi) \ - ((char *)ADDRXFONTPROPS( pfi) + BYTESOFPROPINFO(pfi)) - -#define n2dChars(pfi) (((pfi)->lastRow - (pfi)->firstRow + 1) * \ - ((pfi)->lastCol - (pfi)->firstCol + 1)) -#define BYTESOFFONTINFO(pfi) (sizeof(snfFontInfoRec)) -#define BYTESOFCHARINFO(pfi) (sizeof(snfCharInfoRec) * n2dChars(pfi)) -#define BYTESOFPROPINFO(pfi) (sizeof(snfFontPropRec) * (pfi)->nProps) -#define BYTESOFSTRINGINFO(pfi) ((pfi)->lenStrings) -#define BYTESOFGLYPHINFO(pfi) (((pfi)->maxbounds.byteOffset+3) & ~0x3) -#define BYTESOFINKINFO(pfi) (sizeof(snfCharInfoRec) * n2dChars(pfi)) - -typedef struct _snfFontProp *snfFontPropPtr; -typedef struct _snfCharInfo *snfCharInfoPtr; -typedef struct _snfFontInfo *snfFontInfoPtr; - -typedef struct _snfCharInfo { - xCharInfo metrics; /* info preformatted for Queries */ - unsigned byteOffset:24; /* byte offset of the raster from pGlyphs */ - unsigned exists:1; /* true iff glyph exists for this char */ - unsigned pad:7; /* must be zero for now */ -} snfCharInfoRec; - -typedef struct _snfFontInfo { - unsigned int version1; /* version stamp */ - unsigned int allExist; - unsigned int drawDirection; - unsigned int noOverlap; /* true if: - * max(rightSideBearing-characterWidth) <= - * minbounds->metrics.leftSideBearing */ - unsigned int constantMetrics; - unsigned int terminalFont; /* Should be deprecated! true if: constant - * metrics && leftSideBearing == 0 && - * rightSideBearing == characterWidth && - * ascent == fontAscent && descent == - * fontDescent */ - unsigned int linear:1; /* true if firstRow == lastRow */ - unsigned int constantWidth:1; /* true if - * minbounds->metrics.characterWidth - * == - * maxbounds->metrics.characterWidth */ - unsigned int inkInside:1; /* true if for all defined glyphs: - * leftSideBearing >= 0 && rightSideBearing <= - * characterWidth && -fontDescent <= ascent <= - * fontAscent && -fontAscent <= descent <= - * fontDescent */ - unsigned int inkMetrics:1; /* ink metrics != bitmap metrics */ - /* used with terminalFont */ - /* see font's pInk{CI,Min,Max} */ - unsigned int padding:28; - unsigned int firstCol; - unsigned int lastCol; - unsigned int firstRow; - unsigned int lastRow; - unsigned int nProps; - unsigned int lenStrings; /* length in bytes of string table */ - unsigned int chDefault; /* default character */ - int fontDescent; /* minimum for quality typography */ - int fontAscent; /* minimum for quality typography */ - snfCharInfoRec minbounds; /* MIN of glyph metrics over all chars */ - snfCharInfoRec maxbounds; /* MAX of glyph metrics over all chars */ - unsigned int pixDepth; /* intensity bits per pixel */ - unsigned int glyphSets; /* number of sets of glyphs, for sub-pixel - * positioning */ - unsigned int version2; /* version stamp double-check */ -} snfFontInfoRec; - -extern void SnfSetFormat ( int bit, int byte, int glyph, int scan ); -extern int snfReadFont ( FontPtr pFont, FontFilePtr file, - int bit, int byte, int glyph, int scan ); -extern int snfReadFontInfo ( FontInfoPtr pFontInfo, FontFilePtr file ); -extern void snfError( const char* message, ... ); - -#endif /* SNFSTR_H */ diff --git a/nx-X11/lib/font/builtins/Imakefile b/nx-X11/lib/font/builtins/Imakefile deleted file mode 100644 index f704348..0000000 --- a/nx-X11/lib/font/builtins/Imakefile +++ /dev/null @@ -1,17 +0,0 @@ -XCOMM $XFree86: xc/lib/font/builtins/Imakefile,v 1.2 1999/11/19 14:59:08 hohndel Exp $ -XCOMM -XCOMM -XCOMM $XConsortium: Imakefile /main/14 1996/11/03 19:58:41 kaleb $ -#include <Server.tmpl> - - INCLUDES = -I$(FONTINCSRC) -I../include -I$(SERVERSRC)/include - HEADERS = - - SRCS = dir.c file.c fonts.c fpe.c render.c - OBJS = dir.o file.o fonts.o fpe.o render.o - -SubdirLibraryRule($(OBJS)) -NormalLibraryObjectRule() -NormalLintTarget($(SRCS)) - -DependTarget() diff --git a/nx-X11/lib/font/builtins/buildfont b/nx-X11/lib/font/builtins/buildfont deleted file mode 100644 index aa4602f..0000000 --- a/nx-X11/lib/font/builtins/buildfont +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# -# Convert a bdf file into C-code suitable for inclusion in -# builtin fonts -# -FONT=$1 -NAME=$2 -echo 'static const char file_'$NAME'[] = {' -bdftopcf -p1 -u1 $1 | - compress -b 12 | - od -b -v -w8 | - sed 's/^[0-9]*\( *\)/\1\1\1\1/' | - sed 's/\([0-9][0-9]*\)/'"'"'\\\1'"'"',/g' -echo '};' diff --git a/nx-X11/lib/font/builtins/builtin.h b/nx-X11/lib/font/builtins/builtin.h deleted file mode 100644 index ea98407..0000000 --- a/nx-X11/lib/font/builtins/builtin.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Id: builtin.h,v 1.2 1999/11/02 06:16:47 keithp Exp $ - * - * Copyright 1999 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ -/* $XFree86: xc/lib/font/builtins/builtin.h,v 1.3 1999/12/30 02:29:49 robin Exp $ */ - -#include <X11/Xdefs.h> -#include <X11/fonts/font.h> -#include <X11/fonts/fontxlfd.h> -#include <X11/fonts/fntfil.h> -#include <X11/fonts/fntfilio.h> -#include <X11/fonts/fntfilst.h> - -typedef struct _BuiltinFile { - const char *name; - int len; - const char *bits; -} BuiltinFileRec, *BuiltinFilePtr; - -typedef struct _BuiltinDir { - char *file_name; - char *font_name; -} BuiltinDirRec, *BuiltinDirPtr; - -typedef struct _BuiltinAlias { - char *alias_name; - char *font_name; -} BuiltinAliasRec, *BuiltinAliasPtr; - -extern const BuiltinFileRec builtin_files[]; -extern const int builtin_files_count; - -extern const BuiltinDirRec builtin_dir[]; -extern const int builtin_dir_count; - -extern const BuiltinAliasRec builtin_alias[]; -extern const int builtin_alias_count; - -extern FontFilePtr BuiltinFileOpen (); -extern int BuiltinFileClose (); diff --git a/nx-X11/lib/font/builtins/dir.c b/nx-X11/lib/font/builtins/dir.c deleted file mode 100644 index fb2f82c..0000000 --- a/nx-X11/lib/font/builtins/dir.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Id: dir.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ - * - * Copyright 1999 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ -/* $XFree86: xc/lib/font/builtins/dir.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "builtin.h" - -int -BuiltinReadDirectory (directory, pdir) - char *directory; - FontDirectoryPtr *pdir; -{ - FontDirectoryPtr dir; - int i; - - dir = FontFileMakeDir ("", builtin_dir_count); - for (i = 0; i < builtin_dir_count; i++) - { - if (!FontFileAddFontFile (dir, - (char *) builtin_dir[i].font_name, - (char *) builtin_dir[i].file_name)) - { - FontFileFreeDir (dir); - return BadFontPath; - } - } - for (i = 0; i < builtin_alias_count; i++) - { - if (!FontFileAddFontAlias (dir, - (char *) builtin_alias[i].alias_name, - (char *) builtin_alias[i].font_name)) - { - FontFileFreeDir (dir); - return BadFontPath; - } - } - FontFileSortDir (dir); - *pdir = dir; - return Successful; -} diff --git a/nx-X11/lib/font/builtins/file.c b/nx-X11/lib/font/builtins/file.c deleted file mode 100644 index 024c353..0000000 --- a/nx-X11/lib/font/builtins/file.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Id: file.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ - * - * Copyright 1999 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ -/* $XFree86: xc/lib/font/builtins/file.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "builtin.h" - -typedef struct _BuiltinIO { - int offset; - BuiltinFilePtr file; -} BuiltinIORec, *BuiltinIOPtr; - -static int -BuiltinFill (f) - BufFilePtr f; -{ - int left, len; - BuiltinIOPtr io = ((BuiltinIOPtr) f->private); - - left = io->file->len - io->offset; - if (left <= 0) - { - f->left = 0; - return BUFFILEEOF; - } - len = BUFFILESIZE; - if (len > left) - len = left; - bcopy (io->file->bits + io->offset, f->buffer, len); - io->offset += len; - f->left = len - 1; - f->bufp = f->buffer + 1; - return f->buffer[0]; -} - -static int -BuiltinSkip (f, count) - BufFilePtr f; - int count; -{ - BuiltinIOPtr io = ((BuiltinIOPtr) f->private); - int curoff; - int fileoff; - int todo; - int left; - - curoff = f->bufp - f->buffer; - fileoff = curoff + f->left; - if (curoff + count <= fileoff) { - f->bufp += count; - f->left -= count; - } else { - todo = count - (fileoff - curoff); - io->offset += todo; - if (io->offset > io->file->len) - io->offset = io->file->len; - if (io->offset < 0) - io->offset = 0; - f->left = 0; - } - return count; -} - -static int -BuiltinClose (f, doClose) - BufFilePtr f; -{ - BuiltinIOPtr io = ((BuiltinIOPtr) f->private); - - xfree (io); - return 1; -} - - -FontFilePtr -BuiltinFileOpen (name) - char *name; -{ - int i; - BuiltinIOPtr io; - BufFilePtr raw, cooked; - - if (*name == '/') name++; - for (i = 0; i < builtin_files_count; i++) - if (!strcmp (name, builtin_files[i].name)) - break; - if (i == builtin_files_count) - return NULL; - io = (BuiltinIOPtr) xalloc (sizeof (BuiltinIORec)); - if (!io) - return NULL; - io->offset = 0; - io->file = (void *) &builtin_files[i]; - raw = BufFileCreate ((char *) io, BuiltinFill, 0, BuiltinSkip, BuiltinClose); - if (!raw) - { - xfree (io); - return NULL; - } - if (cooked = BufFilePushCompressed (raw)) - raw = cooked; - else - { - raw->left += raw->bufp - raw->buffer; - raw->bufp = raw->buffer; - } - return (FontFilePtr) raw; -} - -int -BuiltinFileClose (f) - FontFilePtr f; -{ - return BufFileClose ((BufFilePtr) f, TRUE); -} diff --git a/nx-X11/lib/font/builtins/fonts.c b/nx-X11/lib/font/builtins/fonts.c deleted file mode 100644 index 30c762f..0000000 --- a/nx-X11/lib/font/builtins/fonts.c +++ /dev/null @@ -1,2438 +0,0 @@ -/* - * Id: fonts.c,v 1.2 1999/11/02 06:16:47 keithp Exp $ - * - * Copyright 1999 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ -/* $XFree86: xc/lib/font/builtins/fonts.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "builtin.h" - -static const char file_6x13[] = { - '\037', '\235', '\214', '\001', '\314', '\214', '\201', '\223', - '\000', '\200', '\301', '\000', '\006', '\023', '\032', '\244', - '\042', '\300', '\040', '\246', '\204', '\015', '\023', '\042', - '\004', '\100', '\046', '\041', '\273', '\210', '\004', '\024', - '\116', '\104', '\223', '\021', '\000', '\224', '\001', '\006', - '\021', '\050', '\114', '\210', '\317', '\201', '\101', '\134', - '\007', '\014', '\102', '\320', '\150', '\220', '\243', '\101', - '\130', '\026', '\014', '\202', '\030', '\251', '\062', '\042', - '\206', '\015', '\006', '\201', '\320', '\004', '\200', '\010', - '\044', '\000', '\024', '\035', '\014', '\002', '\332', '\211', - '\104', '\044', '\000', '\130', '\063', '\017', '\112', '\064', - '\130', '\321', '\040', '\076', '\024', '\064', '\053', '\354', - '\014', '\040', '\041', '\341', '\004', '\211', '\070', '\145', - '\112', '\144', '\221', '\120', '\206', '\104', '\037', '\011', - '\213', '\110', '\134', '\222', '\260', '\211', '\304', '\055', - '\011', '\323', '\110', '\304', '\223', '\060', '\217', '\302', - '\006', '\011', '\011', '\051', '\144', '\153', '\360', '\221', - '\102', '\262', '\006', '\071', '\335', '\115', '\230', '\112', - '\142', '\254', '\204', '\263', '\024', '\362', '\110', '\030', - '\114', '\242', '\264', '\204', '\332', '\044', '\256', '\113', - '\330', '\116', '\342', '\275', '\204', '\035', '\046', '\006', - '\020', '\061', '\121', '\314', '\104', '\000', '\012', '\322', - '\136', '\136', '\223', '\220', '\316', '\345', '\005', '\011', - '\373', '\134', '\066', '\100', '\023', '\321', '\104', '\043', - '\117', '\234', '\120', '\161', '\022', '\244', '\111', '\221', - '\057', '\122', '\212', '\034', '\111', '\062', '\205', '\212', - '\224', '\054', '\006', '\121', '\127', '\161', '\102', '\344', - '\066', '\200', '\046', '\151', '\346', '\214', '\001', '\140', - '\244', '\165', '\022', '\046', '\131', '\276', '\260', '\166', - '\115', '\074', '\015', '\236', '\062', '\025', '\257', '\024', - '\111', '\162', '\004', '\011', '\025', '\345', '\255', '\305', - '\066', '\201', '\236', '\246', '\116', '\033', '\000', '\123', - '\230', '\004', '\121', '\015', '\100', '\012', '\370', '\042', - '\124', '\256', '\044', '\041', '\102', '\005', '\011', '\166', - '\346', '\123', '\312', '\264', '\111', '\063', '\344', '\215', - '\033', '\062', '\145', '\334', '\314', '\201', '\016', '\040', - '\010', '\021', '\042', '\137', '\324', '\226', '\005', '\023', - '\257', '\055', '\047', '\226', '\107', '\111', '\140', '\121', - '\004', '\023', '\001', '\046', '\241', '\205', '\130', '\120', - '\074', '\221', '\204', '\152', '\015', '\076', '\130', '\136', - '\021', '\123', '\074', '\301', '\104', '\025', '\124', '\044', - '\221', '\332', '\027', '\130', '\134', '\230', '\341', '\206', - '\035', '\176', '\210', '\333', '\024', '\120', '\004', '\061', - '\304', '\204', '\107', '\000', '\060', '\104', '\177', '\126', - '\024', '\041', '\105', '\020', '\107', '\274', '\246', '\036', - '\173', '\110', '\270', '\210', '\104', '\020', '\122', '\114', - '\201', '\036', '\154', '\262', '\321', '\146', '\033', '\156', - '\264', '\075', '\201', '\003', '\016', '\065', '\344', '\240', - '\043', '\217', '\076', '\136', '\127', '\204', '\023', '\103', - '\074', '\101', '\004', '\213', '\000', '\304', '\340', '\342', - '\023', '\120', '\144', '\041', '\005', '\165', '\326', '\171', - '\124', '\207', '\030', '\154', '\244', '\061', '\006', '\010', - '\144', '\274', '\321', '\106', '\030', '\151', '\270', '\001', - '\202', '\031', '\366', '\321', '\341', '\002', '\010', '\040', - '\114', '\201', '\106', '\030', '\162', '\224', '\001', '\102', - '\030', '\367', '\201', '\220', '\237', '\032', '\157', '\344', - '\341', '\002', '\161', '\251', '\121', '\001', '\100', '\013', - '\300', '\011', '\327', '\202', '\021', '\316', '\101', '\107', - '\050', '\167', '\336', '\265', '\040', '\105', '\013', '\361', - '\315', '\127', '\337', '\175', '\371', '\355', '\107', '\106', - '\013', '\055', '\304', '\060', '\103', '\246', '\062', '\300', - '\320', '\302', '\015', '\065', '\174', '\032', '\352', '\020', - '\055', '\330', '\340', '\151', '\221', '\107', '\046', '\231', - '\051', '\000', '\322', '\161', '\051', '\150', '\154', '\043', - '\162', '\350', '\241', '\023', '\000', '\140', '\361', '\005', - '\022', '\323', '\125', '\047', '\150', '\024', '\125', '\370', - '\367', '\305', '\215', '\355', '\051', '\005', '\100', '\000', - '\304', '\026', '\153', '\020', '\150', '\006', '\105', '\264', - '\023', '\151', '\244', '\201', '\246', '\254', '\101', '\314', - '\002', '\340', '\354', '\262', '\044', '\375', '\223', '\054', - '\000', '\321', '\116', '\273', '\323', '\266', '\334', '\116', - '\145', '\020', '\070', '\000', '\000', '\142', '\210', '\041', - '\213', '\010', '\042', '\056', '\271', '\346', '\216', '\133', - '\356', '\271', '\353', '\252', '\233', '\056', '\272', '\354', - '\276', '\333', '\056', '\274', '\356', '\306', '\153', '\157', - '\275', '\370', '\322', '\253', '\357', '\274', '\374', '\312', - '\353', '\357', '\275', '\373', '\376', '\233', '\157', '\277', - '\000', '\023', '\074', '\260', '\300', '\001', '\027', '\214', - '\260', '\301', '\011', '\037', '\254', '\360', '\303', '\016', - '\107', '\334', '\360', '\304', '\014', '\127', '\274', '\360', - '\305', '\020', '\123', '\214', '\261', '\304', '\026', '\147', - '\334', '\061', '\307', '\033', '\153', '\354', '\161', '\310', - '\037', '\213', '\014', '\362', '\310', '\050', '\237', '\254', - '\262', '\311', '\054', '\227', '\354', '\062', '\311', '\060', - '\247', '\334', '\162', '\314', '\053', '\277', '\054', '\263', - '\315', '\065', '\323', '\074', '\363', '\315', '\072', '\343', - '\274', '\163', '\316', '\074', '\007', '\015', '\364', '\320', - '\077', '\027', '\355', '\363', '\321', '\376', '\322', '\004', - '\056', '\115', '\160', '\031', '\244', '\101', '\102', '\047', - '\044', '\104', '\103', '\102', '\101', '\044', '\104', '\253', - '\101', '\150', '\265', '\224', '\120', '\035', '\011', '\011', - '\222', '\220', '\135', '\171', '\361', '\225', '\220', '\055', - '\011', '\015', '\223', '\020', '\064', '\011', '\165', '\223', - '\220', '\072', '\011', '\075', '\146', '\020', '\001', '\023', - '\105', '\060', '\221', '\007', '\023', '\255', '\060', '\021', - '\016', '\023', '\025', '\061', '\221', '\024', '\023', '\175', - '\061', '\021', '\033', '\023', '\345', '\061', '\221', '\041', - '\023', '\115', '\062', '\021', '\050', '\023', '\265', '\062', - '\221', '\056', '\023', '\035', '\063', '\021', '\065', '\023', - '\205', '\063', '\221', '\073', '\023', '\355', '\063', '\021', - '\002', '\021', '\125', '\020', '\221', '\010', '\021', '\275', - '\020', '\021', '\017', '\021', '\045', '\021', '\221', '\025', - '\021', '\215', '\021', '\021', '\034', '\021', '\365', '\021', - '\221', '\042', '\021', '\135', '\022', '\021', '\051', '\021', - '\305', '\022', '\221', '\057', '\021', '\055', '\023', '\021', - '\066', '\021', '\225', '\023', '\221', '\074', '\021', '\375', - '\023', '\021', '\003', '\076', '\145', '\340', '\223', '\011', - '\076', '\315', '\340', '\023', '\020', '\076', '\065', '\341', - '\223', '\026', '\076', '\235', '\341', '\023', '\035', '\076', - '\005', '\342', '\223', '\043', '\076', '\155', '\342', '\023', - '\052', '\076', '\325', '\342', '\223', '\060', '\076', '\075', - '\343', '\023', '\067', '\076', '\245', '\343', '\223', '\075', - '\076', '\015', '\320', '\021', '\004', '\035', '\165', '\320', - '\221', '\012', '\035', '\335', '\320', '\021', '\021', '\035', - '\105', '\321', '\221', '\027', '\035', '\255', '\321', '\021', - '\036', '\035', '\025', '\322', '\221', '\044', '\035', '\175', - '\322', '\021', '\053', '\035', '\311', '\105', '\107', '\214', - '\321', '\221', '\151', '\164', '\004', '\034', '\035', '\151', - '\107', '\107', '\364', '\321', '\221', '\003', '\024', '\300', - '\040', '\024', '\170', '\040', '\000', '\102', '\040', '\101', - '\027', '\110', '\160', '\007', '\022', '\104', '\202', '\004', - '\253', '\040', '\101', '\061', '\110', '\360', '\015', '\022', - '\344', '\203', '\004', '\023', '\041', '\101', '\113', '\110', - '\160', '\024', '\022', '\204', '\205', '\004', '\173', '\041', - '\101', '\145', '\110', '\360', '\032', '\022', '\044', '\207', - '\004', '\343', '\041', '\101', '\177', '\110', '\160', '\001', - '\244', '\001', '\000', '\006', '\162', '\130', '\202', '\034', - '\312', '\040', '\207', '\077', '\310', '\041', '\023', '\162', - '\230', '\205', '\034', '\232', '\041', '\207', '\163', '\310', - '\041', '\040', '\162', '\330', '\210', '\034', '\152', '\042', - '\207', '\247', '\310', '\041', '\055', '\162', '\030', '\214', - '\034', '\072', '\043', '\207', '\333', '\310', '\041', '\072', - '\162', '\130', '\217', '\034', '\012', '\040', '\045', '\000', - '\170', '\000', '\030', '\071', '\000', '\306', '\024', '\200', - '\321', '\006', '\140', '\034', '\002', '\030', '\241', '\000', - '\306', '\056', '\200', '\121', '\015', '\140', '\274', '\003', - '\030', '\011', '\001', '\306', '\110', '\200', '\321', '\023', - '\140', '\134', '\005', '\030', '\121', '\142', '\220', '\142', - '\200', '\121', '\032', '\140', '\374', '\006', '\030', '\331', - '\001', '\306', '\174', '\200', '\321', '\000', '\106', '\231', - '\200', '\121', '\100', '\140', '\224', '\026', '\030', '\105', - '\007', '\106', '\071', '\202', '\121', '\250', '\140', '\224', - '\060', '\030', '\305', '\015', '\106', '\331', '\203', '\121', - '\020', '\141', '\224', '\112', '\030', '\105', '\024', '\106', - '\171', '\205', '\121', '\170', '\141', '\224', '\144', '\030', - '\305', '\032', '\106', '\031', '\207', '\121', '\340', '\141', - '\224', '\176', '\030', '\105', '\001', '\005', '\001', '\300', - '\005', '\142', '\111', '\202', '\130', '\306', '\040', '\226', - '\076', '\210', '\345', '\022', '\142', '\211', '\205', '\130', - '\226', '\041', '\226', '\162', '\210', '\345', '\037', '\142', - '\311', '\210', '\130', '\146', '\042', '\226', '\246', '\210', - '\345', '\054', '\142', '\011', '\214', '\130', '\066', '\043', - '\226', '\332', '\210', '\345', '\071', '\142', '\111', '\217', - '\130', '\006', '\040', '\063', '\000', '\160', '\000', '\066', - '\067', '\200', '\115', '\024', '\140', '\263', '\006', '\330', - '\024', '\002', '\066', '\237', '\200', '\115', '\056', '\140', - '\063', '\015', '\330', '\264', '\003', '\066', '\007', '\201', - '\115', '\110', '\140', '\263', '\023', '\330', '\124', '\005', - '\066', '\157', '\201', '\115', '\142', '\140', '\063', '\032', - '\330', '\364', '\006', '\066', '\327', '\201', '\115', '\174', - '\140', '\263', '\000', '\310', '\222', '\000', '\262', '\076', - '\200', '\054', '\026', '\040', '\053', '\007', '\310', '\062', - '\002', '\262', '\246', '\200', '\054', '\060', '\040', '\013', - '\030', '\061', '\011', '\127', '\013', '\022', '\222', '\065', - '\000', '\170', '\340', '\242', '\030', '\315', '\250', '\007', - '\150', '\102', '\000', '\007', '\174', '\300', '\001', '\035', - '\061', '\210', '\012', '\052', '\060', '\322', '\222', '\222', - '\364', '\244', '\012', '\051', '\100', '\001', '\034', '\130', - '\000', '\220', '\022', '\040', '\244', '\000', '\070', '\100', - '\000', '\006', '\020', '\200', '\007', '\010', '\300', '\000', - '\002', '\170', '\226', '\003', '\210', '\345', '\000', '\007', - '\110', '\100', '\233', '\125', '\221', '\010', '\261', '\016', - '\340', '\200', '\233', '\346', '\024', '\132', '\011', '\110', - '\100', '\016', '\271', '\365', '\322', '\017', '\274', '\024', - '\000', '\037', '\240', '\111', '\004', '\046', '\120', '\201', - '\014', '\104', '\040', '\247', '\002', '\330', '\150', '\102', - '\042', '\020', '\001', '\005', '\144', '\304', '\251', '\057', - '\015', '\253', '\130', '\301', '\330', '\255', '\003', '\210', - '\025', '\246', '\011', '\341', '\301', '\131', '\327', '\112', - '\200', '\301', '\050', '\204', '\255', '\077', '\070', '\153', - '\102', '\176', '\320', '\055', '\205', '\320', '\265', '\256', - '\006', '\271', '\053', '\136', '\365', '\132', '\127', '\272', - '\262', '\125', '\255', '\154', '\035', '\153', '\140', '\305', - '\312', '\327', '\155', '\305', '\165', '\260', '\201', '\115', - '\010', '\004', '\020', '\100', '\000', '\001', '\020', '\000', - '\001', '\020', '\210', '\252', '\106', '\034', '\313', '\130', - '\001', '\004', '\100', '\262', '\043', '\371', '\200', '\002', - '\066', '\013', '\313', '\235', '\104', '\226', '\000', '\037', - '\270', '\214', '\101', '\030', '\040', '\201', '\234', '\036', - '\040', '\247', '\022', '\150', '\332', '\266', '\320', '\212', - '\327', '\267', '\255', '\025', '\000', '\060', '\345', '\154', - '\135', '\067', '\253', '\131', '\315', '\142', '\063', '\041', - '\004', '\360', '\200', '\112', '\035', '\100', '\001', '\012', - '\074', '\000', '\246', '\022', '\250', '\200', '\002', '\052', - '\253', '\200', '\012', '\304', '\062', '\131', '\052', '\025', - '\100', '\001', '\062', '\220', '\200', '\210', '\046', '\204', - '\001', '\215', '\355', '\026', '\143', '\033', '\233', '\323', - '\227', '\032', '\045', '\131', '\326', '\105', '\300', '\164', - '\237', '\005', '\333', '\012', '\174', '\364', '\003', '\025', - '\140', '\055', '\154', '\101', '\373', '\124', '\274', '\102', - '\227', '\273', '\006', '\301', '\054', '\136', '\073', '\032', - '\122', '\010', '\054', '\266', '\262', '\226', '\025', '\055', - '\001', '\024', '\300', '\325', '\372', '\172', '\365', '\255', - '\006', '\050', '\300', '\131', '\325', '\353', '\000', '\256', - '\056', '\266', '\261', '\227', '\125', '\310', '\007', '\376', - '\353', '\000', '\367', '\106', '\300', '\044', '\011', '\321', - '\056', '\003', '\066', '\233', '\200', '\017', '\150', '\127', - '\300', '\304', '\152', '\300', '\004', '\014', '\214', '\140', - '\203', '\364', '\227', '\130', '\017', '\250', '\157', '\205', - '\241', '\372', '\336', '\227', '\142', '\125', '\041', '\375', - '\345', '\152', '\210', '\017', '\014', '\342', '\372', '\172', - '\200', '\302', '\034', '\005', '\351', '\333', '\124', '\374', - '\126', '\026', '\237', '\127', '\261', '\225', '\015', '\000', - '\145', '\127', '\102', '\023', '\311', '\252', '\367', '\040', - '\063', '\216', '\161', '\211', '\043', '\360', '\337', '\214', - '\300', '\064', '\304', '\031', '\250', '\100', '\005', '\032', - '\020', '\000', '\255', '\276', '\215', '\276', '\134', '\375', - '\100', '\175', '\025', '\362', '\000', '\011', '\070', '\331', - '\247', '\116', '\176', '\100', '\211', '\213', '\105', '\054', - '\022', '\047', '\244', '\311', '\116', '\316', '\262', '\004', - '\244', '\234', '\220', '\320', '\142', '\270', '\130', '\352', - '\365', '\162', '\115', '\251', '\074', '\145', '\142', '\131', - '\325', '\312', '\006', '\251', '\157', '\004', '\224', '\274', - '\344', '\204', '\270', '\364', '\254', '\033', '\346', '\200', - '\166', '\347', '\214', '\000', '\245', '\052', '\204', '\253', - '\011', '\050', '\300', '\000', '\012', '\220', '\000', '\256', - '\152', '\204', '\312', '\140', '\276', '\163', '\004', '\066', - '\040', '\144', '\065', '\337', '\171', '\002', '\124', '\255', - '\352', '\231', '\167', '\254', '\146', '\064', '\207', '\261', - '\276', '\017', '\040', '\263', '\233', '\033', '\035', '\201', - '\012', '\024', '\370', '\312', '\220', '\346', '\263', '\237', - '\047', '\315', '\123', '\024', '\167', '\071', '\261', '\133', - '\245', '\264', '\243', '\325', '\314', '\331', '\362', '\246', - '\271', '\276', '\102', '\256', '\300', '\006', '\042', '\040', - '\350', '\315', '\316', '\027', '\311', '\255', '\366', '\252', - '\130', '\005', '\334', '\341', '\234', '\006', '\330', '\315', - '\130', '\315', '\365', '\206', '\211', '\125', '\135', '\355', - '\272', '\027', '\304', '\164', '\236', '\363', '\206', '\347', - '\313', '\352', '\326', '\146', '\366', '\271', '\220', '\155', - '\155', '\201', '\075', '\300', '\125', '\043', '\017', '\013', - '\303', '\152', '\346', '\362', '\110', '\056', '\034', '\000', - '\107', '\273', '\027', '\002', '\314', '\066', '\361', '\116', - '\372', '\033', '\132', '\107', '\223', '\066', '\247', '\066', - '\375', '\060', '\115', '\106', '\174', '\142', '\053', '\027', - '\113', '\302', '\206', '\176', '\053', '\266', '\304', '\272', - '\141', '\000', '\210', '\204', '\001', '\164', '\116', '\152', - '\016', '\213', '\225', '\347', '\075', '\367', '\131', '\041', - '\006', '\140', '\153', '\273', '\217', '\225', '\352', '\012', - '\024', '\173', '\044', '\350', '\156', '\363', '\264', '\325', - '\274', '\357', '\107', '\163', '\065', '\322', '\304', '\032', - '\111', '\266', '\043', '\160', '\342', '\137', '\277', '\145', - '\002', '\222', '\036', '\070', '\042', '\035', '\015', '\000', - '\160', '\143', '\125', '\002', '\014', '\330', '\211', '\232', - '\063', '\340', '\134', '\101', '\167', '\365', '\276', '\122', - '\255', '\264', '\220', '\157', '\173', '\147', '\131', '\323', - '\127', '\343', '\134', '\345', '\070', '\004', '\050', '\356', - '\140', '\000', '\253', '\027', '\003', '\141', '\065', '\337', - '\113', '\061', '\360', '\126', '\120', '\033', '\104', '\346', - '\004', '\200', '\371', '\113', '\175', '\142', '\220', '\340', - '\036', '\327', '\330', '\100', '\127', '\067', '\133', '\133', - '\134', '\001', '\225', '\132', '\032', '\255', '\337', '\376', - '\042', '\152', '\125', '\273', '\125', '\155', '\052', '\240', - '\277', '\043', '\341', '\052', '\155', '\311', '\013', '\323', - '\131', '\317', '\172', '\264', '\245', '\045', '\055', '\306', - '\041', '\200', '\161', '\205', '\144', '\205', '\133', '\375', - '\125', '\365', '\004', '\010', '\115', '\361', '\145', '\063', - '\034', '\252', '\333', '\242', '\200', '\002', '\124', '\252', - '\000', '\012', '\160', '\153', '\300', '\064', '\336', '\326', - '\215', '\055', '\034', '\201', '\013', '\154', '\140', '\003', - '\166', '\147', '\271', '\171', '\235', '\234', '\161', '\246', - '\122', '\035', '\355', '\020', '\321', '\357', '\027', '\267', - '\245', '\134', '\307', '\362', '\174', '\044', '\214', '\005', - '\372', '\306', '\057', '\160', '\031', '\017', '\134', '\340', - '\361', '\027', '\260', '\100', '\157', '\335', '\276', '\223', - '\276', '\003', '\075', '\361', '\002', '\030', '\200', '\151', - '\271', '\245', '\365', '\214', '\073', '\173', '\044', '\005', - '\150', '\273', '\332', '\045', '\230', '\054', '\315', '\177', - '\021', '\002', '\030', '\240', '\000', '\007', '\342', '\236', - '\171', '\323', '\042', '\200', '\002', '\213', '\345', '\100', - '\340', '\035', '\133', '\000', '\011', '\244', '\176', '\365', - '\102', '\007', '\260', '\210', '\161', '\053', '\022', '\142', - '\257', '\171', '\323', '\356', '\366', '\061', '\222', '\331', - '\374', '\334', '\252', '\370', '\236', '\370', '\020', '\314', - '\314', '\361', '\201', '\277', '\131', '\330', '\016', '\037', - '\370', '\363', '\175', '\351', '\363', '\377', '\015', '\000', - '\015', '\250', '\264', '\000', '\015', '\140', '\151', '\120', - '\070', '\115', '\345', '\003', '\107', '\367', '\261', '\120', - '\375', '\362', '\255', '\203', '\037', '\376', '\061', '\217', - '\337', '\000', '\005', '\361', '\062', '\302', '\061', '\333', - '\174', '\365', '\023', '\013', '\263', '\340', '\007', '\153', - '\130', '\061', '\233', '\170', '\371', '\067', '\265', '\370', - '\120', '\335', '\157', '\102', '\332', '\257', '\377', '\053', - '\147', '\371', '\002', '\131', '\046', '\155', '\152', '\007', - '\000', '\134', '\105', '\125', '\213', '\366', '\066', '\042', - '\061', '\142', '\273', '\027', '\022', '\031', '\241', '\200', - '\150', '\106', '\132', '\331', '\324', '\150', '\025', '\066', - '\200', '\016', '\130', '\141', '\315', '\127', '\201', '\032', - '\347', '\125', '\047', '\247', '\130', '\016', '\220', '\001', - '\101', '\046', '\144', '\210', '\266', '\123', '\010', '\110', - '\200', '\022', '\230', '\140', '\031', '\101', '\151', '\025', - '\006', '\201', '\050', '\270', '\177', '\231', '\261', '\202', - '\014', '\110', '\202', '\262', '\146', '\152', '\303', '\222', - '\141', '\007', '\147', '\054', '\073', '\106', '\203', '\023', - '\100', '\144', '\043', '\230', '\115', '\330', '\026', '\001', - '\034', '\147', '\202', '\026', '\326', '\203', '\077', '\210', - '\165', '\101', '\310', '\154', '\103', '\010', '\000', '\003', - '\310', '\203', '\106', '\350', '\134', '\315', '\247', '\204', - '\076', '\350', '\134', '\244', '\225', '\161', '\146', '\167', - '\204', '\040', '\106', '\001', '\016', '\120', '\000', '\302', - '\265', '\155', '\162', '\123', '\155', '\040', '\325', '\020', - '\340', '\027', '\201', '\335', '\126', '\141', '\211', '\007', - '\206', '\134', '\210', '\177', '\144', '\210', '\146', '\115', - '\310', '\155', '\145', '\270', '\203', '\371', '\066', '\177', - '\100', '\270', '\156', '\156', '\110', '\204', '\160', '\170', - '\177', '\006', '\321', '\204', '\155', '\110', '\207', '\230', - '\101', '\000', '\210', '\244', '\200', '\023', '\210', '\115', - '\001', '\007', '\175', '\106', '\301', '\207', '\157', '\050', - '\210', '\162', '\110', '\210', '\110', '\210', '\115', '\206', - '\230', '\206', '\004', '\067', '\022', '\117', '\025', '\125', - '\062', '\310', '\201', '\037', '\070', '\001', '\042', '\010', - '\133', '\106', '\321', '\150', '\106', '\066', '\206', '\226', - '\150', '\206', '\231', '\130', '\207', '\330', '\264', '\211', - '\344', '\107', '\202', '\117', '\270', '\162', '\025', '\026', - '\141', '\023', '\120', '\200', '\104', '\206', '\020', '\115', - '\130', '\137', '\052', '\107', '\142', '\023', '\001', '\056', - '\201', '\120', '\010', '\206', '\240', '\010', '\201', '\000', - '\010', '\260', '\150', '\010', '\177', '\160', '\056', '\212', - '\140', '\056', '\204', '\140', '\010', '\207', '\240', '\213', - '\274', '\150', '\056', '\260', '\330', '\213', '\200', '\260', - '\213', '\302', '\270', '\213', '\211', '\260', '\007', '\264', - '\310', '\213', '\200', '\220', '\214', '\302', '\030', '\214', - '\346', '\062', '\010', '\344', '\322', '\007', '\200', '\000', - '\215', '\204', '\040', '\010', '\202', '\060', '\056', '\325', - '\170', '\215', '\321', '\010', '\060', '\210', '\220', '\007', - '\347', '\142', '\010', '\310', '\210', '\215', '\322', '\070', - '\056', '\202', '\160', '\213', '\343', '\002', '\010', '\201', - '\240', '\215', '\353', '\002', '\215', '\374', '\062', '\216', - '\206', '\220', '\215', '\354', '\010', '\214', '\206', '\200', - '\010', '\313', '\010', '\213', '\364', '\230', '\214', '\206', - '\120', '\217', '\343', '\162', '\213', '\260', '\230', '\010', - '\200', '\040', '\010', '\320', '\070', '\010', '\176', '\260', - '\214', '\371', '\370', '\217', '\320', '\350', '\217', '\201', - '\140', '\214', '\172', '\220', '\214', '\210', '\300', '\217', - '\206', '\340', '\217', '\311', '\010', '\221', '\375', '\370', - '\007', '\011', '\371', '\220', '\172', '\120', '\221', '\010', - '\151', '\214', '\372', '\330', '\220', '\314', '\350', '\007', - '\025', '\051', '\010', '\263', '\010', '\213', '\205', '\300', - '\007', '\037', '\031', '\222', '\017', '\251', '\217', '\022', - '\171', '\222', '\021', '\211', '\222', '\054', '\271', '\222', - '\056', '\331', '\217', '\055', '\011', '\223', '\025', '\171', - '\010', '\201', '\060', '\223', '\046', '\231', '\222', '\206', - '\060', '\220', '\060', '\371', '\222', '\052', '\271', '\223', - '\076', '\331', '\223', '\100', '\231', '\222', '\102', '\311', - '\222', '\030', '\031', '\223', '\101', '\151', '\224', '\103', - '\311', '\223', '\211', '\160', '\223', '\110', '\331', '\224', - '\112', '\331', '\224', '\105', '\271', '\222', '\121', '\331', - '\217', '\013', '\011', '\213', '\350', '\050', '\010', '\124', - '\211', '\217', '\106', '\131', '\220', '\077', '\311', '\225', - '\100', '\151', '\010', '\362', '\230', '\221', '\363', '\270', - '\214', '\273', '\210', '\010', '\141', '\211', '\216', '\032', - '\251', '\225', '\152', '\131', '\213', '\372', '\010', '\226', - '\370', '\050', '\217', '\136', '\351', '\225', '\367', '\310', - '\226', '\153', '\171', '\216', '\165', '\351', '\226', '\164', - '\011', '\223', '\000', '\171', '\224', '\021', '\271', '\220', - '\342', '\262', '\214', '\004', '\271', '\214', '\173', '\051', - '\224', '\016', '\231', '\222', '\207', '\120', '\230', '\006', - '\171', '\222', '\257', '\030', '\213', '\050', '\211', '\007', - '\311', '\250', '\010', '\205', '\251', '\223', '\274', '\350', - '\220', '\205', '\040', '\231', '\043', '\371', '\230', '\205', - '\211', '\007', '\213', '\171', '\214', '\014', '\171', '\213', - '\320', '\250', '\010', '\310', '\370', '\231', '\173', '\040', - '\010', '\273', '\250', '\010', '\216', '\131', '\213', '\114', - '\111', '\232', '\206', '\060', '\222', '\252', '\371', '\217', - '\323', '\030', '\213', '\173', '\260', '\231', '\322', '\030', - '\214', '\016', '\251', '\010', '\372', '\150', '\233', '\217', - '\151', '\224', '\270', '\011', '\213', '\273', '\311', '\230', - '\271', '\371', '\233', '\274', '\211', '\224', '\362', '\330', - '\233', '\304', '\171', '\233', '\306', '\011', '\234', '\276', - '\031', '\234', '\074', '\131', '\234', '\310', '\311', '\234', - '\312', '\131', '\213', '\265', '\151', '\222', '\316', '\231', - '\234', '\324', '\331', '\233', '\051', '\211', '\010', '\322', - '\171', '\234', '\317', '\131', '\235', '\332', '\151', '\227', - '\265', '\070', '\234', '\335', '\071', '\235', '\342', '\031', - '\236', '\344', '\331', '\234', '\345', '\151', '\217', '\016', - '\111', '\223', '\346', '\271', '\236', '\274', '\051', '\217', - '\146', '\371', '\230', '\136', '\263', '\023', '\326', '\262', - '\055', '\010', '\321', '\020', '\040', '\221', '\021', '\017', - '\104', '\032', '\051', '\041', '\022', '\005', '\221', '\031', - '\240', '\221', '\161', '\160', '\141', '\022', '\122', '\266', - '\022', '\254', '\126', '\025', '\127', '\341', '\166', '\122', - '\021', '\023', '\027', '\240', '\103', '\000', '\220', '\001', - '\325', '\007', '\000', '\070', '\041', '\173', '\101', '\261', - '\121', '\121', '\065', '\023', '\041', '\000', '\000', '\042', - '\000', '\000', '\043', '\000', '\000', '\044', '\000', '\000', - '\045', '\000', '\000', '\046', '\000', '\000', '\121', '\003', - '\025', '\051', '\000', '\000', '\052', '\000', '\000', '\053', - '\000', '\000', '\134', '\061', '\121', '\177', '\362', '\002', - '\000', '\000', '\003', '\125', '\002', '\000', '\136', '\061', - '\003', '\000', '\060', '\065', '\065', '\000', '\000', '\066', - '\000', '\000', '\067', '\000', '\000', '\070', '\000', '\000', - '\112', '\242', '\003', '\000', '\260', '\003', '\000', '\060', - '\030', '\075', '\000', '\000', '\140', '\101', '\127', '\072', - '\121', '\065', '\102', '\340', '\042', '\000', '\100', '\004', - '\000', '\040', '\026', '\106', '\000', '\000', '\055', '\222', - '\043', '\111', '\000', '\000', '\112', '\000', '\000', '\144', - '\301', '\004', '\277', '\001', '\000', '\264', '\362', '\004', - '\036', '\001', '\000', '\121', '\120', '\036', '\340', '\001', - '\000', '\202', '\122', '\005', '\000', '\140', '\005', '\254', - '\122', '\053', '\000', '\200', '\033', '\132', '\000', '\000', - '\150', '\301', '\005', '\000', '\320', '\005', '\000', '\340', - '\005', '\000', '\360', '\005', '\000', '\000', '\006', '\000', - '\020', '\006', '\000', '\040', '\006', '\000', '\060', '\034', - '\025', '\121', '\006', '\000', '\140', '\006', '\000', '\160', - '\006', '\000', '\200', '\006', '\000', '\240', '\026', '\152', - '\000', '\000', '\234', '\301', '\006', '\000', '\360', '\035', - '\156', '\000', '\000', '\157', '\000', '\000', '\160', '\000', - '\000', '\161', '\000', '\000', '\162', '\000', '\000', '\163', - '\000', '\000', '\164', '\000', '\000', '\134', '\143', '\007', - '\000', '\160', '\007', '\000', '\300', '\026', '\156', '\241', - '\007', '\000', '\260', '\007', '\000', '\300', '\007', '\000', - '\320', '\007', '\000', '\340', '\007', '\000', '\360', '\007', - '\000', '\360', '\017', '\260', '\032', '\253', '\262', '\072', - '\253', '\264', '\132', '\253', '\266', '\172', '\253', '\270', - '\172', '\253', '\103', '\021', '\010', '\000', '\340', '\065', - '\203', '\000', '\000', '\162', '\121', '\010', '\000', '\140', - '\010', '\000', '\160', '\010', '\074', '\001', '\000', '\211', - '\000', '\000', '\212', '\000', '\000', '\213', '\000', '\000', - '\214', '\000', '\000', '\215', '\000', '\000', '\216', '\000', - '\000', '\166', '\001', '\011', '\000', '\020', '\011', '\000', - '\040', '\011', '\000', '\060', '\011', '\000', '\100', '\011', - '\000', '\120', '\011', '\000', '\140', '\011', '\000', '\160', - '\011', '\000', '\360', '\020', '\231', '\000', '\000', '\232', - '\000', '\000', '\233', '\000', '\000', '\172', '\321', '\011', - '\000', '\340', '\011', '\000', '\360', '\011', '\000', '\000', - '\012', '\000', '\020', '\012', '\000', '\040', '\012', '\000', - '\060', '\012', '\000', '\100', '\012', '\000', '\120', '\012', - '\000', '\140', '\012', '\000', '\160', '\012', '\000', '\200', - '\012', '\000', '\320', '\027', '\252', '\000', '\000', '\253', - '\000', '\000', '\254', '\000', '\000', '\255', '\000', '\000', - '\256', '\000', '\000', '\257', '\160', '\024', '\000', '\360', - '\027', '\262', '\000', '\000', '\201', '\101', '\013', '\000', - '\120', '\013', '\000', '\100', '\066', '\267', '\000', '\000', - '\270', '\000', '\000', '\271', '\000', '\000', '\272', '\000', - '\000', '\273', '\000', '\000', '\274', '\000', '\000', '\275', - '\000', '\000', '\276', '\000', '\000', '\277', '\000', '\000', - '\300', '\000', '\000', '\205', '\041', '\014', '\000', '\140', - '\066', '\304', '\000', '\000', '\305', '\000', '\000', '\306', - '\000', '\000', '\307', '\000', '\000', '\310', '\000', '\000', - '\311', '\000', '\000', '\312', '\000', '\000', '\313', '\000', - '\000', '\314', '\000', '\000', '\315', '\000', '\000', '\316', - '\000', '\000', '\317', '\000', '\000', '\150', '\023', '\015', - '\000', '\160', '\030', '\323', '\000', '\000', '\324', '\000', - '\000', '\325', '\000', '\000', '\326', '\000', '\000', '\327', - '\000', '\000', '\330', '\000', '\000', '\331', '\000', '\000', - '\211', '\261', '\015', '\000', '\300', '\015', '\000', '\240', - '\066', '\336', '\000', '\000', '\337', '\260', '\023', '\113', - '\143', '\264', '\023', '\321', '\014', '\153', '\333', '\266', - '\006', '\301', '\266', '\157', '\353', '\266', '\152', '\033', - '\267', '\164', '\073', '\267', '\166', '\013', '\267', '\167', - '\053', '\267', '\170', '\273', '\267', '\172', '\333', '\267', - '\165', '\313', '\267', '\177', '\353', '\267', '\171', '\033', - '\270', '\204', '\073', '\270', '\206', '\013', '\270', '\207', - '\053', '\270', '\210', '\273', '\270', '\212', '\333', '\270', - '\205', '\313', '\270', '\217', '\353', '\270', '\211', '\033', - '\271', '\224', '\073', '\271', '\226', '\013', '\271', '\227', - '\053', '\271', '\230', '\273', '\271', '\232', '\333', '\271', - '\225', '\313', '\271', '\237', '\353', '\271', '\231', '\033', - '\272', '\244', '\073', '\272', '\246', '\013', '\272', '\247', - '\053', '\272', '\250', '\273', '\272', '\252', '\333', '\272', - '\245', '\313', '\272', '\257', '\353', '\272', '\251', '\033', - '\273', '\264', '\073', '\273', '\266', '\213', '\272', '\012', - '\221', '\266', '\012', '\161', '\134', '\101', '\005', '\241', - '\011', '\321', '\241', '\006', '\061', '\121', '\006', '\221', - '\243', '\171', '\225', '\020', '\071', '\142', '\020', '\141', - '\152', '\020', '\155', '\152', '\020', '\303', '\141', '\020', - '\214', '\152', '\020', '\134', '\143', '\020', '\254', '\152', - '\020', '\306', '\152', '\020', '\326', '\152', '\020', '\347', - '\152', '\020', '\370', '\152', '\020', '\011', '\153', '\020', - '\030', '\153', '\020', '\051', '\153', '\020', '\071', '\153', - '\020', '\113', '\153', '\020', '\133', '\153', '\020', '\341', - '\260', '\066', '\011', '\061', '\017', '\011', '\301', '\017', - '\011', '\121', '\000', '\023', '\061', '\211', '\214', '\047', - '\023', '\023', '\141', '\002', '\023', '\321', '\002', '\023', - '\141', '\003', '\023', '\021', '\004', '\023', '\201', '\004', - '\023', '\001', '\005', '\023', '\241', '\005', '\023', '\121', - '\006', '\023', '\361', '\006', '\023', '\241', '\007', '\023', - '\061', '\010', '\023', '\141', '\032', '\006', '\341', '\010', - '\023', '\121', '\011', '\023', '\301', '\011', '\023', '\041', - '\012', '\023', '\161', '\012', '\023', '\261', '\012', '\023', - '\361', '\012', '\023', '\121', '\013', '\213', '\063', '\021', - '\277', '\060', '\021', '\303', '\060', '\021', '\311', '\060', - '\021', '\317', '\360', '\070', '\023', '\241', '\015', '\023', - '\101', '\016', '\023', '\221', '\016', '\023', '\361', '\016', - '\023', '\161', '\017', '\227', '\021', '\021', '\232', '\147', - '\020', '\005', '\020', '\021', '\247', '\145', '\020', '\011', - '\020', '\021', '\013', '\020', '\021', '\015', '\020', '\021', - '\066', '\225', '\146', '\021', '\061', '\001', '\231', '\023', - '\021', '\027', '\020', '\021', '\031', '\020', '\021', '\033', - '\020', '\021', '\035', '\020', '\021', '\037', '\020', '\021', - '\041', '\020', '\021', '\043', '\020', '\021', '\045', '\020', - '\021', '\047', '\020', '\021', '\051', '\020', '\021', '\053', - '\020', '\021', '\055', '\320', '\071', '\021', '\021', '\003', - '\021', '\061', '\003', '\021', '\121', '\003', '\021', '\161', - '\003', '\021', '\041', '\004', '\021', '\301', '\004', '\021', - '\221', '\005', '\021', '\121', '\006', '\247', '\023', '\021', - '\172', '\020', '\021', '\174', '\020', '\021', '\176', '\020', - '\021', '\200', '\020', '\021', '\202', '\020', '\021', '\204', - '\020', '\021', '\206', '\020', '\021', '\210', '\260', '\072', - '\021', '\301', '\010', '\021', '\341', '\010', '\021', '\001', - '\011', '\021', '\041', '\011', '\021', '\101', '\011', '\021', - '\141', '\011', '\021', '\201', '\011', '\021', '\241', '\011', - '\021', '\301', '\011', '\021', '\341', '\011', '\021', '\001', - '\012', '\021', '\041', '\012', '\257', '\023', '\021', '\246', - '\020', '\021', '\250', '\020', '\021', '\252', '\020', '\021', - '\254', '\020', '\021', '\256', '\020', '\021', '\270', '\020', - '\021', '\274', '\020', '\021', '\307', '\020', '\021', '\322', - '\020', '\021', '\333', '\020', '\021', '\340', '\220', '\073', - '\021', '\241', '\016', '\021', '\361', '\016', '\021', '\101', - '\017', '\021', '\221', '\017', '\021', '\341', '\017', '\062', - '\354', '\023', '\010', '\340', '\023', '\015', '\340', '\023', - '\022', '\340', '\023', '\027', '\340', '\023', '\034', '\340', - '\023', '\041', '\060', '\074', '\076', '\261', '\002', '\076', - '\001', '\003', '\076', '\121', '\003', '\076', '\241', '\003', - '\076', '\361', '\003', '\076', '\101', '\004', '\076', '\221', - '\004', '\076', '\341', '\004', '\076', '\061', '\005', '\076', - '\201', '\005', '\076', '\321', '\005', '\076', '\041', '\006', - '\315', '\343', '\023', '\154', '\340', '\023', '\161', '\340', - '\023', '\166', '\340', '\023', '\173', '\340', '\023', '\200', - '\340', '\023', '\205', '\340', '\023', '\212', '\340', '\023', - '\217', '\340', '\023', '\224', '\340', '\023', '\231', '\340', - '\023', '\236', '\340', '\023', '\243', '\160', '\075', '\076', - '\321', '\012', '\076', '\041', '\013', '\076', '\161', '\013', - '\076', '\301', '\013', '\076', '\021', '\014', '\076', '\141', - '\014', '\076', '\261', '\014', '\076', '\001', '\015', '\076', - '\121', '\015', '\076', '\241', '\015', '\076', '\361', '\015', - '\076', '\101', '\016', '\341', '\343', '\023', '\356', '\340', - '\023', '\363', '\340', '\023', '\370', '\340', '\023', '\375', - '\340', '\023', '\216', '\145', '\020', '\146', '\065', '\132', - '\035', '\021', '\001', '\035', '\141', '\001', '\035', '\261', - '\001', '\035', '\001', '\002', '\035', '\121', '\002', '\353', - '\323', '\021', '\057', '\320', '\021', '\064', '\320', '\021', - '\071', '\320', '\021', '\076', '\320', '\021', '\103', '\320', - '\021', '\110', '\320', '\021', '\115', '\320', '\021', '\122', - '\320', '\021', '\127', '\320', '\021', '\134', '\320', '\021', - '\141', '\320', '\021', '\146', '\120', '\077', '\035', '\001', - '\007', '\035', '\121', '\007', '\035', '\241', '\007', '\035', - '\361', '\007', '\035', '\101', '\010', '\035', '\221', '\010', - '\035', '\341', '\010', '\035', '\061', '\011', '\035', '\201', - '\011', '\035', '\321', '\011', '\035', '\041', '\012', '\035', - '\161', '\012', '\377', '\323', '\021', '\261', '\320', '\021', - '\266', '\320', '\021', '\273', '\340', '\323', '\302', '\221', - '\006', '\151', '\000', '\003', '\146', '\235', '\247', '\143', - '\135', '\326', '\060', '\140', '\045', '\141', '\220', '\326', - '\146', '\355', '\025', '\155', '\075', '\006', '\144', '\155', - '\326', '\064', '\032', '\327', '\163', '\015', '\003', '\123', - '\143', '\327', '\152', '\175', '\243', '\172', '\155', '\326', - '\071', '\332', '\327', '\060', '\260', '\243', '\175', '\035', - '\003', '\060', '\072', '\330', '\154', '\355', '\326', '\061', - '\000', '\327', '\210', '\135', '\327', '\210', '\235', '\327', - '\210', '\315', '\327', '\210', '\375', '\327', '\210', '\055', - '\330', '\156', '\335', '\051', '\150', '\055', '\327', '\145', - '\055', '\003', '\207', '\215', '\331', '\060', '\040', '\003', - '\212', '\315', '\331', '\062', '\300', '\330', '\240', '\355', - '\330', '\240', '\015', '\331', '\240', '\055', '\331', '\240', - '\115', '\331', '\234', '\075', '\003', '\205', '\355', '\326', - '\063', '\260', '\331', '\163', '\075', '\003', '\237', '\035', - '\333', '\242', '\035', '\333', '\244', '\035', '\333', '\246', - '\035', '\333', '\250', '\035', '\333', '\073', '\072', '\007', - '\160', '\020', '\006', '\143', '\000', '\250', '\145', '\200', - '\007', '\143', '\300', '\006', '\141', '\360', '\035', '\161', - '\120', '\007', '\157', '\100', '\007', '\320', '\001', '\046', - '\000', '\340', '\006', '\336', '\041', '\006', '\145', '\040', - '\007', '\163', '\220', '\006', '\147', '\360', '\250', '\145', - '\302', '\006', '\306', '\175', '\251', '\160', '\060', '\335', - '\301', '\355', '\006', '\233', '\172', '\334', '\335', '\115', - '\335', '\170', '\122', '\021', '\311', '\275', '\334', '\323', - '\155', '\335', '\150', '\260', '\251', '\277', '\135', '\047', - '\156', '\300', '\006', '\145', '\140', '\006', '\354', '\115', - '\047', '\371', '\041', '\007', '\352', '\035', '\336', '\163', - '\300', '\334', '\366', '\075', '\007', '\234', '\001', '\007', - '\154', '\120', '\007', '\231', '\072', '\006', '\146', '\162', - '\046', '\205', '\232', '\007', '\160', '\200', '\006', '\371', - '\041', '\251', '\351', '\375', '\006', '\025', '\061', '\007', - '\306', '\075', '\007', '\206', '\252', '\007', '\323', '\035', - '\251', '\366', '\001', '\250', '\164', '\160', '\007', '\221', - '\112', '\007', '\150', '\120', '\047', '\200', '\312', '\046', - '\165', '\160', '\251', '\146', '\220', '\006', '\166', '\000', - '\250', '\325', '\315', '\026', '\373', '\061', '\342', '\217', - '\132', '\006', '\367', '\375', '\334', '\151', '\002', '\250', - '\002', '\316', '\006', '\366', '\201', '\251', '\362', '\041', - '\046', '\157', '\000', '\343', '\217', '\012', '\337', '\163', - '\220', '\251', '\145', '\220', '\334', '\141', '\300', '\250', - '\147', '\120', '\047', '\141', '\240', '\337', '\224', '\132', - '\007', '\145', '\220', '\337', '\151', '\020', '\343', '\101', - '\336', '\037', '\000', '\260', '\244', '\057', '\342', '\244', - '\120', '\052', '\245', '\000', '\100', '\245', '\126', '\212', - '\245', '\000', '\240', '\245', '\146', '\321', '\245', '\137', - '\032', '\246', '\346', '\061', '\005', '\144', '\012', '\000', - '\146', '\212', '\246', '\127', '\240', '\246', '\154', '\272', - '\247', '\162', '\020', '\006', '\153', '\120', '\006', '\164', - '\000', '\337', '\362', '\275', '\247', '\300', '\275', '\006', - '\016', '\336', '\326', '\206', '\052', '\006', '\145', '\076', - '\006', '\147', '\116', '\007', '\366', '\175', '\006', '\353', - '\175', '\331', '\144', '\055', '\327', '\162', '\060', '\006', - '\336', '\301', '\251', '\224', '\102', '\335', '\002', '\136', - '\047', '\103', '\216', '\336', '\152', '\036', '\336', '\173', - '\332', '\247', '\024', '\001', '\000', '\035', '\076', '\250', - '\205', '\172', '\250', '\000', '\220', '\250', '\213', '\332', - '\250', '\317', '\015', '\251', '\222', '\112', '\251', '\226', - '\212', '\251', '\232', '\312', '\251', '\000', '\340', '\251', - '\240', '\052', '\252', '\000', '\100', '\252', '\162', '\016', - '\334', '\145', '\160', '\350', '\154', '\176', '\251', '\243', - '\036', '\334', '\167', '\236', '\347', '\172', '\115', '\007', - '\151', '\300', '\006', '\370', '\241', '\347', '\151', '\020', - '\003', '\067', '\260', '\243', '\146', '\035', '\006', '\060', - '\172', '\353', '\126', '\162', '\353', '\136', '\161', '\353', - '\064', '\172', '\353', '\123', '\163', '\353', '\067', '\172', - '\353', '\071', '\172', '\353', '\266', '\016', '\003', '\141', - '\320', '\243', '\267', '\256', '\044', '\267', '\256', '\247', - '\267', '\316', '\247', '\267', '\076', '\034', '\267', '\136', - '\021', '\267', '\016', '\250', '\267', '\056', '\250', '\146', - '\055', '\006', '\271', '\016', '\003', '\142', '\260', '\353', - '\334', '\336', '\353', '\334', '\376', '\353', '\334', '\036', - '\354', '\334', '\076', '\354', '\334', '\136', '\354', '\334', - '\176', '\354', '\142', '\240', '\354', '\334', '\316', '\354', - '\334', '\356', '\354', '\334', '\016', '\355', '\334', '\056', - '\355', '\334', '\116', '\355', '\334', '\156', '\355', '\334', - '\216', '\355', '\060', '\060', '\006', '\333', '\076', '\006', - '\336', '\076', '\006', '\340', '\076', '\006', '\342', '\076', - '\006', '\344', '\076', '\006', '\346', '\076', '\006', '\350', - '\076', '\006', '\307', '\076', '\006', '\354', '\076', '\006', - '\356', '\076', '\006', '\360', '\076', '\006', '\362', '\076', - '\006', '\364', '\076', '\006', '\366', '\036', '\334', '\057', - '\272', '\357', '\372', '\116', '\006', '\333', '\116', '\006', - '\336', '\116', '\006', '\340', '\116', '\006', '\342', '\116', - '\006', '\344', '\116', '\006', '\346', '\116', '\006', '\350', - '\116', '\006', '\307', '\116', '\006', '\354', '\116', '\006', - '\356', '\116', '\006', '\360', '\116', '\006', '\362', '\116', - '\006', '\364', '\116', '\006', '\366', '\036', '\353', '\146', - '\115', '\006', '\372', '\136', '\006', '\333', '\136', '\006', - '\336', '\136', '\006', '\340', '\136', '\006', '\342', '\136', - '\006', '\344', '\136', '\006', '\346', '\136', '\006', '\350', - '\136', '\006', '\307', '\136', '\006', '\354', '\136', '\006', - '\356', '\136', '\006', '\360', '\136', '\006', '\362', '\136', - '\006', '\364', '\316', '\037', '\146', '\135', '\006', '\370', - '\036', '\337', '\031', '\157', '\006', '\333', '\156', '\006', - '\336', '\156', '\006', '\340', '\156', '\006', '\342', '\156', - '\006', '\344', '\156', '\006', '\346', '\156', '\006', '\350', - '\156', '\006', '\307', '\156', '\006', '\354', '\156', '\006', - '\356', '\156', '\006', '\360', '\156', '\006', '\362', '\056', - '\020', '\133', '\157', '\357', '\146', '\200', '\357', '\146', - '\040', '\250', '\302', '\002', '\150', '\023', '\201', '\054', - '\025', '\307', '\055', '\331', '\362', '\367', '\370', '\206', - '\055', '\322', '\042', '\370', '\043', '\261', '\124', '\370', - '\060', '\237', '\015', '\021', '\370', '\312', '\002', - -}; - -static const char file_cursor[] = { - '\037', '\235', '\214', '\001', '\314', '\214', '\201', '\203', - '\000', '\200', '\301', '\000', '\006', '\023', '\032', '\044', - '\227', '\020', '\121', '\102', '\001', '\012', '\023', '\222', - '\111', '\310', '\006', '\041', '\000', '\002', '\012', '\055', - '\042', '\030', '\140', '\020', '\232', '\306', '\210', '\006', - '\151', '\114', '\060', '\210', '\015', '\043', '\000', '\020', - '\040', '\001', '\020', '\261', '\310', '\000', '\203', '\101', - '\040', '\051', '\341', '\100', '\004', '\000', '\045', '\203', - '\101', '\100', '\051', '\321', '\045', '\060', '\010', '\154', - '\103', '\102', '\213', '\012', '\047', '\032', '\104', '\125', - '\002', '\344', '\116', '\220', '\001', '\024', '\044', '\124', - '\241', '\320', '\206', '\305', '\032', '\077', '\165', '\044', - '\014', '\242', '\120', '\251', '\101', '\044', '\012', '\327', - '\044', '\234', '\242', '\320', '\111', '\102', '\060', '\135', - '\023', '\266', '\121', '\370', '\257', '\354', '\077', '\073', - '\012', '\033', '\200', '\014', '\224', '\160', '\310', '\023', - '\050', '\131', '\244', '\044', '\071', '\202', '\204', '\012', - '\000', '\052', '\150', '\312', '\314', '\051', '\003', '\102', - '\304', '\031', '\066', '\171', '\340', '\240', '\231', '\043', - '\002', '\104', '\030', '\071', '\174', '\353', '\270', '\051', - '\343', '\146', '\114', '\235', '\066', '\142', '\312', '\040', - '\236', '\010', '\345', '\111', '\022', '\047', '\124', '\276', - '\114', '\111', '\242', '\245', '\010', '\000', '\043', '\117', - '\060', '\003', '\160', '\054', '\147', '\316', '\033', '\071', - '\000', '\256', '\024', '\231', '\133', '\027', '\200', '\224', - '\042', '\123', '\236', '\060', '\251', '\102', '\045', '\111', - '\150', '\327', '\260', '\145', '\323', '\266', '\355', '\344', - '\013', '\026', '\334', '\261', '\147', '\327', '\016', '\375', - '\045', '\013', '\000', '\054', '\137', '\220', '\254', '\246', - '\153', '\067', '\112', '\225', '\040', '\104', '\276', '\134', - '\111', '\102', '\204', '\012', '\326', '\224', '\330', '\041', - '\044', '\214', '\220', '\320', '\354', '\277', '\170', '\377', - '\014', '\052', '\055', '\233', '\021', '\200', '\166', '\356', - '\017', '\314', '\143', '\137', '\317', '\276', '\275', '\173', - '\244', '\006', '\065', '\001', '\320', '\203', '\050', '\222', - '\041', '\104', '\171', '\022', '\105', '\072', '\224', '\150', - '\116', '\240', '\110', '\200', '\070', '\042', '\207', '\040', - '\221', '\004', '\362', '\110', '\037', '\205', '\104', '\222', - '\110', '\040', '\174', '\030', '\022', '\211', '\042', '\202', - '\040', '\250', '\040', '\203', '\016', '\102', '\070', '\140', - '\044', '\203', '\024', '\162', '\041', '\041', '\205', '\350', - '\161', '\210', '\175', '\370', '\325', '\307', '\137', '\200', - '\221', '\064', '\022', '\310', '\037', '\217', '\104', '\342', - '\210', '\040', '\376', '\225', '\030', '\310', '\205', '\053', - '\172', '\350', '\142', '\036', '\365', '\255', '\230', '\307', - '\207', '\013', '\342', '\121', '\037', '\204', '\170', '\174', - '\210', '\010', '\042', '\072', '\106', '\362', '\143', '\203', - '\000', '\072', '\262', '\307', '\207', '\006', '\336', '\270', - '\337', '\041', '\101', '\376', '\110', '\037', '\206', '\215', - '\350', '\241', '\337', '\040', '\215', '\320', '\250', '\340', - '\041', '\371', '\135', '\231', '\345', '\041', '\370', '\351', - '\307', '\337', '\226', '\135', '\356', '\027', '\046', '\227', - '\133', '\046', '\142', '\045', '\231', '\136', '\046', '\262', - '\107', '\202', '\205', '\164', '\350', '\240', '\041', '\206', - '\350', '\341', '\140', '\041', '\130', '\176', '\170', '\337', - '\232', '\113', '\312', '\051', '\044', '\042', '\162', '\374', - '\007', '\310', '\043', '\175', '\002', '\010', '\111', '\240', - '\177', '\022', '\372', '\210', '\236', '\164', '\052', '\171', - '\337', '\223', '\367', '\225', '\251', '\344', '\041', '\114', - '\326', '\367', '\343', '\205', '\202', '\064', '\162', '\041', - '\225', '\176', '\070', '\042', '\150', '\246', '\202', '\322', - '\341', '\047', '\044', '\236', '\012', '\372', '\147', '\221', - '\200', '\100', '\122', '\340', '\241', '\372', '\041', '\022', - '\147', '\252', '\206', '\064', '\011', '\244', '\244', '\370', - '\331', '\371', '\352', '\176', '\211', '\000', '\122', '\137', - '\200', '\177', '\350', '\147', '\040', '\211', '\206', '\034', - '\202', '\242', '\230', '\200', '\050', '\262', '\344', '\037', - '\213', '\354', '\351', '\152', '\217', '\173', '\006', '\073', - '\041', '\261', '\017', '\012', '\162', '\307', '\177', '\013', - '\332', '\101', '\240', '\205', '\004', '\026', '\262', '\310', - '\205', '\326', '\036', '\353', '\043', '\042', '\174', '\024', - '\033', '\110', '\043', '\174', '\060', '\162', '\252', '\035', - '\377', '\075', '\022', '\110', '\035', '\004', '\232', '\153', - '\045', '\043', '\204', '\144', '\311', '\056', '\221', '\155', - '\036', '\151', '\237', '\041', '\174', '\044', '\310', '\345', - '\036', '\016', '\376', '\230', '\207', '\237', '\216', '\340', - '\101', '\240', '\201', '\055', '\366', '\172', '\041', '\227', - '\317', '\056', '\051', '\255', '\261', '\260', '\042', '\353', - '\144', '\175', '\215', '\246', '\251', '\347', '\037', '\375', - '\336', '\012', '\111', '\037', '\204', '\104', '\362', '\010', - '\040', '\365', '\132', '\034', '\210', '\225', '\203', '\264', - '\133', '\037', '\207', '\201', '\230', '\332', '\161', '\251', - '\221', '\160', '\030', '\007', '\040', '\030', '\022', '\022', - '\307', '\177', '\034', '\122', '\034', '\311', '\037', '\220', - '\144', '\134', '\252', '\313', '\134', '\146', '\314', '\245', - '\035', '\011', '\226', '\132', '\107', '\316', '\220', '\074', - '\032', '\351', '\236', '\172', '\010', '\313', '\137', '\320', - '\264', '\336', '\101', '\240', '\040', '\216', '\034', '\214', - '\364', '\231', '\146', '\246', '\151', '\145', '\257', '\133', - '\036', '\342', '\041', '\044', '\120', '\043', '\002', '\011', - '\227', '\044', '\342', '\232', '\342', '\256', '\232', '\152', - '\175', '\152', '\213', '\001', '\136', '\150', '\240', '\214', - '\001', '\132', '\231', '\344', '\207', '\301', '\006', '\031', - '\310', '\042', '\056', '\227', '\052', '\063', '\044', '\312', - '\006', '\313', '\354', '\332', '\112', '\012', '\302', '\110', - '\220', '\110', '\027', '\034', '\354', '\301', '\153', '\257', - '\174', '\245', '\337', '\211', '\034', '\102', '\261', '\042', - '\220', '\326', '\253', '\310', '\217', '\012', '\311', '\007', - '\022', '\007', '\011', '\361', '\220', '\320', '\157', '\006', - '\341', '\221', '\220', '\040', '\011', '\051', '\016', '\000', - '\051', '\011', '\361', '\222', '\020', '\063', '\011', '\171', - '\223', '\220', '\076', '\011', '\151', '\140', '\221', '\123', - '\006', '\131', '\141', '\221', '\034', '\026', '\111', '\142', - '\221', '\053', '\026', '\071', '\143', '\221', '\070', '\026', - '\351', '\143', '\221', '\006', '\063', '\351', '\060', '\223', - '\025', '\063', '\331', '\061', '\223', '\044', '\063', '\311', - '\062', '\223', '\064', '\063', '\311', '\063', '\223', '\004', - '\034', '\001', '\040', '\103', '\361', '\120', '\024', '\017', - '\107', '\361', '\216', '\024', '\317', '\112', '\361', '\312', - '\024', '\257', '\116', '\361', '\010', '\230', '\204', '\202', - '\111', '\074', '\230', '\104', '\205', '\111', '\154', '\230', - '\204', '\210', '\111', '\244', '\230', '\104', '\214', '\111', - '\342', '\230', '\044', '\100', '\001', '\006', '\201', '\200', - '\076', '\000', '\076', '\254', '\157', '\305', '\372', '\162', - '\254', '\357', '\310', '\372', '\256', '\254', '\257', '\314', - '\372', '\352', '\254', '\217', '\200', '\001', '\006', '\241', - '\300', '\077', '\000', '\110', '\370', '\037', '\032', '\376', - '\207', '\210', '\377', '\241', '\342', '\177', '\304', '\370', - '\037', '\071', '\376', '\007', '\200', '\003', '\030', '\204', - '\003', '\016', '\004', '\000', '\017', '\042', '\310', '\205', - '\010', '\342', '\041', '\202', '\230', '\210', '\240', '\051', - '\042', '\150', '\214', '\010', '\202', '\043', '\202', '\376', - '\210', '\240', '\006', '\012', '\002', '\000', '\035', '\220', - '\120', '\013', '\044', '\324', '\003', '\011', '\035', '\101', - '\102', '\123', '\220', '\120', '\027', '\044', '\224', '\006', - '\011', '\345', '\101', '\102', '\011', '\034', '\105', '\006', - '\107', '\221', '\302', '\121', '\334', '\160', '\024', '\107', - '\034', '\305', '\025', '\107', '\161', '\306', '\121', '\334', - '\161', '\024', '\007', '\130', '\105', '\004', '\126', '\321', - '\201', '\125', '\260', '\140', '\025', '\074', '\130', '\305', - '\020', '\126', '\061', '\205', '\125', '\200', '\141', '\025', - '\157', '\130', '\105', '\037', '\126', '\321', '\300', '\002', - '\014', '\242', '\203', '\055', '\002', '\100', '\013', '\136', - '\264', '\203', '\027', '\055', '\341', '\105', '\130', '\170', - '\021', '\032', '\136', '\374', '\206', '\027', '\377', '\341', - '\305', '\006', '\060', '\300', '\040', '\037', '\170', '\043', - '\000', '\132', '\040', '\307', '\037', '\310', '\261', '\011', - '\162', '\374', '\202', '\034', '\335', '\040', '\107', '\107', - '\310', '\261', '\023', '\162', '\334', '\205', '\034', '\267', - '\041', '\307', '\175', '\310', '\361', '\002', '\152', '\001', - '\300', '\015', '\022', '\171', '\205', '\104', '\336', '\041', - '\221', '\227', '\110', '\344', '\055', '\022', '\171', '\215', - '\104', '\336', '\043', '\221', '\021', '\160', '\200', '\101', - '\132', '\240', '\111', '\000', '\034', '\241', '\223', '\145', - '\350', '\144', '\040', '\072', '\031', '\212', '\116', '\366', - '\242', '\223', '\335', '\350', '\144', '\076', '\072', '\231', - '\201', '\364', '\000', '\240', '\006', '\256', '\254', '\202', - '\053', '\323', '\340', '\312', '\100', '\270', '\062', '\022', - '\256', '\214', '\205', '\053', '\213', '\341', '\312', '\156', - '\270', '\062', '\037', '\256', '\314', '\200', '\166', '\346', - '\070', '\314', '\042', '\014', '\263', '\014', '\303', '\054', - '\304', '\060', '\047', '\061', '\314', '\131', '\014', '\323', - '\005', '\334', '\001', '\000', '\027', '\104', '\140', '\020', - '\134', '\020', '\301', '\040', '\007', '\300', '\301', '\003', - '\170', '\360', '\001', '\037', '\370', '\340', '\003', '\374', - '\170', '\000', '\076', '\016', '\000', '\217', '\001', '\224', - '\163', '\234', '\341', '\374', '\146', '\067', '\267', '\231', - '\315', '\007', '\300', '\343', '\003', '\370', '\370', '\001', - '\077', '\376', '\340', '\017', '\177', '\374', '\201', '\037', - '\077', '\300', '\307', '\007', '\340', '\341', '\116', '\161', - '\202', '\363', '\007', '\366', '\244', '\247', '\074', '\341', - '\351', '\116', '\000', '\300', '\100', '\202', '\000', '\370', - '\000', '\060', '\366', '\371', '\200', '\160', '\002', '\343', - '\000', '\037', '\134', '\036', '\016', '\006', '\300', '\201', - '\000', '\070', '\040', '\000', '\016', '\234', '\011', '\070', - '\000', '\200', '\017', '\000', '\370', '\003', '\020', '\177', - '\000', '\307', '\037', '\342', '\211', '\117', '\176', '\174', - '\000', '\034', '\014', '\305', '\307', '\003', '\370', '\160', - '\000', '\037', '\034', '\340', '\003', '\002', '\320', '\044', - '\106', '\302', '\363', '\017', '\014', '\330', '\024', '\003', - '\132', '\340', '\001', '\006', '\376', '\061', '\000', '\236', - '\372', '\264', '\247', '\003', '\220', '\234', '\344', '\374', - '\021', '\000', '\242', '\022', '\225', '\037', '\000', '\220', - '\034', '\006', '\170', '\240', '\205', '\233', '\356', '\024', - '\000', '\377', '\070', '\350', '\120', '\213', '\112', '\125', - '\241', '\102', '\025', '\250', '\077', '\345', '\051', '\116', - '\300', '\061', '\200', '\010', '\030', '\200', '\074', '\056', - '\301', '\210', '\000', '\170', '\272', '\321', '\162', '\346', - '\343', '\000', '\336', '\061', '\313', '\007', '\376', '\201', - '\326', '\001', '\034', '\201', '\003', '\104', '\040', '\100', - '\134', '\343', '\372', '\217', '\017', '\024', '\201', '\002', - '\167', '\315', '\053', '\005', '\352', '\072', '\127', '\271', - '\022', '\340', '\255', '\337', '\350', '\103', '\140', '\003', - '\313', '\215', '\016', '\374', '\343', '\017', '\207', '\075', - '\354', '\140', '\373', '\220', '\130', '\304', '\376', '\241', - '\260', '\213', '\015', '\054', '\107', '\070', '\062', '\002', - '\004', '\214', '\200', '\000', '\043', '\020', '\300', '\010', - '\002', '\060', '\212', '\321', '\000', '\140', '\034', '\017', - '\230', '\054', '\000', '\070', '\362', '\217', '\037', '\224', - '\066', '\075', '\351', '\171', '\007', '\014', '\336', '\201', - '\203', '\167', '\160', '\340', '\035', '\016', '\170', '\307', - '\001', '\336', '\061', '\200', '\167', '\374', '\300', '\266', - '\266', '\115', '\117', '\132', '\315', '\142', '\120', '\203', - '\022', '\040', '\006', '\010', '\210', '\001', '\004', '\142', - '\000', '\202', '\030', '\000', '\041', '\006', '\200', '\210', - '\001', '\077', '\142', '\320', '\333', '\203', '\302', '\240', - '\264', '\245', '\005', '\000', '\074', '\244', '\313', '\200', - '\173', '\160', '\340', '\036', '\070', '\270', '\007', '\034', - '\356', '\001', '\216', '\173', '\000', '\343', '\036', '\374', - '\000', '\257', '\170', '\245', '\273', '\333', '\262', '\300', - '\344', '\274', '\000', '\100', '\057', '\114', '\342', '\212', - '\004', '\001', '\100', '\041', '\000', '\033', '\205', '\211', - '\101', '\352', '\132', '\127', '\140', '\004', '\300', '\276', - '\370', '\275', '\257', '\176', '\231', '\221', '\201', '\302', - '\252', '\024', '\036', '\020', '\035', '\200', '\175', '\033', - '\333', '\130', '\140', '\000', '\300', '\300', '\010', '\076', - '\260', '\202', '\023', '\014', '\335', '\037', '\000', '\103', - '\300', '\020', '\176', '\260', '\204', '\043', '\334', '\323', - '\362', '\036', '\026', '\041', '\375', '\370', '\103', '\001', - '\200', '\120', '\217', '\057', '\124', '\000', '\012', '\325', - '\270', '\002', '\155', '\252', '\120', '\205', '\152', '\124', - '\241', '\002', '\124', '\250', '\307', '\025', '\012', '\000', - '\205', '\176', '\174', '\041', '\000', '\100', '\110', '\254', - '\205', '\147', '\114', '\143', '\357', '\070', '\067', '\251', - '\070', '\106', '\052', '\122', '\215', '\032', '\200', '\031', - '\014', '\040', '\006', '\002', '\270', '\361', '\215', '\247', - '\073', '\135', '\174', '\004', '\300', '\310', '\374', '\030', - '\100', '\222', '\103', '\030', '\302', '\177', '\074', '\300', - '\311', '\116', '\276', '\207', '\003', '\210', '\054', '\335', - '\052', '\203', '\343', '\310', '\007', '\010', '\247', '\007', - '\074', '\340', '\000', '\010', '\342', '\040', '\233', '\140', - '\306', '\101', '\227', '\267', '\034', '\316', '\161', '\136', - '\371', '\203', '\372', '\304', '\247', '\075', '\355', '\071', - '\120', '\175', '\272', '\031', '\236', '\362', '\134', '\363', - '\075', '\363', '\171', '\322', '\054', '\077', '\300', '\034', - '\031', '\230', '\300', '\014', '\222', '\101', '\202', '\074', - '\220', '\040', '\002', '\042', '\030', '\107', '\014', '\374', - '\361', '\001', '\145', '\120', '\300', '\320', '\206', '\126', - '\107', '\005', '\226', '\101', '\203', '\155', '\066', '\230', - '\320', '\367', '\310', '\301', '\066', '\356', '\320', '\216', - '\066', '\364', '\343', '\015', '\371', '\060', '\303', '\074', - '\346', '\120', '\332', '\165', '\324', '\300', '\323', '\236', - '\336', '\307', '\015', '\326', '\121', '\207', '\147', '\360', - '\241', '\261', '\052', '\045', '\000', '\004', '\014', '\000', - '\006', '\005', '\140', '\101', '\036', '\107', '\030', '\000', - '\020', '\144', '\055', '\000', '\040', '\324', '\132', '\023', - '\130', '\260', '\102', '\025', '\256', '\121', '\205', '\055', - '\144', '\241', '\326', '\265', '\306', '\247', '\112', '\115', - '\352', '\217', '\177', '\024', '\333', '\302', '\305', '\076', - '\166', '\171', '\213', '\215', '\117', '\040', '\300', '\370', - '\331', '\316', '\216', '\166', '\000', '\020', '\153', '\020', - '\304', '\112', '\373', '\332', '\317', '\346', '\252', '\266', - '\007', '\260', '\155', '\032', '\157', '\373', '\333', '\334', - '\036', '\200', '\020', '\102', '\120', '\204', '\050', '\050', - '\041', '\005', '\124', '\250', '\000', '\032', '\026', '\000', - '\205', '\002', '\374', '\302', '\037', '\316', '\176', '\167', - '\273', '\327', '\235', '\356', '\163', '\227', '\173', '\334', - '\146', '\230', '\101', '\033', '\266', '\261', '\207', '\067', - '\330', '\341', '\006', '\154', '\330', '\300', '\027', '\372', - '\001', '\120', '\234', '\000', '\164', '\340', '\001', '\377', - '\167', '\277', '\367', '\235', '\157', '\234', '\070', '\034', - '\000', '\017', '\177', '\070', '\142', '\043', '\016', '\361', - '\212', '\077', '\074', '\277', '\030', '\327', '\357', '\156', - '\063', '\316', '\361', '\147', '\203', '\141', '\000', '\355', - '\106', '\102', '\002', '\210', '\020', '\201', '\161', '\377', - '\341', '\017', '\325', '\376', '\303', '\270', '\111', '\056', - '\362', '\166', '\177', '\334', '\331', '\134', '\005', '\260', - '\112', '\013', '\353', '\214', '\034', '\034', '\043', '\016', - '\145', '\101', '\154', '\131', '\156', '\136', '\163', '\377', - '\272', '\063', '\300', '\366', '\235', '\052', '\121', '\263', - '\012', '\124', '\036', '\113', '\316', '\310', '\114', '\106', - '\353', '\223', '\227', '\016', '\345', '\245', '\047', '\335', - '\310', '\116', '\016', '\000', '\002', '\244', '\116', '\165', - '\004', '\204', '\301', '\352', '\123', '\317', '\172', '\325', - '\241', '\154', '\332', '\256', '\207', '\371', '\034', '\071', - '\000', '\273', '\330', '\163', '\020', '\346', '\006', '\227', - '\126', '\252', '\000', '\100', '\252', '\055', '\172', '\074', - '\000', '\041', '\367', '\326', '\307', '\153', '\107', '\252', - '\344', '\016', '\132', '\344', '\000', '\054', '\131', '\351', - '\115', '\247', '\162', '\323', '\235', '\034', '\302', '\044', - '\033', '\171', '\272', '\351', '\355', '\255', '\343', '\024', - '\312', '\320', '\160', '\002', '\342', '\000', '\100', '\070', - '\000', '\010', '\006', '\000', '\201', '\001', '\114', '\235', - '\000', '\001', '\200', '\210', '\105', '\300', '\042', '\071', - '\077', '\000', '\342', '\007', '\050', '\325', '\247', '\077', - '\036', '\260', '\371', '\017', '\002', '\030', '\027', '\003', - '\340', '\304', '\000', '\034', '\021', '\200', '\103', '\004', - '\200', '\043', '\026', '\201', '\311', '\101', '\007', '\277', - '\120', '\000', '\150', '\262', '\001', '\200', '\040', '\000', - '\020', '\010', '\200', '\022', '\355', '\024', '\104', '\254', - '\000', '\230', '\074', '\216', '\175', '\160', '\171', '\224', - '\242', '\024', '\020', '\017', '\000', '\306', '\003', '\300', - '\141', '\000', '\231', '\340', '\000', '\000', '\214', '\323', - '\244', '\003', '\111', '\373', '\200', '\110', '\040', '\040', - '\023', '\011', '\150', '\300', '\002', '\016', '\340', '\200', - '\253', '\137', '\235', '\372', '\322', '\207', '\276', '\363', - '\271', '\136', '\332', '\171', '\314', '\100', '\324', '\077', - '\370', '\301', '\067', '\174', '\360', '\216', '\036', '\224', - '\177', '\374', '\341', '\027', '\265', '\367', '\033', '\034', - '\217', '\001', '\354', '\343', '\245', '\014', '\110', '\000', - '\002', '\154', '\362', '\003', '\220', '\324', '\337', '\004', - '\004', '\040', '\001', '\003', '\174', '\200', '\217', '\033', - '\300', '\143', '\004', '\343', '\160', '\000', '\367', '\360', - '\144', '\153', '\025', '\176', '\070', '\020', '\125', '\064', - '\065', '\137', '\120', '\305', '\000', '\376', '\300', '\001', - '\374', '\300', '\017', '\377', '\200', '\017', '\377', '\000', - '\017', '\357', '\000', '\016', '\307', '\140', '\140', '\127', - '\126', '\116', '\006', '\106', '\014', '\010', '\140', '\014', - '\073', '\325', '\165', '\036', '\310', '\201', '\006', '\126', - '\116', '\127', '\206', '\140', '\002', '\006', '\121', '\344', - '\364', '\000', '\350', '\160', '\001', '\334', '\260', '\003', - '\026', '\326', '\202', '\053', '\310', '\117', '\037', '\064', - '\141', '\000', '\340', '\001', '\256', '\027', '\000', '\314', - '\220', '\017', '\015', '\340', '\144', '\177', '\300', '\000', - '\166', '\144', '\000', '\214', '\043', '\116', '\007', '\240', - '\035', '\104', '\250', '\036', '\222', '\003', '\000', '\365', - '\367', '\003', '\025', '\346', '\035', '\135', '\147', '\166', - '\000', '\105', '\120', '\307', '\167', '\174', '\072', '\226', - '\166', '\000', '\060', '\165', '\023', '\040', '\000', '\053', - '\066', '\001', '\004', '\060', '\015', '\005', '\360', '\001', - '\074', '\340', '\200', '\020', '\100', '\016', '\141', '\010', - '\011', '\364', '\000', '\011', '\344', '\000', '\011', '\004', - '\200', '\010', '\010', '\100', '\010', '\020', '\300', '\007', - '\340', '\004', '\000', '\373', '\020', '\000', '\367', '\320', - '\123', '\002', '\050', '\200', '\246', '\245', '\163', '\341', - '\005', '\017', '\367', '\000', '\017', '\023', '\270', '\207', - '\347', '\060', '\154', '\037', '\340', '\206', '\000', '\340', - '\022', '\036', '\160', '\170', '\017', '\226', '\201', '\003', - '\060', '\116', '\372', '\100', '\207', '\375', '\100', '\116', - '\346', '\024', '\000', '\051', '\000', '\000', '\043', '\000', - '\000', '\026', '\000', '\000', '\162', '\304', '\070', '\012', - '\065', '\174', '\216', '\070', '\116', '\233', '\267', '\167', - '\117', '\326', '\126', '\377', '\060', '\155', '\110', '\130', - '\203', '\036', '\025', '\000', '\221', '\347', '\007', '\004', - '\200', '\000', '\010', '\100', '\020', '\252', '\010', '\007', - '\024', '\200', '\000', '\042', '\000', '\003', '\101', '\000', - '\014', '\040', '\000', '\004', '\022', '\000', '\010', '\005', - '\201', '\076', '\002', '\060', '\164', '\164', '\310', '\167', - '\360', '\004', '\116', '\160', '\066', '\117', '\022', '\010', - '\017', '\041', '\345', '\140', '\037', '\000', '\174', '\015', - '\004', '\000', '\002', '\340', '\206', '\306', '\020', '\003', - '\203', '\000', '\006', '\320', '\006', '\155', '\003', '\000', - '\006', '\006', '\000', '\003', '\055', '\201', '\001', '\014', - '\000', '\003', '\254', '\046', '\140', '\001', '\340', '\206', - '\376', '\360', '\003', '\067', '\367', '\214', '\323', '\070', - '\215', '\103', '\020', '\006', '\207', '\000', '\007', '\016', - '\200', '\003', '\034', '\300', '\001', '\142', '\006', '\140', - '\134', '\065', '\140', '\377', '\260', '\012', '\252', '\120', - '\142', '\362', '\130', '\000', '\150', '\004', '\012', '\366', - '\270', '\000', '\370', '\170', '\217', '\371', '\010', '\012', - '\364', '\070', '\217', '\325', '\120', '\143', '\002', '\131', - '\143', '\204', '\026', '\116', '\371', '\160', '\002', '\336', - '\007', '\166', '\317', '\300', '\003', '\015', '\266', '\220', - '\140', '\347', '\175', '\007', '\031', '\116', '\005', '\011', - '\120', '\364', '\244', '\163', '\003', '\231', '\126', '\162', - '\206', '\117', '\247', '\167', '\000', '\017', '\360', '\001', - '\077', '\200', '\130', '\037', '\260', '\001', '\061', '\000', - '\003', '\140', '\360', '\161', '\311', '\230', '\036', '\037', - '\060', '\212', '\050', '\107', '\123', '\001', '\360', '\123', - '\050', '\167', '\017', '\000', '\060', '\017', '\000', '\160', - '\146', '\367', '\065', '\132', '\066', '\071', '\010', '\000', - '\060', '\004', '\222', '\010', '\000', '\043', '\261', '\017', - '\077', '\060', '\022', '\223', '\250', '\223', '\070', '\051', - '\132', '\250', '\005', '\000', '\241', '\365', '\010', '\003', - '\360', '\014', '\001', '\360', '\016', '\120', '\225', '\126', - '\114', '\251', '\224', '\110', '\031', '\132', '\105', '\051', - '\132', '\124', '\151', '\223', '\077', '\125', '\225', '\125', - '\131', '\224', '\132', '\151', '\224', '\120', '\305', '\164', - '\113', '\267', '\225', '\133', '\171', '\137', '\376', '\360', - '\156', '\277', '\040', '\002', '\242', '\040', '\012', '\252', - '\200', '\226', '\152', '\251', '\012', '\146', '\071', '\226', - '\156', '\111', '\226', '\157', '\051', '\226', '\167', '\110', - '\140', '\216', '\105', '\227', '\166', '\131', '\227', '\002', - '\205', '\225', '\066', '\131', '\225', '\077', '\005', '\226', - '\134', '\271', '\225', '\236', '\350', '\144', '\173', '\071', - '\230', '\130', '\371', '\123', '\177', '\171', '\230', '\140', - '\031', '\230', '\301', '\027', '\000', '\170', '\360', '\000', - '\316', '\306', '\026', '\302', '\020', '\016', '\044', '\040', - '\015', '\270', '\340', '\000', '\240', '\040', '\000', '\040', - '\120', '\153', '\001', '\220', '\231', '\150', '\050', '\162', - '\050', '\240', '\000', '\036', '\300', '\115', '\374', '\200', - '\116', '\015', '\365', '\001', '\303', '\020', '\004', '\347', - '\060', '\016', '\314', '\366', '\015', '\052', '\365', '\101', - '\061', '\167', '\000', '\200', '\350', '\007', '\341', '\367', - '\215', '\104', '\005', '\014', '\157', '\151', '\226', '\052', - '\240', '\012', '\271', '\271', '\233', '\154', '\051', '\012', - '\157', '\371', '\233', '\144', '\051', '\227', '\167', '\071', - '\234', '\170', '\111', '\227', '\337', '\270', '\121', '\007', - '\005', '\026', '\006', '\106', '\150', '\233', '\331', '\014', - '\154', '\340', '\234', '\316', '\031', '\000', '\320', '\110', - '\215', '\070', '\200', '\001', '\006', '\220', '\201', '\214', - '\151', '\145', '\036', '\125', '\200', '\002', '\311', '\017', - '\357', '\060', '\116', '\044', '\150', '\121', '\000', '\300', - '\035', '\314', '\045', '\005', '\000', '\340', '\005', '\000', - '\100', '\010', '\000', '\340', '\020', '\123', '\007', '\001', - '\001', '\000', '\003', '\230', '\131', '\153', '\004', '\160', - '\170', '\311', '\310', '\077', '\004', '\120', '\177', '\053', - '\351', '\121', '\151', '\147', '\167', '\107', '\146', '\116', - '\346', '\204', '\202', '\340', '\020', '\174', '\307', '\230', - '\222', '\051', '\151', '\203', '\034', '\200', '\210', '\343', - '\304', '\014', '\014', '\240', '\240', '\340', '\311', '\155', - '\001', '\020', '\016', '\041', '\020', '\016', '\141', '\040', - '\014', '\020', '\300', '\001', '\016', '\160', '\145', '\370', - '\160', '\004', '\053', '\265', '\231', '\347', '\144', '\147', - '\204', '\126', '\220', '\102', '\030', '\017', '\203', '\020', - '\017', '\343', '\060', '\017', '\363', '\360', '\016', '\071', - '\260', '\145', '\127', '\346', '\017', '\307', '\120', '\026', - '\053', '\345', '\166', '\007', '\365', '\123', '\060', '\132', - '\145', '\124', '\066', '\135', '\212', '\131', '\243', '\125', - '\306', '\007', '\372', '\171', '\014', '\001', '\060', '\010', - '\245', '\027', '\000', '\306', '\000', '\137', '\070', '\166', - '\174', '\050', '\000', '\000', '\105', '\352', '\016', '\000', - '\300', '\006', '\000', '\160', '\174', '\332', '\321', '\121', - '\374', '\120', '\124', '\164', '\370', '\010', '\007', '\360', - '\011', '\007', '\340', '\015', '\131', '\226', '\210', '\107', - '\306', '\121', '\373', '\351', '\017', '\112', '\226', '\245', - '\160', '\000', '\161', '\300', '\000', '\016', '\360', '\200', - '\017', '\374', '\120', '\154', '\370', '\200', '\015', '\214', - '\300', '\000', '\006', '\300', '\077', '\003', '\000', '\010', - '\020', '\026', '\163', '\211', '\250', '\144', '\003', '\300', - '\245', '\077', '\205', '\017', '\003', '\300', '\013', '\003', - '\300', '\003', '\003', '\140', '\203', '\066', '\050', '\107', - '\316', '\005', '\004', '\060', '\000', '\010', '\007', '\305', - '\134', '\062', '\360', '\017', '\067', '\140', '\074', '\000', - '\200', '\134', '\060', '\000', '\250', '\315', '\105', '\243', - '\300', '\000', '\017', '\300', '\020', '\017', '\200', '\040', - '\223', '\367', '\260', '\133', '\000', '\160', '\017', '\223', - '\032', '\251', '\217', '\112', '\243', '\204', '\111', '\230', - '\206', '\251', '\227', '\104', '\211', '\230', '\177', '\251', - '\230', '\242', '\252', '\225', '\142', '\111', '\226', '\146', - '\231', '\226', '\252', '\252', '\226', '\155', '\011', '\227', - '\256', '\072', '\226', '\302', '\131', '\234', '\262', '\112', - '\234', '\215', '\365', '\215', '\245', '\025', '\000', '\042', - '\200', '\253', '\270', '\372', '\017', '\043', '\000', '\150', - '\276', '\052', '\002', '\200', '\026', '\017', '\077', '\020', - '\001', '\040', '\100', '\254', '\304', '\012', '\135', '\151', - '\165', '\000', '\356', '\360', '\017', '\357', '\300', '\254', - '\314', '\172', '\007', '\356', '\000', '\255', '\225', '\072', - '\255', '\377', '\160', '\007', '\340', '\260', '\133', '\017', - '\007', '\012', '\001', '\240', '\255', '\260', '\020', '\000', - '\260', '\060', '\000', '\240', '\007', '\172', '\274', '\160', - '\000', '\343', '\352', '\013', '\007', '\340', '\013', '\035', - '\271', '\174', '\015', '\144', '\210', '\301', '\067', '\174', - '\303', '\267', '\117', '\360', '\032', '\117', '\044', '\045', - '\117', '\306', '\126', '\026', '\037', '\020', '\102', '\024', - '\220', '\257', '\372', '\272', '\257', '\024', '\360', '\007', - '\076', '\300', '\001', '\010', '\240', '\243', '\002', '\013', - '\000', '\003', '\133', '\260', '\004', '\173', '\260', '\241', - '\030', '\212', '\376', '\160', '\260', '\114', '\132', '\205', - '\010', '\320', '\022', '\337', '\370', '\000', '\170', '\360', - '\215', '\055', '\241', '\212', '\330', '\270', '\216', '\266', - '\212', '\227', '\337', '\270', '\216', '\330', '\130', '\020', - '\157', '\144', '\117', '\351', '\141', '\117', '\157', '\124', - '\020', '\007', '\045', '\205', '\365', '\132', '\026', '\314', - '\366', '\017', '\307', '\167', '\120', '\125', '\070', '\210', - '\321', '\205', '\007', '\321', '\345', '\022', '\036', '\213', - '\174', '\320', '\145', '\221', '\210', '\125', '\177', '\214', - '\303', '\000', '\010', '\300', '\001', '\076', '\360', '\007', - '\374', '\372', '\263', '\332', '\161', '\174', '\072', '\272', - '\260', '\011', '\333', '\215', '\007', '\153', '\260', '\110', - '\173', '\260', '\073', '\333', '\263', '\077', '\333', '\257', - '\377', '\212', '\000', '\102', '\253', '\237', '\105', '\233', - '\264', '\072', '\132', '\264', '\013', '\253', '\243', '\307', - '\167', '\021', '\256', '\227', '\120', '\200', '\260', '\007', - '\240', '\260', '\007', '\220', '\260', '\007', '\210', '\040', - '\266', '\144', '\073', '\266', '\214', '\260', '\007', '\106', - '\362', '\013', '\173', '\200', '\001', '\334', '\321', '\247', - '\310', '\307', '\076', '\000', '\260', '\222', '\140', '\360', - '\017', '\160', '\360', '\017', '\060', '\173', '\267', '\166', - '\373', '\017', '\247', '\346', '\007', '\211', '\345', '\007', - '\177', '\000', '\003', '\176', '\040', '\101', '\341', '\201', - '\020', '\204', '\013', '\000', '\355', '\027', '\001', '\002', - '\360', '\253', '\020', '\040', '\002', '\377', '\007', '\000', - '\044', '\140', '\244', '\006', '\005', '\014', '\246', '\205', - '\125', '\003', '\340', '\100', '\003', '\170', '\271', '\357', - '\000', '\255', '\322', '\372', '\016', '\024', '\310', '\207', - '\034', '\005', '\014', '\377', '\000', '\272', '\240', '\233', - '\212', '\325', '\123', '\075', '\020', '\040', '\000', '\247', - '\033', '\016', '\341', '\200', '\147', '\343', '\064', '\116', - '\170', '\246', '\272', '\247', '\173', '\272', '\245', '\113', - '\000', '\251', '\150', '\000', '\330', '\250', '\263', '\004', - '\140', '\235', '\042', '\152', '\242', '\366', '\260', '\003', - '\341', '\304', '\017', '\007', '\140', '\017', '\037', '\140', - '\242', '\042', '\212', '\001', '\002', '\140', '\235', '\014', - '\240', '\246', '\056', '\141', '\000', '\070', '\301', '\002', - '\006', '\340', '\011', '\224', '\150', '\000', '\365', '\027', - '\002', '\000', '\160', '\002', '\000', '\120', '\024', '\326', - '\213', '\275', '\325', '\013', '\000', '\324', '\113', '\275', - '\365', '\147', '\211', '\030', '\320', '\000', '\174', '\040', - '\276', '\015', '\340', '\007', '\073', '\010', '\125', '\350', - '\233', '\200', '\352', '\233', '\276', '\350', '\213', '\023', - '\330', '\226', '\231', '\360', '\053', '\000', '\234', '\300', - '\001', '\323', '\270', '\216', '\235', '\231', '\000', '\044', - '\040', '\001', '\371', '\332', '\022', '\252', '\206', '\023', - '\371', '\365', '\161', '\037', '\247', '\215', '\070', '\340', - '\001', '\237', '\300', '\007', '\334', '\026', '\210', '\363', - '\313', '\137', '\371', '\146', '\003', '\066', '\020', '\232', - '\351', '\150', '\137', '\000', '\046', '\146', '\055', '\121', - '\215', '\317', '\130', '\216', '\317', '\130', '\215', '\055', - '\321', '\216', '\007', '\140', '\137', '\257', '\251', '\122', - '\074', '\300', '\145', '\070', '\160', '\216', '\303', '\020', - '\016', '\143', '\060', '\016', '\043', '\174', '\216', '\351', - '\370', '\301', '\255', '\051', '\153', '\201', '\247', '\136', - '\201', '\127', '\127', '\056', '\354', '\302', '\035', '\227', - '\137', '\164', '\071', '\303', '\372', '\305', '\021', '\351', - '\341', '\003', '\372', '\231', '\144', '\145', '\246', '\245', - '\060', '\360', '\236', '\230', '\111', '\173', '\005', '\241', - '\035', '\040', '\340', '\100', '\051', '\211', '\162', '\106', - '\225', '\145', '\362', '\224', '\117', '\371', '\364', '\237', - '\360', '\160', '\241', '\007', '\212', '\003', '\340', '\360', - '\245', '\033', '\005', '\272', '\135', '\127', '\225', '\240', - '\065', '\006', '\000', '\320', '\131', '\233', '\225', '\131', - '\227', '\125', '\131', '\242', '\145', '\141', '\251', '\165', - '\133', '\144', '\114', '\133', '\262', '\005', '\133', '\256', - '\305', '\132', '\252', '\125', '\224', '\015', '\326', '\250', - '\060', '\260', '\134', '\311', '\165', '\134', '\305', '\065', - '\134', '\301', '\365', '\133', '\315', '\145', '\141', '\322', - '\025', '\136', '\172', '\354', '\135', '\334', '\245', '\135', - '\330', '\145', '\135', '\367', '\120', '\135', '\064', '\112', - '\137', '\051', '\031', '\170', '\033', '\365', '\136', '\355', - '\025', '\127', '\061', '\334', '\302', '\120', '\045', '\253', - '\034', '\374', '\237', '\063', '\327', '\001', '\374', '\145', - '\303', '\003', '\326', '\165', '\011', '\166', '\311', '\013', - '\246', '\140', '\026', '\066', '\141', '\234', '\114', '\141', - '\017', '\126', '\020', '\074', '\373', '\007', '\167', '\340', - '\257', '\000', '\333', '\005', '\153', '\220', '\004', '\101', - '\220', '\312', '\121', '\170', '\260', '\104', '\333', '\222', - '\256', '\174', '\265', '\000', '\240', '\013', '\120', '\345', - '\312', '\241', '\170', '\015', '\001', '\140', '\313', '\074', - '\172', '\225', '\235', '\252', '\227', '\212', '\351', '\227', - '\176', '\371', '\075', '\040', '\240', '\000', '\311', '\040', - '\003', '\362', '\220', '\000', '\114', '\140', '\000', '\103', - '\200', '\001', '\213', '\174', '\136', '\317', '\206', '\023', - '\350', '\140', '\007', '\373', '\360', '\015', '\004', '\167', - '\154', '\246', '\365', '\017', '\317', '\220', '\007', '\063', - '\274', '\301', '\332', '\374', '\120', '\156', '\372', '\251', - '\273', '\354', '\251', '\136', '\051', '\230', '\276', '\214', - '\230', '\255', '\013', '\233', '\166', '\146', '\010', '\030', - '\060', '\010', '\060', '\020', '\010', '\340', '\020', '\014', - '\341', '\340', '\316', '\041', '\000', '\016', '\023', '\240', - '\215', '\030', '\120', '\146', '\346', '\114', '\232', '\277', - '\313', '\171', '\334', '\051', '\220', '\117', '\230', '\317', - '\341', '\164', '\007', '\000', '\253', '\212', '\002', '\075', - '\320', '\034', '\160', '\007', '\357', '\100', '\313', '\106', - '\273', '\312', '\012', '\275', '\244', '\014', '\035', '\265', - '\105', '\173', '\320', '\051', '\221', '\011', '\021', '\001', - '\004', '\216', '\160', '\020', '\312', '\150', '\223', '\030', - '\201', '\076', '\374', '\343', '\100', '\005', '\261', '\023', - '\112', '\261', '\105', '\157', '\244', '\026', '\232', '\224', - '\036', '\347', '\001', '\000', '\022', '\300', '\223', '\000', - '\100', '\001', '\000', '\120', '\001', '\224', '\010', '\000', - '\027', '\060', '\210', '\000', '\140', '\023', '\032', '\000', - '\000', '\076', '\301', '\070', '\035', '\100', '\212', '\051', - '\211', '\022', '\324', '\113', '\115', '\223', '\370', '\270', - '\105', '\141', '\002', '\333', '\133', '\244', '\221', '\310', - '\024', '\053', '\000', '\000', '\054', '\060', '\107', '\000', - '\340', '\002', '\000', '\360', '\002', '\275', '\105', '\250', - '\000', '\060', '\003', '\000', '\100', '\003', '\257', '\004', - '\000', '\066', '\240', '\110', '\014', '\235', '\003', '\045', - '\004', '\000', '\073', '\200', '\120', '\075', '\000', '\267', - '\365', '\007', '\023', '\124', '\041', '\004', '\071', '\251', - '\022', '\000', '\340', '\031', '\106', '\340', '\111', '\000', - '\004', '\000', '\111', '\000', '\000', '\112', '\000', '\000', - '\113', '\000', '\000', '\114', '\000', '\000', '\115', '\000', - '\000', '\136', '\361', '\004', '\064', '\001', '\000', '\121', - '\340', '\032', '\000', '\300', '\025', '\166', '\121', '\005', - '\000', '\140', '\005', '\251', '\161', '\034', '\000', '\140', - '\034', '\132', '\000', '\000', '\133', '\040', '\115', '\000', - '\320', '\005', '\347', '\011', '\000', '\137', '\000', '\000', - '\140', '\021', '\006', '\000', '\040', '\006', '\236', '\065', - '\021', '\145', '\000', '\000', '\146', '\000', '\000', '\147', - '\000', '\000', '\150', '\000', '\000', '\151', '\000', '\000', - '\152', '\000', '\000', '\132', '\241', '\244', '\143', '\341', - '\006', '\000', '\360', '\006', '\000', '\360', '\245', '\161', - '\000', '\000', '\250', '\061', '\007', '\000', '\100', '\007', - '\000', '\120', '\007', '\000', '\200', '\026', '\167', '\200', - '\143', '\171', '\060', '\037', '\000', '\260', '\007', '\007', - '\333', '\007', '\000', '\020', '\270', '\050', '\207', '\023', - '\154', '\101', '\071', '\070', '\251', '\236', '\205', '\000', - '\000', '\206', '\000', '\000', '\207', '\260', '\236', '\000', - '\220', '\010', '\000', '\240', '\010', '\000', '\260', '\010', - '\000', '\300', '\010', '\000', '\320', '\010', '\000', '\120', - '\321', '\217', '\000', '\000', '\220', '\000', '\000', '\221', - '\000', '\000', '\222', '\000', '\000', '\223', '\000', '\000', - '\224', '\000', '\000', '\225', '\000', '\000', '\226', '\000', - '\000', '\227', '\000', '\000', '\230', '\000', '\000', '\022', - '\015', '\022', '\226', '\103', '\002', '\063', '\301', '\336', - '\006', '\341', '\336', '\216', '\333', '\336', '\362', '\375', - '\336', '\363', '\035', '\337', '\364', '\175', '\337', '\366', - '\235', '\337', '\360', '\275', '\337', '\365', '\315', '\337', - '\370', '\355', '\337', '\372', '\335', '\337', '\002', '\376', - '\337', '\003', '\036', '\340', '\004', '\176', '\340', '\006', - '\236', '\340', '\000', '\276', '\340', '\005', '\316', '\340', - '\010', '\356', '\340', '\012', '\336', '\340', '\022', '\376', - '\340', '\023', '\036', '\341', '\024', '\176', '\341', '\026', - '\236', '\341', '\020', '\276', '\341', '\025', '\316', '\341', - '\030', '\356', '\341', '\032', '\336', '\341', '\042', '\376', - '\341', '\043', '\236', '\340', '\004', '\060', '\023', '\047', - '\116', '\342', '\052', '\036', '\342', '\053', '\016', '\342', - '\102', '\140', '\021', '\057', '\256', '\336', '\051', '\161', - '\024', '\056', '\235', '\020', '\067', '\335', '\077', '\011', - '\201', '\325', '\006', '\141', '\327', '\006', '\201', '\236', - '\006', '\201', '\032', '\006', '\061', '\333', '\006', '\301', - '\026', '\006', '\301', '\334', '\006', '\161', '\336', '\006', - '\261', '\012', '\011', '\061', '\014', '\011', '\161', '\015', - '\011', '\001', '\170', '\124', '\150', '\020', '\015', '\140', - '\021', '\030', '\140', '\021', '\050', '\140', '\021', '\063', - '\140', '\021', '\103', '\140', '\021', '\116', '\140', '\021', - '\136', '\140', '\021', '\145', '\140', '\021', '\161', '\140', - '\021', '\167', '\140', '\021', '\202', '\140', '\021', '\215', - '\140', '\021', '\235', '\140', '\021', '\243', '\260', '\072', - '\026', '\301', '\013', '\026', '\241', '\224', '\006', '\221', - '\015', '\026', '\201', '\016', '\026', '\141', '\017', '\026', - '\221', '\000', '\063', '\321', '\000', '\063', '\141', '\001', - '\063', '\321', '\001', '\063', '\221', '\002', '\063', '\141', - '\003', '\063', '\321', '\136', '\006', '\101', '\005', '\063', - '\121', '\006', '\063', '\021', '\007', '\063', '\041', '\010', - '\063', '\321', '\010', '\063', '\321', '\011', '\063', '\141', - '\012', '\063', '\101', '\013', '\063', '\241', '\013', '\063', - '\121', '\014', '\063', '\321', '\014', '\063', '\241', '\015', - '\032', '\065', '\023', '\353', '\060', '\023', '\361', '\060', - '\023', '\374', '\060', '\023', '\002', '\120', '\074', '\015', - '\120', '\074', '\023', '\120', '\074', '\036', '\120', '\074', - '\043', '\120', '\074', '\055', '\120', '\074', '\023', '\165', - '\025', '\305', '\023', '\005', '\305', '\363', '\005', '\305', - '\223', '\006', '\305', '\203', '\007', '\305', '\023', '\010', - '\305', '\203', '\224', '\361', '\121', '\074', '\252', '\120', - '\074', '\263', '\120', '\074', '\301', '\000', '\075', '\305', - '\203', '\015', '\305', '\303', '\015', '\305', '\123', '\016', - '\305', '\043', '\017', '\305', '\103', '\273', '\342', '\141', - '\022', '\025', '\140', '\022', '\034', '\140', '\075', '\046', - '\361', '\002', '\046', '\261', '\003', '\046', '\061', '\173', - '\006', '\241', '\004', '\046', '\221', '\005', '\046', '\321', - '\006', '\046', '\161', '\007', '\046', '\141', '\010', '\046', - '\021', '\011', '\046', '\021', '\012', '\046', '\261', '\012', - '\046', '\241', '\013', '\046', '\141', '\014', '\046', '\161', - '\015', '\046', '\001', '\016', '\046', '\341', '\016', '\046', - '\161', '\017', '\046', '\121', '\000', '\353', '\063', '\001', - '\353', '\143', '\002', '\353', '\203', '\003', '\353', '\363', - '\004', '\353', '\323', '\005', '\353', '\003', '\007', '\353', - '\243', '\141', '\006', '\061', '\011', '\353', '\363', '\011', - '\353', '\003', '\013', '\353', '\043', '\014', '\353', '\223', - '\015', '\353', '\023', '\016', '\353', '\343', '\016', '\353', - '\123', '\017', '\353', '\023', '\000', '\377', '\263', '\077', - '\006', '\101', '\001', '\377', '\323', '\001', '\377', '\263', - '\002', '\377', '\243', '\215', '\134', '\364', '\077', '\101', - '\360', '\077', '\115', '\360', '\077', '\124', '\360', '\077', - '\324', '\150', '\020', '\157', '\360', '\077', '\203', '\360', - '\077', '\223', '\140', '\100', '\377', '\223', '\013', '\377', - '\363', '\014', '\377', '\203', '\015', '\377', '\143', '\016', - '\377', '\343', '\016', '\377', '\263', '\017', '\014', '\024', - '\101', '\012', '\020', '\101', '\023', '\020', '\101', '\041', - '\020', '\101', '\052', '\020', '\101', '\137', '\146', '\020', - '\101', '\020', '\101', '\117', '\020', '\101', '\125', '\020', - '\101', '\140', '\020', '\101', '\146', '\020', '\101', '\161', - '\020', '\101', '\310', '\101', '\032', '\246', '\201', '\032', - '\133', '\137', '\007', '\245', '\161', '\032', '\137', '\320', - '\006', '\141', '\060', '\007', '\132', '\161', '\030', '\162', - '\360', '\006', '\263', '\215', '\366', '\152', '\077', '\366', - '\145', '\257', '\025', '\142', '\120', '\366', '\145', '\100', - '\006', '\137', '\300', '\366', '\167', '\360', '\005', '\144', - '\240', '\366', '\244', '\035', '\367', '\173', '\101', '\367', - '\166', '\217', '\367', '\172', '\357', '\366', '\146', '\037', - '\331', '\162', '\357', '\367', '\162', '\220', '\366', '\167', - '\137', '\007', '\137', '\312', '\367', '\163', '\137', '\367', - '\207', '\337', '\366', '\212', '\057', '\370', '\160', '\377', - '\006', '\141', '\340', '\332', '\142', '\100', '\371', '\164', - '\040', '\371', '\221', '\375', '\006', '\147', '\360', '\006', - '\163', '\220', '\006', '\164', '\120', '\333', '\227', '\337', - '\371', '\237', '\037', '\372', '\232', '\177', '\371', '\164', - '\100', '\007', '\157', '\320', '\006', '\137', '\300', '\006', - '\145', '\140', '\006', '\231', '\077', '\006', '\247', '\261', - '\030', '\250', '\201', '\372', '\252', '\317', '\372', '\256', - '\017', '\373', '\137', '\040', '\373', '\162', '\100', '\373', - '\247', '\377', '\006', '\251', '\277', '\372', '\137', '\040', - '\007', '\151', '\160', '\006', '\150', '\020', '\373', '\263', - '\057', '\031', '\233', '\037', '\374', '\254', '\117', '\374', - '\306', '\217', '\374', '\275', '\057', '\031', '\277', '\317', - '\374', '\137', '\360', '\371', '\144', '\120', '\331', '\266', - '\057', '\374', '\326', '\137', '\006', '\323', '\177', '\373', - '\137', '\100', '\007', '\145', '\200', '\375', '\300', '\357', - '\375', '\340', '\317', '\375', '\144', '\077', '\370', '\227', - '\217', '\007', '\325', '\017', '\007', '\151', '\040', '\007', - '\141', '\240', '\244', '\351', '\277', '\376', '\355', '\377', - '\376', '\232', '\077', '\006', '\214', '\001', '\376', '\162', - '\360', '\005', '\160', '\100', '\007', '\250', '\141', '\377', - '\156', '\200', '\377', '\372', '\317', '\377', '\365', '\337', - '\376', '\143', '\340', '\372', '\243', '\321', '\376', '\143', - '\340', '\372', '\365', '\317', '\006', '\157', '\060', '\006', - '\132', '\061', '\006', '\154', '\360', '\006', '\143', '\260', - '\006', '\365', '\377', '\006', '\146', '\140', '\006', '\341', - '\077', '\366', '\165', '\220', '\331', '\262', '\157', '\006', - '\146', '\020', '\376', '\143', '\137', '\007', '\147', '\120', - '\377', '\151', '\077', '\007', '\254', '\075', '\006', '\151', - '\077', '\007', '\163', '\120', '\377', '\151', '\077', '\007', - '\163', '\060', '\374', '\145', '\140', '\007', '\222', '\261', - '\027', '\243', '\221', '\366', '\163', '\060', '\007', '\303', - '\137', '\006', '\166', '\040', '\031', '\173', '\121', '\377', - '\151', '\077', '\007', '\163', '\200', '\006', '\141', '\320', - '\376', '\243', '\221', '\366', '\163', '\060', '\007', '\150', - '\020', '\006', '\355', '\257', '\371', '\144', '\220', '\006', - '\141', '\320', '\006', '\157', '\340', '\006', '\164', '\077', - '\006', '\151', '\077', '\007', '\254', '\115', '\006', '\151', - '\020', '\006', '\155', '\360', '\006', '\156', '\100', '\367', - '\143', '\220', '\366', '\163', '\060', '\007', '\232', '\237', - '\367', '\256', '\235', '\367', '\231', '\177', '\376', '\132', - '\221', '\367', '\164', '\220', '\376', '\000', '\220', '\367', - '\164', '\020', '\377', '\347', '\257', '\025', '\171', '\137', - '\007', '\142', '\340', '\372', '\216', '\217', '\370', '\000', - '\220', '\367', '\165', '\040', '\006', '\256', '\357', '\370', - '\210', '\257', '\371', '\144', '\340', '\376', '\272', '\317', - '\006', '\207', '\161', '\006', '\225', '\115', '\006', '\356', - '\257', '\373', '\154', '\160', '\030', '\147', '\140', '\376', - '\157', '\017', '\000', '\144', '\340', '\376', '\272', '\077', - '\007', '\144', '\317', '\006', '\112', '\112', '\006', '\356', - '\257', '\373', '\163', '\100', '\366', '\154', '\300', '\006', - '\232', '\117', '\006', '\356', '\017', '\007', '\215', '\237', - '\376', '\000', '\100', '\006', '\356', '\017', '\007', '\215', - '\037', '\377', '\347', '\257', '\025', '\145', '\200', '\007', - '\143', '\200', '\006', '\141', '\340', '\006', '\147', '\120', - '\331', '\145', '\200', '\007', '\143', '\200', '\006', '\141', - '\340', '\006', '\147', '\140', '\376', '\157', '\157', '\331', - '\256', '\017', '\366', '\226', '\355', '\372', '\140', '\257', - '\371', '\235', '\057', '\006', '\142', '\340', '\372', '\250', - '\321', '\371', '\142', '\040', '\006', '\256', '\237', '\377', - '\347', '\257', '\025', '\147', '\360', '\030', '\142', '\120', - '\333', '\147', '\360', '\030', '\142', '\220', '\007', '\232', - '\217', '\006', '\141', '\340', '\006', '\144', '\300', '\134', - '\150', '\020', '\006', '\156', '\100', '\006', '\061', '\240', - '\371', '\150', '\020', '\006', '\156', '\100', '\006', '\062', - '\240', '\331', '\141', '\340', '\006', '\144', '\040', '\003', - '\232', '\237', '\027', '\207', '\341', '\332', '\171', '\161', - '\030', '\231', '\177', '\376', '\132', '\221', '\006', '\262', - '\117', '\332', '\151', '\040', '\373', '\156', '\240', '\371', - '\355', '\377', '\006', '\156', '\260', '\373', '\151', '\077', - '\007', '\254', '\335', '\376', '\157', '\340', '\006', '\273', - '\237', '\366', '\163', '\060', '\007', '\232', '\237', '\373', - '\231', '\277', '\377', '\250', '\221', '\373', '\231', '\277', - '\377', '\371', '\177', '\376', '\241', '\375', '\372', '\231', - '\277', '\375', '\111', '\372', '\372', '\231', '\277', '\375', - '\232', '\237', '\373', '\231', '\137', '\376', '\111', '\372', - '\372', '\231', '\137', '\376', '\232', '\237', '\373', '\164', - '\040', '\006', '\165', '\020', '\374', '\244', '\235', '\373', - '\164', '\040', '\006', '\165', '\020', '\374', '\156', '\240', - '\371', '\154', '\300', '\006', '\165', '\357', '\006', '\177', - '\121', '\331', '\154', '\300', '\006', '\165', '\357', '\006', - '\177', '\141', '\376', '\157', '\237', '\244', '\371', '\037', - '\006', '\156', '\360', '\027', '\225', '\315', '\006', '\371', - '\037', '\006', '\156', '\360', '\027', '\346', '\377', '\366', - '\000', '\100', '\366', '\244', '\115', '\366', '\156', '\240', - '\371', '\155', '\220', '\006', '\144', '\100', '\006', '\256', - '\057', '\006', '\165', '\020', '\374', '\244', '\335', '\006', - '\151', '\100', '\006', '\144', '\340', '\372', '\142', '\120', - '\007', '\301', '\357', '\006', '\232', '\337', '\006', '\157', - '\120', '\007', '\173', '\001', '\000', '\155', '\360', '\006', - '\165', '\260', '\027', '\232', '\017', '\007', '\214', '\061', - '\006', '\151', '\240', '\244', '\160', '\300', '\030', '\143', - '\220', '\006', '\154', '\240', '\371', '\354', '\357', '\376', - '\340', '\177', '\332', '\363', '\017', '\376', '\232', '\017', - '\007', '\154', '\120', '\007', '\254', '\015', '\007', '\154', - '\120', '\007', '\163', '\240', '\371', '\161', '\120', '\007', - '\172', '\101', '\007', '\151', '\360', '\006', '\156', '\340', - '\370', '\210', '\017', '\000', '\161', '\120', '\007', '\172', - '\101', '\007', '\151', '\360', '\006', '\156', '\340', '\370', - '\210', '\257', '\371', '\316', '\177', '\374', '\372', '\317', - '\377', '\252', '\135', '\374', '\307', '\257', '\377', '\374', - '\257', '\371', '\316', '\177', '\374', '\325', '\237', '\006', - '\327', '\257', '\332', '\305', '\177', '\374', '\325', '\237', - '\006', '\327', '\257', '\371', '\316', '\177', '\374', '\337', - '\037', '\376', '\252', '\135', '\374', '\307', '\377', '\375', - '\341', '\257', '\371', '\316', '\177', '\374', '\142', '\120', - '\007', '\301', '\117', '\332', '\316', '\177', '\374', '\142', - '\120', '\007', '\301', '\357', '\006', '\232', '\057', '\007', - '\164', '\300', '\006', '\255', '\317', '\371', '\246', '\055', - '\007', '\164', '\300', '\006', '\255', '\317', '\371', '\157', - '\240', '\371', '\163', '\020', '\006', '\151', '\300', '\006', - '\227', '\137', '\371', '\000', '\060', '\007', '\141', '\220', - '\006', '\154', '\160', '\371', '\225', '\257', '\371', '\163', - '\040', '\006', '\200', '\177', '\007', '\156', '\340', '\370', - '\210', '\017', '\000', '\163', '\040', '\006', '\200', '\177', - '\007', '\156', '\340', '\370', '\210', '\257', '\371', '\163', - '\040', '\006', '\137', '\200', '\006', '\200', '\137', '\007', - '\142', '\340', '\372', '\216', '\217', '\370', '\000', '\060', - '\007', '\142', '\360', '\005', '\150', '\000', '\370', '\165', - '\040', '\006', '\256', '\357', '\370', '\210', '\257', '\371', - '\163', '\040', '\006', '\255', '\377', '\372', '\231', '\157', - '\367', '\000', '\060', '\007', '\142', '\320', '\372', '\257', - '\237', '\371', '\177', '\177', '\376', '\132', '\061', '\007', - '\142', '\060', '\374', '\305', '\177', '\374', '\216', '\217', - '\370', '\000', '\060', '\007', '\142', '\060', '\374', '\305', - '\177', '\374', '\216', '\217', '\370', '\232', '\077', '\007', - '\142', '\360', '\005', '\221', '\157', '\367', '\000', '\060', - '\007', '\142', '\360', '\005', '\221', '\377', '\367', '\347', - '\257', '\025', '\163', '\040', '\006', '\137', '\140', '\007', - '\200', '\137', '\007', '\142', '\340', '\372', '\216', '\217', - '\370', '\000', '\060', '\007', '\142', '\360', '\005', '\166', - '\000', '\370', '\165', '\040', '\006', '\256', '\357', '\370', - '\210', '\257', '\371', '\163', '\200', '\006', '\165', '\220', - '\372', '\256', '\017', '\000', '\163', '\200', '\006', '\165', - '\220', '\372', '\256', '\257', '\371', '\237', '\257', '\007', - '\151', '\340', '\006', '\231', '\375', '\371', '\172', '\220', - '\006', '\156', '\160', '\006', '\232', '\077', '\007', '\354', - '\177', '\375', '\253', '\315', '\376', '\327', '\237', '\377', - '\347', '\257', '\025', '\163', '\000', '\007', '\356', '\237', - '\007', '\143', '\020', '\006', '\244', '\075', '\007', '\160', - '\340', '\376', '\171', '\060', '\006', '\141', '\340', '\006', - '\232', '\077', '\007', '\164', '\160', '\030', '\000', '\060', - '\007', '\164', '\160', '\030', '\232', '\117', '\007', '\207', - '\161', '\006', '\145', '\340', '\332', '\164', '\160', '\030', - '\147', '\120', '\006', '\231', '\177', '\376', '\132', '\101', - '\007', '\143', '\220', '\366', '\163', '\300', '\332', '\164', - '\060', '\006', '\151', '\077', '\007', '\163', '\240', '\371', - '\252', '\017', '\007', '\255', '\377', '\372', '\231', '\157', - '\367', '\255', '\375', '\006', '\160', '\320', '\372', '\257', - '\237', '\371', '\177', '\177', '\376', '\132', '\241', '\372', - '\160', '\320', '\372', '\257', '\017', '\375', '\264', '\337', - '\332', '\157', '\000', '\007', '\255', '\377', '\372', '\320', - '\357', '\373', '\347', '\257', '\025', '\252', '\017', '\007', - '\303', '\137', '\374', '\307', '\277', '\373', '\311', '\217', - '\032', '\252', '\017', '\007', '\303', '\137', '\374', '\307', - '\277', '\373', '\311', '\237', '\377', '\347', '\257', '\025', - '\252', '\017', '\007', '\325', '\237', '\006', '\327', '\337', - '\332', '\157', '\000', '\007', '\325', '\237', '\006', '\327', - '\257', '\371', '\252', '\017', '\007', '\337', '\037', '\376', - '\255', '\375', '\006', '\160', '\360', '\375', '\341', '\257', - '\371', '\374', '\137', '\006', '\132', '\301', '\377', '\145', - '\260', '\006', '\232', '\137', '\007', '\154', '\120', '\367', - '\156', '\360', '\027', '\225', '\135', '\007', '\154', '\120', - '\367', '\156', '\360', '\027', '\346', '\377', '\366', '\257', - '\015', '\031', '\210', '\301', '\006', '\154', '\000', '\331', - '\217', '\041', '\006', '\210', '\301', '\006', '\154', '\020', - '\006', '\232', '\017', '\366', '\165', '\357', '\006', '\177', - '\121', '\331', '\140', '\137', '\367', '\156', '\360', '\027', - '\346', '\377', '\366', '\000', '\160', '\007', '\225', '\077', - '\006', '\233', '\175', '\007', '\225', '\077', '\006', '\150', - '\240', '\371', '\170', '\200', '\377', '\143', '\201', '\007', - '\370', '\317', '\372', '\347', '\257', '\025', '\357', '\141', - '\020', '\303', '\064', '\236', '\335', '\141', '\026', '\340', - '\041', '\036', '\115', '\131', '\036', '\045', '\115', '\322', - '\011', '\001', - -}; - -static const char file_5x7[] = { - '\037', '\235', '\214', '\001', '\314', '\214', '\201', '\203', - '\000', '\200', '\301', '\000', '\006', '\023', '\032', '\244', - '\043', '\300', '\040', '\242', '\204', '\015', '\025', '\032', - '\044', '\223', '\220', '\137', '\104', '\002', '\012', '\021', - '\002', '\100', '\203', '\021', '\000', '\230', '\001', '\006', - '\013', '\112', '\004', '\200', '\053', '\201', '\101', '\144', - '\007', '\014', '\202', '\030', '\011', '\000', '\102', '\104', - '\100', '\021', '\014', '\002', '\141', '\211', '\010', '\044', - '\000', '\110', '\023', '\014', '\002', '\142', '\111', '\316', - '\200', '\101', '\014', '\027', '\022', '\152', '\124', '\110', - '\321', '\040', '\277', '\016', '\043', '\203', '\216', '\014', - '\040', '\041', '\141', '\316', '\203', '\033', '\022', '\256', - '\074', '\310', '\042', '\241', '\014', '\241', '\076', '\022', - '\026', '\021', '\272', '\044', '\141', '\023', '\241', '\133', - '\022', '\212', '\021', '\032', '\047', '\241', '\034', '\205', - '\051', '\015', '\366', '\121', '\150', '\044', '\341', '\303', - '\204', '\135', '\015', '\126', '\122', '\030', '\027', '\200', - '\050', '\241', '\252', '\022', '\262', '\122', '\170', '\325', - '\240', '\056', '\241', '\313', '\022', '\116', '\023', '\112', - '\056', '\241', '\071', '\226', '\000', '\362', '\145', '\114', - '\130', '\100', '\143', '\200', '\007', '\032', '\147', '\070', - '\306', '\241', '\361', '\315', '\120', '\005', '\011', '\355', - '\014', '\075', '\223', '\060', '\320', '\120', '\237', '\006', - '\025', '\015', '\055', '\240', '\260', '\222', '\106', '\043', - '\117', '\234', '\120', '\161', '\022', '\244', '\111', '\221', - '\057', '\122', '\212', '\034', '\111', '\062', '\205', '\212', - '\224', '\054', '\006', '\121', '\127', '\161', '\102', '\344', - '\066', '\200', '\046', '\151', '\346', '\214', '\001', '\140', - '\244', '\165', '\022', '\046', '\131', '\276', '\260', '\166', - '\115', '\074', '\015', '\236', '\062', '\024', '\257', '\024', - '\111', '\162', '\004', '\011', '\025', '\345', '\255', '\267', - '\066', '\201', '\236', '\246', '\116', '\033', '\000', '\123', - '\230', '\004', '\121', '\015', '\100', '\012', '\370', '\042', - '\124', '\256', '\044', '\041', '\102', '\005', '\011', '\166', - '\346', '\116', '\336', '\310', '\151', '\023', '\206', '\015', - '\200', '\040', '\104', '\210', '\174', '\251', '\235', '\205', - '\311', '\353', '\345', '\133', '\001', '\000', '\105', '\022', - '\130', '\024', '\301', '\304', '\176', '\111', '\150', '\261', - '\025', '\024', '\117', '\044', '\241', '\032', '\202', '\012', - '\226', '\127', '\304', '\024', '\117', '\060', '\121', '\005', - '\025', '\111', '\244', '\366', '\005', '\026', '\022', '\122', - '\150', '\041', '\206', '\032', '\342', '\066', '\005', '\024', - '\101', '\014', '\341', '\340', '\021', '\000', '\014', '\161', - '\237', '\025', '\105', '\110', '\021', '\304', '\021', '\257', - '\251', '\307', '\036', '\022', '\051', '\042', '\021', '\204', - '\024', '\123', '\240', '\007', '\233', '\154', '\264', '\331', - '\206', '\033', '\155', '\117', '\340', '\200', '\103', '\015', - '\071', '\324', '\170', '\143', '\216', '\327', '\025', '\341', - '\304', '\020', '\117', '\020', '\161', '\042', '\000', '\061', - '\000', '\260', '\033', '\021', '\055', '\062', '\341', '\340', - '\153', '\014', '\116', '\221', '\004', '\210', '\116', '\000', - '\100', '\145', '\155', '\016', '\006', '\301', '\145', '\212', - '\117', '\100', '\221', '\205', '\024', '\324', '\131', '\227', - '\342', '\033', '\160', '\344', '\041', '\107', '\032', '\147', - '\240', '\101', '\007', '\010', '\061', '\344', '\220', '\103', - '\014', '\054', '\320', '\151', '\047', '\016', '\040', '\120', - '\201', '\106', '\031', '\040', '\074', '\001', '\107', '\031', - '\156', '\200', '\160', '\204', '\034', '\157', '\324', '\001', - '\007', '\161', '\251', '\121', '\001', '\100', '\013', '\300', - '\011', '\327', '\202', '\021', '\316', '\101', '\007', '\051', - '\167', '\336', '\265', '\040', '\105', '\013', '\361', '\315', - '\127', '\137', '\013', '\055', '\334', '\020', '\052', '\014', - '\241', '\326', '\120', '\152', '\013', '\103', '\264', '\120', - '\003', '\251', '\100', '\012', '\111', '\144', '\013', '\121', - '\112', '\227', '\246', '\243', '\261', '\171', '\170', '\141', - '\206', '\135', '\142', '\361', '\005', '\022', '\323', '\125', - '\347', '\150', '\024', '\125', '\340', '\367', '\205', '\214', - '\355', '\041', '\046', '\224', '\102', '\240', '\001', '\060', - '\324', '\120', '\006', '\221', '\106', '\232', '\117', '\314', - '\002', '\340', '\323', '\263', '\312', '\032', '\153', '\355', - '\265', '\330', '\146', '\133', '\055', '\000', '\340', '\000', - '\000', '\110', '\041', '\205', '\030', '\022', '\310', '\267', - '\341', '\216', '\013', '\256', '\270', '\344', '\242', '\173', - '\256', '\271', '\345', '\246', '\313', '\256', '\272', '\355', - '\256', '\353', '\356', '\274', '\362', '\326', '\033', '\357', - '\275', '\350', '\032', '\202', '\357', '\273', '\374', '\322', - '\333', '\256', '\276', '\360', '\006', '\334', '\257', '\275', - '\002', '\373', '\133', '\060', '\301', '\003', '\357', '\153', - '\160', '\302', '\007', '\053', '\214', '\360', '\302', '\020', - '\077', '\054', '\261', '\303', '\024', '\067', '\154', '\061', - '\303', '\030', '\107', '\134', '\161', '\306', '\023', '\137', - '\254', '\261', '\307', '\035', '\163', '\274', '\361', '\307', - '\042', '\203', '\074', '\162', '\310', '\044', '\247', '\374', - '\060', '\300', '\045', '\267', '\234', '\062', '\313', '\052', - '\237', '\054', '\263', '\311', '\064', '\273', '\214', '\362', - '\315', '\063', '\333', '\234', '\163', '\314', '\065', '\363', - '\254', '\163', '\317', '\070', '\003', '\275', '\163', '\320', - '\077', '\027', '\355', '\363', '\321', '\104', '\043', '\075', - '\164', '\271', '\043', '\165', '\073', '\122', '\132', '\000', - '\070', '\220', '\120', '\005', '\011', '\161', '\220', '\320', - '\010', '\011', '\251', '\220', '\120', '\224', '\006', '\341', - '\220', '\320', '\017', '\011', '\265', '\145', '\320', '\127', - '\006', '\071', '\152', '\120', '\130', '\006', '\215', '\145', - '\120', '\032', '\011', '\055', '\152', '\320', '\035', '\011', - '\371', '\221', '\120', '\041', '\011', '\061', '\222', '\320', - '\044', '\011', '\151', '\222', '\120', '\050', '\011', '\241', - '\222', '\320', '\053', '\011', '\331', '\222', '\120', '\057', - '\011', '\021', '\223', '\120', '\140', '\006', '\111', '\223', - '\120', '\066', '\011', '\071', '\015', '\300', '\071', '\011', - '\271', '\223', '\120', '\075', '\025', '\045', '\064', '\200', - '\106', '\012', '\150', '\024', '\201', '\106', '\030', '\150', - '\364', '\201', '\106', '\046', '\150', '\324', '\202', '\106', - '\064', '\150', '\264', '\203', '\106', '\102', '\150', '\224', - '\204', '\106', '\120', '\150', '\164', '\205', '\106', '\136', - '\150', '\124', '\206', '\106', '\154', '\150', '\064', '\207', - '\106', '\172', '\150', '\344', '\231', '\103', '\032', '\075', - '\242', '\221', '\045', '\032', '\165', '\242', '\021', '\051', - '\032', '\255', '\242', '\221', '\054', '\032', '\345', '\242', - '\021', '\060', '\032', '\035', '\243', '\221', '\063', '\032', - '\125', '\243', '\021', '\067', '\032', '\215', '\243', '\221', - '\072', '\032', '\305', '\243', '\021', '\076', '\032', '\375', - '\243', '\221', '\001', '\021', '\065', '\020', '\021', '\005', - '\021', '\155', '\020', '\221', '\010', '\021', '\245', '\020', - '\021', '\014', '\021', '\335', '\020', '\221', '\017', '\021', - '\025', '\021', '\021', '\023', '\021', '\115', '\021', '\221', - '\026', '\021', '\205', '\021', '\021', '\032', '\021', '\275', - '\021', '\221', '\035', '\021', '\351', '\103', '\104', '\010', - '\021', '\221', '\105', '\104', '\104', '\022', '\021', '\311', - '\104', '\104', '\100', '\021', '\221', '\123', '\104', '\304', - '\025', '\021', '\251', '\105', '\104', '\170', '\021', '\221', - '\141', '\104', '\104', '\031', '\021', '\211', '\106', '\104', - '\260', '\021', '\221', '\157', '\104', '\304', '\034', '\021', - '\151', '\107', '\104', '\350', '\021', '\221', '\175', '\104', - '\104', '\000', '\066', '\111', '\200', '\115', '\040', '\140', - '\223', '\013', '\330', '\304', '\003', '\066', '\051', '\201', - '\115', '\130', '\140', '\223', '\031', '\330', '\104', '\007', - '\066', '\011', '\202', '\115', '\220', '\140', '\223', '\047', - '\330', '\304', '\012', '\066', '\351', '\202', '\115', '\310', - '\140', '\223', '\065', '\330', '\104', '\016', '\066', '\311', - '\203', '\115', '\000', '\141', '\223', '\103', '\330', '\304', - '\021', '\066', '\251', '\204', '\115', '\070', '\141', '\223', - '\121', '\330', '\104', '\025', '\066', '\211', '\205', '\115', - '\160', '\141', '\223', '\137', '\330', '\304', '\030', '\066', - '\151', '\206', '\115', '\250', '\141', '\223', '\155', '\330', - '\104', '\034', '\066', '\111', '\207', '\115', '\340', '\141', - '\223', '\173', '\330', '\304', '\037', '\066', '\051', '\100', - '\107', '\030', '\320', '\221', '\011', '\164', '\104', '\003', - '\035', '\011', '\101', '\107', '\120', '\320', '\221', '\027', - '\164', '\304', '\006', '\035', '\351', '\101', '\107', '\210', - '\320', '\221', '\045', '\164', '\104', '\012', '\035', '\311', - '\102', '\107', '\300', '\320', '\221', '\063', '\164', '\304', - '\015', '\035', '\251', '\103', '\107', '\370', '\320', '\221', - '\101', '\164', '\104', '\021', '\035', '\211', '\104', '\107', - '\060', '\321', '\221', '\117', '\164', '\304', '\024', '\035', - '\151', '\105', '\107', '\150', '\321', '\221', '\135', '\164', - '\104', '\030', '\035', '\111', '\106', '\107', '\240', '\321', - '\221', '\153', '\164', '\304', '\033', '\035', '\051', '\107', - '\107', '\330', '\321', '\221', '\171', '\164', '\104', '\037', - '\035', '\011', '\000', '\151', '\000', '\200', '\200', '\135', - '\076', '\140', '\227', '\026', '\330', '\145', '\007', '\166', - '\111', '\202', '\135', '\256', '\140', '\227', '\062', '\330', - '\145', '\016', '\166', '\011', '\204', '\135', '\036', '\141', - '\227', '\116', '\330', '\145', '\025', '\166', '\311', '\205', - '\135', '\216', '\141', '\227', '\152', '\330', '\145', '\034', - '\166', '\211', '\207', '\135', '\376', '\141', '\227', '\206', - '\330', '\145', '\043', '\166', '\111', '\211', '\135', '\156', - '\142', '\227', '\242', '\330', '\145', '\052', '\166', '\011', - '\213', '\135', '\336', '\142', '\227', '\276', '\330', '\145', - '\061', '\166', '\311', '\214', '\135', '\116', '\143', '\227', - '\332', '\330', '\145', '\070', '\166', '\211', '\216', '\135', - '\276', '\143', '\227', '\366', '\330', '\145', '\077', '\166', - '\111', '\000', '\320', '\054', '\000', '\064', '\022', '\000', - '\115', '\006', '\100', '\003', '\002', '\320', '\000', '\201', - '\001', '\072', '\301', '\300', '\326', '\014', '\362', '\200', - '\212', '\132', '\324', '\040', '\004', '\160', '\300', '\007', - '\034', '\200', '\021', '\005', '\024', '\300', '\243', '\036', - '\005', '\100', '\001', '\016', '\120', '\200', '\002', '\160', - '\224', '\000', '\227', '\033', '\100', '\003', '\010', '\100', - '\307', '\224', '\032', '\100', '\001', '\057', '\015', '\100', - '\000', '\006', '\100', '\107', '\072', '\022', '\100', '\001', - '\035', '\301', '\050', '\107', '\243', '\146', '\220', '\004', - '\054', '\240', '\001', '\011', '\040', '\000', '\113', '\113', - '\132', '\000', '\001', '\234', '\124', '\250', '\004', '\200', - '\132', '\102', '\016', '\200', '\324', '\252', '\041', '\025', - '\251', '\126', '\303', '\250', '\120', '\077', '\320', '\324', - '\017', '\260', '\304', '\252', '\043', '\301', '\252', '\104', - '\264', '\252', '\020', '\253', '\102', '\365', '\251', '\102', - '\145', '\052', '\130', '\271', '\152', '\020', '\252', '\202', - '\365', '\251', '\010', '\040', '\200', '\000', '\010', '\200', - '\000', '\251', '\255', '\065', '\255', '\106', '\115', '\210', - '\003', '\024', '\100', '\327', '\220', '\160', '\324', '\001', - '\021', '\141', '\200', '\000', '\016', '\040', '\200', '\006', - '\050', '\044', '\247', '\054', '\171', '\052', '\000', '\072', - '\132', '\127', '\205', '\050', '\340', '\003', '\207', '\305', - '\114', '\324', '\114', '\112', '\001', '\251', '\005', '\040', - '\250', '\002', '\110', '\200', '\110', '\004', '\120', '\324', - '\217', '\112', '\113', '\000', '\314', '\122', '\253', '\000', - '\066', '\213', '\221', '\265', '\042', '\065', '\042', '\105', - '\345', '\053', '\101', '\011', '\140', '\126', '\211', '\200', - '\157', '\050', '\017', '\140', '\211', '\001', '\100', '\003', - '\127', '\215', '\120', '\226', '\250', '\015', '\101', '\341', - '\146', '\367', '\052', '\055', '\311', '\252', '\065', '\265', - '\017', '\100', '\200', '\001', '\020', '\220', '\000', '\237', - '\024', '\264', '\000', '\017', '\020', '\052', '\000', '\040', - '\163', '\000', '\336', '\372', '\304', '\000', '\001', '\070', - '\100', '\002', '\172', '\073', '\334', '\264', '\152', '\266', - '\266', '\006', '\130', '\356', '\161', '\227', '\353', '\000', - '\335', '\032', '\144', '\265', '\322', '\002', '\015', '\166', - '\117', '\073', '\130', '\314', '\256', '\065', '\041', '\270', - '\025', '\312', '\132', '\061', '\013', '\000', '\312', '\252', - '\265', '\274', '\265', '\155', '\100', '\003', '\002', '\060', - '\335', '\004', '\074', '\140', '\271', '\000', '\120', '\256', - '\162', '\023', '\220', '\222', '\350', '\312', '\224', '\271', - '\363', '\135', '\156', '\112', '\210', '\053', '\123', '\334', - '\046', '\127', '\246', '\010', '\261', '\057', '\120', '\245', - '\266', '\334', '\367', '\302', '\227', '\257', '\263', '\115', - '\011', '\002', '\026', '\154', '\134', '\000', '\044', '\240', - '\000', '\003', '\030', '\100', '\001', '\114', '\002', '\340', - '\376', '\072', '\270', '\242', '\313', '\065', '\211', '\117', - '\177', '\012', '\324', '\332', '\146', '\330', '\047', '\363', - '\075', '\200', '\114', '\075', '\354', '\323', '\335', '\206', - '\170', '\302', '\265', '\135', '\053', '\176', '\147', '\273', - '\131', '\007', '\147', '\230', '\271', '\057', '\306', '\156', - '\206', '\061', '\354', '\342', '\325', '\302', '\027', '\266', - '\055', '\316', '\255', '\132', '\037', '\023', '\337', '\012', - '\247', '\045', '\000', '\157', '\065', '\210', '\130', '\303', - '\132', '\336', '\135', '\042', '\046', '\265', '\003', '\370', - '\256', '\104', '\034', '\220', '\200', '\006', '\140', '\106', - '\246', '\041', '\116', '\010', '\162', '\331', '\313', '\313', - '\266', '\122', '\127', '\312', '\015', '\030', '\200', '\157', - '\025', '\260', '\327', '\026', '\033', '\204', '\311', '\310', - '\165', '\000', '\224', '\063', '\214', '\336', '\044', '\323', - '\026', '\043', '\110', '\055', '\252', '\114', '\041', '\214', - '\142', '\063', '\157', '\026', '\152', '\300', '\205', '\257', - '\220', '\311', '\174', '\135', '\351', '\056', '\125', '\277', - '\032', '\141', '\162', '\002', '\252', '\073', '\347', '\021', - '\177', '\231', '\246', '\051', '\171', '\363', '\146', '\041', - '\332', '\323', '\053', '\067', '\253', '\244', '\021', '\161', - '\161', '\105', '\023', '\322', '\333', '\350', '\062', '\072', - '\001', '\070', '\215', '\110', '\160', '\005', '\220', '\132', - '\265', '\232', '\271', '\263', '\054', '\156', '\010', '\220', - '\301', '\107', '\336', '\220', '\152', '\353', '\257', '\203', - '\155', '\352', '\140', '\035', '\120', '\322', '\235', '\352', - '\225', '\257', '\176', '\005', '\100', '\004', '\346', '\352', - '\200', '\230', '\040', '\032', '\301', '\122', '\015', '\065', - '\000', '\364', '\372', '\122', '\006', '\350', '\126', '\261', - '\012', '\151', '\165', '\005', '\046', '\120', '\201', '\125', - '\033', '\240', '\000', '\311', '\112', '\210', '\004', '\022', - '\320', '\024', '\360', '\212', '\104', '\041', '\251', '\375', - '\162', '\004', '\056', '\060', '\201', '\011', '\254', '\072', - '\331', '\177', '\305', '\351', '\137', '\111', '\073', '\125', - '\151', '\251', '\065', '\131', '\253', '\055', '\150', '\102', - '\316', '\073', '\222', '\014', '\213', '\330', '\001', '\013', - '\130', '\000', '\135', '\025', '\213', '\135', '\304', '\250', - '\265', '\240', '\031', '\205', '\110', '\121', '\273', '\075', - '\354', '\203', '\334', '\227', '\001', '\325', '\005', '\160', - '\003', '\322', '\312', '\200', '\010', '\013', '\140', '\001', - '\360', '\106', '\100', '\154', '\165', '\331', '\220', '\350', - '\272', '\027', '\276', '\376', '\066', '\260', '\207', '\005', - '\036', '\160', '\200', '\027', '\330', '\340', '\377', '\066', - '\011', '\251', '\033', '\100', '\122', '\277', '\332', '\367', - '\261', '\340', '\343', '\057', '\217', '\045', '\356', '\137', - '\021', '\117', '\374', '\277', '\074', '\106', '\360', '\233', - '\343', '\313', '\342', '\224', '\150', '\234', '\266', '\037', - '\367', '\270', '\002', '\304', '\255', '\200', '\224', '\000', - '\225', '\303', '\046', '\361', '\267', '\235', '\125', '\316', - '\134', '\226', '\267', '\167', '\345', '\061', '\146', '\264', - '\215', '\243', '\246', '\336', '\160', '\247', '\344', '\305', - '\060', '\216', '\071', '\316', '\175', '\262', '\163', '\221', - '\042', '\272', '\305', '\311', '\245', '\357', '\210', '\243', - '\253', '\334', '\005', '\064', '\146', '\255', '\114', '\166', - '\162', '\167', '\223', '\216', '\231', '\233', '\062', '\035', - '\000', '\036', '\175', '\072', '\146', '\236', '\276', '\332', - '\247', '\177', '\271', '\001', '\046', '\225', '\262', '\114', - '\071', '\135', '\320', '\054', '\373', '\126', '\000', '\006', - '\360', '\172', '\221', '\303', '\256', '\145', '\221', '\112', - '\113', '\354', '\100', '\066', '\163', '\240', '\147', '\272', - '\161', '\312', '\252', '\335', '\354', '\157', '\027', '\000', - '\003', '\374', '\355', '\023', '\217', '\346', '\267', '\274', - '\005', '\265', '\363', '\265', '\127', '\356', '\341', '\272', - '\003', '\333', '\316', '\317', '\262', '\263', '\264', '\206', - '\073', '\370', '\253', '\057', '\040', '\320', '\004', '\310', - '\260', '\324', '\324', '\252', '\370', '\301', '\067', '\036', - '\063', '\215', '\147', '\074', '\244', '\317', '\033', '\164', - '\241', '\103', '\176', '\362', '\211', '\116', '\310', '\077', - '\214', '\205', '\220', '\206', '\200', '\004', '\043', '\324', - '\122', '\260', '\203', '\241', '\016', '\200', '\005', '\314', - '\032', '\000', '\176', '\225', '\132', '\152', '\041', '\240', - '\152', '\000', '\064', '\045', '\047', '\024', '\000', '\000', - '\325', '\054', '\000', '\200', '\240', '\110', '\064', '\003', - '\000', '\320', '\000', '\000', '\242', '\142', '\065', '\244', - '\170', '\000', '\000', '\126', '\135', '\111', '\010', '\000', - '\040', '\002', '\000', '\140', '\215', '\004', '\000', '\050', - '\001', '\000', '\114', '\000', '\200', '\023', '\000', '\000', - '\005', '\000', '\110', '\001', '\000', '\264', '\266', '\002', - '\000', '\124', '\245', '\005', '\000', '\160', '\001', '\000', - '\136', '\000', '\000', '\030', '\100', '\011', '\000', '\127', - '\231', '\001', '\000', '\150', '\000', '\200', '\032', '\000', - '\300', '\006', '\000', '\270', '\001', '\000', '\274', '\126', - '\044', '\035', '\000', '\140', '\007', '\000', '\340', '\001', - '\000', '\172', '\000', '\200', '\254', '\200', '\155', '\046', - '\101', '\000', '\200', '\020', '\122', '\344', '\045', '\000', - '\154', '\245', '\055', '\050', '\102', '\043', '\111', '\000', - '\000', '\112', '\000', '\000', '\135', '\301', '\004', '\277', - '\001', '\000', '\135', '\362', '\004', '\002', '\002', '\000', - '\121', '\120', '\036', '\340', '\001', '\000', '\216', '\122', - '\005', '\000', '\140', '\005', '\000', '\160', '\005', '\000', - '\300', '\041', '\270', '\241', '\005', '\000', '\020', '\026', - '\134', '\000', '\000', '\135', '\000', '\000', '\136', '\000', - '\000', '\137', '\340', '\021', '\000', '\020', '\006', '\000', - '\060', '\026', '\303', '\101', '\021', '\145', '\000', '\000', - '\146', '\000', '\000', '\234', '\201', '\006', '\000', '\300', - '\066', '\152', '\000', '\000', '\153', '\000', '\000', '\366', - '\361', '\035', '\156', '\000', '\000', '\157', '\000', '\000', - '\213', '\122', '\026', '\147', '\061', '\007', '\000', '\100', - '\007', '\000', '\120', '\007', '\000', '\140', '\007', '\000', - '\000', '\067', '\170', '\000', '\000', '\171', '\000', '\000', - '\172', '\000', '\000', '\173', '\000', '\000', '\174', '\000', - '\000', '\153', '\041', '\067', '\177', '\000', '\000', '\377', - '\220', '\205', '\132', '\270', '\205', '\134', '\330', '\205', - '\136', '\370', '\205', '\140', '\030', '\206', '\140', '\270', - '\023', '\201', '\000', '\000', '\202', '\000', '\000', '\203', - '\000', '\000', '\204', '\000', '\000', '\164', '\143', '\010', - '\000', '\160', '\010', '\000', '\360', '\020', '\211', '\000', - '\000', '\212', '\000', '\000', '\213', '\000', '\000', '\166', - '\323', '\010', '\000', '\340', '\010', '\000', '\360', '\010', - '\067', '\001', '\000', '\221', '\000', '\000', '\222', '\000', - '\000', '\170', '\103', '\011', '\000', '\060', '\027', '\226', - '\000', '\000', '\227', '\000', '\000', '\230', '\000', '\000', - '\231', '\000', '\000', '\172', '\263', '\011', '\000', '\300', - '\011', '\000', '\320', '\011', '\000', '\340', '\011', '\000', - '\360', '\011', '\000', '\000', '\012', '\000', '\300', '\067', - '\167', '\061', '\012', '\000', '\100', '\012', '\000', '\120', - '\012', '\000', '\140', '\012', '\000', '\160', '\012', '\000', - '\340', '\067', '\251', '\000', '\000', '\171', '\261', '\012', - '\000', '\260', '\027', '\255', '\000', '\000', '\256', '\000', - '\000', '\200', '\003', '\013', '\000', '\020', '\013', '\000', - '\040', '\013', '\000', '\060', '\013', '\000', '\100', '\013', - '\000', '\120', '\013', '\000', '\040', '\070', '\267', '\100', - '\022', '\000', '\220', '\013', '\000', '\360', '\027', '\273', - '\000', '\000', '\274', '\000', '\000', '\204', '\343', '\013', - '\000', '\360', '\013', '\000', '\000', '\014', '\000', '\020', - '\014', '\000', '\040', '\014', '\000', '\060', '\014', '\000', - '\140', '\070', '\305', '\000', '\000', '\306', '\000', '\000', - '\307', '\000', '\000', '\310', '\000', '\000', '\311', '\000', - '\000', '\312', '\000', '\000', '\201', '\301', '\014', '\000', - '\320', '\014', '\000', '\340', '\014', '\000', '\360', '\014', - '\000', '\000', '\015', '\000', '\020', '\015', '\000', '\240', - '\070', '\203', '\101', '\015', '\000', '\120', '\015', '\000', - '\140', '\015', '\000', '\160', '\015', '\000', '\200', '\015', - '\000', '\300', '\070', '\332', '\000', '\000', '\333', '\000', - '\000', '\334', '\000', '\000', '\335', '\000', '\000', '\336', - '\000', '\000', '\337', '\300', '\022', '\216', '\003', '\101', - '\006', '\341', '\220', '\262', '\370', '\100', '\022', '\371', - '\220', '\023', '\031', '\221', '\024', '\171', '\221', '\026', - '\231', '\221', '\020', '\271', '\221', '\025', '\311', '\221', - '\030', '\351', '\221', '\032', '\331', '\221', '\042', '\371', - '\221', '\043', '\031', '\222', '\044', '\171', '\222', '\046', - '\231', '\222', '\040', '\271', '\222', '\045', '\311', '\222', - '\050', '\351', '\222', '\052', '\331', '\222', '\062', '\371', - '\222', '\063', '\031', '\223', '\064', '\171', '\223', '\066', - '\231', '\223', '\060', '\271', '\223', '\065', '\311', '\223', - '\070', '\351', '\223', '\072', '\331', '\223', '\102', '\371', - '\223', '\103', '\031', '\224', '\104', '\171', '\224', '\106', - '\231', '\224', '\100', '\271', '\224', '\105', '\311', '\224', - '\110', '\351', '\224', '\112', '\331', '\224', '\122', '\371', - '\224', '\123', '\031', '\225', '\124', '\171', '\225', '\126', - '\231', '\225', '\012', '\341', '\070', '\012', '\141', '\144', - '\270', '\006', '\155', '\261', '\147', '\020', '\270', '\147', - '\020', '\277', '\147', '\020', '\130', '\143', '\020', '\320', - '\147', '\020', '\330', '\147', '\020', '\175', '\221', '\176', - '\011', '\041', '\177', '\006', '\221', '\177', '\271', '\001', - '\027', '\011', '\001', '\005', '\011', '\101', '\201', '\006', - '\301', '\201', '\006', '\121', '\202', '\023', '\221', '\020', - '\154', '\143', '\020', '\073', '\150', '\020', '\102', '\150', - '\020', '\113', '\250', '\026', '\011', '\161', '\206', '\006', - '\001', '\207', '\006', '\141', '\067', '\006', '\021', '\210', - '\006', '\221', '\210', '\006', '\041', '\211', '\006', '\301', - '\211', '\006', '\101', '\212', '\006', '\201', '\212', '\006', - '\261', '\212', '\006', '\341', '\212', '\006', '\021', '\213', - '\006', '\001', '\070', '\006', '\201', '\213', '\006', '\301', - '\213', '\006', '\001', '\214', '\006', '\061', '\214', '\006', - '\141', '\214', '\006', '\221', '\214', '\006', '\101', '\070', - '\006', '\001', '\215', '\006', '\101', '\215', '\006', '\201', - '\215', '\006', '\261', '\215', '\006', '\361', '\215', '\006', - '\061', '\216', '\006', '\201', '\070', '\351', '\230', '\020', - '\356', '\150', '\020', '\362', '\150', '\020', '\203', '\141', - '\020', '\370', '\150', '\020', '\374', '\150', '\020', '\214', - '\143', '\020', '\003', '\151', '\020', '\007', '\151', '\020', - '\013', '\151', '\020', '\341', '\220', '\020', '\343', '\220', - '\020', '\345', '\220', '\020', '\220', '\143', '\020', '\351', - '\220', '\020', '\353', '\220', '\020', '\355', '\220', '\020', - '\357', '\220', '\020', '\361', '\220', '\020', '\363', '\060', - '\071', '\011', '\161', '\017', '\011', '\241', '\030', '\006', - '\261', '\017', '\011', '\321', '\017', '\232', '\047', '\024', - '\032', '\161', '\071', '\315', '\242', '\021', '\042', '\326', - '\123', '\032', '\261', '\000', '\032', '\261', '\136', '\024', - '\245', '\071', '\032', '\061', '\001', '\032', '\121', '\001', - '\032', '\161', '\001', '\032', '\221', '\001', '\032', '\261', - '\001', '\032', '\321', '\001', '\236', '\243', '\021', '\041', - '\240', '\021', '\043', '\240', '\021', '\045', '\240', '\021', - '\047', '\240', '\021', '\051', '\240', '\021', '\053', '\040', - '\072', '\032', '\361', '\002', '\032', '\021', '\003', '\221', - '\241', '\021', '\065', '\240', '\021', '\067', '\240', '\021', - '\071', '\140', '\072', '\032', '\321', '\003', '\032', '\361', - '\003', '\032', '\021', '\004', '\032', '\061', '\004', '\032', - '\121', '\004', '\032', '\161', '\004', '\252', '\243', '\021', - '\113', '\240', '\021', '\115', '\240', '\021', '\117', '\240', - '\021', '\121', '\240', '\021', '\123', '\240', '\021', '\125', - '\340', '\072', '\032', '\221', '\005', '\032', '\261', '\005', - '\032', '\321', '\005', '\032', '\361', '\005', '\032', '\021', - '\006', '\032', '\161', '\006', '\264', '\243', '\021', '\161', - '\240', '\021', '\232', '\141', '\020', '\173', '\240', '\021', - '\200', '\240', '\021', '\205', '\240', '\021', '\242', '\141', - '\020', '\276', '\143', '\020', '\224', '\240', '\021', '\231', - '\240', '\021', '\236', '\240', '\021', '\243', '\240', '\021', - '\250', '\240', '\021', '\255', '\160', '\074', '\032', '\161', - '\013', '\032', '\301', '\013', '\032', '\021', '\014', '\032', - '\141', '\014', '\032', '\261', '\014', '\032', '\001', '\015', - '\321', '\243', '\021', '\332', '\240', '\021', '\337', '\240', - '\021', '\344', '\240', '\021', '\351', '\240', '\021', '\356', - '\240', '\021', '\363', '\260', '\075', '\032', '\321', '\017', - '\256', '\025', '\021', '\174', '\365', '\145', '\021', '\061', - '\001', '\021', '\201', '\001', '\021', '\321', '\001', '\347', - '\023', '\021', '\047', '\020', '\021', '\054', '\020', '\021', - '\061', '\020', '\021', '\070', '\020', '\021', '\075', '\020', - '\021', '\102', '\020', '\021', '\107', '\060', '\077', '\021', - '\021', '\005', '\021', '\141', '\005', '\021', '\261', '\005', - '\021', '\001', '\006', '\021', '\121', '\006', '\021', '\301', - '\006', '\021', '\021', '\007', '\377', '\023', '\021', '\173', - '\360', '\022', '\021', '\121', '\010', '\021', '\241', '\010', - '\021', '\021', '\011', '\021', '\141', '\011', '\021', '\261', - '\011', '\013', '\024', '\021', '\245', '\020', '\021', '\252', - '\020', '\021', '\257', '\020', '\021', '\267', '\060', '\101', - '\021', '\021', '\014', '\021', '\141', '\014', '\021', '\261', - '\014', '\021', '\001', '\015', '\021', '\121', '\015', '\021', - '\241', '\015', '\021', '\041', '\016', '\021', '\161', '\016', - '\021', '\301', '\016', '\021', '\021', '\017', '\021', '\141', - '\017', '\045', '\224', '\150', '\161', '\144', '\023', '\012', - '\140', '\023', '\017', '\140', '\023', '\024', '\140', '\023', - '\031', '\360', '\102', '\066', '\061', '\002', '\066', '\201', - '\002', '\066', '\321', '\002', '\066', '\041', '\003', '\066', - '\161', '\003', '\066', '\301', '\003', '\071', '\144', '\023', - '\106', '\140', '\023', '\113', '\140', '\023', '\120', '\140', - '\023', '\125', '\140', '\023', '\103', '\000', '\003', '\370', - '\232', '\042', '\370', '\032', '\045', '\367', '\012', '\003', - '\127', '\321', '\257', '\342', '\327', '\257', '\344', '\327', - '\257', '\346', '\327', '\257', '\350', '\327', '\257', '\352', - '\167', '\257', '\061', '\340', '\175', '\012', '\313', '\257', - '\060', '\020', '\003', '\377', '\372', '\260', '\001', '\373', - '\260', '\003', '\373', '\260', '\005', '\373', '\260', '\007', - '\373', '\260', '\011', '\353', '\257', '\014', '\353', '\257', - '\016', '\053', '\003', '\021', '\053', '\003', '\023', '\053', - '\003', '\025', '\053', '\003', '\027', '\053', '\003', '\031', - '\053', '\003', '\033', '\073', '\003', '\035', '\073', '\003', - '\016', '\073', '\003', '\021', '\073', '\003', '\023', '\073', - '\003', '\025', '\073', '\003', '\027', '\073', '\003', '\031', - '\073', '\003', '\033', '\113', '\003', '\336', '\067', '\174', - '\305', '\167', '\174', '\311', '\267', '\174', '\315', '\367', - '\174', '\321', '\067', '\175', '\000', '\120', '\175', '\327', - '\227', '\175', '\333', '\327', '\175', '\337', '\027', '\176', - '\343', '\127', '\176', '\347', '\347', '\226', '\354', '\007', - '\000', '\356', '\007', '\177', '\362', '\107', '\177', '\366', - '\007', '\000', '\370', '\247', '\177', '\374', '\107', '\004', - '\376', '\107', '\034', '\000', '\020', '\200', '\000', '\060', - '\200', '\005', '\170', '\200', '\011', '\270', '\200', '\015', - '\370', '\200', '\346', '\061', '\005', '\022', '\050', '\045', - '\025', '\170', '\201', '\031', '\010', '\000', '\033', '\330', - '\201', '\000', '\360', '\201', '\041', '\070', '\202', '\045', - '\010', '\006', '\047', '\230', '\202', '\000', '\260', '\202', - '\000', '\320', '\202', '\057', '\030', '\203', '\063', '\010', - '\000', '\065', '\170', '\203', '\071', '\010', '\000', '\073', - '\330', '\203', '\077', '\010', '\000', '\101', '\070', '\204', - '\105', '\170', '\204', '\111', '\010', '\000', '\113', '\330', - '\204', '\117', '\030', '\205', '\123', '\130', '\205', '\372', - '\307', '\006', '\141', '\340', '\006', '\067', '\070', '\004', - '\061', '\140', '\003', '\014', '\373', '\271', '\374', '\372', - '\271', '\377', '\372', '\271', '\001', '\373', '\271', '\003', - '\373', '\271', '\005', '\373', '\271', '\007', '\373', '\271', - '\011', '\373', '\271', '\136', '\343', '\271', '\066', '\120', - '\044', '\236', '\173', '\003', '\241', '\173', '\003', '\243', - '\173', '\003', '\245', '\173', '\003', '\247', '\173', '\003', - '\251', '\173', '\003', '\253', '\173', '\003', '\255', '\173', - '\003', '\257', '\173', '\003', '\261', '\033', '\003', '\067', - '\100', '\273', '\061', '\200', '\003', '\241', '\213', '\003', - '\243', '\213', '\003', '\245', '\213', '\003', '\247', '\213', - '\003', '\251', '\073', '\044', '\051', '\262', '\274', '\255', - '\213', '\003', '\257', '\053', '\044', '\327', '\213', '\003', - '\312', '\233', '\003', '\241', '\173', '\047', '\367', '\161', - '\006', '\162', '\020', '\006', '\166', '\320', '\202', '\236', - '\233', '\003', '\247', '\233', '\003', '\251', '\233', '\003', - '\253', '\233', '\003', '\255', '\233', '\003', '\257', '\233', - '\003', '\307', '\153', '\047', '\376', '\107', '\276', '\346', - '\213', '\276', '\062', '\360', '\260', '\051', '\262', '\277', - '\377', '\272', '\277', '\001', '\273', '\277', '\003', '\273', - '\277', '\005', '\273', '\277', '\007', '\273', '\277', '\011', - '\273', '\277', '\261', '\273', '\277', '\105', '\362', '\004', - '\370', '\173', '\276', '\375', '\033', '\003', '\374', '\052', - '\003', '\020', '\033', '\301', '\001', '\034', '\003', '\003', - '\034', '\003', '\005', '\374', '\271', '\122', '\362', '\300', - '\372', '\273', '\274', '\021', '\114', '\273', '\040', '\313', - '\260', '\040', '\073', '\301', '\040', '\333', '\277', '\042', - '\173', '\202', '\055', '\340', '\301', '\050', '\134', '\300', - '\050', '\213', '\302', '\011', '\054', '\003', '\013', '\054', - '\003', '\042', '\314', '\262', '\375', '\353', '\262', '\177', - '\273', '\302', '\345', '\013', '\301', '\103', '\040', '\262', - '\001', '\114', '\263', '\067', '\134', '\300', '\070', '\173', - '\303', '\011', '\074', '\003', '\013', '\074', '\003', '\042', - '\314', '\263', '\375', '\113', '\003', '\023', '\114', '\003', - '\377', '\113', '\003', '\001', '\114', '\003', '\003', '\114', - '\003', '\005', '\114', '\003', '\007', '\114', '\003', '\011', - '\114', '\003', '\013', '\114', '\003', '\042', '\274', '\052', - '\375', '\133', '\003', '\023', '\134', '\003', '\377', '\133', - '\003', '\001', '\134', '\003', '\003', '\134', '\003', '\346', - '\147', '\055', '\314', '\222', '\054', '\313', '\042', '\021', - '\316', '\062', '\170', '\321', '\062', '\055', '\160', '\234', - '\020', - -}; - -static const char file_5x8[] = { - '\037', '\235', '\214', '\001', '\314', '\214', '\201', '\223', - '\000', '\200', '\301', '\000', '\006', '\023', '\032', '\144', - '\042', '\300', '\040', '\246', '\204', '\015', '\023', '\042', - '\004', '\100', '\046', '\041', '\271', '\210', '\004', '\024', - '\116', '\104', '\024', '\021', '\311', '\000', '\203', '\010', - '\024', '\046', '\304', '\140', '\300', '\040', '\264', '\002', - '\006', '\041', '\150', '\064', '\310', '\321', '\040', '\272', - '\005', '\006', '\101', '\210', '\114', '\071', '\021', '\216', - '\003', '\203', '\100', '\146', '\002', '\100', '\020', '\021', - '\320', '\003', '\203', '\200', '\164', '\322', '\371', '\010', - '\000', '\121', '\004', '\211', '\110', '\051', '\046', '\344', - '\107', '\141', '\146', '\005', '\235', '\001', '\044', '\044', - '\234', '\040', '\161', '\103', '\102', '\231', '\007', '\131', - '\044', '\224', '\041', '\321', '\107', '\302', '\042', '\022', - '\227', '\044', '\154', '\042', '\161', '\113', '\102', '\061', - '\022', '\343', '\044', '\224', '\243', '\060', '\244', '\301', - '\076', '\012', '\241', '\044', '\104', '\244', '\120', '\254', - '\301', '\112', '\165', '\023', '\212', '\222', '\250', '\052', - '\041', '\053', '\205', '\134', '\015', '\352', '\222', '\270', - '\054', '\341', '\065', '\211', '\350', '\022', '\262', '\223', - '\150', '\157', '\344', '\304', '\000', '\035', '\046', '\152', - '\231', '\010', '\100', '\101', '\302', '\060', '\224', '\317', - '\044', '\144', '\103', '\371', '\100', '\302', '\072', '\224', - '\121', '\212', '\004', '\064', '\321', '\310', '\023', '\047', - '\124', '\234', '\004', '\151', '\122', '\344', '\213', '\224', - '\042', '\107', '\222', '\114', '\241', '\042', '\045', '\213', - '\101', '\323', '\125', '\234', '\020', '\251', '\015', '\240', - '\111', '\232', '\071', '\143', '\000', '\030', '\131', '\235', - '\204', '\111', '\226', '\057', '\252', '\131', '\013', '\117', - '\203', '\247', '\114', '\305', '\053', '\105', '\222', '\034', - '\101', '\102', '\005', '\371', '\152', '\260', '\115', '\234', - '\247', '\251', '\323', '\006', '\300', '\024', '\046', '\101', - '\120', '\003', '\220', '\342', '\275', '\010', '\225', '\053', - '\111', '\210', '\120', '\101', '\142', '\135', '\271', '\223', - '\067', '\162', '\332', '\204', '\141', '\003', '\040', '\010', - '\021', '\042', '\137', '\146', '\147', '\141', '\322', '\072', - '\071', '\130', '\000', '\120', '\044', '\201', '\105', '\021', - '\114', '\344', '\227', '\204', '\026', '\140', '\101', '\361', - '\104', '\022', '\250', '\031', '\210', '\340', '\170', '\105', - '\114', '\361', '\004', '\023', '\125', '\120', '\221', '\304', - '\151', '\137', '\140', '\001', '\241', '\204', '\024', '\132', - '\210', '\241', '\155', '\123', '\100', '\021', '\304', '\020', - '\014', '\036', '\001', '\300', '\020', '\365', '\131', '\121', - '\204', '\024', '\101', '\034', '\321', '\032', '\172', '\352', - '\041', '\161', '\042', '\022', '\101', '\110', '\061', '\205', - '\171', '\256', '\301', '\046', '\033', '\155', '\266', '\311', - '\366', '\204', '\015', '\064', '\330', '\340', '\102', '\014', - '\071', '\344', '\020', '\303', '\214', '\065', '\336', '\130', - '\135', '\021', '\116', '\014', '\361', '\004', '\021', '\045', - '\002', '\220', '\204', '\024', '\126', '\234', '\370', '\004', - '\024', '\131', '\110', '\041', '\035', '\165', '\047', '\276', - '\001', '\107', '\036', '\162', '\244', '\161', '\006', '\032', - '\164', '\200', '\100', '\044', '\016', '\071', '\200', '\040', - '\106', '\036', '\040', '\014', '\361', '\306', '\031', '\156', - '\244', '\101', '\107', '\032', '\157', '\270', '\321', '\046', - '\174', '\160', '\270', '\040', '\334', '\151', '\124', '\000', - '\320', '\202', '\157', '\300', '\265', '\140', '\004', '\163', - '\316', '\375', '\251', '\035', '\167', '\055', '\110', '\321', - '\302', '\173', '\361', '\315', '\327', '\102', '\013', '\070', - '\100', '\012', '\103', '\013', '\067', '\324', '\100', '\251', - '\245', '\103', '\264', '\120', '\303', '\244', '\076', '\002', - '\051', '\044', '\221', '\106', '\266', '\060', '\145', '\225', - '\320', '\155', '\331', '\347', '\153', '\034', '\126', '\170', - '\241', '\023', '\000', '\140', '\361', '\005', '\022', '\321', - '\115', '\327', '\147', '\024', '\125', '\330', '\367', '\005', - '\214', '\353', '\035', '\164', '\120', '\000', '\274', '\362', - '\152', '\220', '\147', '\272', '\352', '\004', '\000', '\112', - '\050', '\171', '\106', '\231', '\101', '\304', '\002', '\140', - '\254', '\116', '\242', '\001', '\260', '\317', '\077', '\006', - '\065', '\224', '\354', '\262', '\302', '\126', '\153', '\355', - '\112', '\000', '\004', '\005', '\110', '\041', '\205', '\034', - '\022', '\310', '\266', '\335', '\176', '\313', '\255', '\267', - '\340', '\222', '\073', '\256', '\270', '\341', '\226', '\213', - '\256', '\271', '\351', '\236', '\253', '\356', '\273', '\356', - '\306', '\333', '\356', '\274', '\354', '\326', '\273', '\356', - '\275', '\360', '\322', '\213', '\257', '\274', '\366', '\346', - '\333', '\057', '\277', '\373', '\352', '\353', '\157', '\300', - '\377', '\012', '\014', '\360', '\300', '\010', '\037', '\254', - '\260', '\301', '\014', '\027', '\354', '\060', '\301', '\020', - '\047', '\334', '\160', '\304', '\013', '\077', '\054', '\261', - '\305', '\025', '\123', '\074', '\361', '\305', '\032', '\143', - '\274', '\161', '\306', '\034', '\207', '\014', '\362', '\310', - '\037', '\227', '\354', '\261', '\275', '\063', '\005', '\065', - '\223', '\133', '\000', '\250', '\144', '\020', '\006', '\127', - '\045', '\204', '\102', '\102', '\060', '\044', '\204', '\103', - '\102', '\071', '\031', '\044', '\243', '\101', '\162', '\031', - '\244', '\241', '\101', '\140', '\044', '\204', '\106', '\102', - '\160', '\044', '\204', '\107', '\102', '\052', '\027', '\225', - '\020', '\044', '\011', '\075', '\144', '\020', '\050', '\011', - '\241', '\222', '\020', '\054', '\011', '\341', '\222', '\020', - '\060', '\011', '\041', '\223', '\020', '\064', '\011', '\141', - '\223', '\020', '\070', '\011', '\045', '\146', '\020', '\074', - '\011', '\341', '\203', '\055', '\002', '\023', '\101', '\060', - '\021', '\006', '\023', '\201', '\060', '\021', '\012', '\023', - '\301', '\060', '\021', '\016', '\023', '\001', '\061', '\021', - '\022', '\023', '\101', '\061', '\021', '\026', '\023', '\201', - '\061', '\021', '\032', '\065', '\115', '\204', '\307', '\104', - '\244', '\261', '\064', '\021', '\044', '\023', '\141', '\062', - '\021', '\050', '\023', '\241', '\062', '\021', '\054', '\023', - '\341', '\062', '\021', '\060', '\023', '\041', '\063', '\021', - '\064', '\023', '\141', '\063', '\021', '\070', '\023', '\241', - '\063', '\021', '\074', '\023', '\341', '\103', '\131', '\104', - '\074', '\245', '\024', '\021', '\006', '\021', '\201', '\020', - '\021', '\012', '\021', '\301', '\020', '\021', '\016', '\021', - '\001', '\321', '\121', '\104', '\120', '\104', '\204', '\105', - '\104', '\140', '\104', '\204', '\106', '\104', '\160', '\104', - '\204', '\107', '\117', '\021', '\265', '\004', '\000', '\044', - '\021', '\141', '\022', '\021', '\050', '\021', '\241', '\022', - '\021', '\054', '\021', '\341', '\022', '\021', '\060', '\021', - '\041', '\023', '\021', '\064', '\021', '\141', '\023', '\021', - '\070', '\021', '\241', '\023', '\021', '\074', '\021', '\341', - '\023', '\021', '\000', '\104', '\041', '\100', '\024', '\004', - '\104', '\141', '\100', '\024', '\010', '\104', '\241', '\100', - '\024', '\014', '\104', '\341', '\100', '\024', '\020', '\104', - '\171', '\304', '\063', '\121', '\130', '\020', '\005', '\006', - '\121', '\150', '\020', '\005', '\007', '\121', '\170', '\020', - '\005', '\010', '\121', '\210', '\040', '\012', '\044', '\210', - '\202', '\011', '\242', '\200', '\202', '\050', '\250', '\040', - '\012', '\054', '\210', '\202', '\013', '\242', '\000', '\203', - '\050', '\310', '\040', '\012', '\064', '\210', '\202', '\015', - '\242', '\200', '\203', '\050', '\350', '\040', '\012', '\074', - '\210', '\202', '\017', '\242', '\000', '\040', '\043', '\040', - '\111', '\210', '\313', '\000', '\200', '\225', '\152', '\021', - '\300', '\001', '\037', '\160', '\000', '\010', '\001', '\100', - '\001', '\005', '\264', '\360', '\205', '\012', '\120', '\200', - '\003', '\142', '\310', '\001', '\004', '\040', '\340', '\000', - '\001', '\030', '\100', '\007', '\012', '\300', '\000', '\002', - '\020', '\300', '\000', '\001', '\050', '\011', '\003', '\050', - '\060', '\304', '\136', '\035', '\200', '\003', '\004', '\350', - '\341', '\007', '\025', '\260', '\102', '\203', '\234', '\060', - '\043', '\067', '\001', '\100', '\002', '\026', '\320', '\200', - '\004', '\370', '\220', '\000', '\034', '\050', '\200', '\026', - '\005', '\120', '\103', '\033', '\136', '\021', '\130', '\042', - '\071', '\300', '\025', '\127', '\210', '\304', '\061', '\372', - '\220', '\003', '\012', '\271', '\342', '\007', '\306', '\010', - '\200', '\017', '\010', '\313', '\215', '\072', '\201', '\343', - '\114', '\344', '\050', '\022', '\070', '\136', '\261', '\214', - '\146', '\024', '\243', '\031', '\011', '\100', '\307', '\204', - '\254', '\161', '\217', '\146', '\334', '\011', '\001', '\004', - '\100', '\000', '\004', '\104', '\221', '\220', '\010', '\030', - '\144', '\024', '\077', '\020', '\303', '\030', '\046', '\004', - '\001', '\153', '\374', '\300', '\367', '\030', '\040', '\201', - '\003', '\010', '\100', '\002', '\015', '\110', '\343', '\265', - '\234', '\170', '\305', '\017', '\032', '\244', '\221', '\012', - '\211', '\041', '\043', '\031', '\151', '\231', '\023', '\026', - '\300', '\001', '\024', '\120', '\141', '\264', '\230', '\250', - '\000', '\267', '\020', '\040', '\206', '\257', '\164', '\241', - '\101', '\172', '\370', '\075', '\220', '\134', '\221', '\145', - '\204', '\364', '\341', '\367', '\044', '\300', '\000', '\017', - '\120', '\062', '\041', '\076', '\374', '\343', '\114', '\150', - '\051', '\022', '\017', '\350', '\344', '\211', '\051', '\201', - '\100', '\042', '\005', '\200', '\221', '\106', '\062', '\321', - '\211', '\006', '\270', '\142', '\024', '\051', '\011', '\001', - '\006', '\010', '\300', '\230', '\000', '\240', '\044', '\002', - '\040', '\300', '\113', '\220', '\060', '\100', '\001', '\036', - '\260', '\241', '\101', '\074', '\040', '\000', '\007', '\160', - '\223', '\001', '\263', '\024', '\200', '\002', '\054', '\320', - '\115', '\000', '\170', '\100', '\231', '\211', '\004', '\041', - '\045', '\051', '\331', '\116', '\112', '\152', '\200', '\002', - '\325', '\234', '\045', '\072', '\031', '\200', '\116', '\175', - '\146', '\163', '\220', '\266', '\144', '\146', '\041', '\023', - '\162', '\223', '\050', '\106', '\253', '\220', '\313', '\164', - '\142', '\053', '\063', '\222', '\021', '\112', '\146', '\240', - '\002', '\025', '\110', '\200', '\000', '\366', '\051', '\001', - '\011', '\170', '\240', '\242', '\006', '\161', '\200', '\004', - '\064', '\272', '\321', '\131', '\112', '\200', '\231', '\355', - '\344', '\150', '\105', '\243', '\110', '\116', '\007', '\060', - '\023', '\233', '\045', '\145', '\146', '\104', '\050', '\051', - '\000', '\015', '\264', '\263', '\242', '\027', '\305', '\050', - '\000', '\124', '\050', '\115', '\203', '\160', '\000', '\002', - '\070', '\175', '\251', '\002', '\014', '\020', '\103', '\251', - '\000', '\100', '\245', '\314', '\214', '\242', '\105', '\143', - '\352', '\123', '\011', '\130', '\300', '\003', '\032', '\160', - '\251', '\107', '\053', '\032', '\322', '\221', '\062', '\163', - '\251', '\026', '\320', '\000', '\003', '\124', '\302', '\121', - '\007', '\050', '\065', '\233', '\022', '\050', '\144', '\073', - '\377', '\330', '\111', '\000', '\060', '\265', '\242', '\375', - '\374', '\052', '\077', '\015', '\302', '\124', '\017', '\134', - '\224', '\254', '\274', '\244', '\247', '\101', '\042', '\020', - '\001', '\046', '\372', '\160', '\234', '\312', '\034', '\044', - '\066', '\115', '\252', '\322', '\103', '\042', '\022', '\247', - '\031', '\265', '\241', '\015', '\243', '\030', '\313', '\153', - '\031', '\323', '\000', '\204', '\324', '\011', '\005', '\222', - '\332', '\224', '\237', '\226', '\163', '\244', '\012', '\261', - '\346', '\104', '\223', '\071', '\330', '\173', '\046', '\226', - '\234', '\375', '\104', '\000', '\005', '\236', '\330', '\104', - '\112', '\336', '\024', '\235', '\101', '\145', '\252', '\023', - '\001', '\020', '\315', '\023', '\206', '\120', '\257', '\317', - '\004', '\051', '\107', '\015', '\322', '\131', '\037', '\032', - '\264', '\062', '\020', '\075', '\012', '\101', '\065', '\233', - '\020', '\172', '\366', '\063', '\243', '\033', '\175', '\252', - '\115', '\045', '\160', '\323', '\021', '\256', '\123', '\266', - '\031', '\065', '\200', '\041', '\071', '\251', '\102', '\012', - '\260', '\314', '\253', '\025', '\105', '\143', '\102', '\032', - '\331', '\304', '\010', '\100', '\364', '\264', '\151', '\365', - '\051', '\132', '\071', '\320', '\116', '\167', '\046', '\322', - '\230', '\030', '\050', '\244', '\156', '\011', '\000', '\263', - '\017', '\006', '\162', '\272', '\321', '\105', '\100', '\111', - '\130', '\150', '\231', '\115', '\002', '\200', '\160', '\331', - '\332', '\026', '\040', '\306', '\313', '\055', '\103', '\374', - '\041', '\020', '\345', '\015', '\004', '\172', '\115', '\246', - '\136', '\102', '\024', '\302', '\020', '\175', '\010', '\204', - '\173', '\315', '\213', '\260', '\101', '\164', '\253', '\017', - '\200', '\260', '\057', '\041', '\002', '\041', '\010', '\156', - '\355', '\267', '\277', '\367', '\315', '\227', '\041', '\366', - '\000', '\256', '\102', '\360', '\001', '\134', '\204', '\300', - '\057', '\267', '\006', '\341', '\007', '\160', '\011', '\342', - '\017', '\000', '\046', '\227', '\175', '\353', '\245', '\340', - '\102', '\374', '\167', '\302', '\355', '\175', '\057', '\040', - '\344', '\253', '\141', '\160', '\321', '\267', '\274', '\177', - '\360', '\060', '\040', '\004', '\241', '\137', '\374', '\212', - '\167', '\304', '\366', '\065', '\304', '\206', '\347', '\133', - '\341', '\103', '\220', '\267', '\133', '\053', '\176', '\357', - '\171', '\307', '\025', '\143', '\370', '\012', '\142', '\276', - '\347', '\115', '\361', '\214', '\145', '\354', '\341', '\363', - '\272', '\167', '\020', '\033', '\136', '\260', '\037', '\070', - '\014', '\344', '\365', '\252', '\230', '\303', '\107', '\236', - '\157', '\220', '\065', '\154', '\344', '\045', '\037', '\271', - '\274', '\116', '\216', '\162', '\223', '\233', '\174', '\143', - '\031', '\043', '\271', '\306', '\061', '\056', '\304', '\220', - '\225', '\174', '\145', '\165', '\115', '\031', '\312', '\137', - '\146', '\062', '\230', '\307', '\054', '\146', '\046', '\163', - '\231', '\314', '\111', '\056', '\363', '\223', '\325', '\054', - '\345', '\364', '\206', '\131', '\305', '\042', '\176', '\163', - '\233', '\073', '\214', '\146', '\054', '\117', '\231', '\313', - '\054', '\136', '\357', '\206', '\003', '\221', '\342', '\370', - '\372', '\127', '\312', '\356', '\045', '\304', '\234', '\005', - '\035', '\346', '\375', '\336', '\331', '\314', '\357', '\125', - '\057', '\230', '\225', '\214', '\340', '\045', '\023', '\372', - '\317', '\353', '\065', '\264', '\177', '\025', '\155', '\341', - '\030', '\077', '\272', '\314', '\204', '\016', '\364', '\213', - '\057', '\315', '\151', '\112', '\137', '\332', '\305', '\044', - '\056', '\263', '\213', '\215', '\174', '\340', '\023', '\013', - '\353', '\017', '\325', '\102', '\110', '\103', '\076', '\222', - '\021', '\224', '\224', '\304', '\063', '\041', '\051', '\210', - '\145', '\140', '\202', '\316', '\114', '\336', '\344', '\047', - '\052', '\071', '\212', '\124', '\250', '\322', '\224', '\247', - '\130', '\000', '\000', '\027', '\000', '\000', '\314', '\062', - '\000', '\000', '\015', '\000', '\300', '\052', '\150', '\354', - '\200', '\073', '\333', '\110', '\102', '\000', '\204', '\000', - '\000', '\042', '\000', '\300', '\010', '\000', '\100', '\002', - '\000', '\224', '\000', '\000', '\046', '\000', '\300', '\011', - '\000', '\060', '\263', '\024', '\000', '\100', '\005', '\000', - '\130', '\001', '\000', '\264', '\322', '\002', '\000', '\350', - '\351', '\005', '\000', '\250', '\331', '\221', '\270', '\062', - '\003', '\000', '\320', '\000', '\000', '\065', '\000', '\200', - '\015', '\000', '\160', '\003', '\000', '\334', '\054', '\007', - '\000', '\320', '\001', '\000', '\166', '\000', '\000', '\036', - '\000', '\240', '\007', '\000', '\360', '\312', '\017', '\000', - '\220', '\223', '\040', '\000', '\100', '\010', '\047', '\002', - '\000', '\021', '\000', '\000', '\026', '\043', '\000', '\300', - '\104', '\062', '\112', '\002', '\000', '\224', '\000', '\000', - '\261', '\060', '\241', '\067', '\000', '\140', '\325', '\023', - '\000', '\004', '\200', '\050', '\214', '\307', '\073', '\000', - '\350', '\123', '\025', '\000', '\100', '\252', '\126', '\001', - '\300', '\066', '\132', '\000', '\200', '\131', '\270', '\000', - '\200', '\056', '\000', '\300', '\013', '\000', '\370', '\002', - '\000', '\202', '\026', '\006', '\000', '\240', '\045', '\070', - '\025', '\051', '\003', '\000', '\314', '\000', '\000', '\315', - '\014', '\055', '\015', '\000', '\120', '\003', '\000', '\326', - '\000', '\000', '\372', '\164', '\307', '\015', '\000', '\170', - '\003', '\000', '\212', '\246', '\026', '\266', '\314', '\001', - '\000', '\164', '\000', '\100', '\035', '\000', '\140', '\007', - '\000', '\334', '\001', '\000', '\107', '\313', '\003', '\000', - '\364', '\000', '\200', '\075', '\000', '\200', '\017', '\000', - '\200', '\213', '\037', '\000', '\200', '\352', '\224', '\045', - '\345', '\273', '\147', '\247', '\214', '\332', '\323', '\316', - '\366', '\140', '\241', '\335', '\355', '\153', '\207', '\173', - '\333', '\337', '\116', '\367', '\270', '\327', '\175', '\356', - '\166', '\317', '\073', '\336', '\367', '\056', '\367', '\276', - '\337', '\335', '\357', '\172', '\007', '\074', '\337', '\377', - '\116', '\370', '\300', '\027', '\176', '\360', '\206', '\117', - '\074', '\342', '\027', '\057', '\370', '\306', '\037', '\336', - '\361', '\212', '\207', '\074', '\343', '\037', '\117', '\371', - '\310', '\127', '\176', '\362', '\206', '\127', '\110', '\322', - '\024', '\322', '\254', '\356', '\002', '\340', '\047', '\006', - '\051', '\054', '\000', '\210', '\075', '\316', '\204', '\114', - '\333', '\040', '\063', '\063', '\110', '\271', '\015', '\022', - '\030', '\172', '\047', '\304', '\337', '\006', '\061', '\370', - '\155', '\022', '\142', '\027', '\216', '\033', '\144', '\344', - '\006', '\111', '\271', '\101', '\144', '\156', '\220', '\212', - '\030', '\004', '\350', '\006', '\101', '\272', '\101', '\236', - '\156', '\220', '\243', '\275', '\045', '\041', '\202', '\110', - '\310', '\041', '\022', '\302', '\210', '\204', '\104', '\042', - '\041', '\226', '\110', '\310', '\046', '\022', '\002', '\065', - '\203', '\224', '\042', '\041', '\247', '\110', '\110', '\052', - '\022', '\262', '\212', '\204', '\264', '\042', '\041', '\257', - '\110', '\110', '\054', '\022', '\062', '\213', '\204', '\324', - '\042', '\041', '\267', '\110', '\110', '\056', '\022', '\262', - '\213', '\204', '\364', '\042', '\041', '\277', '\110', '\110', - '\060', '\022', '\062', '\214', '\204', '\024', '\043', '\041', - '\307', '\110', '\110', '\062', '\022', '\122', '\030', '\203', - '\064', '\043', '\041', '\317', '\220', '\020', '\321', '\220', - '\020', '\323', '\220', '\020', '\325', '\140', '\030', '\011', - '\221', '\015', '\011', '\261', '\015', '\011', '\321', '\015', - '\011', '\361', '\015', '\011', '\021', '\016', '\011', '\061', - '\016', '\011', '\121', '\016', '\011', '\161', '\016', '\011', - '\221', '\016', '\011', '\261', '\016', '\011', '\321', '\016', - '\011', '\361', '\016', '\011', '\021', '\017', '\011', '\061', - '\017', '\011', '\121', '\017', '\011', '\161', '\017', '\011', - '\221', '\017', '\011', '\261', '\017', '\011', '\321', '\017', - '\011', '\001', '\055', '\273', '\142', '\020', '\003', '\060', - '\021', '\005', '\060', '\021', '\070', '\144', '\020', '\011', - '\060', '\021', '\013', '\060', '\021', '\015', '\060', '\021', - '\017', '\060', '\021', '\021', '\060', '\021', '\023', '\060', - '\021', '\025', '\060', '\021', '\027', '\060', '\021', '\031', - '\060', '\021', '\033', '\060', '\021', '\221', '\141', '\020', - '\037', '\060', '\021', '\041', '\060', '\021', '\043', '\060', - '\021', '\045', '\060', '\021', '\047', '\060', '\021', '\051', - '\060', '\021', '\053', '\060', '\021', '\055', '\060', '\021', - '\057', '\060', '\021', '\061', '\060', '\021', '\063', '\060', - '\021', '\065', '\060', '\021', '\067', '\060', '\021', '\071', - '\060', '\021', '\073', '\060', '\021', '\075', '\060', '\021', - '\077', '\060', '\021', '\101', '\060', '\021', '\103', '\060', - '\021', '\105', '\060', '\021', '\107', '\060', '\021', '\111', - '\060', '\021', '\113', '\060', '\021', '\115', '\060', '\021', - '\117', '\060', '\021', '\121', '\060', '\021', '\123', '\060', - '\021', '\125', '\060', '\021', '\127', '\060', '\021', '\131', - '\060', '\021', '\133', '\060', '\021', '\135', '\060', '\021', - '\137', '\060', '\021', '\230', '\141', '\020', '\146', '\040', - '\207', '\060', '\120', '\211', '\047', '\122', '\211', '\107', - '\062', '\004', '\225', '\310', '\025', '\232', '\010', '\003', - '\355', '\326', '\211', '\357', '\326', '\211', '\361', '\326', - '\211', '\363', '\326', '\211', '\365', '\246', '\211', '\061', - '\120', '\063', '\250', '\230', '\211', '\060', '\020', '\003', - '\234', '\330', '\212', '\237', '\330', '\212', '\241', '\330', - '\212', '\243', '\330', '\212', '\245', '\330', '\212', '\247', - '\010', '\003', '\062', '\240', '\212', '\272', '\310', '\212', - '\062', '\360', '\212', '\062', '\020', '\213', '\062', '\060', - '\213', '\062', '\120', '\213', '\062', '\160', '\213', '\062', - '\220', '\213', '\063', '\300', '\213', '\063', '\300', '\212', - '\063', '\360', '\212', '\063', '\020', '\213', '\063', '\060', - '\213', '\063', '\120', '\213', '\063', '\160', '\213', '\063', - '\220', '\213', '\064', '\120', '\063', '\317', '\026', '\155', - '\323', '\126', '\155', '\327', '\226', '\155', '\333', '\326', - '\155', '\337', '\026', '\156', '\343', '\346', '\047', '\346', - '\006', '\000', '\350', '\246', '\156', '\000', '\300', '\156', - '\356', '\006', '\157', '\362', '\346', '\172', '\367', '\226', - '\157', '\373', '\326', '\157', '\377', '\026', '\160', '\000', - '\060', '\160', '\005', '\167', '\160', '\011', '\267', '\160', - '\015', '\367', '\160', '\000', '\020', '\161', '\023', '\127', - '\161', '\000', '\160', '\161', '\144', '\241', '\161', '\034', - '\347', '\161', '\344', '\061', '\005', '\041', '\007', '\000', - '\043', '\127', '\162', '\032', '\202', '\162', '\052', '\007', - '\000', '\054', '\347', '\162', '\060', '\047', '\163', '\064', - '\147', '\163', '\000', '\200', '\163', '\000', '\240', '\163', - '\074', '\347', '\163', '\000', '\000', '\164', '\102', '\107', - '\164', '\106', '\007', '\000', '\110', '\247', '\164', '\114', - '\007', '\000', '\116', '\007', '\165', '\122', '\107', '\165', - '\126', '\207', '\165', '\000', '\240', '\165', '\134', '\347', - '\165', '\140', '\047', '\166', '\047', '\022', '\003', '\067', - '\120', '\157', '\111', '\321', '\053', '\275', '\362', '\053', - '\147', '\067', '\023', '\323', '\102', '\167', '\310', '\062', - '\054', '\312', '\042', '\224', '\011', '\321', '\054', '\317', - '\022', '\055', '\104', '\131', '\054', '\164', '\007', - -}; - -static char name_6x13[] = "-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1"; -static char name_cursor[] = "cursor"; -static char name_5x7[] = "-misc-fixed-medium-r-normal--7-70-75-75-c-50-iso8859-1"; -static char name_5x8[] = "-misc-fixed-medium-r-normal--8-80-75-75-c-50-iso646.1991-irv"; - -const BuiltinFileRec builtin_files[] = { -"6x13.builtin", sizeof file_6x13, file_6x13, -"cursor.builtin", sizeof file_cursor, file_cursor, -"5x7.builtin", sizeof file_5x7, file_5x7, -"5x8.builtin", sizeof file_5x8, file_5x8, -}; - -const int builtin_files_count = sizeof (builtin_files) / sizeof (builtin_files[0]); - -const BuiltinDirRec builtin_dir[] = { -"6x13.builtin", name_6x13, -"cursor.builtin", name_cursor, -"5x7.builtin", name_5x7, -"5x8.builtin", name_5x8, -}; - -const int builtin_dir_count = sizeof (builtin_dir) / sizeof (builtin_dir[0]); - -static char alias_fixed[] = "fixed"; -static char alias_6x13[] = "6x13"; -static char alias_6x13_100[] = "-misc-fixed-medium-r-semicondensed--13-100-100-100-c-60-iso8859-1"; -static char alias_5x7[] = "5x7"; -static char alias_5x7_100[] = "-misc-fixed-medium-r-normal--7-50-100-100-c-50-iso8859-1"; -static char alias_5x8[] = "5x8"; -static char alias_5x8_75[] = "-misc-fixed-medium-r-normal--8-80-75-75-c-50-iso8859-1"; -static char alias_5x8_100[] = "-misc-fixed-medium-r-normal--8-60-100-100-c-50-iso8859-1"; - -const BuiltinAliasRec builtin_alias[] = { -alias_fixed, name_6x13, -alias_6x13, name_6x13, -alias_6x13_100, name_6x13, -alias_5x7, name_5x7, -alias_5x7_100, name_5x7, -alias_5x8, name_5x8, -alias_5x8_75, name_5x8, -alias_5x8_100, name_5x8, -}; - -const int builtin_alias_count = sizeof (builtin_alias) / sizeof (builtin_alias[0]); diff --git a/nx-X11/lib/font/builtins/fpe.c b/nx-X11/lib/font/builtins/fpe.c deleted file mode 100644 index 7f78fab..0000000 --- a/nx-X11/lib/font/builtins/fpe.c +++ /dev/null @@ -1,98 +0,0 @@ -/* $XdotOrg: xc/lib/font/builtins/fpe.c,v 1.5 2005/07/30 18:56:32 alanc Exp $ */ -/* - * Id: fpe.c,v 1.2 1999/11/02 06:16:48 keithp Exp $ - * - * Copyright 1999 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ -/* $XFree86: xc/lib/font/builtins/fpe.c,v 1.3 1999/12/30 02:29:51 robin Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> - -static int font_file_type; - -const char builtin_fonts[] = "built-ins"; - -int -BuiltinNameCheck (name) - char *name; -{ - return (strcmp (name, builtin_fonts) == 0); -} - -int -BuiltinInitFPE (fpe) - FontPathElementPtr fpe; -{ - int status; - FontDirectoryPtr dir; - - status = BuiltinReadDirectory (fpe->name, &dir); - - if (status == Successful) - fpe->private = (pointer) dir; - return status; -} - -/* ARGSUSED */ -int -BuiltinResetFPE (fpe) - FontPathElementPtr fpe; -{ - FontDirectoryPtr dir; - - dir = (FontDirectoryPtr) fpe->private; - /* builtins can't change! */ - return Successful; -} - -int -BuiltinFreeFPE (fpe) - FontPathElementPtr fpe; -{ - FontFileFreeDir ((FontDirectoryPtr) fpe->private); - return Successful; -} - -void -BuiltinRegisterFpeFunctions(void) -{ - BuiltinRegisterFontFileFunctions (); - - font_file_type = RegisterFPEFunctions(BuiltinNameCheck, - BuiltinInitFPE, - BuiltinFreeFPE, - BuiltinResetFPE, - FontFileOpenFont, - FontFileCloseFont, - FontFileListFonts, - FontFileStartListFontsWithInfo, - FontFileListNextFontWithInfo, - (WakeupFpeFunc) 0, - (ClientDiedFunc) 0, - (LoadGlyphsFunc) 0, - (StartLaFunc) 0, - (NextLaFunc) 0, - (SetPathFunc) 0); -} diff --git a/nx-X11/lib/font/builtins/render.c b/nx-X11/lib/font/builtins/render.c deleted file mode 100644 index 520d873..0000000 --- a/nx-X11/lib/font/builtins/render.c +++ /dev/null @@ -1,114 +0,0 @@ -/* $XdotOrg: xc/lib/font/builtins/render.c,v 1.5 2005/07/30 18:56:32 alanc Exp $ */ -/* - * Id: render.c,v 1.2 1999/11/02 06:16:48 keithp Exp $ - * - * Copyright 1999 SuSE, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of SuSE not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. SuSE makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Keith Packard, SuSE, Inc. - */ -/* $XFree86: xc/lib/font/builtins/render.c,v 1.3 1999/12/30 02:29:51 robin Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#include "builtin.h" - -BuiltinOpenBitmap (fpe, ppFont, flags, entry, fileName, format, fmask) - FontPathElementPtr fpe; - FontPtr *ppFont; - int flags; - FontEntryPtr entry; - char *fileName; - fsBitmapFormat format; - fsBitmapFormatMask fmask; -{ - FontFilePtr file; - FontPtr pFont; - int i; - int ret; - int bit, - byte, - glyph, - scan, - image; - - file = BuiltinFileOpen (fileName); - if (!file) - return BadFontName; - pFont = (FontPtr) xalloc(sizeof(FontRec)); - if (!pFont) { - BuiltinFileClose (file); - return AllocError; - } - /* set up default values */ - FontDefaultFormat(&bit, &byte, &glyph, &scan); - /* get any changes made from above */ - ret = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image); - - /* Fill in font record. Data format filled in by reader. */ - pFont->refcnt = 0; - pFont->maxPrivate = -1; - pFont->devPrivates = (pointer *) 0; - - ret = pcfReadFont (pFont, file, bit, byte, glyph, scan); - - BuiltinFileClose (file); - if (ret != Successful) - xfree(pFont); - else - *ppFont = pFont; - return ret; -} - -BuiltinGetInfoBitmap (fpe, pFontInfo, entry, fileName) - FontPathElementPtr fpe; - FontInfoPtr pFontInfo; - FontEntryPtr entry; - char *fileName; -{ - FontFilePtr file; - int i; - int ret; - FontRendererPtr renderer; - - file = BuiltinFileOpen (fileName); - if (!file) - return BadFontName; - ret = pcfReadFontInfo (pFontInfo, file); - BuiltinFileClose (file); - return ret; -} - -static FontRendererRec renderers[] = { - ".builtin", 8, - BuiltinOpenBitmap, 0, BuiltinGetInfoBitmap, 0, 0 -}; - -#define numRenderers (sizeof renderers / sizeof renderers[0]) - -void -BuiltinRegisterFontFileFunctions(void) -{ - int i; - for (i = 0; i < numRenderers; i++) - FontFileRegisterRenderer ((FontRendererRec *) &renderers[i]); -} - diff --git a/nx-X11/lib/font/fc/Imakefile b/nx-X11/lib/font/fc/Imakefile deleted file mode 100644 index d511513..0000000 --- a/nx-X11/lib/font/fc/Imakefile +++ /dev/null @@ -1,31 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ -XCOMM -XCOMM Make file for font handling routines -XCOMM -XCOMM $XFree86: xc/lib/font/fc/Imakefile,v 1.4 1999/12/13 02:52:50 robin Exp $ -#include <Server.tmpl> - - INCLUDES = -I$(FONTINCSRC) -I../include $(TRANS_INCLUDES) - HEADERS = - SRCS = fsconvert.c fserve.c fsio.c transport.c - OBJS = fsconvert.o fserve.o fsio.o transport.o - CONN_DEFINES = $(CONNECTION_FLAGS) -DFONT_t -DTRANS_CLIENT -DTRANS_SERVER -DTRANS_REOPEN -#if HasBSD44Sockets - SOCK_DEFINES = -DBSD44SOCKETS -#endif - DEFINES = $(SIGNAL_DEFINES) $(CONN_DEFINES) $(SOCK_DEFINES) - - -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont -#include <Library.tmpl> -LibraryObjectRule() - -SubdirLibraryRule($(OBJS)) -LinkSourceFile(transport.c,$(TRANSCOMMSRC)) - -NormalLintTarget($(SRCS)) - -DependTarget() diff --git a/nx-X11/lib/font/fc/fsconvert.c b/nx-X11/lib/font/fc/fsconvert.c deleted file mode 100644 index afa2c32..0000000 --- a/nx-X11/lib/font/fc/fsconvert.c +++ /dev/null @@ -1,774 +0,0 @@ -/* $Xorg: fsconvert.c,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ */ -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices not be used - * in advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. Network Computing Devices - * makes no representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ -/* $XFree86: xc/lib/font/fc/fsconvert.c,v 1.14 2003/08/30 18:06:29 dawes Exp $ */ -/* - * FS data conversion - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/X.h> -#include <X11/Xtrans/Xtrans.h> -#include <X11/Xpoll.h> -#include <X11/fonts/FS.h> -#include <X11/fonts/FSproto.h> -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> -#include "fservestr.h" -#include <X11/fonts/fontutil.h> -#include "fslibos.h" - -extern char _fs_glyph_undefined; -extern char _fs_glyph_requested; -extern char _fs_glyph_zero_length; - - -/* - * converts data from font server form to X server form - */ - -void -_fs_convert_char_info(fsXCharInfo *src, xCharInfo *dst) -{ - dst->ascent = src->ascent; - dst->descent = src->descent; - dst->leftSideBearing = src->left; - dst->rightSideBearing = src->right; - dst->characterWidth = src->width; - dst->attributes = src->attributes; -} - -void -_fs_init_fontinfo(FSFpePtr conn, FontInfoPtr pfi) -{ - if (conn->fsMajorVersion == 1) { - unsigned short n; - n = pfi->firstCol; - pfi->firstCol = pfi->firstRow; - pfi->firstRow = n; - n = pfi->lastCol; - pfi->lastCol = pfi->lastRow; - pfi->lastRow = n; - pfi->defaultCh = ((pfi->defaultCh >> 8) & 0xff) - + ((pfi->defaultCh & 0xff) << 8); - } - - if (FontCouldBeTerminal (pfi)) - { - pfi->terminalFont = TRUE; - pfi->minbounds.ascent = pfi->fontAscent; - pfi->minbounds.descent = pfi->fontDescent; - pfi->minbounds.leftSideBearing = 0; - pfi->minbounds.rightSideBearing = pfi->minbounds.characterWidth; - pfi->maxbounds = pfi->minbounds; - } - - FontComputeInfoAccelerators (pfi); -} - -int -_fs_convert_props(fsPropInfo *pi, fsPropOffset *po, pointer pd, - FontInfoPtr pfi) -{ - FontPropPtr dprop; - int i, - nprops; - char *is_str; - fsPropOffset local_off; - char *off_adr; - char *pdc = pd; - -/* stolen from server/include/resource.h */ -#define BAD_RESOURCE 0xe0000000 - - nprops = pfi->nprops = pi->num_offsets; - - if (nprops < 0 - || nprops > SIZE_MAX/(sizeof(FontPropRec) + sizeof(char))) - return -1; - - dprop = (FontPropPtr) xalloc(sizeof(FontPropRec) * nprops + - sizeof (char) * nprops); - if (!dprop) - return -1; - - is_str = (char *) (dprop + nprops); - pfi->props = dprop; - pfi->isStringProp = is_str; - - off_adr = (char *)po; - for (i = 0; i < nprops; i++, dprop++, is_str++) - { - memcpy(&local_off, off_adr, SIZEOF(fsPropOffset)); - if ((local_off.name.position >= pi->data_len) || - (local_off.name.length > - (pi->data_len - local_off.name.position))) - goto bail; - dprop->name = MakeAtom(&pdc[local_off.name.position], - local_off.name.length, 1); - if (local_off.type != PropTypeString) { - *is_str = FALSE; - dprop->value = local_off.value.position; - } else { - *is_str = TRUE; - if ((local_off.value.position >= pi->data_len) || - (local_off.value.length > - (pi->data_len - local_off.value.position))) - goto bail; - dprop->value = (INT32) MakeAtom(&pdc[local_off.value.position], - local_off.value.length, 1); - if (dprop->value == BAD_RESOURCE) - { - bail: - xfree (pfi->props); - pfi->nprops = 0; - pfi->props = 0; - pfi->isStringProp = 0; - return -1; - } - } - off_adr += SIZEOF(fsPropOffset); - } - - return nprops; -} - -void -_fs_free_props (FontInfoPtr pfi) -{ - if (pfi->props) - { - xfree (pfi->props); - pfi->nprops = 0; - pfi->props = 0; - } -} - -int -_fs_convert_lfwi_reply(FSFpePtr conn, FontInfoPtr pfi, - fsListFontsWithXInfoReply *fsrep, - fsPropInfo *pi, fsPropOffset *po, pointer pd) -{ - fsUnpack_XFontInfoHeader(fsrep, pfi); - _fs_init_fontinfo(conn, pfi); - - if (_fs_convert_props(pi, po, pd, pfi) == -1) - return AllocError; - - return Successful; -} - - -#define ENCODING_UNDEFINED(enc) \ - ((enc)->bits == &_fs_glyph_undefined ? \ - TRUE : \ - (access_done = access_done && (enc)->bits != &_fs_glyph_requested, \ - FALSE)) - -#define GLYPH_UNDEFINED(loc) ENCODING_UNDEFINED(encoding + (loc)) - -/* - * figures out what glyphs to request - * - * Includes logic to attempt to reduce number of round trips to the font - * server: when a glyph is requested, fs_build_range() requests a - * 16-glyph range of glyphs that contains the requested glyph. This is - * predicated on the belief that using a glyph increases the chances - * that nearby glyphs will be used: a good assumption for phonetic - * alphabets, but a questionable one for ideographic/pictographic ones. - */ -/* ARGSUSED */ -int -fs_build_range(FontPtr pfont, Bool range_flag, unsigned int count, - int item_size, unsigned char *data, int *nranges, - fsRange **ranges) -{ - FSFontDataPtr fsd = (FSFontDataPtr) (pfont->fpePrivate); - FSFontPtr fsfont = (FSFontPtr) (pfont->fontPrivate); - register CharInfoPtr encoding = fsfont->encoding; - FontInfoPtr pfi = &(pfont->info); - fsRange range; - int access_done = TRUE; - int err; - register unsigned long firstrow, lastrow, firstcol, lastcol; - register unsigned long row; - register unsigned long col; - register unsigned long loc; - - if (!fsd->glyphs_to_get) - return AccessDone; - - firstrow = pfi->firstRow; - lastrow = pfi->lastRow; - firstcol = pfi->firstCol; - lastcol = pfi->lastCol; - - /* Make sure we have default char */ - if (fsfont->pDefault && ENCODING_UNDEFINED(fsfont->pDefault)) - { - loc = fsfont->pDefault - encoding; - row = loc / (lastcol - firstcol + 1) + firstrow; - col = loc % (lastcol - firstcol + 1) + firstcol; - - range.min_char_low = range.max_char_low = col; - range.min_char_high = range.max_char_high = row; - - if ((err = add_range(&range, nranges, ranges, FALSE)) != - Successful) return err; - encoding[loc].bits = &_fs_glyph_requested; - access_done = FALSE; - } - - if (!range_flag && item_size == 1) - { - if (firstrow != 0) return AccessDone; - while (count--) - { - col = *data++; - if (col >= firstcol && col <= lastcol && - GLYPH_UNDEFINED(col - firstcol)) - { - int col1, col2; - col1 = col & 0xf0; - col2 = col1 + 15; - if (col1 < firstcol) col1 = firstcol; - if (col2 > lastcol) col2 = lastcol; - /* Collect a 16-glyph neighborhood containing the requested - glyph... should in most cases reduce the number of round - trips to the font server. */ - for (col = col1; col <= col2; col++) - { - if (!GLYPH_UNDEFINED(col - firstcol)) continue; - range.min_char_low = range.max_char_low = col; - range.min_char_high = range.max_char_high = 0; - if ((err = add_range(&range, nranges, ranges, FALSE)) != - Successful) return err; - encoding[col - firstcol].bits = &_fs_glyph_requested; - access_done = FALSE; - } - } - } - } - else - { - fsRange fullrange[1]; - - if (range_flag && count == 0) - { - count = 2; - data = (unsigned char *)fullrange; - fullrange[0].min_char_high = firstrow; - fullrange[0].min_char_low = firstcol; - fullrange[0].max_char_high = lastrow; - fullrange[0].max_char_low = lastcol; - } - - while (count--) - { - int row1, col1, row2, col2; - row1 = row2 = *data++; - col1 = col2 = *data++; - if (range_flag) - { - if (count) - { - row2 = *data++; - col2 = *data++; - count--; - } - else - { - row2 = lastrow; - col2 = lastcol; - } - if (row1 < firstrow) row1 = firstrow; - if (row2 > lastrow) row2 = lastrow; - if (col1 < firstcol) col1 = firstcol; - if (col2 > lastcol) col2 = lastcol; - } - else - { - if (row1 < firstrow || row1 > lastrow || - col1 < firstcol || col1 > lastcol) - continue; - } - for (row = row1; row <= row2; row++) - { - expand_glyph_range: ; - loc = (row - firstrow) * (lastcol + 1 - firstcol) + - (col1 - firstcol); - for (col = col1; col <= col2; col++, loc++) - { - if (GLYPH_UNDEFINED(loc)) - { - if (row1 == row2 && - (((col1 & 0xf) && col1 > firstcol) || - (col2 & 0xf) != 0xf) && (col2 < lastcol)) - { - /* If we're loading from a single row, expand - range of glyphs loaded to a multiple of - a 16-glyph range -- attempt to reduce number - of round trips to the font server. */ - col1 &= 0xf0; - col2 = (col2 & 0xf0) + 15; - if (col1 < firstcol) col1 = firstcol; - if (col2 > lastcol) col2 = lastcol; - goto expand_glyph_range; - } - range.min_char_low = range.max_char_low = col; - range.min_char_high = range.max_char_high = row; - if ((err = add_range(&range, nranges, ranges, FALSE)) != - Successful) return err; - encoding[loc].bits = &_fs_glyph_requested; - access_done = FALSE; - } - } - } - } - } - - return access_done ? - AccessDone : - Successful; -} - -#undef GLYPH_UNDEFINED -#undef ENCODING_UNDEFINED - - -/* _fs_clean_aborted_loadglyphs(): Undoes the changes to the encoding array - performed by fs_build_range(); for use if the associated LoadGlyphs - requests needs to be cancelled. */ - -void -_fs_clean_aborted_loadglyphs(FontPtr pfont, int num_expected_ranges, - fsRange *expected_ranges) -{ - register FSFontPtr fsfont; - register int i; - - fsfont = (FSFontPtr) pfont->fontPrivate; - if (fsfont->encoding) - { - fsRange full_range[1]; - if (!num_expected_ranges) - { - full_range[0].min_char_low = pfont->info.firstCol; - full_range[0].min_char_high = pfont->info.firstRow; - full_range[0].max_char_low = pfont->info.lastCol; - full_range[0].max_char_high = pfont->info.lastRow; - num_expected_ranges = 1; - expected_ranges = full_range; - } - - for (i = 0; i < num_expected_ranges; i++) - { - int row, col; - for (row = expected_ranges[i].min_char_high; - row <= expected_ranges[i].max_char_high; - row++) - { - register CharInfoPtr encoding = fsfont->encoding + - ((row - pfont->info.firstRow) * - (pfont->info.lastCol - - pfont->info.firstCol + 1) + - expected_ranges[i].min_char_low - - pfont->info.firstCol); - for (col = expected_ranges[i].min_char_low; - col <= expected_ranges[i].max_char_low; - encoding++, col++) - { - if (encoding->bits == &_fs_glyph_requested) - encoding->bits = &_fs_glyph_undefined; - } - } - } - } -} - - -/* - * figures out what extents to request - * this is where lots of extra - * smarts wants to live - */ -/* ARGSUSED */ -int -_fs_check_extents(FontPtr pfont, Mask flags, int nranges, fsRange *range, - FSBlockDataPtr blockrec) -{ -/* XXX -- either fill in the requested info if we have it somewhere - * and return AccessDone, or else return Successful - */ - return Successful; -} - -/* - * figures out what glyphs to request - * this is where lots of extra - * smarts wants to live - */ -/* ARGSUSED */ -int -_fs_check_bitmaps(FontPtr pfont, fsBitmapFormat format, - Mask flags, int nranges, fsRange *range, - FSBlockDataPtr blockrec) -{ -/* XXX -- either fill in the requested info if we have it somewhere - * and return AccessDone, or else return Successful - */ - return Successful; -} - -int -_fs_get_glyphs(FontPtr pFont, unsigned long count, unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - CharInfoPtr *glyphs) /* RETURN */ -{ - FSFontPtr fsdata; - unsigned int firstCol; - register unsigned int numCols; - unsigned int firstRow; - unsigned int numRows; - CharInfoPtr *glyphsBase; - register unsigned int c; - register CharInfoPtr pci; - unsigned int r; - CharInfoPtr encoding; - CharInfoPtr pDefault; - FSFontDataPtr fsd = (FSFontDataPtr) pFont->fpePrivate; - int err = Successful; - - fsdata = (FSFontPtr) pFont->fontPrivate; - encoding = fsdata->encoding; - pDefault = fsdata->pDefault; - firstCol = pFont->info.firstCol; - numCols = pFont->info.lastCol - firstCol + 1; - glyphsBase = glyphs; - - /* In this age of glyph caching, any glyphs gotten through this - procedure should already be loaded. If they are not, we are - dealing with someone (perhaps a ddx driver optimizing a font) - that doesn't understand the finer points of glyph caching. The - CHECK_ENCODING macro checks for this condition... if found, it - calls fs_load_all_glyphs(), which corrects it. Since the caller - of this code will not know how to handle a return value of - Suspended, the fs_load_all_glyphs() procedure will block and - freeze the server until the load operation is done. Moral: the - glyphCachingMode flag really must indicate the capabilities of - the ddx drivers. */ - -#define CHECK_ENCODING(cnum) \ - ( pci = encoding + (cnum), \ - fsd->glyphs_to_get ? \ - ( pci->bits == &_fs_glyph_undefined || pci->bits == &_fs_glyph_requested ? \ - ((err = fs_load_all_glyphs(pFont)), pci) : \ - pci ) : \ - pci ) - - switch (charEncoding) { - - case Linear8Bit: - case TwoD8Bit: - if (pFont->info.firstRow > 0) - break; - if (pFont->info.allExist && pDefault) { - while (err == Successful && count--) { - c = (*chars++) - firstCol; - if (c < numCols) - *glyphs++ = CHECK_ENCODING(c); - else - *glyphs++ = pDefault; - } - } else { - while (err == Successful && count--) { - c = (*chars++) - firstCol; - if (c < numCols && CHECK_ENCODING(c)->bits) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - } - break; - case Linear16Bit: - if (pFont->info.allExist && pDefault) { - while (err == Successful && count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols) - *glyphs++ = CHECK_ENCODING(c); - else - *glyphs++ = pDefault; - } - } else { - while (err == Successful && count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols && CHECK_ENCODING(c)->bits) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - } - break; - - case TwoD16Bit: - firstRow = pFont->info.firstRow; - numRows = pFont->info.lastRow - firstRow + 1; - while (err == Successful && count--) { - r = (*chars++) - firstRow; - c = (*chars++) - firstCol; - if (r < numRows && c < numCols && - CHECK_ENCODING(r * numCols + c)->bits) - *glyphs++ = pci; - else if (pDefault) - *glyphs++ = pDefault; - } - break; - } - *glyphCount = glyphs - glyphsBase; - return err; -} - - -static int -_fs_get_metrics(FontPtr pFont, unsigned long count, unsigned char *chars, - FontEncoding charEncoding, - unsigned long *glyphCount, /* RETURN */ - xCharInfo **glyphs) /* RETURN */ -{ - FSFontPtr fsdata; - unsigned int firstCol; - register unsigned int numCols; - unsigned int firstRow; - unsigned int numRows; - xCharInfo **glyphsBase; - register unsigned int c; - unsigned int r; - CharInfoPtr encoding; - CharInfoPtr pDefault; - - fsdata = (FSFontPtr) pFont->fontPrivate; - encoding = fsdata->inkMetrics; - pDefault = fsdata->pDefault; - /* convert default bitmap metric to default ink metric */ - if (pDefault) - pDefault = encoding + (pDefault - fsdata->encoding); - firstCol = pFont->info.firstCol; - numCols = pFont->info.lastCol - firstCol + 1; - glyphsBase = glyphs; - - - /* XXX - this should be much smarter */ - /* make sure the glyphs are there */ - switch (charEncoding) { - - case Linear8Bit: - case TwoD8Bit: - if (pFont->info.firstRow > 0) - break; - if (pFont->info.allExist && pDefault) { - while (count--) { - c = (*chars++) - firstCol; - if (c < numCols) - *glyphs++ = (xCharInfo *)&encoding[c]; - else - *glyphs++ = (xCharInfo *)pDefault; - } - } else { - while (count--) { - c = (*chars++) - firstCol; - if (c < numCols) - *glyphs++ = (xCharInfo *)(encoding + c); - else if (pDefault) - *glyphs++ = (xCharInfo *)pDefault; - } - } - break; - case Linear16Bit: - if (pFont->info.allExist && pDefault) { - while (count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols) - *glyphs++ = (xCharInfo *)(encoding + c); - else - *glyphs++ = (xCharInfo *)pDefault; - } - } else { - while (count--) { - c = *chars++ << 8; - c = (c | *chars++) - firstCol; - if (c < numCols) - *glyphs++ = (xCharInfo *)(encoding + c); - else if (pDefault) - *glyphs++ = (xCharInfo *)pDefault; - } - } - break; - - case TwoD16Bit: - firstRow = pFont->info.firstRow; - numRows = pFont->info.lastRow - firstRow + 1; - while (count--) { - r = (*chars++) - firstRow; - c = (*chars++) - firstCol; - if (r < numRows && c < numCols) - *glyphs++ = (xCharInfo *)(encoding + (r * numCols + c)); - else if (pDefault) - *glyphs++ = (xCharInfo *)pDefault; - } - break; - } - *glyphCount = glyphs - glyphsBase; - return Successful; -} - - -void -_fs_unload_font(FontPtr pfont) -{ - FSFontPtr fsdata = (FSFontPtr) pfont->fontPrivate; - FSFontDataPtr fsd = (FSFontDataPtr) pfont->fpePrivate; - CharInfoPtr encoding = fsdata->encoding; - FSGlyphPtr glyphs; - - /* - * fsdata points at FSFontRec, FSFontDataRec and name - */ - if (encoding) - xfree(encoding); - - while ((glyphs = fsdata->glyphs)) - { - fsdata->glyphs = glyphs->next; - xfree (glyphs); - } - - /* XXX we may get called after the resource DB has been cleaned out */ - if (find_old_font(fsd->fontid)) - DeleteFontClientID (fsd->fontid); - - _fs_free_props (&pfont->info); - - xfree(fsdata); - - DestroyFontRec(pfont); -} - -FontPtr -fs_create_font (FontPathElementPtr fpe, - char *name, - int namelen, - fsBitmapFormat format, - fsBitmapFormatMask fmask) -{ - FontPtr pfont; - FSFontPtr fsfont; - FSFontDataPtr fsd; - int bit, byte, scan, glyph; - - pfont = CreateFontRec (); - if (!pfont) - return 0; - fsfont = (FSFontPtr) xalloc (sizeof (FSFontRec) + - sizeof (FSFontDataRec) + - namelen + 1); - if (!fsfont) - { - DestroyFontRec (pfont); - return 0; - } - fsd = (FSFontDataPtr) (fsfont + 1); - bzero((char *) fsfont, sizeof(FSFontRec)); - bzero((char *) fsd, sizeof(FSFontDataRec)); - - pfont->fpe = fpe; - pfont->fontPrivate = (pointer) fsfont; - pfont->fpePrivate = (pointer) fsd; - - /* These font components will be needed in packGlyphs */ - CheckFSFormat(format, BitmapFormatMaskBit | - BitmapFormatMaskByte | - BitmapFormatMaskScanLineUnit | - BitmapFormatMaskScanLinePad, - &bit, - &byte, - &scan, - &glyph, - NULL); - pfont->format = format; - pfont->bit = bit; - pfont->byte = byte; - pfont->scan = scan; - pfont->glyph = glyph; - - pfont->info.nprops = 0; - pfont->info.props = 0; - pfont->info.isStringProp = 0; - - /* set font function pointers */ - pfont->get_glyphs = _fs_get_glyphs; - pfont->get_metrics = _fs_get_metrics; - pfont->unload_font = _fs_unload_font; - pfont->unload_glyphs = NULL; - - /* set the FPE private information */ - fsd->format = format; - fsd->fmask = fmask; - fsd->name = (char *) (fsd + 1); - memcpy (fsd->name, name, namelen); - fsd->name[namelen] = '\0'; - fsd->fontid = GetNewFontClientID (); - - /* save the ID */ - if (!StoreFontClientFont(pfont, fsd->fontid)) - { - xfree (fsfont); - DestroyFontRec (pfont); - return 0; - } - - return pfont; -} - -pointer -fs_alloc_glyphs (FontPtr pFont, int size) -{ - FSGlyphPtr glyphs; - FSFontPtr fsfont = (FSFontPtr) pFont->fontPrivate; - - if (size < (INT_MAX - sizeof (FSGlyphRec))) - glyphs = xalloc (sizeof (FSGlyphRec) + size); - else - glyphs = NULL; - if (glyphs == NULL) - return NULL; - glyphs->next = fsfont->glyphs; - fsfont->glyphs = glyphs; - return (pointer) (glyphs + 1); -} diff --git a/nx-X11/lib/font/fc/fserve.c b/nx-X11/lib/font/fc/fserve.c deleted file mode 100644 index 6bbb8c2..0000000 --- a/nx-X11/lib/font/fc/fserve.c +++ /dev/null @@ -1,3480 +0,0 @@ -/* $XdotOrg: xc/lib/font/fc/fserve.c,v 1.8 2005/07/09 06:36:12 keithp Exp $ */ -/* $Xorg: fserve.c,v 1.4 2001/02/09 02:04:02 xorgcvs Exp $ */ -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fc/fserve.c,v 3.26tsi Exp $ */ - -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices, or Digital - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. - * - * NETWORK COMPUTING DEVICES, AND DIGITAL AND DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES, - * OR DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ -/* - * font server specific font access - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef WIN32 -#define _WILLWINSOCK_ -#endif -#define FONT_t -#define TRANS_CLIENT -#include "X11/Xtrans/Xtrans.h" -#include "X11/Xpoll.h" -#include <X11/fonts/FS.h> -#include <X11/fonts/FSproto.h> -#include <X11/X.h> -#include <X11/Xos.h> -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> -#include "fservestr.h" -#include <X11/fonts/fontutil.h> -#include <errno.h> -#include <limits.h> - -#include <time.h> -#define Time_t time_t - -#ifdef NCD -#include <ncd/nvram.h> -#endif - -#include <stddef.h> - -#ifndef MIN -#define MIN(a,b) ((a)<(b)?(a):(b)) -#endif -#define TimeCmp(a,c,b) ((int) ((a) - (b)) c 0) - -#define NONZEROMETRICS(pci) ((pci)->leftSideBearing || \ - (pci)->rightSideBearing || \ - (pci)->ascent || \ - (pci)->descent || \ - (pci)->characterWidth) - -/* - * SIZEOF(r) is in bytes, length fields in the protocol are in 32-bit words, - * so this converts for doing size comparisons. - */ -#define LENGTHOF(r) (SIZEOF(r) >> 2) - -/* Somewhat arbitrary limit on maximum reply size we'll try to read. */ -#define MAX_REPLY_LENGTH ((64 * 1024 * 1024) >> 2) - -extern void ErrorF(const char *f, ...); - -static int fs_read_glyphs ( FontPathElementPtr fpe, FSBlockDataPtr blockrec ); -static int fs_read_list ( FontPathElementPtr fpe, FSBlockDataPtr blockrec ); -static int fs_read_list_info ( FontPathElementPtr fpe, - FSBlockDataPtr blockrec ); - -extern fd_set _fs_fd_mask; - -static void fs_block_handler ( pointer data, OSTimePtr wt, - pointer LastSelectMask ); -static int fs_wakeup ( FontPathElementPtr fpe, unsigned long *mask ); - -/* - * List of all FPEs - */ -static FSFpePtr fs_fpes; -/* - * Union of all FPE blockStates - */ -static CARD32 fs_blockState; - -static int _fs_restart_connection ( FSFpePtr conn ); -static void fs_send_query_bitmaps ( FontPathElementPtr fpe, - FSBlockDataPtr blockrec ); -static int fs_send_close_font ( FontPathElementPtr fpe, Font id ); -static void fs_client_died ( pointer client, FontPathElementPtr fpe ); -static void _fs_client_access ( FSFpePtr conn, pointer client, Bool sync ); -static void _fs_client_resolution ( FSFpePtr conn ); -static fsGenericReply *fs_get_reply (FSFpePtr conn, int *error); -static int fs_await_reply (FSFpePtr conn); -static void _fs_do_blocked (FSFpePtr conn); -static void fs_cleanup_bfont (FSBlockedFontPtr bfont); - -char _fs_glyph_undefined; -char _fs_glyph_requested; -char _fs_glyph_zero_length; - -static int generationCount; - -int FontServerRequestTimeout = 30 * 1000; - -static void -_fs_close_server (FSFpePtr conn); - -static FSFpePtr -_fs_init_conn (char *servername); - -static int -_fs_wait_connect (FSFpePtr conn); - -static int -_fs_send_init_packets (FSFpePtr conn); - -static void -_fs_check_reconnect (FSFpePtr conn); - -static void -_fs_start_reconnect (FSFpePtr conn); - -static void -_fs_free_conn (FSFpePtr conn); - -static int -fs_free_fpe(FontPathElementPtr fpe); - -/* - * Font server access - * - * the basic idea for the non-blocking access is to have the function - * called multiple times until the actual data is returned, instead - * of ClientBlocked. - * - * the first call to the function will cause the request to be sent to - * the font server, and a block record to be stored in the fpe's list - * of outstanding requests. the FS block handler also sticks the - * proper set of fd's into the select mask. when data is ready to be - * read in, the FS wakup handler will be hit. this will read the - * data off the wire into the proper block record, and then signal the - * client that caused the block so that it can restart. it will then - * call the access function again, which will realize that the data has - * arrived and return it. - */ - - -#ifdef DEBUG -static void -_fs_add_req_log(FSFpePtr conn, int opcode) -{ - conn->current_seq++; - fprintf (stderr, "\t\tRequest: %5d Opcode: %2d\n", - conn->current_seq, opcode); - conn->reqbuffer[conn->reqindex].opcode = opcode; - conn->reqbuffer[conn->reqindex].sequence = conn->current_seq; - conn->reqindex++; - if (conn->reqindex == REQUEST_LOG_SIZE) - conn->reqindex = 0; -} - -static void -_fs_add_rep_log (FSFpePtr conn, fsGenericReply *rep) -{ - int i; - - for (i = 0; i < REQUEST_LOG_SIZE; i++) - if (conn->reqbuffer[i].sequence == rep->sequenceNumber) - break; - if (i == REQUEST_LOG_SIZE) - fprintf (stderr, "\t\t\t\t\tReply: %5d Opcode: unknown\n", - rep->sequenceNumber); - else - fprintf (stderr, "\t\t\t\t\tReply: %5d Opcode: %d\n", - rep->sequenceNumber, - conn->reqbuffer[i].opcode); -} - -#define _fs_reply_failed(rep, name, op) do { \ - if (rep) { \ - if (rep->type == FS_Error) \ - fprintf (stderr, "Error: %d Request: %s\n", \ - ((fsError *)rep)->request, #name); \ - else \ - fprintf (stderr, "Bad Length for %s Reply: %d %s %d\n", \ - #name, rep->length, op, LENGTHOF(name)); \ - } \ -} while (0) - -#else -#define _fs_add_req_log(conn,op) ((conn)->current_seq++) -#define _fs_add_rep_log(conn,rep) -#define _fs_reply_failed(rep,name,op) -#endif - -static Bool -fs_name_check(char *name) -{ -#ifdef __UNIXOS2__ - /* OS/2 uses D:/usr/X11R6/.... as fontfile pathnames, so check that - * there is not only a protocol/ prefix, but also that the first chars - * are not a drive letter - */ - if (name && isalpha(*name) && name[1] == ':') - return FALSE; -#endif - /* Just make sure there is a protocol/ prefix */ - return (name && *name != '/' && strchr(name, '/')); -} - -static void -_fs_client_resolution(FSFpePtr conn) -{ - fsSetResolutionReq srreq; - int num_res; - FontResolutionPtr res; - - res = GetClientResolutions(&num_res); - - if (num_res) { - srreq.reqType = FS_SetResolution; - srreq.num_resolutions = num_res; - srreq.length = (SIZEOF(fsSetResolutionReq) + - (num_res * SIZEOF(fsResolution)) + 3) >> 2; - - _fs_add_req_log(conn, FS_SetResolution); - if (_fs_write(conn, (char *) &srreq, SIZEOF(fsSetResolutionReq)) != -1) - (void)_fs_write_pad(conn, (char *) res, - (num_res * SIZEOF(fsResolution))); - } -} - -/* - * close font server and remove any state associated with - * this connection - this includes any client records. - */ - -static void -fs_close_conn(FSFpePtr conn) -{ - FSClientPtr client, nclient; - - _fs_close_server (conn); - - for (client = conn->clients; client; client = nclient) - { - nclient = client->next; - xfree (client); - } - conn->clients = NULL; -} - -/* - * the wakeup handlers have to be set when the FPE is open, and not - * removed until it is freed, in order to handle unexpected data, like - * events - */ -/* ARGSUSED */ -static int -fs_init_fpe(FontPathElementPtr fpe) -{ - FSFpePtr conn; - char *name; - int err; - int ret; - - /* open font server */ - /* create FS specific fpe info */ - name = fpe->name; - - /* hack for old style names */ - if (*name == ':') - name++; /* skip ':' */ - - conn = _fs_init_conn (name); - if (!conn) - err = AllocError; - else - { - err = init_fs_handlers (fpe, fs_block_handler); - if (err != Successful) - { - _fs_free_conn (conn); - err = AllocError; - } - else - { - fpe->private = conn; - conn->next = fs_fpes; - fs_fpes = conn; - ret = _fs_wait_connect (conn); - if (ret != FSIO_READY) - { - fs_free_fpe (fpe); - err = BadFontPath; - } - else - err = Successful; - } - } - - if (err == Successful) - { -#ifdef NCD - if (configData.ExtendedFontDiags) - printf("Connected to font server \"%s\"\n", name); -#endif -#ifdef DEBUG - fprintf (stderr, "connected to FS \"%s\"\n", name); -#endif - } - else - { -#ifdef DEBUG - fprintf(stderr, "failed to connect to FS \"%s\" %d\n", name, err); -#endif -#ifdef NCD - if (configData.ExtendedFontDiags) - printf("Failed to connect to font server \"%s\"\n", name); -#endif - ; - } - return err; -} - -static int -fs_reset_fpe(FontPathElementPtr fpe) -{ - (void) _fs_send_init_packets((FSFpePtr) fpe->private); - return Successful; -} - -/* - * this shouldn't be called till all refs to the FPE are gone - */ - -static int -fs_free_fpe(FontPathElementPtr fpe) -{ - FSFpePtr conn = (FSFpePtr) fpe->private, *prev; - - /* unhook from chain of all font servers */ - for (prev = &fs_fpes; *prev; prev = &(*prev)->next) - { - if (*prev == conn) - { - *prev = conn->next; - break; - } - } - _fs_unmark_block (conn, conn->blockState); - fs_close_conn(conn); - remove_fs_handlers(fpe, fs_block_handler, fs_fpes == 0); - _fs_free_conn (conn); - fpe->private = (pointer) 0; - -#ifdef NCD - if (configData.ExtendedFontDiags) - printf("Disconnected from font server \"%s\"\n", fpe->name); -#endif -#ifdef DEBUG - fprintf (stderr, "disconnect from FS \"%s\"\n", fpe->name); -#endif - - return Successful; -} - -static FSBlockDataPtr -fs_new_block_rec(FontPathElementPtr fpe, pointer client, int type) -{ - FSBlockDataPtr blockrec, - *prev; - FSFpePtr conn = (FSFpePtr) fpe->private; - int size; - - switch (type) { - case FS_OPEN_FONT: - size = sizeof(FSBlockedFontRec); - break; - case FS_LOAD_GLYPHS: - size = sizeof(FSBlockedGlyphRec); - break; - case FS_LIST_FONTS: - size = sizeof(FSBlockedListRec); - break; - case FS_LIST_WITH_INFO: - size = sizeof(FSBlockedListInfoRec); - break; - default: - size = 0; - break; - } - blockrec = (FSBlockDataPtr) xalloc(sizeof(FSBlockDataRec) + size); - if (!blockrec) - return (FSBlockDataPtr) 0; - blockrec->data = (pointer) (blockrec + 1); - blockrec->client = client; - blockrec->sequenceNumber = -1; - blockrec->errcode = StillWorking; - blockrec->type = type; - blockrec->depending = 0; - blockrec->next = (FSBlockDataPtr) 0; - - /* stick it on the end of the list (since its expected last) */ - for (prev = &conn->blockedRequests; *prev; prev = &(*prev)->next) - ; - *prev = blockrec; - - return blockrec; -} - -static void -_fs_set_pending_reply (FSFpePtr conn) -{ - FSBlockDataPtr blockrec; - - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - if (blockrec->errcode == StillWorking) - break; - if (blockrec) - { - conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout; - _fs_mark_block (conn, FS_PENDING_REPLY); - } - else - _fs_unmark_block (conn, FS_PENDING_REPLY); -} - -static void -_fs_remove_block_rec(FSFpePtr conn, FSBlockDataPtr blockrec) -{ - FSBlockDataPtr *prev; - - for (prev = &conn->blockedRequests; *prev; prev = &(*prev)->next) - if (*prev == blockrec) - { - *prev = blockrec->next; - break; - } - if (blockrec->type == FS_LOAD_GLYPHS) - { - FSBlockedGlyphPtr bglyph = (FSBlockedGlyphPtr)blockrec->data; - if (bglyph->num_expected_ranges) - xfree(bglyph->expected_ranges); - } - xfree(blockrec); - _fs_set_pending_reply (conn); -} - -static void -_fs_signal_clients_depending(FSClientsDependingPtr *clients_depending) -{ - FSClientsDependingPtr p; - - while ((p = *clients_depending)) - { - *clients_depending = p->next; - ClientSignal(p->client); - xfree(p); - } -} - -static int -_fs_add_clients_depending(FSClientsDependingPtr *clients_depending, pointer client) -{ - FSClientsDependingPtr new, cd; - - for (; (cd = *clients_depending); - clients_depending = &(*clients_depending)->next) - { - if (cd->client == client) - return Suspended; - } - - new = (FSClientsDependingPtr)xalloc (sizeof (FSClientsDependingRec)); - if (!new) - return BadAlloc; - - new->client = client; - new->next = 0; - *clients_depending = new; - return Suspended; -} - -/* - * When a request is aborted due to a font server failure, - * signal any depending clients to restart their dependant - * requests - */ -static void -_fs_clean_aborted_blockrec(FSFpePtr conn, FSBlockDataPtr blockrec) -{ - switch(blockrec->type) { - case FS_OPEN_FONT: { - FSBlockedFontPtr bfont = (FSBlockedFontPtr)blockrec->data; - - fs_cleanup_bfont (bfont); - _fs_signal_clients_depending(&bfont->clients_depending); - break; - } - case FS_LOAD_GLYPHS: { - FSBlockedGlyphPtr bglyph = (FSBlockedGlyphPtr)blockrec->data; - - _fs_clean_aborted_loadglyphs(bglyph->pfont, - bglyph->num_expected_ranges, - bglyph->expected_ranges); - _fs_signal_clients_depending(&bglyph->clients_depending); - break; - } - case FS_LIST_FONTS: - break; - case FS_LIST_WITH_INFO: { - FSBlockedListInfoPtr binfo; - binfo = (FSBlockedListInfoPtr) blockrec->data; - if (binfo->status == FS_LFWI_REPLY) - FD_SET(conn->fs_fd, &_fs_fd_mask); - _fs_free_props (&binfo->info); - } - default: - break; - } -} - -static void -fs_abort_blockrec(FSFpePtr conn, FSBlockDataPtr blockrec) -{ - _fs_clean_aborted_blockrec (conn, blockrec); - _fs_remove_block_rec (conn, blockrec); -} - -/* - * Tell the font server we've failed to complete an open and - * then unload the partially created font - */ -static void -fs_cleanup_bfont (FSBlockedFontPtr bfont) -{ - FSFontDataRec *fsd; - - if (bfont->pfont) - { - fsd = (FSFontDataRec *) bfont->pfont->fpePrivate; - - /* make sure the FS knows we choked on it */ - fs_send_close_font(bfont->pfont->fpe, bfont->fontid); - - /* - * Either unload the font if it's being opened for - * the first time, or smash the generation field to - * mark this font as an orphan - */ - if (!(bfont->flags & FontReopen)) - { - if (bfont->freeFont) - (*bfont->pfont->unload_font) (bfont->pfont); -#ifdef DEBUG - else - fprintf (stderr, "Not freeing other font in cleanup_bfont\n"); -#endif - bfont->pfont = 0; - } - else - fsd->generation = -1; - } -} - -/* - * Check to see if a complete reply is waiting - */ -static fsGenericReply * -fs_get_reply (FSFpePtr conn, int *error) -{ - char *buf; - fsGenericReply *rep; - int ret; - - /* block if the connection is down or paused in lfwi */ - if (conn->fs_fd == -1 || !FD_ISSET (conn->fs_fd, &_fs_fd_mask)) - { - *error = FSIO_BLOCK; - return 0; - } - - ret = _fs_start_read (conn, sizeof (fsGenericReply), &buf); - if (ret != FSIO_READY) - { - *error = FSIO_BLOCK; - return 0; - } - - rep = (fsGenericReply *) buf; - - /* - * Refuse to accept replies longer than a maximum reasonable length, - * before we pass to _fs_start_read, since it will try to resize the - * incoming connection buffer to this size. Also avoids integer overflow - * on 32-bit systems. - */ - if (rep->length > MAX_REPLY_LENGTH) - { - ErrorF("fserve: reply length %d > MAX_REPLY_LENGTH, disconnecting" - " from font server\n", rep->length); - _fs_connection_died (conn); - *error = FSIO_ERROR; - return 0; - } - - ret = _fs_start_read (conn, rep->length << 2, &buf); - if (ret != FSIO_READY) - { - *error = FSIO_BLOCK; - return 0; - } - - *error = FSIO_READY; - - return (fsGenericReply *) buf; -} - -static Bool -fs_reply_ready (FSFpePtr conn) -{ - fsGenericReply *rep; - - if (conn->fs_fd == -1 || !FD_ISSET (conn->fs_fd, &_fs_fd_mask)) - return FALSE; - if (fs_data_read (conn) < sizeof (fsGenericReply)) - return FALSE; - rep = (fsGenericReply *) (conn->inBuf.buf + conn->inBuf.remove); - if (fs_data_read (conn) < rep->length << 2) - return FALSE; - return TRUE; -} - -static void -_fs_pending_reply (FSFpePtr conn) -{ - if (!(conn->blockState & FS_PENDING_REPLY)) - { - _fs_mark_block (conn, FS_PENDING_REPLY); - conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout; - } -} - -static void -_fs_prepare_for_reply (FSFpePtr conn) -{ - _fs_pending_reply (conn); - _fs_flush (conn); -} - -/* - * Block (for a while) awaiting a complete reply - */ -static int -fs_await_reply (FSFpePtr conn) -{ - int ret; - - if (conn->blockState & FS_COMPLETE_REPLY) - return FSIO_READY; - - while (!fs_get_reply (conn, &ret)) - { - if (ret != FSIO_BLOCK) - return ret; - if (_fs_wait_for_readable (conn, FontServerRequestTimeout) != FSIO_READY) - { - _fs_connection_died (conn); - return FSIO_ERROR; - } - } - return FSIO_READY; -} - -/* - * Process the reply to an OpenBitmapFont request - */ -static int -fs_read_open_font(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data; - fsOpenBitmapFontReply *rep; - FSBlockDataPtr blockOrig; - FSBlockedFontPtr origBfont; - int ret; - - rep = (fsOpenBitmapFontReply *) fs_get_reply (conn, &ret); - if (!rep || rep->type == FS_Error || - (rep->length != LENGTHOF(fsOpenBitmapFontReply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - fs_cleanup_bfont (bfont); - _fs_reply_failed (rep, fsOpenBitmapFontReply, "!="); - return BadFontName; - } - - /* If we're not reopening a font and FS detected a duplicate font - open request, replace our reference to the new font with a - reference to an existing font (possibly one not finished - opening). If this is a reopen, keep the new font reference... - it's got the metrics and extents we read when the font was opened - before. This also gives us the freedom to easily close the font - if we we decide (in fs_read_query_info()) that we don't like what - we got. */ - - if (rep->otherid && !(bfont->flags & FontReopen)) - { - fs_cleanup_bfont (bfont); - - /* Find old font if we're completely done getting it from server. */ - bfont->pfont = find_old_font(rep->otherid); - bfont->freeFont = FALSE; - bfont->fontid = rep->otherid; - bfont->state = FS_DONE_REPLY; - /* - * look for a blocked request to open the same font - */ - for (blockOrig = conn->blockedRequests; - blockOrig; - blockOrig = blockOrig->next) - { - if (blockOrig != blockrec && blockOrig->type == FS_OPEN_FONT) - { - origBfont = (FSBlockedFontPtr) blockOrig->data; - if (origBfont->fontid == rep->otherid) - { - blockrec->depending = blockOrig->depending; - blockOrig->depending = blockrec; - bfont->state = FS_DEPENDING; - bfont->pfont = origBfont->pfont; - break; - } - } - } - if (bfont->pfont == NULL) - { - /* XXX - something nasty happened */ - ret = BadFontName; - } - else - ret = AccessDone; - } - else - { - bfont->pfont->info.cachable = rep->cachable != 0; - bfont->state = FS_INFO_REPLY; - /* - * Reset the blockrec for the next reply - */ - blockrec->sequenceNumber = bfont->queryInfoSequence; - conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout; - ret = StillWorking; - } - _fs_done_read (conn, rep->length << 2); - return ret; -} - -static Bool -fs_fonts_match (FontInfoPtr pInfo1, FontInfoPtr pInfo2) -{ - int i; - - if (pInfo1->firstCol != pInfo2->firstCol || - pInfo1->lastCol != pInfo2->lastCol || - pInfo1->firstRow != pInfo2->firstRow || - pInfo1->lastRow != pInfo2->lastRow || - pInfo1->defaultCh != pInfo2->defaultCh || - pInfo1->noOverlap != pInfo2->noOverlap || - pInfo1->terminalFont != pInfo2->terminalFont || - pInfo1->constantMetrics != pInfo2->constantMetrics || - pInfo1->constantWidth != pInfo2->constantWidth || - pInfo1->inkInside != pInfo2->inkInside || - pInfo1->inkMetrics != pInfo2->inkMetrics || - pInfo1->allExist != pInfo2->allExist || - pInfo1->drawDirection != pInfo2->drawDirection || - pInfo1->cachable != pInfo2->cachable || - pInfo1->anamorphic != pInfo2->anamorphic || - pInfo1->maxOverlap != pInfo2->maxOverlap || - pInfo1->fontAscent != pInfo2->fontAscent || - pInfo1->fontDescent != pInfo2->fontDescent || - pInfo1->nprops != pInfo2->nprops) - return FALSE; - -#define MATCH(xci1, xci2) \ - (((xci1).leftSideBearing == (xci2).leftSideBearing) && \ - ((xci1).rightSideBearing == (xci2).rightSideBearing) && \ - ((xci1).characterWidth == (xci2).characterWidth) && \ - ((xci1).ascent == (xci2).ascent) && \ - ((xci1).descent == (xci2).descent) && \ - ((xci1).attributes == (xci2).attributes)) - - if (!MATCH(pInfo1->maxbounds, pInfo2->maxbounds) || - !MATCH(pInfo1->minbounds, pInfo2->minbounds) || - !MATCH(pInfo1->ink_maxbounds, pInfo2->ink_maxbounds) || - !MATCH(pInfo1->ink_minbounds, pInfo2->ink_minbounds)) - return FALSE; - -#undef MATCH - - for (i = 0; i < pInfo1->nprops; i++) - if (pInfo1->isStringProp[i] != - pInfo2->isStringProp[i] || - pInfo1->props[i].name != - pInfo2->props[i].name || - pInfo1->props[i].value != - pInfo2->props[i].value) - { - return FALSE; - } - return TRUE; -} - -static int -fs_read_query_info(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data; - FSFpePtr conn = (FSFpePtr) fpe->private; - fsQueryXInfoReply *rep; - char *buf; - long bufleft = 0; /* length of reply left to use */ - fsPropInfo *pi; - fsPropOffset *po; - pointer pd; - FontInfoPtr pInfo; - FontInfoRec tempInfo; - int err; - int ret; - - rep = (fsQueryXInfoReply *) fs_get_reply (conn, &ret); - if (!rep || rep->type == FS_Error || - (rep->length < LENGTHOF(fsQueryXInfoReply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - fs_cleanup_bfont (bfont); - _fs_reply_failed (rep, fsQueryXInfoReply, "<"); - return BadFontName; - } - - /* If this is a reopen, accumulate the query info into a dummy - font and compare to our original data. */ - if (bfont->flags & FontReopen) - pInfo = &tempInfo; - else - pInfo = &bfont->pfont->info; - - buf = (char *) rep; - buf += SIZEOF(fsQueryXInfoReply); - - bufleft = rep->length << 2; - bufleft -= SIZEOF(fsQueryXInfoReply); - - /* move the data over */ - fsUnpack_XFontInfoHeader(rep, pInfo); - - /* compute accelerators */ - _fs_init_fontinfo(conn, pInfo); - - /* Compute offsets into the reply */ - if (bufleft < SIZEOF(fsPropInfo)) - { - ret = -1; -#ifdef DEBUG - fprintf(stderr, "fsQueryXInfo: bufleft (%ld) < SIZEOF(fsPropInfo)\n", - bufleft); -#endif - goto bail; - } - pi = (fsPropInfo *) buf; - buf += SIZEOF (fsPropInfo); - bufleft -= SIZEOF (fsPropInfo); - - if ((bufleft / SIZEOF (fsPropOffset)) < pi->num_offsets) - { - ret = -1; -#ifdef DEBUG - fprintf(stderr, - "fsQueryXInfo: (bufleft / SIZEOF (fsPropOffset)) (%ld) < pi->num_offsets (%d)\n", - bufleft / SIZEOF (fsPropOffset), pi->num_offsets); -#endif - goto bail; - } - po = (fsPropOffset *) buf; - buf += pi->num_offsets * SIZEOF(fsPropOffset); - bufleft -= pi->num_offsets * SIZEOF(fsPropOffset); - - if (bufleft < pi->data_len) - { - ret = -1; -#ifdef DEBUG - fprintf(stderr, - "fsQueryXInfo: bufleft (%ld) < data_len (%d)\n", - bufleft, pi->data_len); -#endif - goto bail; - } - pd = (pointer) buf; - buf += pi->data_len; - bufleft -= pi->data_len; - - /* convert the properties and step over the reply */ - ret = _fs_convert_props(pi, po, pd, pInfo); - bail: - _fs_done_read (conn, rep->length << 2); - - if (ret == -1) - { - fs_cleanup_bfont (bfont); - return AllocError; - } - - if (bfont->flags & FontReopen) - { - /* We're reopening a font that we lost because of a downed - connection. In the interest of avoiding corruption from - opening a different font than the old one (we already have - its metrics, extents, and probably some of its glyphs), - verify that the metrics and properties all match. */ - - if (fs_fonts_match (pInfo, &bfont->pfont->info)) - { - err = Successful; - bfont->state = FS_DONE_REPLY; - } - else - { - fs_cleanup_bfont (bfont); - err = BadFontName; - } - _fs_free_props (pInfo); - - return err; - } - - /* - * Ask for terminal format fonts if possible - */ - if (bfont->pfont->info.terminalFont) - bfont->format = ((bfont->format & ~ (BitmapFormatImageRectMask)) | - BitmapFormatImageRectMax); - - /* - * Figure out if the whole font should get loaded right now. - */ - if (glyphCachingMode == CACHING_OFF || - (glyphCachingMode == CACHE_16_BIT_GLYPHS - && !bfont->pfont->info.lastRow)) - { - bfont->flags |= FontLoadAll; - } - - /* - * Ready to send the query bitmaps; the terminal font bit has - * been computed and glyphCaching has been considered - */ - if (bfont->flags & FontLoadBitmaps) - { - fs_send_query_bitmaps (fpe, blockrec); - _fs_flush (conn); - } - - bfont->state = FS_EXTENT_REPLY; - - /* - * Reset the blockrec for the next reply - */ - blockrec->sequenceNumber = bfont->queryExtentsSequence; - conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout; - - return StillWorking; -} - -static int -fs_read_extent_info(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data; - FSFontDataPtr fsd = (FSFontDataPtr) bfont->pfont->fpePrivate; - FSFontPtr fsfont = (FSFontPtr) bfont->pfont->fontPrivate; - fsQueryXExtents16Reply *rep; - char *buf; - int i; - int numExtents; - int numInfos; - int ret; - Bool haveInk = FALSE; /* need separate ink metrics? */ - CharInfoPtr ci, pCI; - char *fsci; - fsXCharInfo fscilocal; - FontInfoRec *fi = &bfont->pfont->info; - - rep = (fsQueryXExtents16Reply *) fs_get_reply (conn, &ret); - if (!rep || rep->type == FS_Error || - (rep->length < LENGTHOF(fsQueryXExtents16Reply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - fs_cleanup_bfont (bfont); - _fs_reply_failed (rep, fsQueryXExtents16Reply, "<"); - return BadFontName; - } - - /* move the data over */ - /* need separate inkMetrics for fixed font server protocol version */ - numExtents = rep->num_extents; - numInfos = numExtents; - if (bfont->pfont->info.terminalFont && conn->fsMajorVersion > 1) - { - numInfos *= 2; - haveInk = TRUE; - } - if (numInfos >= (INT_MAX / sizeof(CharInfoRec))) { -#ifdef DEBUG - fprintf(stderr, - "fsQueryXExtents16: numInfos (%d) >= %ld\n", - numInfos, (INT_MAX / sizeof(CharInfoRec))); -#endif - pCI = NULL; - } - else if (numExtents > ((rep->length - LENGTHOF(fsQueryXExtents16Reply)) - / LENGTHOF(fsXCharInfo))) { -#ifdef DEBUG - fprintf(stderr, - "fsQueryXExtents16: numExtents (%d) > (%d - %d) / %d\n", - numExtents, rep->length, - LENGTHOF(fsQueryXExtents16Reply), LENGTHOF(fsXCharInfo)); -#endif - pCI = NULL; - } - else - pCI = malloc(sizeof(CharInfoRec) * numInfos); - - if (!pCI) - { - _fs_done_read (conn, rep->length << 2); - fs_cleanup_bfont(bfont); - return AllocError; - } - fsfont->encoding = pCI; - if (haveInk) - fsfont->inkMetrics = pCI + numExtents; - else - fsfont->inkMetrics = pCI; - - buf = (char *) rep; - buf += SIZEOF (fsQueryXExtents16Reply); - fsci = buf; - - fsd->glyphs_to_get = 0; - ci = fsfont->inkMetrics; - for (i = 0; i < numExtents; i++) - { - memcpy(&fscilocal, fsci, SIZEOF(fsXCharInfo)); /* align it */ - _fs_convert_char_info(&fscilocal, &ci->metrics); - /* Bounds check. */ - if (ci->metrics.ascent > fi->maxbounds.ascent) - { - ErrorF("fserve: warning: %s %s ascent (%d) > maxascent (%d)\n", - fpe->name, fsd->name, - ci->metrics.ascent, fi->maxbounds.ascent); - ci->metrics.ascent = fi->maxbounds.ascent; - } - if (ci->metrics.descent > fi->maxbounds.descent) - { - ErrorF("fserve: warning: %s %s descent (%d) > maxdescent (%d)\n", - fpe->name, fsd->name, - ci->metrics.descent, fi->maxbounds.descent); - ci->metrics.descent = fi->maxbounds.descent; - } - fsci = fsci + SIZEOF(fsXCharInfo); - /* Initialize the bits field for later glyph-caching use */ - if (NONZEROMETRICS(&ci->metrics)) - { - if (!haveInk && - (ci->metrics.leftSideBearing == ci->metrics.rightSideBearing || - ci->metrics.ascent == -ci->metrics.descent)) - pCI[i].bits = &_fs_glyph_zero_length; - else - { - pCI[i].bits = &_fs_glyph_undefined; - fsd->glyphs_to_get++; - } - } - else - pCI[i].bits = (char *)0; - ci++; - } - - /* Done with reply */ - _fs_done_read (conn, rep->length << 2); - - /* build bitmap metrics, ImageRectMax style */ - if (haveInk) - { - CharInfoPtr ii; - - ci = fsfont->encoding; - ii = fsfont->inkMetrics; - for (i = 0; i < numExtents; i++, ci++, ii++) - { - if (NONZEROMETRICS(&ii->metrics)) - { - ci->metrics.leftSideBearing = FONT_MIN_LEFT(fi); - ci->metrics.rightSideBearing = FONT_MAX_RIGHT(fi); - ci->metrics.ascent = FONT_MAX_ASCENT(fi); - ci->metrics.descent = FONT_MAX_DESCENT(fi); - ci->metrics.characterWidth = FONT_MAX_WIDTH(fi); - ci->metrics.attributes = ii->metrics.attributes; - } - else - { - ci->metrics = ii->metrics; - } - /* Bounds check. */ - if (ci->metrics.ascent > fi->maxbounds.ascent) - { - ErrorF("fserve: warning: %s %s ascent (%d) " - "> maxascent (%d)\n", - fpe->name, fsd->name, - ci->metrics.ascent, fi->maxbounds.ascent); - ci->metrics.ascent = fi->maxbounds.ascent; - } - if (ci->metrics.descent > fi->maxbounds.descent) - { - ErrorF("fserve: warning: %s %s descent (%d) " - "> maxdescent (%d)\n", - fpe->name, fsd->name, - ci->metrics.descent, fi->maxbounds.descent); - ci->metrics.descent = fi->maxbounds.descent; - } - } - } - { - unsigned int r, c, numCols, firstCol; - - firstCol = bfont->pfont->info.firstCol; - numCols = bfont->pfont->info.lastCol - firstCol + 1; - c = bfont->pfont->info.defaultCh; - fsfont->pDefault = 0; - if (bfont->pfont->info.lastRow) - { - r = c >> 8; - r -= bfont->pfont->info.firstRow; - c &= 0xff; - c -= firstCol; - if (r < bfont->pfont->info.lastRow-bfont->pfont->info.firstRow+1 && - c < numCols) - fsfont->pDefault = &pCI[r * numCols + c]; - } - else - { - c -= firstCol; - if (c < numCols) - fsfont->pDefault = &pCI[c]; - } - } - bfont->state = FS_GLYPHS_REPLY; - - if (bfont->flags & FontLoadBitmaps) - { - /* - * Reset the blockrec for the next reply - */ - blockrec->sequenceNumber = bfont->queryBitmapsSequence; - conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout; - return StillWorking; - } - return Successful; -} - -#ifdef DEBUG -static char *fs_open_states[] = { - "OPEN_REPLY ", - "INFO_REPLY ", - "EXTENT_REPLY", - "GLYPHS_REPLY", - "DONE_REPLY ", - "DEPENDING ", -}; -#endif - -static int -fs_do_open_font(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data; - int err; - -#ifdef DEBUG - fprintf (stderr, "fs_do_open_font state %s %s\n", - fs_open_states[bfont->state], - ((FSFontDataPtr) (bfont->pfont->fpePrivate))->name); -#endif - err = BadFontName; - switch (bfont->state) { - case FS_OPEN_REPLY: - err = fs_read_open_font(fpe, blockrec); - if (err != StillWorking) { /* already loaded, or error */ - /* if font's already loaded, massage error code */ - switch (bfont->state) { - case FS_DONE_REPLY: - err = Successful; - break; - case FS_DEPENDING: - err = StillWorking; - break; - } - } - break; - case FS_INFO_REPLY: - err = fs_read_query_info(fpe, blockrec); - break; - case FS_EXTENT_REPLY: - err = fs_read_extent_info(fpe, blockrec); - break; - case FS_GLYPHS_REPLY: - if (bfont->flags & FontLoadBitmaps) - err = fs_read_glyphs(fpe, blockrec); - break; - case FS_DEPENDING: /* can't happen */ - default: - break; - } -#ifdef DEBUG - fprintf (stderr, "fs_do_open_font err %d\n", err); -#endif - if (err != StillWorking) - { - bfont->state = FS_DONE_REPLY; /* for _fs_load_glyphs() */ - while ((blockrec = blockrec->depending)) - { - bfont = (FSBlockedFontPtr) blockrec->data; - bfont->state = FS_DONE_REPLY; /* for _fs_load_glyphs() */ - } - } - return err; -} - -void -_fs_mark_block (FSFpePtr conn, CARD32 mask) -{ - conn->blockState |= mask; - fs_blockState |= mask; -} - -void -_fs_unmark_block (FSFpePtr conn, CARD32 mask) -{ - FSFpePtr c; - - if (conn->blockState & mask) - { - conn->blockState &= ~mask; - fs_blockState = 0; - for (c = fs_fpes; c; c = c->next) - fs_blockState |= c->blockState; - } -} - -/* ARGSUSED */ -static void -fs_block_handler(pointer data, OSTimePtr wt, pointer LastSelectMask) -{ - static struct timeval block_timeout; - CARD32 now, earliest, wakeup; - int soonest; - FSFpePtr conn; - - XFD_ORSET((fd_set *)LastSelectMask, (fd_set *)LastSelectMask, - &_fs_fd_mask); - /* - * Flush all pending output - */ - if (fs_blockState & FS_PENDING_WRITE) - for (conn = fs_fpes; conn; conn = conn->next) - if (conn->blockState & FS_PENDING_WRITE) - _fs_flush (conn); - /* - * Check for any fpe with a complete reply, set sleep time to zero - */ - if (fs_blockState & FS_COMPLETE_REPLY) - { - block_timeout.tv_sec = 0; - block_timeout.tv_usec = 0; - if (*wt == NULL) - *wt = &block_timeout; - else - **wt = block_timeout; - } - /* - * Walk through fpe list computing sleep time - */ - else if (fs_blockState & (FS_BROKEN_WRITE| - FS_BROKEN_CONNECTION| - FS_PENDING_REPLY| - FS_RECONNECTING)) - { - now = GetTimeInMillis (); - earliest = now + 10000000; - for (conn = fs_fpes; conn; conn = conn->next) - { - if (conn->blockState & FS_RECONNECTING) - { - wakeup = conn->blockedConnectTime; - if (TimeCmp (wakeup, <, earliest)) - earliest = wakeup; - } - if (conn->blockState & FS_BROKEN_CONNECTION) - { - wakeup = conn->brokenConnectionTime; - if (TimeCmp (wakeup, <, earliest)) - earliest = wakeup; - } - if (conn->blockState & FS_BROKEN_WRITE) - { - wakeup = conn->brokenWriteTime; - if (TimeCmp (wakeup, <, earliest)) - earliest = wakeup; - } - if (conn->blockState & FS_PENDING_REPLY) - { - wakeup = conn->blockedReplyTime; - if (TimeCmp (wakeup, <, earliest)) - earliest = wakeup; - } - } - soonest = earliest - now; - if (soonest < 0) - soonest = 0; - block_timeout.tv_sec = soonest / 1000; - block_timeout.tv_usec = (soonest % 1000) * 1000; - if (*wt == NULL) - *wt = &block_timeout; - else if (soonest < (*wt)->tv_sec * 1000 + (*wt)->tv_usec / 1000) - **wt = block_timeout; - } -} - -static void -fs_handle_unexpected(FSFpePtr conn, fsGenericReply *rep) -{ - if (rep->type == FS_Event && rep->data1 == KeepAlive) - { - fsNoopReq req; - - /* ping it back */ - req.reqType = FS_Noop; - req.length = SIZEOF(fsNoopReq) >> 2; - _fs_add_req_log(conn, FS_Noop); - _fs_write(conn, (char *) &req, SIZEOF(fsNoopReq)); - } - /* this should suck up unexpected replies and events */ - _fs_done_read (conn, rep->length << 2); -} - -static void -fs_read_reply (FontPathElementPtr fpe, pointer client) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockDataPtr blockrec; - int ret; - int err; - fsGenericReply *rep; - - if ((rep = fs_get_reply (conn, &ret))) - { - _fs_add_rep_log (conn, rep); - for (blockrec = conn->blockedRequests; - blockrec; - blockrec = blockrec->next) - { - if (blockrec->sequenceNumber == rep->sequenceNumber) - break; - } - err = Successful; - if (!blockrec) - { - fs_handle_unexpected(conn, rep); - } - else - { - /* - * go read it, and if we're done, - * wake up the appropriate client - */ - switch (blockrec->type) { - case FS_OPEN_FONT: - blockrec->errcode = fs_do_open_font(fpe, blockrec); - break; - case FS_LOAD_GLYPHS: - blockrec->errcode = fs_read_glyphs(fpe, blockrec); - break; - case FS_LIST_FONTS: - blockrec->errcode = fs_read_list(fpe, blockrec); - break; - case FS_LIST_WITH_INFO: - blockrec->errcode = fs_read_list_info(fpe, blockrec); - break; - default: - break; - } - err = blockrec->errcode; - if (err != StillWorking) - { - while (blockrec) - { - blockrec->errcode = err; - if (client != blockrec->client) - ClientSignal(blockrec->client); - blockrec = blockrec->depending; - } - _fs_unmark_block (conn, FS_PENDING_REPLY); - } - } - if (fs_reply_ready (conn)) - _fs_mark_block (conn, FS_COMPLETE_REPLY); - else - _fs_unmark_block (conn, FS_COMPLETE_REPLY); - } -} - -static int -fs_wakeup(FontPathElementPtr fpe, unsigned long *mask) -{ - fd_set *LastSelectMask = (fd_set *) mask; - FSFpePtr conn = (FSFpePtr) fpe->private; - - /* - * Don't continue if the fd is -1 (which will be true when the - * font server terminates - */ - if ((conn->blockState & FS_RECONNECTING)) - _fs_check_reconnect (conn); - else if ((conn->blockState & FS_COMPLETE_REPLY) || - (conn->fs_fd != -1 && FD_ISSET(conn->fs_fd, LastSelectMask))) - fs_read_reply (fpe, 0); - if (conn->blockState & (FS_PENDING_REPLY|FS_BROKEN_CONNECTION|FS_BROKEN_WRITE)) - _fs_do_blocked (conn); -#ifdef DEBUG - { - FSBlockDataPtr blockrec; - FSBlockedFontPtr bfont; - FSBlockedListPtr blist; - static CARD32 lastState; - static FSBlockDataPtr lastBlock; - - if (conn->blockState || conn->blockedRequests || lastState || lastBlock) - { - fprintf (stderr, " Block State 0x%x\n", (int) conn->blockState); - lastState = conn->blockState; - lastBlock = conn->blockedRequests; - } - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - { - switch (blockrec->type) { - case FS_OPEN_FONT: - bfont = (FSBlockedFontPtr) blockrec->data; - fprintf (stderr, " Blocked font errcode %d sequence %d state %s %s\n", - blockrec->errcode, - blockrec->sequenceNumber, - fs_open_states[bfont->state], - bfont->pfont ? - ((FSFontDataPtr) (bfont->pfont->fpePrivate))->name : - "<freed>"); - break; - case FS_LIST_FONTS: - blist = (FSBlockedListPtr) blockrec->data; - fprintf (stderr, " Blocked list errcode %d sequence %d\n", - blockrec->errcode, blockrec->sequenceNumber); - break; - default: - fprintf (stderr, " Blocked type %d errcode %d sequence %d\n", - blockrec->type, - blockrec->errcode, - blockrec->sequenceNumber); - break; - } - } - } -#endif - return FALSE; -} - -/* - * Notice a dead connection and prepare for reconnect - */ - -void -_fs_connection_died(FSFpePtr conn) -{ - if (conn->blockState & FS_BROKEN_CONNECTION) - return; - fs_close_conn(conn); - conn->brokenConnectionTime = GetTimeInMillis (); - _fs_mark_block (conn, FS_BROKEN_CONNECTION); - _fs_unmark_block (conn, FS_BROKEN_WRITE|FS_PENDING_WRITE|FS_RECONNECTING); -} - -/* - * Signal clients that the connection has come back up - */ -static int -_fs_restart_connection(FSFpePtr conn) -{ - FSBlockDataPtr block; - - _fs_unmark_block (conn, FS_GIVE_UP); - while ((block = (FSBlockDataPtr) conn->blockedRequests)) - { - if (block->errcode == StillWorking) - { - ClientSignal(block->client); - fs_abort_blockrec(conn, block); - } - } - return TRUE; -} - -/* - * Declare this font server connection useless - */ -static void -_fs_giveup (FSFpePtr conn) -{ - FSBlockDataPtr block; - - if (conn->blockState & FS_GIVE_UP) - return; -#ifdef DEBUG - fprintf (stderr, "give up on FS \"%s\"\n", conn->servername); -#endif - _fs_mark_block (conn, FS_GIVE_UP); - while ((block = (FSBlockDataPtr) conn->blockedRequests)) - { - if (block->errcode == StillWorking) - { - ClientSignal (block->client); - fs_abort_blockrec (conn, block); - } - } - if (conn->fs_fd >= 0) - _fs_connection_died (conn); -} - -static void -_fs_do_blocked (FSFpePtr conn) -{ - CARD32 now; - - now = GetTimeInMillis (); - if ((conn->blockState & FS_PENDING_REPLY) && - TimeCmp (conn->blockedReplyTime, <=, now)) - { - _fs_giveup (conn); - } - else - { - if (conn->blockState & FS_BROKEN_CONNECTION) - { - /* Try to reconnect broken connections */ - if (TimeCmp (conn->brokenConnectionTime, <=, now)) - _fs_start_reconnect (conn); - } - else if (conn->blockState & FS_BROKEN_WRITE) - { - /* Try to flush blocked connections */ - if (TimeCmp (conn->brokenWriteTime, <=, now)) - _fs_flush (conn); - } - } -} - -/* - * sends the actual request out - */ -/* ARGSUSED */ -static int -fs_send_open_font(pointer client, FontPathElementPtr fpe, Mask flags, - char *name, int namelen, - fsBitmapFormat format, fsBitmapFormatMask fmask, - XID id, FontPtr *ppfont) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FontPtr font; - FSBlockDataPtr blockrec = NULL; - FSBlockedFontPtr bfont; - FSFontDataPtr fsd; - fsOpenBitmapFontReq openreq; - fsQueryXInfoReq inforeq; - fsQueryXExtents16Req extreq; - int err; - unsigned char buf[1024]; - - if (conn->blockState & FS_GIVE_UP) - return BadFontName; - - if (namelen <= 0 || namelen > sizeof (buf) - 1) - return BadFontName; - - /* - * Get the font structure put together, either by reusing - * the existing one or creating a new one - */ - if (flags & FontReopen) - { - Atom nameatom, fn = None; - int i; - - font = *ppfont; - fsd = (FSFontDataPtr)font->fpePrivate; - /* This is an attempt to reopen a font. Did the font have a - NAME property? */ - if ((nameatom = MakeAtom("FONT", 4, 0)) != None) - { - for (i = 0; i < font->info.nprops; i++) - if (font->info.props[i].name == nameatom && - font->info.isStringProp[i]) - { - fn = font->info.props[i].value; - break; - } - } - if (fn == None || !(name = NameForAtom(fn))) - { - name = fsd->name; - namelen = fsd->namelen; - } - else - namelen = strlen(name); - } - else - { - font = fs_create_font (fpe, name, namelen, format, fmask); - if (!font) - return AllocError; - - fsd = (FSFontDataPtr)font->fpePrivate; - } - - /* make a new block record, and add it to the end of the list */ - blockrec = fs_new_block_rec(font->fpe, client, FS_OPEN_FONT); - if (!blockrec) - { - if (!(flags & FontReopen)) - (*font->unload_font) (font); - return AllocError; - } - - /* - * Must check this before generating any protocol, otherwise we'll - * mess up a reconnect in progress - */ - if (conn->blockState & (FS_BROKEN_CONNECTION | FS_RECONNECTING)) - { - _fs_pending_reply (conn); - return Suspended; - } - - fsd->generation = conn->generation; - - bfont = (FSBlockedFontPtr) blockrec->data; - bfont->fontid = fsd->fontid; - bfont->pfont = font; - bfont->state = FS_OPEN_REPLY; - bfont->flags = flags; - bfont->format = fsd->format; - bfont->clients_depending = (FSClientsDependingPtr)0; - bfont->freeFont = (flags & FontReopen) == 0; - - _fs_client_access (conn, client, (flags & FontOpenSync) != 0); - _fs_client_resolution(conn); - - /* do an FS_OpenFont, FS_QueryXInfo and FS_QueryXExtents */ - buf[0] = (unsigned char) namelen; - memcpy(&buf[1], name, namelen); - openreq.reqType = FS_OpenBitmapFont; - openreq.fid = fsd->fontid; - openreq.format_hint = fsd->format; - openreq.format_mask = fsd->fmask; - openreq.length = (SIZEOF(fsOpenBitmapFontReq) + namelen + 4) >> 2; - - _fs_add_req_log(conn, FS_OpenBitmapFont); - _fs_write(conn, (char *) &openreq, SIZEOF(fsOpenBitmapFontReq)); - _fs_write_pad(conn, (char *) buf, namelen + 1); - - blockrec->sequenceNumber = conn->current_seq; - - inforeq.reqType = FS_QueryXInfo; - inforeq.id = fsd->fontid; - inforeq.length = SIZEOF(fsQueryXInfoReq) >> 2; - - bfont->queryInfoSequence = conn->current_seq + 1; - - _fs_add_req_log(conn, FS_QueryXInfo); - _fs_write(conn, (char *) &inforeq, SIZEOF(fsQueryXInfoReq)); - - if (!(bfont->flags & FontReopen)) - { - extreq.reqType = FS_QueryXExtents16; - extreq.range = fsTrue; - extreq.fid = fsd->fontid; - extreq.num_ranges = 0; - extreq.length = SIZEOF(fsQueryXExtents16Req) >> 2; - - bfont->queryExtentsSequence = conn->current_seq + 1; - - _fs_add_req_log(conn, FS_QueryXExtents16); - _fs_write(conn, (char *) &extreq, SIZEOF(fsQueryXExtents16Req)); - } - -#ifdef NCD - if (configData.ExtendedFontDiags) - { - memcpy(buf, name, MIN(256, namelen)); - buf[MIN(256, namelen)] = '\0'; - printf("Requesting font \"%s\" from font server \"%s\"\n", - buf, font->fpe->name); - } -#endif - _fs_prepare_for_reply (conn); - - err = blockrec->errcode; - if (bfont->flags & FontOpenSync) - { - while (blockrec->errcode == StillWorking) - { - if (fs_await_reply (conn) != FSIO_READY) - { - blockrec->errcode = BadFontName; - break; - } - fs_read_reply (font->fpe, client); - } - err = blockrec->errcode; - if (err == Successful) - *ppfont = bfont->pfont; - else - fs_cleanup_bfont (bfont); - bfont->freeFont = FALSE; - _fs_remove_block_rec (conn, blockrec); - } - return err == StillWorking ? Suspended : err; -} - -static void -fs_send_query_bitmaps(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data; - fsQueryXBitmaps16Req bitreq; - - /* send the request */ - bitreq.reqType = FS_QueryXBitmaps16; - bitreq.fid = bfont->fontid; - bitreq.format = bfont->format; - bitreq.range = TRUE; - bitreq.length = SIZEOF(fsQueryXBitmaps16Req) >> 2; - bitreq.num_ranges = 0; - - bfont->queryBitmapsSequence = conn->current_seq + 1; - - _fs_add_req_log(conn, FS_QueryXBitmaps16); - _fs_write(conn, (char *) &bitreq, SIZEOF(fsQueryXBitmaps16Req)); -} - -/* ARGSUSED */ -static int -fs_open_font(pointer client, FontPathElementPtr fpe, Mask flags, - char *name, int namelen, - fsBitmapFormat format, fsBitmapFormatMask fmask, - XID id, FontPtr *ppfont, - char **alias, FontPtr non_cachable_font) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockDataPtr blockrec; - FSBlockedFontPtr bfont; - int err; - - /* libfont interface expects ImageRectMin glyphs */ - format = (format & ~BitmapFormatImageRectMask) | BitmapFormatImageRectMin; - - *alias = (char *) 0; - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - { - if (blockrec->type == FS_OPEN_FONT && blockrec->client == client) - { - err = blockrec->errcode; - if (err == StillWorking) - return Suspended; - - bfont = (FSBlockedFontPtr) blockrec->data; - if (err == Successful) - *ppfont = bfont->pfont; - else - fs_cleanup_bfont (bfont); - _fs_remove_block_rec (conn, blockrec); - return err; - } - } - return fs_send_open_font(client, fpe, flags, name, namelen, format, fmask, - id, ppfont); -} - -/* ARGSUSED */ -static int -fs_send_close_font(FontPathElementPtr fpe, Font id) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - fsCloseReq req; - - if (conn->blockState & FS_GIVE_UP) - return Successful; - /* tell the font server to close the font */ - req.reqType = FS_CloseFont; - req.length = SIZEOF(fsCloseReq) >> 2; - req.id = id; - _fs_add_req_log(conn, FS_CloseFont); - _fs_write(conn, (char *) &req, SIZEOF(fsCloseReq)); - - return Successful; -} - -/* ARGSUSED */ -static void -fs_close_font(FontPathElementPtr fpe, FontPtr pfont) -{ - FSFontDataPtr fsd = (FSFontDataPtr) pfont->fpePrivate; - FSFpePtr conn = (FSFpePtr) fpe->private; - - if (conn->generation == fsd->generation) - fs_send_close_font(fpe, fsd->fontid); - -#ifdef DEBUG - { - FSBlockDataPtr blockrec; - FSBlockedFontPtr bfont; - - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - { - if (blockrec->type == FS_OPEN_FONT) - { - bfont = (FSBlockedFontPtr) blockrec->data; - if (bfont->pfont == pfont) - fprintf (stderr, "closing font which hasn't been opened\n"); - } - } - } -#endif - (*pfont->unload_font) (pfont); -} - -static int -fs_read_glyphs(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSBlockedGlyphPtr bglyph = (FSBlockedGlyphPtr) blockrec->data; - FSBlockedFontPtr bfont = (FSBlockedFontPtr) blockrec->data; - FSFpePtr conn = (FSFpePtr) fpe->private; - FontPtr pfont = bglyph->pfont; - /* works for either blocked font - or glyph rec... pfont is at - the very beginning of both - blockrec->data structures */ - FSFontDataPtr fsd = (FSFontDataPtr) (pfont->fpePrivate); - FSFontPtr fsdata = (FSFontPtr) pfont->fontPrivate; - FontInfoPtr pfi = &pfont->info; - fsQueryXBitmaps16Reply *rep; - char *buf; - long bufleft = 0; /* length of reply left to use */ - fsOffset32 *ppbits; - fsOffset32 local_off; - char *off_adr; - pointer pbitmaps; - char *bits, *allbits; -#ifdef DEBUG - char *origallbits; -#endif - int i, - err; - int nranges = 0; - int ret; - fsRange *nextrange = 0; - unsigned long minchar, maxchar; - - rep = (fsQueryXBitmaps16Reply *) fs_get_reply (conn, &ret); - if (!rep || rep->type == FS_Error || - (rep->length < LENGTHOF(fsQueryXBitmaps16Reply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - err = AllocError; - _fs_reply_failed (rep, fsQueryXBitmaps16Reply, "<"); - goto bail; - } - - buf = (char *) rep; - buf += SIZEOF (fsQueryXBitmaps16Reply); - - bufleft = rep->length << 2; - bufleft -= SIZEOF (fsQueryXBitmaps16Reply); - - if ((bufleft / SIZEOF (fsOffset32)) < rep->num_chars) - { -#ifdef DEBUG - fprintf(stderr, - "fsQueryXBitmaps16: num_chars (%d) > bufleft (%ld) / %d\n", - rep->num_chars, bufleft, SIZEOF (fsOffset32)); -#endif - err = AllocError; - goto bail; - } - ppbits = (fsOffset32 *) buf; - buf += SIZEOF (fsOffset32) * (rep->num_chars); - bufleft -= SIZEOF (fsOffset32) * (rep->num_chars); - - if (bufleft < rep->nbytes) - { -#ifdef DEBUG - fprintf(stderr, - "fsQueryXBitmaps16: nbytes (%d) > bufleft (%ld)\n", - rep->nbytes, bufleft); -#endif - err = AllocError; - goto bail; - } - pbitmaps = (pointer ) buf; - - if (blockrec->type == FS_LOAD_GLYPHS) - { - nranges = bglyph->num_expected_ranges; - nextrange = bglyph->expected_ranges; - } - - /* place the incoming glyphs */ - if (nranges) - { - /* We're operating under the assumption that the ranges - requested in the LoadGlyphs call were all legal for this - font, and that individual ranges do not cover multiple - rows... fs_build_range() is designed to ensure this. */ - minchar = (nextrange->min_char_high - pfi->firstRow) * - (pfi->lastCol - pfi->firstCol + 1) + - nextrange->min_char_low - pfi->firstCol; - maxchar = (nextrange->max_char_high - pfi->firstRow) * - (pfi->lastCol - pfi->firstCol + 1) + - nextrange->max_char_low - pfi->firstCol; - nextrange++; - } - else - { - minchar = 0; - maxchar = rep->num_chars; - } - - off_adr = (char *)ppbits; - - allbits = fs_alloc_glyphs (pfont, rep->nbytes); - - if (!allbits) - { - err = AllocError; - goto bail; - } - -#ifdef DEBUG - origallbits = allbits; - fprintf (stderr, "Reading %d glyphs in %d bytes for %s\n", - (int) rep->num_chars, (int) rep->nbytes, fsd->name); -#endif - - for (i = 0; i < rep->num_chars; i++) - { - memcpy(&local_off, off_adr, SIZEOF(fsOffset32)); /* align it */ - if (blockrec->type == FS_OPEN_FONT || - fsdata->encoding[minchar].bits == &_fs_glyph_requested) - { - /* - * Broken X font server returns bits for missing characters - * when font is padded - */ - if (NONZEROMETRICS(&fsdata->encoding[minchar].metrics)) - { - if (local_off.length && - (local_off.position < rep->nbytes) && - (local_off.length <= (rep->nbytes - local_off.position))) - { - bits = allbits; - allbits += local_off.length; - memcpy(bits, (char *)pbitmaps + local_off.position, - local_off.length); - } - else - bits = &_fs_glyph_zero_length; - } - else - bits = 0; - if (fsdata->encoding[minchar].bits == &_fs_glyph_requested) - fsd->glyphs_to_get--; - fsdata->encoding[minchar].bits = bits; - } - if (minchar++ == maxchar) - { - if (!--nranges) break; - minchar = (nextrange->min_char_high - pfi->firstRow) * - (pfi->lastCol - pfi->firstCol + 1) + - nextrange->min_char_low - pfi->firstCol; - maxchar = (nextrange->max_char_high - pfi->firstRow) * - (pfi->lastCol - pfi->firstCol + 1) + - nextrange->max_char_low - pfi->firstCol; - nextrange++; - } - off_adr += SIZEOF(fsOffset32); - } -#ifdef DEBUG - fprintf (stderr, "Used %d bytes instead of %d\n", - (int) (allbits - origallbits), (int) rep->nbytes); -#endif - - if (blockrec->type == FS_OPEN_FONT) - { - fsd->glyphs_to_get = 0; - bfont->state = FS_DONE_REPLY; - } - err = Successful; - -bail: - _fs_done_read (conn, rep->length << 2); - return err; -} - -static int -fs_send_load_glyphs(pointer client, FontPtr pfont, - int nranges, fsRange *ranges) -{ - FontPathElementPtr fpe = pfont->fpe; - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockedGlyphPtr blockedglyph; - fsQueryXBitmaps16Req req; - FSBlockDataPtr blockrec; - - if (conn->blockState & FS_GIVE_UP) - return BadCharRange; - - /* make a new block record, and add it to the end of the list */ - blockrec = fs_new_block_rec(fpe, client, FS_LOAD_GLYPHS); - if (!blockrec) - return AllocError; - blockedglyph = (FSBlockedGlyphPtr) blockrec->data; - blockedglyph->pfont = pfont; - blockedglyph->num_expected_ranges = nranges; - /* Assumption: it's our job to free ranges */ - blockedglyph->expected_ranges = ranges; - blockedglyph->clients_depending = (FSClientsDependingPtr)0; - - if (conn->blockState & (FS_BROKEN_CONNECTION|FS_RECONNECTING)) - { - _fs_pending_reply (conn); - return Suspended; - } - - /* send the request */ - req.reqType = FS_QueryXBitmaps16; - req.fid = ((FSFontDataPtr) pfont->fpePrivate)->fontid; - req.format = pfont->format; - if (pfont->info.terminalFont) - req.format = (req.format & ~(BitmapFormatImageRectMask)) | - BitmapFormatImageRectMax; - req.range = TRUE; - /* each range takes up 4 bytes */ - req.length = (SIZEOF(fsQueryXBitmaps16Req) >> 2) + nranges; - req.num_ranges = nranges * 2; /* protocol wants count of fsChar2bs */ - _fs_add_req_log(conn, FS_QueryXBitmaps16); - _fs_write(conn, (char *) &req, SIZEOF(fsQueryXBitmaps16Req)); - - blockrec->sequenceNumber = conn->current_seq; - - /* Send ranges to the server... pack into a char array by hand - to avoid structure-packing portability problems and to - handle swapping for version1 protocol */ - if (nranges) - { -#define RANGE_BUFFER_SIZE 64 -#define RANGE_BUFFER_SIZE_MASK 63 - int i; - char range_buffer[RANGE_BUFFER_SIZE * 4]; - char *range_buffer_p; - - range_buffer_p = range_buffer; - for (i = 0; i < nranges;) - { - if (conn->fsMajorVersion > 1) - { - *range_buffer_p++ = ranges[i].min_char_high; - *range_buffer_p++ = ranges[i].min_char_low; - *range_buffer_p++ = ranges[i].max_char_high; - *range_buffer_p++ = ranges[i].max_char_low; - } - else - { - *range_buffer_p++ = ranges[i].min_char_low; - *range_buffer_p++ = ranges[i].min_char_high; - *range_buffer_p++ = ranges[i].max_char_low; - *range_buffer_p++ = ranges[i].max_char_high; - } - - if (!(++i & RANGE_BUFFER_SIZE_MASK)) - { - _fs_write(conn, range_buffer, RANGE_BUFFER_SIZE * 4); - range_buffer_p = range_buffer; - } - } - if (i &= RANGE_BUFFER_SIZE_MASK) - _fs_write(conn, range_buffer, i * 4); - } - - _fs_prepare_for_reply (conn); - return Suspended; -} - - -extern pointer serverClient; /* This could be any number that - doesn't conflict with existing - client values. */ - -int -fs_load_all_glyphs(FontPtr pfont) -{ - int err; - FSFpePtr conn = (FSFpePtr) pfont->fpe->private; - - /* - * The purpose of this procedure is to load all glyphs in the event - * that we're dealing with someone who doesn't understand the finer - * points of glyph caching... it is called from _fs_get_glyphs() if - * the latter is called to get glyphs that have not yet been loaded. - * We assume that the caller will not know how to handle a return - * value of Suspended (usually the case for a GetGlyphs() caller), - * so this procedure hangs around, freezing the server, for the - * request to complete. This is an unpleasant kluge called to - * perform an unpleasant job that, we hope, will never be required. - */ - - while ((err = _fs_load_glyphs(serverClient, pfont, TRUE, 0, 0, NULL)) == - Suspended) - { - if (fs_await_reply (conn) != FSIO_READY) - { - /* Get rid of blockrec */ - fs_client_died(serverClient, pfont->fpe); - err = BadCharRange; - break; - } - fs_read_reply (pfont->fpe, serverClient); - } - return err; -} - - -int -_fs_load_glyphs(pointer client, FontPtr pfont, Bool range_flag, - unsigned int nchars, int item_size, unsigned char *data) -{ - FSFpePtr conn = (FSFpePtr) pfont->fpe->private; - int nranges = 0; - fsRange *ranges = NULL; - int res; - FSBlockDataPtr blockrec; - FSBlockedGlyphPtr blockedglyph; - FSClientsDependingPtr *clients_depending = NULL; - int err; - - /* see if the result is already there */ - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - { - if (blockrec->type == FS_LOAD_GLYPHS) - { - blockedglyph = (FSBlockedGlyphPtr) blockrec->data; - if (blockedglyph->pfont == pfont) - { - /* Look for this request */ - if (blockrec->client == client) - { - err = blockrec->errcode; - if (err == StillWorking) - return Suspended; - _fs_signal_clients_depending(&blockedglyph->clients_depending); - _fs_remove_block_rec(conn, blockrec); - return err; - } - /* We've found an existing LoadGlyphs blockrec for this - font but for another client. Rather than build a - blockrec for it now (which entails some complex - maintenance), we'll add it to a queue of clients to - be signalled when the existing LoadGlyphs is - completed. */ - clients_depending = &blockedglyph->clients_depending; - break; - } - } - else if (blockrec->type == FS_OPEN_FONT) - { - FSBlockedFontPtr bfont; - bfont = (FSBlockedFontPtr) blockrec->data; - if (bfont->pfont == pfont) - { - /* - * An OpenFont is pending for this font, this must - * be from a reopen attempt, so finish the open - * attempt and retry the LoadGlyphs - */ - if (blockrec->client == client) - { - err = blockrec->errcode; - if (err == StillWorking) - return Suspended; - - _fs_signal_clients_depending(&bfont->clients_depending); - _fs_remove_block_rec(conn, blockrec); - if (err != Successful) - return err; - break; - } - /* We've found an existing OpenFont blockrec for this - font but for another client. Rather than build a - blockrec for it now (which entails some complex - maintenance), we'll add it to a queue of clients to - be signalled when the existing OpenFont is - completed. */ - if (blockrec->errcode == StillWorking) - { - clients_depending = &bfont->clients_depending; - break; - } - } - } - } - - /* - * see if the desired glyphs already exist, and return Successful if they - * do, otherwise build up character range/character string - */ - res = fs_build_range(pfont, range_flag, nchars, item_size, data, - &nranges, &ranges); - - switch (res) - { - case AccessDone: - return Successful; - - case Successful: - break; - - default: - return res; - } - - /* - * If clients_depending is not null, this request must wait for - * some prior request(s) to complete. - */ - if (clients_depending) - { - /* Since we're not ready to send the load_glyphs request yet, - clean up the damage (if any) caused by the fs_build_range() - call. */ - if (nranges) - { - _fs_clean_aborted_loadglyphs(pfont, nranges, ranges); - xfree(ranges); - } - return _fs_add_clients_depending(clients_depending, client); - } - - /* - * If fsd->generation != conn->generation, the font has been closed - * due to a lost connection. We will reopen it, which will result - * in one of three things happening: - * 1) The open will succeed and obtain the same font. Life - * is wonderful. - * 2) The open will fail. There is code above to recognize this - * and flunk the LoadGlyphs request. The client might not be - * thrilled. - * 3) Worst case: the open will succeed but the font we open will - * be different. The fs_read_query_info() procedure attempts - * to detect this by comparing the existing metrics and - * properties against those of the reopened font... if they - * don't match, we flunk the reopen, which eventually results - * in flunking the LoadGlyphs request. We could go a step - * further and compare the extents, but this should be - * sufficient. - */ - if (((FSFontDataPtr)pfont->fpePrivate)->generation != conn->generation) - { - /* Since we're not ready to send the load_glyphs request yet, - clean up the damage caused by the fs_build_range() call. */ - _fs_clean_aborted_loadglyphs(pfont, nranges, ranges); - xfree(ranges); - - /* Now try to reopen the font. */ - return fs_send_open_font(client, pfont->fpe, - (Mask)FontReopen, (char *)0, 0, - (fsBitmapFormat)0, (fsBitmapFormatMask)0, - (XID)0, &pfont); - } - - return fs_send_load_glyphs(client, pfont, nranges, ranges); -} - -static int -fs_read_list(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockedListPtr blist = (FSBlockedListPtr) blockrec->data; - fsListFontsReply *rep; - char *data; - long dataleft; /* length of reply left to use */ - int length, - i, - ret; - int err; - - rep = (fsListFontsReply *) fs_get_reply (conn, &ret); - if (!rep || rep->type == FS_Error || - (rep->length < LENGTHOF(fsListFontsReply))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - if (rep) - _fs_done_read (conn, rep->length << 2); - _fs_reply_failed (rep, fsListFontsReply, "<"); - return AllocError; - } - data = (char *) rep + SIZEOF (fsListFontsReply); - dataleft = (rep->length << 2) - SIZEOF (fsListFontsReply); - - err = Successful; - /* copy data into FontPathRecord */ - for (i = 0; i < rep->nFonts; i++) - { - if (dataleft < 1) - break; - length = *(unsigned char *)data++; - dataleft--; /* used length byte */ - if (length > dataleft) { -#ifdef DEBUG - fprintf(stderr, - "fsListFonts: name length (%d) > dataleft (%ld)\n", - length, dataleft); -#endif - err = BadFontName; - break; - } - err = AddFontNamesName(blist->names, data, length); - if (err != Successful) - break; - data += length; - dataleft -= length; - } - _fs_done_read (conn, rep->length << 2); - return err; -} - -static int -fs_send_list_fonts(pointer client, FontPathElementPtr fpe, char *pattern, - int patlen, int maxnames, FontNamesPtr newnames) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockDataPtr blockrec; - FSBlockedListPtr blockedlist; - fsListFontsReq req; - - if (conn->blockState & FS_GIVE_UP) - return BadFontName; - - /* make a new block record, and add it to the end of the list */ - blockrec = fs_new_block_rec(fpe, client, FS_LIST_FONTS); - if (!blockrec) - return AllocError; - blockedlist = (FSBlockedListPtr) blockrec->data; - blockedlist->names = newnames; - - if (conn->blockState & (FS_BROKEN_CONNECTION | FS_RECONNECTING)) - { - _fs_pending_reply (conn); - return Suspended; - } - - _fs_client_access (conn, client, FALSE); - _fs_client_resolution(conn); - - /* send the request */ - req.reqType = FS_ListFonts; - req.maxNames = maxnames; - req.nbytes = patlen; - req.length = (SIZEOF(fsListFontsReq) + patlen + 3) >> 2; - _fs_add_req_log(conn, FS_ListFonts); - _fs_write(conn, (char *) &req, SIZEOF(fsListFontsReq)); - _fs_write_pad(conn, (char *) pattern, patlen); - - blockrec->sequenceNumber = conn->current_seq; - -#ifdef NCD - if (configData.ExtendedFontDiags) { - char buf[256]; - - memcpy(buf, pattern, MIN(256, patlen)); - buf[MIN(256, patlen)] = '\0'; - printf("Listing fonts on pattern \"%s\" from font server \"%s\"\n", - buf, fpe->name); - } -#endif - - _fs_prepare_for_reply (conn); - return Suspended; -} - -static int -fs_list_fonts(pointer client, FontPathElementPtr fpe, - char *pattern, int patlen, int maxnames, FontNamesPtr newnames) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockDataPtr blockrec; - int err; - - /* see if the result is already there */ - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - { - if (blockrec->type == FS_LIST_FONTS && blockrec->client == client) - { - err = blockrec->errcode; - if (err == StillWorking) - return Suspended; - _fs_remove_block_rec(conn, blockrec); - return err; - } - } - - /* didn't find waiting record, so send a new one */ - return fs_send_list_fonts(client, fpe, pattern, patlen, maxnames, newnames); -} - -/* - * Read a single list info reply and restart for the next reply - */ -static int -fs_read_list_info(FontPathElementPtr fpe, FSBlockDataPtr blockrec) -{ - FSBlockedListInfoPtr binfo = (FSBlockedListInfoPtr) blockrec->data; - fsListFontsWithXInfoReply *rep; - char *buf; - long bufleft = 0; - FSFpePtr conn = (FSFpePtr) fpe->private; - fsPropInfo *pi; - fsPropOffset *po; - pointer pd; - int ret; - int err; - - /* clean up anything from the last trip */ - _fs_free_props (&binfo->info); - - rep = (fsListFontsWithXInfoReply *) fs_get_reply (conn, &ret); - if (!rep || rep->type == FS_Error || - ((rep->nameLength != 0) && - (rep->length < LENGTHOF(fsListFontsWithXInfoReply)))) - { - if (ret == FSIO_BLOCK) - return StillWorking; - binfo->status = FS_LFWI_FINISHED; - err = AllocError; - _fs_reply_failed (rep, fsListFontsWithXInfoReply, "<"); - goto done; - } - /* - * Normal termination -- the list ends with a name of length 0 - */ - if (rep->nameLength == 0) - { -#ifdef DEBUG - fprintf (stderr, "fs_read_list_info done\n"); -#endif - binfo->status = FS_LFWI_FINISHED; - err = BadFontName; - goto done; - } - - buf = (char *) rep + SIZEOF (fsListFontsWithXInfoReply); - bufleft = (rep->length << 2) - SIZEOF (fsListFontsWithXInfoReply); - - /* - * The original FS implementation didn't match - * the spec, version 1 was respecified to match the FS. - * Version 2 matches the original intent - */ - if (conn->fsMajorVersion <= 1) - { - if (rep->nameLength > bufleft) { -#ifdef DEBUG - fprintf(stderr, - "fsListFontsWithXInfo: name length (%d) > bufleft (%ld)\n", - (int) rep->nameLength, bufleft); -#endif - err = AllocError; - goto done; - } - /* binfo->name is a 256 char array, rep->nameLength is a CARD8 */ - memcpy (binfo->name, buf, rep->nameLength); - buf += _fs_pad_length (rep->nameLength); - bufleft -= _fs_pad_length (rep->nameLength); - } - pi = (fsPropInfo *) buf; - if (SIZEOF (fsPropInfo) > bufleft) { -#ifdef DEBUG - fprintf(stderr, - "fsListFontsWithXInfo: PropInfo length (%d) > bufleft (%ld)\n", - (int) SIZEOF (fsPropInfo), bufleft); -#endif - err = AllocError; - goto done; - } - bufleft -= SIZEOF (fsPropInfo); - buf += SIZEOF (fsPropInfo); - po = (fsPropOffset *) buf; - if (pi->num_offsets > (bufleft / SIZEOF (fsPropOffset))) { -#ifdef DEBUG - fprintf(stderr, - "fsListFontsWithXInfo: offset length (%d * %d) > bufleft (%ld)\n", - pi->num_offsets, (int) SIZEOF (fsPropOffset), bufleft); -#endif - err = AllocError; - goto done; - } - bufleft -= pi->num_offsets * SIZEOF (fsPropOffset); - buf += pi->num_offsets * SIZEOF (fsPropOffset); - pd = (pointer) buf; - if (pi->data_len > bufleft) { -#ifdef DEBUG - fprintf(stderr, - "fsListFontsWithXInfo: data length (%d) > bufleft (%ld)\n", - pi->data_len, bufleft); -#endif - err = AllocError; - goto done; - } - bufleft -= pi->data_len; - buf += pi->data_len; - if (conn->fsMajorVersion > 1) - { - if (rep->nameLength > bufleft) { -#ifdef DEBUG - fprintf(stderr, - "fsListFontsWithXInfo: name length (%d) > bufleft (%ld)\n", - (int) rep->nameLength, bufleft); -#endif - err = AllocError; - goto done; - } - /* binfo->name is a 256 char array, rep->nameLength is a CARD8 */ - memcpy (binfo->name, buf, rep->nameLength); - buf += _fs_pad_length (rep->nameLength); - bufleft -= _fs_pad_length (rep->nameLength); - } - -#ifdef DEBUG - binfo->name[rep->nameLength] = '\0'; - fprintf (stderr, "fs_read_list_info %s\n", binfo->name); -#endif - err = _fs_convert_lfwi_reply(conn, &binfo->info, rep, pi, po, pd); - if (err != Successful) - { - binfo->status = FS_LFWI_FINISHED; - goto done; - } - binfo->namelen = rep->nameLength; - binfo->remaining = rep->nReplies; - - binfo->status = FS_LFWI_REPLY; - - /* disable this font server until we've processed this response */ - _fs_unmark_block (conn, FS_COMPLETE_REPLY); - FD_CLR(conn->fs_fd, &_fs_fd_mask); -done: - _fs_done_read (conn, rep->length << 2); - return err; -} - -/* ARGSUSED */ -static int -fs_start_list_with_info(pointer client, FontPathElementPtr fpe, - char *pattern, int len, int maxnames, pointer *pdata) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockDataPtr blockrec; - FSBlockedListInfoPtr binfo; - fsListFontsWithXInfoReq req; - - if (conn->blockState & FS_GIVE_UP) - return BadFontName; - - /* make a new block record, and add it to the end of the list */ - blockrec = fs_new_block_rec(fpe, client, FS_LIST_WITH_INFO); - if (!blockrec) - return AllocError; - - binfo = (FSBlockedListInfoPtr) blockrec->data; - bzero((char *) binfo, sizeof(FSBlockedListInfoRec)); - binfo->status = FS_LFWI_WAITING; - - if (conn->blockState & (FS_BROKEN_CONNECTION | FS_RECONNECTING)) - { - _fs_pending_reply (conn); - return Suspended; - } - - _fs_client_access (conn, client, FALSE); - _fs_client_resolution(conn); - - /* send the request */ - req.reqType = FS_ListFontsWithXInfo; - req.maxNames = maxnames; - req.nbytes = len; - req.length = (SIZEOF(fsListFontsWithXInfoReq) + len + 3) >> 2; - _fs_add_req_log(conn, FS_ListFontsWithXInfo); - (void) _fs_write(conn, (char *) &req, SIZEOF(fsListFontsWithXInfoReq)); - (void) _fs_write_pad(conn, pattern, len); - - blockrec->sequenceNumber = conn->current_seq; - -#ifdef NCD - if (configData.ExtendedFontDiags) { - char buf[256]; - - memcpy(buf, pattern, MIN(256, len)); - buf[MIN(256, len)] = '\0'; - printf("Listing fonts with info on pattern \"%s\" from font server \"%s\"\n", - buf, fpe->name); - } -#endif - - _fs_prepare_for_reply (conn); - return Successful; -} - -/* ARGSUSED */ -static int -fs_next_list_with_info(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - FontInfoPtr *pFontInfo, int *numFonts, - pointer private) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockDataPtr blockrec; - FSBlockedListInfoPtr binfo; - int err; - - /* see if the result is already there */ - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - if (blockrec->type == FS_LIST_WITH_INFO && blockrec->client == client) - break; - - if (!blockrec) - { - /* The only good reason for not finding a blockrec would be if - disconnect/reconnect to the font server wiped it out and the - code that called us didn't do the right thing to create - another one. Under those circumstances, we need to return an - error to prevent that code from attempting to interpret the - information we don't return. */ - return BadFontName; - } - - binfo = (FSBlockedListInfoPtr) blockrec->data; - - if (binfo->status == FS_LFWI_WAITING) - return Suspended; - - *namep = binfo->name; - *namelenp = binfo->namelen; - *pFontInfo = &binfo->info; - *numFonts = binfo->remaining; - - /* Restart reply processing from this font server */ - FD_SET(conn->fs_fd, &_fs_fd_mask); - if (fs_reply_ready (conn)) - _fs_mark_block (conn, FS_COMPLETE_REPLY); - - err = blockrec->errcode; - switch (binfo->status) { - case FS_LFWI_FINISHED: - _fs_remove_block_rec(conn, blockrec); - break; - case FS_LFWI_REPLY: - binfo->status = FS_LFWI_WAITING; - blockrec->errcode = StillWorking; - conn->blockedReplyTime = GetTimeInMillis () + FontServerRequestTimeout; - _fs_mark_block (conn, FS_PENDING_REPLY); - break; - } - - return err; -} - -/* - * Called when client exits - */ - -static void -fs_client_died(pointer client, FontPathElementPtr fpe) -{ - FSFpePtr conn = (FSFpePtr) fpe->private; - FSBlockDataPtr blockrec, - depending; - FSClientPtr *prev, cur; - fsFreeACReq freeac; - - for (prev = &conn->clients; (cur = *prev); prev = &cur->next) - { - if (cur->client == client) { - freeac.reqType = FS_FreeAC; - freeac.id = cur->acid; - freeac.length = sizeof (fsFreeACReq) >> 2; - _fs_add_req_log(conn, FS_FreeAC); - _fs_write (conn, (char *) &freeac, sizeof (fsFreeACReq)); - *prev = cur->next; - xfree (cur); - break; - } - } - /* find a pending requests */ - for (blockrec = conn->blockedRequests; blockrec; blockrec = blockrec->next) - if (blockrec->client == client) - break; - - if (!blockrec) - return; - - /* replace the client pointers in this block rec with the chained one */ - if ((depending = blockrec->depending)) - { - blockrec->client = depending->client; - blockrec->depending = depending->depending; - blockrec = depending; - } - fs_abort_blockrec(conn, blockrec); -} - -static void -_fs_client_access (FSFpePtr conn, pointer client, Bool sync) -{ - FSClientPtr *prev, cur; - fsCreateACReq crac; - fsSetAuthorizationReq setac; - char *authorizations; - int authlen; - Bool new_cur = FALSE; - -#ifdef DEBUG - if (conn->blockState & (FS_RECONNECTING|FS_BROKEN_CONNECTION)) - { - fprintf (stderr, "Sending requests without a connection\n"); - } -#endif - for (prev = &conn->clients; (cur = *prev); prev = &cur->next) - { - if (cur->client == client) - { - if (prev != &conn->clients) - { - *prev = cur->next; - cur->next = conn->clients; - conn->clients = cur; - } - break; - } - } - if (!cur) - { - cur = (FSClientPtr) xalloc (sizeof (FSClientRec)); - if (!cur) - return; - cur->client = client; - cur->next = conn->clients; - conn->clients = cur; - cur->acid = GetNewFontClientID (); - new_cur = TRUE; - } - if (new_cur || cur->auth_generation != client_auth_generation(client)) - { - if (!new_cur) - { - fsFreeACReq freeac; - freeac.reqType = FS_FreeAC; - freeac.id = cur->acid; - freeac.length = sizeof (fsFreeACReq) >> 2; - _fs_add_req_log(conn, FS_FreeAC); - _fs_write (conn, (char *) &freeac, sizeof (fsFreeACReq)); - } - crac.reqType = FS_CreateAC; - crac.num_auths = set_font_authorizations(&authorizations, &authlen, - client); - authlen = crac.num_auths ? (authlen + 3) & ~0x3 : 0; - crac.length = (sizeof (fsCreateACReq) + authlen) >> 2; - crac.acid = cur->acid; - _fs_add_req_log(conn, FS_CreateAC); - _fs_write(conn, (char *) &crac, sizeof (fsCreateACReq)); - _fs_write(conn, authorizations, authlen); - /* ignore reply; we don't even care about it */ - conn->curacid = 0; - cur->auth_generation = client_auth_generation(client); - } - if (conn->curacid != cur->acid) - { - setac.reqType = FS_SetAuthorization; - setac.length = sizeof (fsSetAuthorizationReq) >> 2; - setac.id = cur->acid; - _fs_add_req_log(conn, FS_SetAuthorization); - _fs_write(conn, (char *) &setac, sizeof (fsSetAuthorizationReq)); - conn->curacid = cur->acid; - } -} - -/* - * Poll a pending connect - */ - -static int -_fs_check_connect (FSFpePtr conn) -{ - int ret; - - ret = _fs_poll_connect (conn->trans_conn, 0); - switch (ret) { - case FSIO_READY: - conn->fs_fd = _FontTransGetConnectionNumber (conn->trans_conn); - FD_SET (conn->fs_fd, &_fs_fd_mask); - break; - case FSIO_BLOCK: - break; - } - return ret; -} - -/* - * Return an FSIO status while waiting for the completed connection - * reply to arrive - */ - -static fsConnSetup * -_fs_get_conn_setup (FSFpePtr conn, int *error, int *setup_len) -{ - int ret; - char *data; - int headlen; - int len; - fsConnSetup *setup; - fsConnSetupAccept *accept; - - ret = _fs_start_read (conn, SIZEOF (fsConnSetup), &data); - if (ret != FSIO_READY) - { - *error = ret; - return 0; - } - - setup = (fsConnSetup *) data; - if (setup->major_version > FS_PROTOCOL) - { - *error = FSIO_ERROR; - return 0; - } - - headlen = (SIZEOF (fsConnSetup) + - (setup->alternate_len << 2) + - (setup->auth_len << 2)); - /* On anything but Success, no extra data is sent */ - if (setup->status != AuthSuccess) - { - len = headlen; - } - else - { - ret = _fs_start_read (conn, headlen + SIZEOF (fsConnSetupAccept), &data); - if (ret != FSIO_READY) - { - *error = ret; - return 0; - } - setup = (fsConnSetup *) data; - accept = (fsConnSetupAccept *) (data + headlen); - len = headlen + (accept->length << 2); - } - ret = _fs_start_read (conn, len, &data); - if (ret != FSIO_READY) - { - *error = ret; - return 0; - } - *setup_len = len; - return (fsConnSetup *) data; -} - -static int -_fs_send_conn_client_prefix (FSFpePtr conn) -{ - fsConnClientPrefix req; - int endian; - int ret; - - /* send setup prefix */ - endian = 1; - if (*(char *) &endian) - req.byteOrder = 'l'; - else - req.byteOrder = 'B'; - - req.major_version = FS_PROTOCOL; - req.minor_version = FS_PROTOCOL_MINOR; - -/* XXX add some auth info here */ - req.num_auths = 0; - req.auth_len = 0; - ret = _fs_write (conn, (char *) &req, SIZEOF (fsConnClientPrefix)); - if (ret != FSIO_READY) - return FSIO_ERROR; - conn->blockedConnectTime = GetTimeInMillis () + FontServerRequestTimeout; - return ret; -} - -static int -_fs_recv_conn_setup (FSFpePtr conn) -{ - int ret; - fsConnSetup *setup; - FSFpeAltPtr alts; - unsigned int i, alt_len; - int setup_len; - char *alt_save, *alt_names; - - setup = _fs_get_conn_setup (conn, &ret, &setup_len); - if (!setup) - return ret; - conn->current_seq = 0; - conn->fsMajorVersion = setup->major_version; - /* - * Create an alternate list from the initial server, but - * don't chain looking for alternates. - */ - if (conn->alternate == 0) - { - /* - * free any existing alternates list, allowing the list to - * be updated - */ - if (conn->alts) - { - xfree (conn->alts); - conn->alts = 0; - conn->numAlts = 0; - } - if (setup->num_alternates) - { - size_t alt_name_len = setup->alternate_len << 2; - alts = (FSFpeAltPtr) xalloc (setup->num_alternates * - sizeof (FSFpeAltRec) + alt_name_len); - if (alts) - { - alt_names = (char *) (setup + 1); - alt_save = (char *) (alts + setup->num_alternates); - for (i = 0; i < setup->num_alternates; i++) - { - alts[i].subset = alt_names[0]; - alt_len = alt_names[1]; - if (alt_len >= alt_name_len) { - /* - * Length is longer than setup->alternate_len - * told us to allocate room for, assume entire - * alternate list is corrupted. - */ -#ifdef DEBUG - fprintf (stderr, - "invalid alt list (length %lx >= %lx)\n", - (long) alt_len, (long) alt_name_len); -#endif - xfree(alts); - return FSIO_ERROR; - } - alts[i].name = alt_save; - memcpy (alt_save, alt_names + 2, alt_len); - alt_save[alt_len] = '\0'; - alt_save += alt_len + 1; - alt_name_len -= alt_len + 1; - alt_names += _fs_pad_length (alt_len + 2); - } - conn->numAlts = setup->num_alternates; - conn->alts = alts; - } - } - } - _fs_done_read (conn, setup_len); - if (setup->status != AuthSuccess) - return FSIO_ERROR; - return FSIO_READY; -} - -static int -_fs_open_server (FSFpePtr conn) -{ - int ret; - char *servername; - - if (conn->alternate == 0) - servername = conn->servername; - else - servername = conn->alts[conn->alternate-1].name; - conn->trans_conn = _fs_connect (servername, &ret); - conn->blockedConnectTime = GetTimeInMillis () + FS_RECONNECT_WAIT; - return ret; -} - -static char * -_fs_catalog_name (char *servername) -{ - char *sp; - - sp = strchr (servername, '/'); - if (!sp) - return 0; - return strrchr (sp + 1, '/'); -} - -static int -_fs_send_init_packets (FSFpePtr conn) -{ - fsSetResolutionReq srreq; - fsSetCataloguesReq screq; - int num_cats, - clen; - char *catalogues; - char *cat; - char len; - char *end; - int num_res; - FontResolutionPtr res; - -#define CATALOGUE_SEP '+' - - res = GetClientResolutions(&num_res); - if (num_res) - { - srreq.reqType = FS_SetResolution; - srreq.num_resolutions = num_res; - srreq.length = (SIZEOF(fsSetResolutionReq) + - (num_res * SIZEOF(fsResolution)) + 3) >> 2; - - _fs_add_req_log(conn, FS_SetResolution); - if (_fs_write(conn, (char *) &srreq, SIZEOF(fsSetResolutionReq)) != FSIO_READY) - return FSIO_ERROR; - if (_fs_write_pad(conn, (char *) res, (num_res * SIZEOF(fsResolution))) != FSIO_READY) - return FSIO_ERROR; - } - - catalogues = 0; - if (conn->alternate != 0) - catalogues = _fs_catalog_name (conn->alts[conn->alternate-1].name); - if (!catalogues) - catalogues = _fs_catalog_name (conn->servername); - - if (!catalogues) - { - conn->has_catalogues = FALSE; - return FSIO_READY; - } - conn->has_catalogues = TRUE; - - /* turn cats into counted list */ - catalogues++; - - cat = catalogues; - num_cats = 0; - clen = 0; - while (*cat) - { - num_cats++; - end = strchr(cat, CATALOGUE_SEP); - if (!end) - end = cat + strlen (cat); - clen += (end - cat) + 1; /* length byte + string */ - cat = end; - } - - screq.reqType = FS_SetCatalogues; - screq.num_catalogues = num_cats; - screq.length = (SIZEOF(fsSetCataloguesReq) + clen + 3) >> 2; - - _fs_add_req_log(conn, FS_SetCatalogues); - if (_fs_write(conn, (char *) &screq, SIZEOF(fsSetCataloguesReq)) != FSIO_READY) - return FSIO_ERROR; - - while (*cat) - { - num_cats++; - end = strchr(cat, CATALOGUE_SEP); - if (!end) - end = cat + strlen (cat); - len = end - cat; - if (_fs_write (conn, &len, 1) != FSIO_READY) - return FSIO_ERROR; - if (_fs_write (conn, cat, (int) len) != FSIO_READY) - return FSIO_ERROR; - cat = end; - } - - if (_fs_write (conn, "....", _fs_pad_length (clen) - clen) != FSIO_READY) - return FSIO_ERROR; - - return FSIO_READY; -} - -static int -_fs_send_cat_sync (FSFpePtr conn) -{ - fsListCataloguesReq lcreq; - - /* - * now sync up with the font server, to see if an error was generated - * by a bogus catalogue - */ - lcreq.reqType = FS_ListCatalogues; - lcreq.length = (SIZEOF(fsListCataloguesReq)) >> 2; - lcreq.maxNames = 0; - lcreq.nbytes = 0; - _fs_add_req_log(conn, FS_SetCatalogues); - if (_fs_write(conn, (char *) &lcreq, SIZEOF(fsListCataloguesReq)) != FSIO_READY) - return FSIO_ERROR; - conn->blockedConnectTime = GetTimeInMillis () + FontServerRequestTimeout; - return FSIO_READY; -} - -static int -_fs_recv_cat_sync (FSFpePtr conn) -{ - fsGenericReply *reply; - fsError *error; - int err; - int ret; - - reply = fs_get_reply (conn, &err); - if (!reply) - return err; - - ret = FSIO_READY; - if (reply->type == FS_Error) - { - error = (fsError *) reply; - if (error->major_opcode == FS_SetCatalogues) - ret = FSIO_ERROR; - } - _fs_done_read (conn, reply->length << 2); - return ret; -} - -static void -_fs_close_server (FSFpePtr conn) -{ - _fs_unmark_block (conn, FS_PENDING_WRITE|FS_BROKEN_WRITE|FS_COMPLETE_REPLY|FS_BROKEN_CONNECTION); - if (conn->trans_conn) - { - _FontTransClose (conn->trans_conn); - conn->trans_conn = 0; - _fs_io_reinit (conn); - } - if (conn->fs_fd >= 0) - { - FD_CLR (conn->fs_fd, &_fs_fd_mask); - conn->fs_fd = -1; - } - conn->fs_conn_state = FS_CONN_UNCONNECTED; -} - -static int -_fs_do_setup_connection (FSFpePtr conn) -{ - int ret; - - do - { -#ifdef DEBUG - fprintf (stderr, "fs_do_setup_connection state %d\n", conn->fs_conn_state); -#endif - switch (conn->fs_conn_state) { - case FS_CONN_UNCONNECTED: - ret = _fs_open_server (conn); - if (ret == FSIO_BLOCK) - conn->fs_conn_state = FS_CONN_CONNECTING; - break; - case FS_CONN_CONNECTING: - ret = _fs_check_connect (conn); - break; - case FS_CONN_CONNECTED: - ret = _fs_send_conn_client_prefix (conn); - break; - case FS_CONN_SENT_PREFIX: - ret = _fs_recv_conn_setup (conn); - break; - case FS_CONN_RECV_INIT: - ret = _fs_send_init_packets (conn); - if (conn->has_catalogues) - ret = _fs_send_cat_sync (conn); - break; - case FS_CONN_SENT_CAT: - if (conn->has_catalogues) - ret = _fs_recv_cat_sync (conn); - else - ret = FSIO_READY; - break; - default: - ret = FSIO_READY; - break; - } - switch (ret) { - case FSIO_READY: - if (conn->fs_conn_state < FS_CONN_RUNNING) - conn->fs_conn_state++; - break; - case FSIO_BLOCK: - if (TimeCmp (GetTimeInMillis (), <, conn->blockedConnectTime)) - break; - ret = FSIO_ERROR; - /* fall through... */ - case FSIO_ERROR: - _fs_close_server (conn); - /* - * Try the next alternate - */ - if (conn->alternate < conn->numAlts) - { - conn->alternate++; - ret = FSIO_READY; - } - else - conn->alternate = 0; - break; - } - } while (conn->fs_conn_state != FS_CONN_RUNNING && ret == FSIO_READY); - if (ret == FSIO_READY) - conn->generation = ++generationCount; - return ret; -} - -static int -_fs_wait_connect (FSFpePtr conn) -{ - int ret; - - for (;;) - { - ret = _fs_do_setup_connection (conn); - if (ret != FSIO_BLOCK) - break; - if (conn->fs_conn_state <= FS_CONN_CONNECTING) - ret = _fs_poll_connect (conn->trans_conn, 1000); - else - ret = _fs_wait_for_readable (conn, 1000); - if (ret == FSIO_ERROR) - break; - } - return ret; -} - -/* - * Poll a connection in the process of reconnecting - */ -static void -_fs_check_reconnect (FSFpePtr conn) -{ - int ret; - - ret = _fs_do_setup_connection (conn); - switch (ret) { - case FSIO_READY: - _fs_unmark_block (conn, FS_RECONNECTING|FS_GIVE_UP); - _fs_restart_connection (conn); - break; - case FSIO_BLOCK: - break; - case FSIO_ERROR: - conn->brokenConnectionTime = GetTimeInMillis () + FS_RECONNECT_POLL; - break; - } -} - -/* - * Start the reconnection process - */ -static void -_fs_start_reconnect (FSFpePtr conn) -{ - if (conn->blockState & FS_RECONNECTING) - return; - conn->alternate = 0; - _fs_mark_block (conn, FS_RECONNECTING); - _fs_unmark_block (conn, FS_BROKEN_CONNECTION); - _fs_check_reconnect (conn); -} - - -static FSFpePtr -_fs_init_conn (char *servername) -{ - FSFpePtr conn; - - conn = xalloc (sizeof (FSFpeRec) + strlen (servername) + 1); - if (!conn) - return 0; - memset (conn, '\0', sizeof (FSFpeRec)); - if (!_fs_io_init (conn)) - { - xfree (conn); - return 0; - } - conn->servername = (char *) (conn + 1); - conn->fs_conn_state = FS_CONN_UNCONNECTED; - conn->fs_fd = -1; - strcpy (conn->servername, servername); - return conn; -} - -static void -_fs_free_conn (FSFpePtr conn) -{ - _fs_close_server (conn); - _fs_io_fini (conn); - if (conn->alts) - xfree (conn->alts); - xfree (conn); -} - -/* - * called at server init time - */ - -void -fs_register_fpe_functions(void) -{ - RegisterFPEFunctions(fs_name_check, - fs_init_fpe, - fs_free_fpe, - fs_reset_fpe, - fs_open_font, - fs_close_font, - fs_list_fonts, - fs_start_list_with_info, - fs_next_list_with_info, - fs_wakeup, - fs_client_died, - _fs_load_glyphs, - NULL, - NULL, - NULL); -} - -static int -check_fs_open_font(pointer client, FontPathElementPtr fpe, Mask flags, - char *name, int namelen, - fsBitmapFormat format, fsBitmapFormatMask fmask, - XID id, FontPtr *ppfont, - char **alias, FontPtr non_cachable_font) -{ - if (XpClientIsBitmapClient(client)) - return (fs_open_font(client, fpe, flags, name, namelen, format, - fmask, id, ppfont, alias, non_cachable_font) ); - return BadFontName; -} - -static int -check_fs_list_fonts(pointer client, FontPathElementPtr fpe, - char *pattern, int patlen, int maxnames, - FontNamesPtr newnames) -{ - if (XpClientIsBitmapClient(client)) - return (fs_list_fonts(client, fpe, pattern, patlen, maxnames, - newnames)); - return BadFontName; -} - -static int -check_fs_start_list_with_info(pointer client, FontPathElementPtr fpe, - char *pattern, int len, int maxnames, - pointer *pdata) -{ - if (XpClientIsBitmapClient(client)) - return (fs_start_list_with_info(client, fpe, pattern, len, maxnames, - pdata)); - return BadFontName; -} - -static int -check_fs_next_list_with_info(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - FontInfoPtr *pFontInfo, int *numFonts, - pointer private) -{ - if (XpClientIsBitmapClient(client)) - return (fs_next_list_with_info(client, fpe, namep, namelenp, pFontInfo, - numFonts,private)); - return BadFontName; -} - -void -check_fs_register_fpe_functions(void) -{ - RegisterFPEFunctions(fs_name_check, - fs_init_fpe, - fs_free_fpe, - fs_reset_fpe, - check_fs_open_font, - fs_close_font, - check_fs_list_fonts, - check_fs_start_list_with_info, - check_fs_next_list_with_info, - fs_wakeup, - fs_client_died, - _fs_load_glyphs, - NULL, - NULL, - NULL); -} diff --git a/nx-X11/lib/font/fc/fserve.h b/nx-X11/lib/font/fc/fserve.h deleted file mode 100644 index 3254f40..0000000 --- a/nx-X11/lib/font/fc/fserve.h +++ /dev/null @@ -1,96 +0,0 @@ -/* $Xorg: fserve.h,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ */ -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - * - */ -/* $XFree86: xc/lib/font/fc/fserve.h,v 1.4 2001/01/17 19:43:29 dawes Exp $ */ - -#ifndef _FSERVE_H_ -#define _FSERVE_H_ -/* - * font server data structures - */ - -/* types of block records */ -#define FS_OPEN_FONT 1 -#define FS_LOAD_GLYPHS 2 -#define FS_LIST_FONTS 3 -#define FS_LIST_WITH_INFO 4 - -/* states of OpenFont */ -#define FS_OPEN_REPLY 0 -#define FS_INFO_REPLY 1 -#define FS_EXTENT_REPLY 2 -#define FS_GLYPHS_REPLY 3 -#define FS_DONE_REPLY 4 -#define FS_DEPENDING 5 - -/* status of ListFontsWithInfo */ -#define FS_LFWI_WAITING 0 -#define FS_LFWI_REPLY 1 -#define FS_LFWI_FINISHED 2 - -/* states of connection */ -#define FS_CONN_CLOSED 0 -#define FS_CONN_CONNECTING 1 -#define FS_CONN_READ_HEADER 2 -#define FS_CONN_READ_DATA 3 - -#define AccessDone 0x400 - -typedef struct _fs_font_data *FSFontDataPtr; -typedef struct _fs_blocked_font *FSBlockedFontPtr; -typedef struct _fs_blocked_glyphs *FSBlockedGlyphPtr; -typedef struct _fs_blocked_list *FSBlockedListPtr; -typedef struct _fs_blocked_list_info *FSBlockedListInfoPtr; -typedef struct _fs_block_data *FSBlockDataPtr; -typedef struct _fs_font_table *FSFontTablePtr; -typedef struct _fs_fpe_data *FSFpePtr; - -typedef struct _fs_blocked_bitmaps *FSBlockedBitmapPtr; -typedef struct _fs_blocked_extents *FSBlockedExtentPtr; - -extern void _fs_convert_char_info ( fsXCharInfo *src, xCharInfo *dst ); -extern void _fs_free_props (FontInfoPtr pfi); -extern FontPtr fs_create_font (FontPathElementPtr fpe, - char *name, - int namelen, - fsBitmapFormat format, - fsBitmapFormatMask fmask); - -extern int fs_load_all_glyphs ( FontPtr pfont ); -extern int _fs_load_glyphs ( pointer client, FontPtr pfont, Bool range_flag, - unsigned int nchars, int item_size, - unsigned char *data ); - -/* - * These should be declared elsewhere, but I'm concerned that moving them - * would cause problems building other pieces - */ -extern FontPtr find_old_font (Font id); -extern int set_font_authorizations (char **a, int *len, pointer client); -extern long GetTimeInMillis (void); - - -#endif /* _FSERVE_H_ */ diff --git a/nx-X11/lib/font/fc/fservestr.h b/nx-X11/lib/font/fc/fservestr.h deleted file mode 100644 index 0e41666..0000000 --- a/nx-X11/lib/font/fc/fservestr.h +++ /dev/null @@ -1,211 +0,0 @@ -/* $Xorg: fservestr.h,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ */ -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ -/* $XFree86: xc/lib/font/fc/fservestr.h,v 3.3 2001/01/17 19:43:29 dawes Exp $ */ - -#ifndef _FSERVESTR_H_ -#define _FSERVESTR_H_ - -#include "fserve.h" -#include "fsio.h" - -/* - * font server data structures - */ -/* - * font server private storage - */ - -typedef struct _fs_glyph { - struct _fs_glyph *next; -} FSGlyphRec, *FSGlyphPtr; - -typedef struct _fs_font { - CharInfoPtr pDefault; - CharInfoPtr encoding; - CharInfoPtr inkMetrics; - FSGlyphPtr glyphs; -} FSFontRec, *FSFontPtr; - -/* FS special data for the font */ -typedef struct _fs_font_data { - long fontid; - int generation; /* FS generation when opened */ - unsigned long glyphs_to_get; /* # glyphs remaining to be gotten */ - - /* Following data needed in case font needs to be reopened. */ - int namelen; - char *name; - fsBitmapFormat format; - fsBitmapFormatMask fmask; -} FSFontDataRec; - -typedef struct fs_clients_depending { - pointer client; - struct fs_clients_depending *next; -} FSClientsDependingRec, *FSClientsDependingPtr; - -/* OpenFont specific data for blocked request */ -typedef struct _fs_blocked_font { - FontPtr pfont; /* must be first for fs_read_glyphs */ - long fontid; - int state; /* how many of the replies have landed */ - int flags; - Bool freeFont; /* free this font on failure */ - CARD16 queryInfoSequence; - CARD16 queryExtentsSequence; - CARD16 queryBitmapsSequence; - fsBitmapFormat format; - FSClientsDependingPtr clients_depending; -} FSBlockedFontRec; - -/* LoadGlyphs data for blocked request */ -typedef struct _fs_blocked_glyphs { - FontPtr pfont; /* must be first for fs_read_glyphs */ - int num_expected_ranges; - fsRange *expected_ranges; - FSClientsDependingPtr clients_depending; -} FSBlockedGlyphRec; - -/* LoadExtents data for blocked request */ -typedef struct _fs_blocked_extents { - FontPtr pfont; - fsRange *expected_ranges; - int nranges; - unsigned long nextents; - fsXCharInfo *extents; -} FSBlockedExtentRec; - -/* LoadBitmaps data for blocked request */ -typedef struct _fs_blocked_bitmaps { - FontPtr pfont; - fsRange *expected_ranges; - int nranges; - unsigned long size; - unsigned long nglyphs; - fsOffset32 *offsets; - pointer gdata; -} FSBlockedBitmapRec; - -/* state for blocked ListFonts */ -typedef struct _fs_blocked_list { - FontNamesPtr names; -} FSBlockedListRec; - -/* state for blocked ListFontsWithInfo */ -typedef struct _fs_blocked_list_info { - int status; - int namelen; - FontInfoRec info; - char name[256]; - int remaining; -} FSBlockedListInfoRec; - -/* state for blocked request */ -typedef struct _fs_block_data { - int type; /* Open Font, LoadGlyphs, ListFonts, - * ListWithInfo */ - pointer client; /* who wants it */ - CARD16 sequenceNumber; /* expected */ - pointer data; /* type specific data */ - int errcode; /* Suspended, et al. */ - struct _fs_block_data *depending; /* clients depending on this one */ - struct _fs_block_data *next; -} FSBlockDataRec; - -/* state for reconnected to dead font server */ -typedef struct _fs_reconnect { - int i; -} FSReconnectRec, *FSReconnectPtr; - - -#if !defined(UNIXCPP) || defined(ANSICPP) -#define fsCat(x,y) x##_##y -#else -#define fsCat(x,y) x/**/_/**/y -#endif - - -/* copy XCharInfo parts of a protocol reply into a xCharInfo */ - -#define fsUnpack_XCharInfo(packet, structure) \ - (structure)->leftSideBearing = fsCat(packet,left); \ - (structure)->rightSideBearing = fsCat(packet,right); \ - (structure)->characterWidth = fsCat(packet,width); \ - (structure)->ascent = fsCat(packet,ascent); \ - (structure)->descent = fsCat(packet,descent); \ - (structure)->attributes = fsCat(packet,attributes) - - -/* copy XFontInfoHeader parts of a protocol reply into a FontInfoRec */ - -#define fsUnpack_XFontInfoHeader(packet, structure) \ - (structure)->allExist = ((packet)->font_header_flags & FontInfoAllCharsExist) != 0; \ - (structure)->drawDirection = \ - ((packet)->font_header_draw_direction == LeftToRightDrawDirection) ? \ - LeftToRight : RightToLeft; \ - (structure)->inkInside = ((packet)->font_header_flags & FontInfoInkInside) != 0; \ - \ - (structure)->firstRow = (packet)->font_hdr_char_range_min_char_high; \ - (structure)->firstCol = (packet)->font_hdr_char_range_min_char_low; \ - (structure)->lastRow = (packet)->font_hdr_char_range_max_char_high; \ - (structure)->lastCol = (packet)->font_hdr_char_range_max_char_low; \ - (structure)->defaultCh = (packet)->font_header_default_char_low \ - + ((packet)->font_header_default_char_high << 8); \ - \ - (structure)->fontDescent = (packet)->font_header_font_descent; \ - (structure)->fontAscent = (packet)->font_header_font_ascent; \ - \ - fsUnpack_XCharInfo((packet)->font_header_min_bounds, &(structure)->minbounds); \ - fsUnpack_XCharInfo((packet)->font_header_min_bounds, &(structure)->ink_minbounds); \ - fsUnpack_XCharInfo((packet)->font_header_max_bounds, &(structure)->maxbounds); \ - fsUnpack_XCharInfo((packet)->font_header_max_bounds, &(structure)->ink_maxbounds) - -extern void _fs_init_fontinfo ( FSFpePtr conn, FontInfoPtr pfi ); -extern int _fs_convert_props ( fsPropInfo *pi, fsPropOffset *po, pointer pd, - FontInfoPtr pfi ); -extern int _fs_convert_lfwi_reply ( FSFpePtr conn, FontInfoPtr pfi, - fsListFontsWithXInfoReply *fsrep, - fsPropInfo *pi, fsPropOffset *po, - pointer pd ); -extern int fs_build_range ( FontPtr pfont, Bool range_flag, - unsigned int count, int item_size, - unsigned char *data, int *nranges, - fsRange **ranges ); -extern void _fs_clean_aborted_loadglyphs ( FontPtr pfont, - int num_expected_ranges, - fsRange *expected_ranges ); -extern int _fs_check_extents ( FontPtr pfont, Mask flags, int nranges, - fsRange *range, FSBlockDataPtr blockrec ); -extern int _fs_check_bitmaps ( FontPtr pfont, fsBitmapFormat format, - Mask flags, int nranges, fsRange *range, - FSBlockDataPtr blockrec ); -extern int _fs_get_glyphs ( FontPtr pFont, unsigned long count, - unsigned char *chars, FontEncoding charEncoding, - unsigned long *glyphCount, CharInfoPtr *glyphs ); -extern void _fs_unload_font ( FontPtr pfont ); -extern void _fs_init_font ( FontPtr pfont ); -extern pointer fs_alloc_glyphs (FontPtr pFont, int size); -#endif /* _FSERVESTR_H_ */ diff --git a/nx-X11/lib/font/fc/fsio.c b/nx-X11/lib/font/fc/fsio.c deleted file mode 100644 index fbfb9df..0000000 --- a/nx-X11/lib/font/fc/fsio.c +++ /dev/null @@ -1,516 +0,0 @@ -/* $Xorg: fsio.c,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ */ -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ -/* $XFree86: xc/lib/font/fc/fsio.c,v 3.16tsi Exp $ */ -/* - * font server i/o routines - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef WIN32 -#define _WILLWINSOCK_ -#include "X11/Xwindows.h" -#endif - -#define FONT_t -#define TRANS_CLIENT -#include "X11/Xtrans/Xtrans.h" -#include "X11/Xpoll.h" -#include <X11/fonts/FS.h> -#include <X11/fonts/FSproto.h> -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> -#include "fservestr.h" - -#include <stdio.h> -#include <signal.h> -#include <sys/types.h> -#if !defined(WIN32) -#ifndef Lynx -#include <sys/socket.h> -#else -#include <socket.h> -#endif -#endif -#include <errno.h> -#ifdef WIN32 -#define EWOULDBLOCK WSAEWOULDBLOCK -#undef EINTR -#define EINTR WSAEINTR -#endif - -#ifdef __UNIXOS2__ -#define select(n,r,w,x,t) os2PseudoSelect(n,r,w,x,t) -#endif - - -static int padlength[4] = {0, 3, 2, 1}; -fd_set _fs_fd_mask; - -static int -_fs_resize (FSBufPtr buf, long size); - -static void -_fs_downsize (FSBufPtr buf, long size); - -int -_fs_poll_connect (XtransConnInfo trans_conn, int timeout) -{ - fd_set w_mask; - struct timeval tv; - int fs_fd = _FontTransGetConnectionNumber (trans_conn); - int ret; - - do - { - tv.tv_usec = 0; - tv.tv_sec = timeout; - FD_ZERO (&w_mask); - FD_SET (fs_fd, &w_mask); - ret = Select (fs_fd + 1, NULL, &w_mask, NULL, &tv); - } while (ret < 0 && ECHECK(EINTR)); - if (ret == 0) - return FSIO_BLOCK; - if (ret < 0) - return FSIO_ERROR; - return FSIO_READY; -} - -XtransConnInfo -_fs_connect(char *servername, int *err) -{ - XtransConnInfo trans_conn; /* transport connection object */ - int ret; - int i = 0; - int retries = 5; - - /* - * Open the network connection. - */ - if( (trans_conn=_FontTransOpenCOTSClient(servername)) == NULL ) - { - *err = FSIO_ERROR; - return 0; - } - - /* - * Set the connection non-blocking since we use select() to block. - */ - - _FontTransSetOption(trans_conn, TRANS_NONBLOCKING, 1); - - do { - if (i == TRANS_TRY_CONNECT_AGAIN) - sleep(1); - i = _FontTransConnect(trans_conn,servername); - } while ((i == TRANS_TRY_CONNECT_AGAIN) && (retries-- > 0)); - - if (i < 0) - { - if (i == TRANS_IN_PROGRESS) - ret = FSIO_BLOCK; - else - ret = FSIO_ERROR; - } - else - ret = FSIO_READY; - - if (ret == FSIO_ERROR) - { - _FontTransClose(trans_conn); - trans_conn = 0; - } - - *err = ret; - return trans_conn; -} - -int -_fs_fill (FSFpePtr conn) -{ - long avail; - long bytes_read; - Bool waited = FALSE; - - if (_fs_flush (conn) < 0) - return FSIO_ERROR; - /* - * Don't go overboard here; stop reading when we've - * got enough to satisfy the pending request - */ - while ((conn->inNeed - (conn->inBuf.insert - conn->inBuf.remove)) > 0) - { - avail = conn->inBuf.size - conn->inBuf.insert; - /* - * For SVR4 with a unix-domain connection, ETEST() after selecting - * readable means the server has died. To do this here, we look for - * two consecutive reads returning ETEST(). - */ - ESET (0); - bytes_read =_FontTransRead(conn->trans_conn, - conn->inBuf.buf + conn->inBuf.insert, - avail); - if (bytes_read > 0) { - conn->inBuf.insert += bytes_read; - waited = FALSE; - } - else - { - if (bytes_read == 0 || ETEST ()) - { - if (!waited) - { - waited = TRUE; - if (_fs_wait_for_readable (conn, 0) == FSIO_BLOCK) - return FSIO_BLOCK; - continue; - } - } - _fs_connection_died (conn); - return FSIO_ERROR; - } - } - return FSIO_READY; -} - -/* - * Make space and return whether data have already arrived - */ - -int -_fs_start_read (FSFpePtr conn, long size, char **buf) -{ - int ret; - - conn->inNeed = size; - if (fs_inqueued(conn) < size) - { - if (_fs_resize (&conn->inBuf, size) != FSIO_READY) - { - _fs_connection_died (conn); - return FSIO_ERROR; - } - ret = _fs_fill (conn); - if (ret == FSIO_ERROR) - return ret; - if (ret == FSIO_BLOCK || fs_inqueued(conn) < size) - return FSIO_BLOCK; - } - if (buf) - *buf = conn->inBuf.buf + conn->inBuf.remove; - return FSIO_READY; -} - -void -_fs_done_read (FSFpePtr conn, long size) -{ - if (conn->inBuf.insert - conn->inBuf.remove < size) - { -#ifdef DEBUG - fprintf (stderr, "_fs_done_read skipping to many bytes\n"); -#endif - return; - } - conn->inBuf.remove += size; - conn->inNeed -= size; - _fs_downsize (&conn->inBuf, FS_BUF_MAX); -} - -long -_fs_pad_length (long len) -{ - return len + padlength[len&3]; -} - -int -_fs_flush (FSFpePtr conn) -{ - long bytes_written; - long remain; - - /* XXX - hack. The right fix is to remember that the font server - has gone away when we first discovered it. */ - if (conn->fs_fd < 0) - return FSIO_ERROR; - - while ((remain = conn->outBuf.insert - conn->outBuf.remove) > 0) - { - bytes_written = _FontTransWrite(conn->trans_conn, - conn->outBuf.buf + conn->outBuf.remove, - (int) remain); - if (bytes_written > 0) - { - conn->outBuf.remove += bytes_written; - } - else - { - if (bytes_written == 0 || ETEST ()) - { - conn->brokenWriteTime = GetTimeInMillis () + FS_FLUSH_POLL; - _fs_mark_block (conn, FS_BROKEN_WRITE); - break; - } - if (!ECHECK (EINTR)) - { - _fs_connection_died (conn); - return FSIO_ERROR; - } - } - } - if (conn->outBuf.remove == conn->outBuf.insert) - { - _fs_unmark_block (conn, FS_BROKEN_WRITE|FS_PENDING_WRITE); - if (conn->outBuf.size > FS_BUF_INC) - conn->outBuf.buf = xrealloc (conn->outBuf.buf, FS_BUF_INC); - conn->outBuf.remove = conn->outBuf.insert = 0; - } - return FSIO_READY; -} - -static int -_fs_resize (FSBufPtr buf, long size) -{ - char *new; - long new_size; - - if (buf->remove) - { - if (buf->remove != buf->insert) - { - memmove (buf->buf, - buf->buf + buf->remove, - buf->insert - buf->remove); - } - buf->insert -= buf->remove; - buf->remove = 0; - } - if (buf->size - buf->remove < size) - { - new_size = ((buf->remove + size + FS_BUF_INC) / FS_BUF_INC) * FS_BUF_INC; - new = xrealloc (buf->buf, new_size); - if (!new) - return FSIO_ERROR; - buf->buf = new; - buf->size = new_size; - } - return FSIO_READY; -} - -static void -_fs_downsize (FSBufPtr buf, long size) -{ - if (buf->insert == buf->remove) - { - buf->insert = buf->remove = 0; - if (buf->size > size) - { - buf->buf = xrealloc (buf->buf, size); - buf->size = size; - } - } -} - -void -_fs_io_reinit (FSFpePtr conn) -{ - conn->outBuf.insert = conn->outBuf.remove = 0; - _fs_downsize (&conn->outBuf, FS_BUF_INC); - conn->inBuf.insert = conn->inBuf.remove = 0; - _fs_downsize (&conn->inBuf, FS_BUF_MAX); -} - -Bool -_fs_io_init (FSFpePtr conn) -{ - conn->outBuf.insert = conn->outBuf.remove = 0; - conn->outBuf.buf = xalloc (FS_BUF_INC); - if (!conn->outBuf.buf) - return FALSE; - conn->outBuf.size = FS_BUF_INC; - - conn->inBuf.insert = conn->inBuf.remove = 0; - conn->inBuf.buf = xalloc (FS_BUF_INC); - if (!conn->inBuf.buf) - { - xfree (conn->outBuf.buf); - conn->outBuf.buf = 0; - return FALSE; - } - conn->inBuf.size = FS_BUF_INC; - - return TRUE; -} - -void -_fs_io_fini (FSFpePtr conn) -{ - if (conn->outBuf.buf) - xfree (conn->outBuf.buf); - if (conn->inBuf.buf) - xfree (conn->inBuf.buf); -} - -static int -_fs_do_write(FSFpePtr conn, char *data, long len, long size) -{ - if (size == 0) { -#ifdef DEBUG - fprintf(stderr, "tried to write 0 bytes \n"); -#endif - return FSIO_READY; - } - - if (conn->fs_fd == -1) - return FSIO_ERROR; - - while (conn->outBuf.insert + size > conn->outBuf.size) - { - if (_fs_flush (conn) < 0) - return FSIO_ERROR; - if (_fs_resize (&conn->outBuf, size) < 0) - { - _fs_connection_died (conn); - return FSIO_ERROR; - } - } - memcpy (conn->outBuf.buf + conn->outBuf.insert, data, len); - conn->outBuf.insert += size; - _fs_mark_block (conn, FS_PENDING_WRITE); - return FSIO_READY; -} - -/* - * Write the indicated bytes - */ -int -_fs_write (FSFpePtr conn, char *data, long len) -{ - return _fs_do_write (conn, data, len, len); -} - -/* - * Write the indicated bytes adding any appropriate pad - */ -int -_fs_write_pad(FSFpePtr conn, char *data, long len) -{ - return _fs_do_write (conn, data, len, len + padlength[len & 3]); -} - -/* - * returns the amount of data waiting to be read - */ -int -_fs_data_ready(FSFpePtr conn) -{ - BytesReadable_t readable; - - if (_FontTransBytesReadable(conn->trans_conn, &readable) < 0) - return -1; - return readable; -} - -int -_fs_wait_for_readable(FSFpePtr conn, int ms) -{ - fd_set r_mask; - fd_set e_mask; - int result; - struct timeval tv; - - for (;;) { - if (conn->fs_fd < 0) - return FSIO_ERROR; - FD_ZERO(&r_mask); - FD_ZERO(&e_mask); - tv.tv_sec = ms / 1000; - tv.tv_usec = (ms % 1000) * 1000; - FD_SET(conn->fs_fd, &r_mask); - FD_SET(conn->fs_fd, &e_mask); - result = Select(conn->fs_fd + 1, &r_mask, NULL, &e_mask, &tv); - if (result < 0) - { - if (ECHECK(EINTR) || ECHECK(EAGAIN)) - continue; - else - return FSIO_ERROR; - } - if (result == 0) - return FSIO_BLOCK; - if (FD_ISSET(conn->fs_fd, &r_mask)) - return FSIO_READY; - return FSIO_ERROR; - } -} - -int -_fs_set_bit(fd_set *mask, int fd) -{ - FD_SET(fd, mask); - return fd; -} - -int -_fs_is_bit_set(fd_set *mask, int fd) -{ - return FD_ISSET(fd, mask); -} - -void -_fs_bit_clear(fd_set *mask, int fd) -{ - FD_CLR(fd, mask); -} - -int -_fs_any_bit_set(fd_set *mask) -{ - return XFD_ANYSET(mask); -} - -void -_fs_or_bits(fd_set *dst, fd_set *m1, fd_set *m2) -{ -#ifdef WIN32 - int i; - if (dst != m1) { - for (i = m1->fd_count; --i >= 0; ) { - if (!FD_ISSET(m1->fd_array[i], dst)) - FD_SET(m1->fd_array[i], dst); - } - } - if (dst != m2) { - for (i = m2->fd_count; --i >= 0; ) { - if (!FD_ISSET(m2->fd_array[i], dst)) - FD_SET(m2->fd_array[i], dst); - } - } -#else - XFD_ORSET(dst, m1, m2); -#endif -} diff --git a/nx-X11/lib/font/fc/fsio.h b/nx-X11/lib/font/fc/fsio.h deleted file mode 100644 index 2241436..0000000 --- a/nx-X11/lib/font/fc/fsio.h +++ /dev/null @@ -1,187 +0,0 @@ -/* $Xorg: fsio.h,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ */ -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ -/* $XFree86: xc/lib/font/fc/fsio.h,v 1.5 1999/12/30 02:39:06 robin Exp $ */ - -#ifndef _FSIO_H_ -#define _FSIO_H_ - -#undef DEBUG -#define REQUEST_LOG_SIZE 100 - -typedef struct _fs_fpe_alternate { - char *name; - Bool subset; -} FSFpeAltRec, *FSFpeAltPtr; - - -/* Per client access contexts */ -typedef struct _fs_client_data { - pointer client; - struct _fs_client_data *next; - XID acid; - int auth_generation; -} FSClientRec, *FSClientPtr; - -#define FS_RECONNECT_POLL 1000 -#define FS_RECONNECT_WAIT 5000 -#define FS_GIVEUP_WAIT 20000 -#define FS_REQUEST_TIMEOUT 20000 -#define FS_OPEN_TIMEOUT 30000 -#define FS_REOPEN_TIMEOUT 10000 -#define FS_FLUSH_POLL 1000 - -typedef struct _fs_buf { - char *buf; /* data */ - long size; /* sizeof data */ - long insert; /* where to insert new data */ - long remove; /* where to remove old data */ -} FSBufRec, *FSBufPtr; - -#define FS_BUF_INC 1024 -#define FS_BUF_MAX 32768 - -#define FS_PENDING_WRITE 0x01 /* some write data is queued */ -#define FS_BROKEN_WRITE 0x02 /* writes are broken */ -#define FS_BROKEN_CONNECTION 0x04 /* connection is broken */ -#define FS_PENDING_REPLY 0x08 /* waiting for a reply */ -#define FS_GIVE_UP 0x10 /* font server declared useless */ -#define FS_COMPLETE_REPLY 0x20 /* complete reply ready */ -#define FS_RECONNECTING 0x40 - -#define FS_CONN_UNCONNECTED 0 -#define FS_CONN_CONNECTING 1 -#define FS_CONN_CONNECTED 2 -#define FS_CONN_SENT_PREFIX 3 -#define FS_CONN_RECV_INIT 4 -#define FS_CONN_SENT_CAT 5 -#define FS_CONN_RUNNING 6 - -/* FS specific font FontPathElement data */ -typedef struct _fs_fpe_data { - FSFpePtr next; /* list of all active fs fpes */ - int fs_fd; /* < 0 when not running */ - int fs_conn_state; /* connection state */ - int current_seq; - char *servername; - Bool has_catalogues; - - int generation; - int numAlts; - int alternate; /* which alternate is in use +1 */ - int fsMajorVersion; /* font server major version number */ - FSFpeAltPtr alts; - - FSClientPtr clients; - XID curacid; -#ifdef DEBUG - int reqindex; - struct { - int opcode; - int sequence; - } reqbuffer[REQUEST_LOG_SIZE]; -#endif - FSBufRec outBuf; /* request queue */ - FSBufRec inBuf; /* reply queue */ - long inNeed; /* amount needed for reply */ - - CARD32 blockState; - CARD32 blockedReplyTime; /* time to abort blocked read */ - CARD32 brokenWriteTime; /* time to retry broken write */ - CARD32 blockedConnectTime; /* time to abort blocked connect */ - CARD32 brokenConnectionTime; /* time to retry broken connection */ - - FSBlockDataPtr blockedRequests; - - struct _XtransConnInfo *trans_conn; /* transport connection object */ -} FSFpeRec; - -#define fs_outspace(conn) ((conn)->outBuf.size - (conn)->outBuf.insert) -#define fs_outqueued(conn) ((conn)->outBuf.insert - (conn)->outBuf.remove) -#define fs_inqueued(conn) ((conn)->inBuf.insert - (conn)->inBuf.remove) -#define fs_needsflush(conn) (fs_outqueued(conn) != 0) -#define fs_needsfill(conn) (fs_inqueued(conn) < (conn)->inNeed) -#define fs_needsconnect(conn) ((conn)->fs_fd < 0) -#define fs_data_read(conn) ((conn)->inBuf.insert - (conn)->inBuf.remove) - -#define FSIO_READY 1 -#define FSIO_BLOCK 0 -#define FSIO_ERROR -1 - -extern Bool _fs_reopen_server ( FSFpePtr conn ); -extern int _fs_write ( FSFpePtr conn, char *data, long size ); -extern int _fs_write_pad ( FSFpePtr conn, char *data, long len ); -extern int _fs_data_ready ( FSFpePtr conn ); -extern int _fs_wait_for_readable ( FSFpePtr conn, int ms ); -extern int _fs_set_bit ( fd_set * mask, int fd ); -extern int _fs_is_bit_set ( fd_set * mask, int fd ); -extern void _fs_bit_clear ( fd_set * mask, int fd ); -extern int _fs_any_bit_set ( fd_set * mask ); -extern void _fs_or_bits ( fd_set * dst, fd_set * m1, fd_set * m2 ); -extern long _fs_pad_length (long len); - -extern void _fs_connection_died ( FSFpePtr conn ); - -extern int _fs_fill (FSFpePtr conn); -extern int _fs_flush (FSFpePtr conn); -extern void _fs_mark_block (FSFpePtr conn, CARD32 mask); -extern void _fs_unmark_block (FSFpePtr conn, CARD32 mask); -extern void _fs_done_read (FSFpePtr conn, long size); -extern void _fs_io_reinit (FSFpePtr conn); -extern int _fs_start_read (FSFpePtr conn, long size, char **buf); -extern Bool _fs_io_init (FSFpePtr conn); -extern void _fs_io_fini (FSFpePtr conn); -extern int _fs_poll_connect (XtransConnInfo trans_conn, int timeout); -extern XtransConnInfo _fs_connect(char *servername, int *ret); - -/* check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX - * systems are broken and return EWOULDBLOCK when they should return EAGAIN - */ -#ifdef WIN32 -#define ETEST() (WSAGetLastError() == WSAEWOULDBLOCK) -#else -#if defined(EAGAIN) && defined(EWOULDBLOCK) -#define ETEST() (errno == EAGAIN || errno == EWOULDBLOCK) -#else -#ifdef EAGAIN -#define ETEST() (errno == EAGAIN) -#else -#define ETEST() (errno == EWOULDBLOCK) -#endif -#endif -#endif -#ifdef WIN32 -#define ECHECK(err) (WSAGetLastError() == err) -#define ESET(val) WSASetLastError(val) -#else -#ifdef ISC -#define ECHECK(err) ((errno == err) || ETEST()) -#else -#define ECHECK(err) (errno == err) -#endif -#define ESET(val) errno = val -#endif - -#endif /* _FSIO_H_ */ diff --git a/nx-X11/lib/font/fc/fsio.h.NX.reference b/nx-X11/lib/font/fc/fsio.h.NX.reference deleted file mode 100644 index f79a17b..0000000 --- a/nx-X11/lib/font/fc/fsio.h.NX.reference +++ /dev/null @@ -1,191 +0,0 @@ -/* $Xorg: fsio.h,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ */ -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ -/* $XFree86: xc/lib/font/fc/fsio.h,v 1.6 2001/01/17 19:43:29 dawes Exp $ */ - -#ifndef _FSIO_H_ -#define _FSIO_H_ - -#undef DEBUG -#define REQUEST_LOG_SIZE 100 - -typedef struct _fs_fpe_alternate { - char *name; - Bool subset; -} FSFpeAltRec, *FSFpeAltPtr; - - -/* Per client access contexts */ -typedef struct _fs_client_data { - pointer client; - struct _fs_client_data *next; - XID acid; - int auth_generation; -} FSClientRec, *FSClientPtr; - -#define FS_RECONNECT_POLL 1000 -#ifdef __CYGWIN__ -#define FS_RECONNECT_WAIT 800 -#else -#define FS_RECONNECT_WAIT 5000 -#endif -#define FS_GIVEUP_WAIT 20000 -#define FS_REQUEST_TIMEOUT 20000 -#define FS_OPEN_TIMEOUT 30000 -#define FS_REOPEN_TIMEOUT 10000 -#define FS_FLUSH_POLL 1000 - -typedef struct _fs_buf { - char *buf; /* data */ - long size; /* sizeof data */ - long insert; /* where to insert new data */ - long remove; /* where to remove old data */ -} FSBufRec, *FSBufPtr; - -#define FS_BUF_INC 1024 -#define FS_BUF_MAX 32768 - -#define FS_PENDING_WRITE 0x01 /* some write data is queued */ -#define FS_BROKEN_WRITE 0x02 /* writes are broken */ -#define FS_BROKEN_CONNECTION 0x04 /* connection is broken */ -#define FS_PENDING_REPLY 0x08 /* waiting for a reply */ -#define FS_GIVE_UP 0x10 /* font server declared useless */ -#define FS_COMPLETE_REPLY 0x20 /* complete reply ready */ -#define FS_RECONNECTING 0x40 - -#define FS_CONN_UNCONNECTED 0 -#define FS_CONN_CONNECTING 1 -#define FS_CONN_CONNECTED 2 -#define FS_CONN_SENT_PREFIX 3 -#define FS_CONN_RECV_INIT 4 -#define FS_CONN_SENT_CAT 5 -#define FS_CONN_RUNNING 6 - -/* FS specific font FontPathElement data */ -typedef struct _fs_fpe_data { - FSFpePtr next; /* list of all active fs fpes */ - int fs_fd; /* < 0 when not running */ - int fs_conn_state; /* connection state */ - int current_seq; - char *servername; - Bool has_catalogues; - - int generation; - int numAlts; - int alternate; /* which alternate is in use +1 */ - int fsMajorVersion; /* font server major version number */ - FSFpeAltPtr alts; - - FSClientPtr clients; - XID curacid; -#ifdef DEBUG - int reqindex; - struct { - int opcode; - int sequence; - } reqbuffer[REQUEST_LOG_SIZE]; -#endif - FSBufRec outBuf; /* request queue */ - FSBufRec inBuf; /* reply queue */ - long inNeed; /* amount needed for reply */ - - CARD32 blockState; - CARD32 blockedReplyTime; /* time to abort blocked read */ - CARD32 brokenWriteTime; /* time to retry broken write */ - CARD32 blockedConnectTime; /* time to abort blocked connect */ - CARD32 brokenConnectionTime; /* time to retry broken connection */ - - FSBlockDataPtr blockedRequests; - - struct _XtransConnInfo *trans_conn; /* transport connection object */ -} FSFpeRec; - -#define fs_outspace(conn) ((conn)->outBuf.size - (conn)->outBuf.insert) -#define fs_outqueued(conn) ((conn)->outBuf.insert - (conn)->outBuf.remove) -#define fs_inqueued(conn) ((conn)->inBuf.insert - (conn)->inBuf.remove) -#define fs_needsflush(conn) (fs_outqueued(conn) != 0) -#define fs_needsfill(conn) (fs_inqueued(conn) < (conn)->inNeed) -#define fs_needsconnect(conn) ((conn)->fs_fd < 0) -#define fs_data_read(conn) ((conn)->inBuf.insert - (conn)->inBuf.remove) - -#define FSIO_READY 1 -#define FSIO_BLOCK 0 -#define FSIO_ERROR -1 - -extern Bool _fs_reopen_server ( FSFpePtr conn ); -extern int _fs_write ( FSFpePtr conn, char *data, long size ); -extern int _fs_write_pad ( FSFpePtr conn, char *data, long len ); -extern int _fs_data_ready ( FSFpePtr conn ); -extern int _fs_wait_for_readable ( FSFpePtr conn, int ms ); -extern int _fs_set_bit ( fd_set * mask, int fd ); -extern int _fs_is_bit_set ( fd_set * mask, int fd ); -extern void _fs_bit_clear ( fd_set * mask, int fd ); -extern int _fs_any_bit_set ( fd_set * mask ); -extern void _fs_or_bits ( fd_set * dst, fd_set * m1, fd_set * m2 ); -extern long _fs_pad_length (long len); - -extern void _fs_connection_died ( FSFpePtr conn ); - -extern int _fs_fill (FSFpePtr conn); -extern int _fs_flush (FSFpePtr conn); -extern void _fs_mark_block (FSFpePtr conn, CARD32 mask); -extern void _fs_unmark_block (FSFpePtr conn, CARD32 mask); -extern void _fs_done_read (FSFpePtr conn, long size); -extern void _fs_io_reinit (FSFpePtr conn); -extern int _fs_start_read (FSFpePtr conn, long size, char **buf); -extern Bool _fs_io_init (FSFpePtr conn); -extern void _fs_io_fini (FSFpePtr conn); -extern int _fs_poll_connect (XtransConnInfo trans_conn, int timeout); -extern XtransConnInfo _fs_connect(char *servername, int *ret); - -/* check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX - * systems are broken and return EWOULDBLOCK when they should return EAGAIN - */ -#ifdef WIN32 -#define ETEST() (WSAGetLastError() == WSAEWOULDBLOCK) -#else -#if defined(EAGAIN) && defined(EWOULDBLOCK) -#define ETEST() (errno == EAGAIN || errno == EWOULDBLOCK) -#else -#ifdef EAGAIN -#define ETEST() (errno == EAGAIN) -#else -#define ETEST() (errno == EWOULDBLOCK) -#endif -#endif -#endif -#ifdef WIN32 -#define ECHECK(err) (WSAGetLastError() == err) -#define ESET(val) WSASetLastError(val) -#else -#ifdef ISC -#define ECHECK(err) ((errno == err) || ETEST()) -#else -#define ECHECK(err) (errno == err) -#endif -#define ESET(val) errno = val -#endif - -#endif /* _FSIO_H_ */ diff --git a/nx-X11/lib/font/fc/fsio.h.XF86.reference b/nx-X11/lib/font/fc/fsio.h.XF86.reference deleted file mode 100644 index 974ef4a..0000000 --- a/nx-X11/lib/font/fc/fsio.h.XF86.reference +++ /dev/null @@ -1,187 +0,0 @@ -/* $Xorg: fsio.h,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ */ -/* - * Copyright 1990 Network Computing Devices - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Network Computing Devices not be - * used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOFTWARE. - * - * Author: Dave Lemke, Network Computing Devices, Inc - */ -/* $XFree86: xc/lib/font/fc/fsio.h,v 1.6 2001/01/17 19:43:29 dawes Exp $ */ - -#ifndef _FSIO_H_ -#define _FSIO_H_ - -#undef DEBUG -#define REQUEST_LOG_SIZE 100 - -typedef struct _fs_fpe_alternate { - char *name; - Bool subset; -} FSFpeAltRec, *FSFpeAltPtr; - - -/* Per client access contexts */ -typedef struct _fs_client_data { - pointer client; - struct _fs_client_data *next; - XID acid; - int auth_generation; -} FSClientRec, *FSClientPtr; - -#define FS_RECONNECT_POLL 1000 -#define FS_RECONNECT_WAIT 5000 -#define FS_GIVEUP_WAIT 20000 -#define FS_REQUEST_TIMEOUT 20000 -#define FS_OPEN_TIMEOUT 30000 -#define FS_REOPEN_TIMEOUT 10000 -#define FS_FLUSH_POLL 1000 - -typedef struct _fs_buf { - char *buf; /* data */ - long size; /* sizeof data */ - long insert; /* where to insert new data */ - long remove; /* where to remove old data */ -} FSBufRec, *FSBufPtr; - -#define FS_BUF_INC 1024 -#define FS_BUF_MAX 32768 - -#define FS_PENDING_WRITE 0x01 /* some write data is queued */ -#define FS_BROKEN_WRITE 0x02 /* writes are broken */ -#define FS_BROKEN_CONNECTION 0x04 /* connection is broken */ -#define FS_PENDING_REPLY 0x08 /* waiting for a reply */ -#define FS_GIVE_UP 0x10 /* font server declared useless */ -#define FS_COMPLETE_REPLY 0x20 /* complete reply ready */ -#define FS_RECONNECTING 0x40 - -#define FS_CONN_UNCONNECTED 0 -#define FS_CONN_CONNECTING 1 -#define FS_CONN_CONNECTED 2 -#define FS_CONN_SENT_PREFIX 3 -#define FS_CONN_RECV_INIT 4 -#define FS_CONN_SENT_CAT 5 -#define FS_CONN_RUNNING 6 - -/* FS specific font FontPathElement data */ -typedef struct _fs_fpe_data { - FSFpePtr next; /* list of all active fs fpes */ - int fs_fd; /* < 0 when not running */ - int fs_conn_state; /* connection state */ - int current_seq; - char *servername; - Bool has_catalogues; - - int generation; - int numAlts; - int alternate; /* which alternate is in use +1 */ - int fsMajorVersion; /* font server major version number */ - FSFpeAltPtr alts; - - FSClientPtr clients; - XID curacid; -#ifdef DEBUG - int reqindex; - struct { - int opcode; - int sequence; - } reqbuffer[REQUEST_LOG_SIZE]; -#endif - FSBufRec outBuf; /* request queue */ - FSBufRec inBuf; /* reply queue */ - long inNeed; /* amount needed for reply */ - - CARD32 blockState; - CARD32 blockedReplyTime; /* time to abort blocked read */ - CARD32 brokenWriteTime; /* time to retry broken write */ - CARD32 blockedConnectTime; /* time to abort blocked connect */ - CARD32 brokenConnectionTime; /* time to retry broken connection */ - - FSBlockDataPtr blockedRequests; - - struct _XtransConnInfo *trans_conn; /* transport connection object */ -} FSFpeRec; - -#define fs_outspace(conn) ((conn)->outBuf.size - (conn)->outBuf.insert) -#define fs_outqueued(conn) ((conn)->outBuf.insert - (conn)->outBuf.remove) -#define fs_inqueued(conn) ((conn)->inBuf.insert - (conn)->inBuf.remove) -#define fs_needsflush(conn) (fs_outqueued(conn) != 0) -#define fs_needsfill(conn) (fs_inqueued(conn) < (conn)->inNeed) -#define fs_needsconnect(conn) ((conn)->fs_fd < 0) -#define fs_data_read(conn) ((conn)->inBuf.insert - (conn)->inBuf.remove) - -#define FSIO_READY 1 -#define FSIO_BLOCK 0 -#define FSIO_ERROR -1 - -extern Bool _fs_reopen_server ( FSFpePtr conn ); -extern int _fs_write ( FSFpePtr conn, char *data, long size ); -extern int _fs_write_pad ( FSFpePtr conn, char *data, long len ); -extern int _fs_data_ready ( FSFpePtr conn ); -extern int _fs_wait_for_readable ( FSFpePtr conn, int ms ); -extern int _fs_set_bit ( fd_set * mask, int fd ); -extern int _fs_is_bit_set ( fd_set * mask, int fd ); -extern void _fs_bit_clear ( fd_set * mask, int fd ); -extern int _fs_any_bit_set ( fd_set * mask ); -extern void _fs_or_bits ( fd_set * dst, fd_set * m1, fd_set * m2 ); -extern long _fs_pad_length (long len); - -extern void _fs_connection_died ( FSFpePtr conn ); - -extern int _fs_fill (FSFpePtr conn); -extern int _fs_flush (FSFpePtr conn); -extern void _fs_mark_block (FSFpePtr conn, CARD32 mask); -extern void _fs_unmark_block (FSFpePtr conn, CARD32 mask); -extern void _fs_done_read (FSFpePtr conn, long size); -extern void _fs_io_reinit (FSFpePtr conn); -extern int _fs_start_read (FSFpePtr conn, long size, char **buf); -extern Bool _fs_io_init (FSFpePtr conn); -extern void _fs_io_fini (FSFpePtr conn); -extern int _fs_poll_connect (XtransConnInfo trans_conn, int timeout); -extern XtransConnInfo _fs_connect(char *servername, int *ret); - -/* check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX - * systems are broken and return EWOULDBLOCK when they should return EAGAIN - */ -#ifdef WIN32 -#define ETEST() (WSAGetLastError() == WSAEWOULDBLOCK) -#else -#if defined(EAGAIN) && defined(EWOULDBLOCK) -#define ETEST() (errno == EAGAIN || errno == EWOULDBLOCK) -#else -#ifdef EAGAIN -#define ETEST() (errno == EAGAIN) -#else -#define ETEST() (errno == EWOULDBLOCK) -#endif -#endif -#endif -#ifdef WIN32 -#define ECHECK(err) (WSAGetLastError() == err) -#define ESET(val) WSASetLastError(val) -#else -#ifdef ISC -#define ECHECK(err) ((errno == err) || ETEST()) -#else -#define ECHECK(err) (errno == err) -#endif -#define ESET(val) errno = val -#endif - -#endif /* _FSIO_H_ */ diff --git a/nx-X11/lib/font/fc/fslibos.h b/nx-X11/lib/font/fc/fslibos.h deleted file mode 100644 index dd266bd..0000000 --- a/nx-X11/lib/font/fc/fslibos.h +++ /dev/null @@ -1,216 +0,0 @@ -/* $Xorg: fslibos.h,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ -/* - * Copyright 1990 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - */ - -/* - -Copyright 1987, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fc/fslibos.h,v 3.8 2003/08/29 18:01:14 herrb Exp $ */ - -/* - * FSlib networking & os include file - */ - -#include <X11/Xtrans/Xtrans.h> - -#ifndef WIN32 - -/* - * makedepend screws up on #undef OPEN_MAX, so we define a new symbol - */ - -#ifndef FONT_OPEN_MAX - -#ifndef X_NOT_POSIX -# ifdef _POSIX_SOURCE -# include <limits.h> -# else -# define _POSIX_SOURCE -# include <limits.h> -# undef _POSIX_SOURCE -# endif -#endif -#ifndef SIZE_MAX -# ifdef ULONG_MAX -# define SIZE_MAX ULONG_MAX -# else -# define SIZE_MAX UINT_MAX -# endif -#endif -#ifndef OPEN_MAX -#if defined(SVR4) || defined(__UNIXOS2__) -#define OPEN_MAX 256 -#else -#include <sys/param.h> -#ifndef OPEN_MAX -#ifdef __OSF1__ -#define OPEN_MAX 256 -#else -#ifdef NOFILE -#define OPEN_MAX NOFILE -#else -#define OPEN_MAX NOFILES_MAX -#endif -#endif -#endif -#endif -#endif - -#if OPEN_MAX > 256 -#define FONT_OPEN_MAX 256 -#else -#define FONT_OPEN_MAX OPEN_MAX -#endif - -#endif /* FONT_OPEN_MAX */ - -#define NMSKBITS 32 - -#define MSKCNT ((FONT_OPEN_MAX + NMSKBITS - 1) / NMSKBITS) - -typedef unsigned long FdSet[MSKCNT]; -typedef FdSet FdSetPtr; - -#if (MSKCNT==1) -#define BITMASK(i) (1 << (i)) -#define MASKIDX(i) 0 -#endif - -#if (MSKCNT>1) -#define BITMASK(i) (1 << ((i) & (NMSKBITS - 1))) -#define MASKIDX(i) ((i) / NMSKBITS) -#endif - -#define MASKWORD(buf, i) buf[MASKIDX(i)] -#define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i) -#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i) -#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i)) - -#if (MSKCNT==1) -#define COPYBITS(src, dst) dst[0] = src[0] -#define CLEARBITS(buf) buf[0] = 0 -#define MASKANDSETBITS(dst, b1, b2) dst[0] = (b1[0] & b2[0]) -#define ORBITS(dst, b1, b2) dst[0] = (b1[0] | b2[0]) -#define UNSETBITS(dst, b1) (dst[0] &= ~b1[0]) -#define ANYSET(src) (src[0]) -#endif - -#if (MSKCNT==2) -#define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; } -#define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; } -#define MASKANDSETBITS(dst, b1, b2) {\ - dst[0] = (b1[0] & b2[0]);\ - dst[1] = (b1[1] & b2[1]); } -#define ORBITS(dst, b1, b2) {\ - dst[0] = (b1[0] | b2[0]);\ - dst[1] = (b1[1] | b2[1]); } -#define UNSETBITS(dst, b1) {\ - dst[0] &= ~b1[0]; \ - dst[1] &= ~b1[1]; } -#define ANYSET(src) (src[0] || src[1]) -#endif - -#if (MSKCNT==3) -#define COPYBITS(src, dst) { dst[0] = src[0]; dst[1] = src[1]; \ - dst[2] = src[2]; } -#define CLEARBITS(buf) { buf[0] = 0; buf[1] = 0; buf[2] = 0; } -#define MASKANDSETBITS(dst, b1, b2) {\ - dst[0] = (b1[0] & b2[0]);\ - dst[1] = (b1[1] & b2[1]);\ - dst[2] = (b1[2] & b2[2]); } -#define ORBITS(dst, b1, b2) {\ - dst[0] = (b1[0] | b2[0]);\ - dst[1] = (b1[1] | b2[1]);\ - dst[2] = (b1[2] | b2[2]); } -#define UNSETBITS(dst, b1) {\ - dst[0] &= ~b1[0]; \ - dst[1] &= ~b1[1]; \ - dst[2] &= ~b1[2]; } -#define ANYSET(src) (src[0] || src[1] || src[2]) -#endif - -#if (MSKCNT==4) -#define COPYBITS(src, dst) dst[0] = src[0]; dst[1] = src[1]; \ - dst[2] = src[2]; dst[3] = src[3] -#define CLEARBITS(buf) buf[0] = 0; buf[1] = 0; buf[2] = 0; buf[3] = 0 -#define MASKANDSETBITS(dst, b1, b2) \ - dst[0] = (b1[0] & b2[0]);\ - dst[1] = (b1[1] & b2[1]);\ - dst[2] = (b1[2] & b2[2]);\ - dst[3] = (b1[3] & b2[3]) -#define ORBITS(dst, b1, b2) \ - dst[0] = (b1[0] | b2[0]);\ - dst[1] = (b1[1] | b2[1]);\ - dst[2] = (b1[2] | b2[2]);\ - dst[3] = (b1[3] | b2[3]) -#define UNSETBITS(dst, b1) \ - dst[0] &= ~b1[0]; \ - dst[1] &= ~b1[1]; \ - dst[2] &= ~b1[2]; \ - dst[3] &= ~b1[3] -#define ANYSET(src) (src[0] || src[1] || src[2] || src[3]) -#endif - -#if (MSKCNT>4) -#define COPYBITS(src, dst) memmove((caddr_t) dst, (caddr_t) src,\ - MSKCNT*sizeof(long)) -#define CLEARBITS(buf) bzero((caddr_t) buf, MSKCNT*sizeof(long)) -#define MASKANDSETBITS(dst, b1, b2) \ - { int cri; \ - for (cri=MSKCNT; --cri>=0; ) \ - dst[cri] = (b1[cri] & b2[cri]); } -#define ORBITS(dst, b1, b2) \ - { int cri; \ - for (cri=MSKCNT; --cri>=0; ) \ - dst[cri] = (b1[cri] | b2[cri]); } -#define UNSETBITS(dst, b1) \ - { int cri; \ - for (cri=MSKCNT; --cri>=0; ) \ - dst[cri] &= ~b1[cri]; } -#if (MSKCNT==8) -#define ANYSET(src) (src[0] || src[1] || src[2] || src[3] || \ - src[4] || src[5] || src[6] || src[7]) -#endif -#endif - -#else /* not WIN32 */ - -#include <X11/Xwinsock.h> -#include <X11/Xw32defs.h> - -typedef fd_set FdSet; -typedef FdSet *FdSetPtr; - -#define CLEARBITS(set) FD_ZERO(&set) -#define BITSET(set,s) FD_SET(s,&set) -#define BITCLEAR(set,s) FD_CLR(s,&set) -#define GETBIT(set,s) FD_ISSET(s,&set) -#define ANYSET(set) set->fd_count - -#endif diff --git a/nx-X11/lib/font/fontcache/Imakefile b/nx-X11/lib/font/fontcache/Imakefile deleted file mode 100644 index 1c8526d..0000000 --- a/nx-X11/lib/font/fontcache/Imakefile +++ /dev/null @@ -1,29 +0,0 @@ -XCOMM Id: Imakefile,v 1.2 1999/01/31 13:02:46 akiyama Exp $ - - - -XCOMM $XFree86$ - -#include <Server.tmpl> - -#if BuildFontCache -FONTCACHE_DEFINES = FontCacheExtensionDefines -#endif - INCLUDES = -I. -I$(FONTINCSRC) -I../include - HEADERS = - SRCS = fontcache.c - OBJS = fontcache.o - -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont -#include <Library.tmpl> -LibraryObjectRule() - -SpecialCLibObjectRule(fontcache,$(ICONFIGFILES),$(FONTCACHE_DEFINES)) - -SubdirLibraryRule($(OBJS)) -NormalLintTarget($(SRCS)) - -DependTarget() diff --git a/nx-X11/lib/font/fontcache/fcqueue.h b/nx-X11/lib/font/fontcache/fcqueue.h deleted file mode 100644 index 58ba6df..0000000 --- a/nx-X11/lib/font/fontcache/fcqueue.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)queue.h 8.5 (Berkeley) 8/20/94 - * $_Id_: queue.h,v 1.10.2.4 1998/05/12 16:35:25 bde Exp $ - * - * ---------------------------------------------------------------------- - * - * Note: - * This header file derived from FreeBSD-2.2.7 - * /usr/include/sys/queue.h, modified for X-TrueType Server by - * Shunsuke Akiyama <akiyama@jp.FreeBSD.org>. - * - * Id: fcqueue.h,v 1.1 1999/01/06 13:36:42 akiyama Exp $ - */ - -#ifndef _FCQUEUE_H_ -#define _FCQUEUE_H_ - -/* - * Tail queue definitions. - */ -#define TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; /* first element */ \ - struct type **tqh_last; /* addr of last next element */ \ -} - -#define TAILQ_HEAD_INITIALIZER(head) \ - { NULL, &(head).tqh_first } - -#define TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ -} - -/* - * Tail queue functions. - */ -#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL) - -#define TAILQ_FOREACH(var, head, field) \ - for (var = TAILQ_FIRST(head); var; var = TAILQ_NEXT(var, field)) - -#define TAILQ_FIRST(head) ((head)->tqh_first) - -#define TAILQ_LAST(head, headname) \ - (*(((struct headname *)((head)->tqh_last))->tqh_last)) - -#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) - -#define TAILQ_PREV(elm, headname, field) \ - (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) - -#define TAILQ_INIT(head) do { \ - (head)->tqh_first = NULL; \ - (head)->tqh_last = &(head)->tqh_first; \ -} while (0) - -#define TAILQ_INSERT_HEAD(head, elm, field) do { \ - if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ - (head)->tqh_first->field.tqe_prev = \ - &(elm)->field.tqe_next; \ - else \ - (head)->tqh_last = &(elm)->field.tqe_next; \ - (head)->tqh_first = (elm); \ - (elm)->field.tqe_prev = &(head)->tqh_first; \ -} while (0) - -#define TAILQ_INSERT_TAIL(head, elm, field) do { \ - (elm)->field.tqe_next = NULL; \ - (elm)->field.tqe_prev = (head)->tqh_last; \ - *(head)->tqh_last = (elm); \ - (head)->tqh_last = &(elm)->field.tqe_next; \ -} while (0) - -#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ - if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ - (elm)->field.tqe_next->field.tqe_prev = \ - &(elm)->field.tqe_next; \ - else \ - (head)->tqh_last = &(elm)->field.tqe_next; \ - (listelm)->field.tqe_next = (elm); \ - (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ -} while (0) - -#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ - (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ - (elm)->field.tqe_next = (listelm); \ - *(listelm)->field.tqe_prev = (elm); \ - (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ -} while (0) - -#define TAILQ_REMOVE(head, elm, field) do { \ - if (((elm)->field.tqe_next) != NULL) \ - (elm)->field.tqe_next->field.tqe_prev = \ - (elm)->field.tqe_prev; \ - else \ - (head)->tqh_last = (elm)->field.tqe_prev; \ - *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ -} while (0) - -#endif /* _FCQUEUE_H_ */ diff --git a/nx-X11/lib/font/fontcache/fontcache.c b/nx-X11/lib/font/fontcache/fontcache.c deleted file mode 100644 index 40cfd63..0000000 --- a/nx-X11/lib/font/fontcache/fontcache.c +++ /dev/null @@ -1,1022 +0,0 @@ -/*- - * Copyright (c) 1998-1999 Shunsuke Akiyama <akiyama@jp.FreeBSD.org>. - * All rights reserved. - * Copyright (c) 1998-1999 X-TrueType Server Project, All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Id: fontcache.c,v 1.19 1999/01/31 13:06:00 akiyama Exp $ - */ -/* $XFree86: xc/lib/font/fontcache/fontcache.c,v 1.4 2001/04/05 17:42:28 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "fontcache.h" - -#define LOW_MARK 0 -#define HI_MARK 1 - -#define PURGE_ENTRY 1 -#define PURGE_BITMAP 2 - -typedef struct { - long hiMark; /* Cache hi water mark */ - long lowMark; /* Cache low water mark */ - long allocated; /* Cache allocated size */ - long used; /* Cache used size */ -} FontCacheSize_t; - -static int CacheInitialized = 0; - -static TAILQ_HEAD(FcInUseQueue, cache_entry) InUseQueueHead, *InUseQueue; -static TAILQ_HEAD(FcFreeQueue, cache_entry) FreeQueueHead, *FreeQueue; -static FCBCB FreeBitmapHead, *FreeBitmap; - -static long CacheHiMark; -static long CacheLowMark; -static int CacheBalance; -static FontCacheSize_t HashSize; -static FontCacheSize_t AllocSize; -static int NeedPurgeCache; -static FontCacheStatistics CacheStatistics; - -static void fc_assign_cache(void); -static int fc_assign_entry(void); -static void fc_flush_cache(void); -static int fc_get_bitmap_area(FontCacheEntryPtr, int); -static void fc_free_bitmap_area(FontCacheBitmapPtr); -static int fc_check_size(int); -static void fc_purge_cache(void); -static void fc_purge_bitmap(void); -static void fc_flush_cache_bitmap(void); -static void fc_flush_cache_inuse(void); -static void fc_flush_cache_free(void); -static void fc_purge_cache_entry(void); -static void fc_purge_cache_entry_pool(void); -static void fc_purge_bitmap_pool(void); - - -/* - * FontCacheInitialize() - * - * Initialize cache work area. - */ - -int -FontCacheInitialize() -{ -#ifdef FONTCACHE - int i; - - if (!CacheInitialized) { - /* - * first time initialization - */ -#if defined(HASH_DEBUG) || defined(DEBUG) - fprintf(stderr, "FontCacheInitialize: initializing cache\n"); -#endif - InUseQueue = &InUseQueueHead; - TAILQ_INIT(InUseQueue); - - FreeQueue = &FreeQueueHead; - TAILQ_INIT(FreeQueue); - - FreeBitmap = &FreeBitmapHead; - FreeBitmap->index = 0; - for (i = 0; i < FC_MEM_HASH_SIZE; i++) { - TAILQ_INIT(&FreeBitmap->head[i]); - } - - CacheHiMark = FC_DEFAULT_CACHE_SIZE * 1024; /* temporary */ - CacheLowMark = (CacheHiMark / 4) * 3; - CacheBalance = FC_CACHE_BALANCE; - - NeedPurgeCache = 0; - - HashSize.allocated = HashSize.used = 0; - AllocSize.allocated = AllocSize.used = 0; - fc_assign_cache(); - fc_assign_entry(); -#if defined(DEBUG) - fprintf(stderr, "FontCacheInitialize: hi=%ld, lo=%ld, bal=%d\n", - CacheHiMark, CacheLowMark, CacheBalance); -#endif - - CacheInitialized = 1; - } else { - /* - * second time or later case. - * flush and reassign cache. - */ -#if defined(HASH_DEBUG) || defined(DEBUG) - fprintf(stderr, "FontCacheInitialize: initializing cache, again\n"); -#endif - } - - memset(&CacheStatistics, 0, sizeof (CacheStatistics)); -#endif /* FONTCACHE */ - - return 0; /* make lint happy */ -} - -/* - * FontCacheChangeSettings() - * - * Change cache size and reinitialize work areas. - * - * Returns 0, if memory allocation failed. Otherwise 1. - */ - -int -FontCacheChangeSettings(FontCacheSettingsPtr cs) -{ - int result; - - if (!CacheInitialized) { - FontCacheInitialize(); - if (!CacheInitialized) - return 0; - } - -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, - "FontCahceChangeSettings: hi-mark=%ld, low-mark=%ld, balance=%ld\n", - cs->himark, cs->lowmark, cs->balance); -#endif - - fc_flush_cache(); - - CacheHiMark = cs->himark; - CacheLowMark = cs->lowmark; - CacheBalance = cs->balance; - - fc_assign_cache(); - result = fc_assign_entry(); - - return result; -} - -/* - * FontCacheGetSettings() - * - * Get current cache control parameters. - */ - -void -FontCacheGetSettings(FontCacheSettingsPtr cs) -{ - if (!CacheInitialized) { - FontCacheInitialize(); - if (!CacheInitialized) - return; - } - - cs->himark = CacheHiMark; - cs->lowmark = CacheLowMark; - cs->balance = CacheBalance; -} - -/* - * FontCacheGetStatistics() - * - * Get current cache statistics. - */ - -void -FontCacheGetStatistics(FontCacheStatisticsPtr cs) -{ - if (!CacheInitialized) { - FontCacheInitialize(); - if (!CacheInitialized) - return; - } - - CacheStatistics.purge_stat = NeedPurgeCache; - CacheStatistics.balance = CacheBalance; - CacheStatistics.f.usage = HashSize.used; - CacheStatistics.v.usage = AllocSize.used; - - memcpy(cs, &CacheStatistics, sizeof (CacheStatistics)); -} - -/* - * FontCacheOpenCache() - * - * Allocate font cache control block and initialize it. - * - * Returns pointer to font cache control block. Or returns NULL when - * detected illegal parameter or memory allocation failed. - */ - -FCCBPtr -FontCacheOpenCache(void *arg) -{ - int linesize; - FCCBPtr this; - int size = 0, mask = 0; - int i; - - static int sizes[] = { 16, 32, 64, 128, 0 }; - - if (!CacheInitialized) { - FontCacheInitialize(); - if (!CacheInitialized) - return NULL; - } - - linesize = (long)arg; -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "FontCacheOpenCache: line size=%d\n", linesize); -#endif - - for (i = 0; sizes[i] != 0; i++) { - if (sizes[i] == linesize) { - size = linesize; - mask = linesize - 1; - break; - } - } - if (sizes[i] == 0) { - return NULL; - } - - this = (FCCBPtr) malloc(sizeof (FCCB)); - if (this != NULL) { - memset(this, 0, sizeof (FCCB)); - this->head = (FontCacheHeadPtr) malloc(sizeof (FontCacheHead) * size); - if (this->head == NULL) { - free(this); - this = NULL; - } else { - this->size = size; - this->mask = mask; - for (i = 0; i < size; i++) { - TAILQ_INIT(&this->head[i]); - } - } - } - - return this; -} - -/* - * FontCacheCloseCache() - * - * Release font cache control block and all it's related entries. - */ - -void -FontCacheCloseCache(FCCBPtr this) -{ - FontCacheEntryPtr entry, next; - int i; - int size; - - if (!CacheInitialized) { - return; - } - - size = this->size; - for (i = 0; i < size; i++) { - entry = TAILQ_FIRST(&this->head[i]); - while (entry != NULL) { - /* remove entry from in-use queue, here */ - TAILQ_REMOVE(InUseQueue, entry, c_lru); - - /* remove entry from the hash */ - if (entry->bitmapsize > FC_SMALL_BITMAP_SIZE - && entry->charInfo.bits != NULL) { - fc_free_bitmap_area(entry->bmp); - } - entry->charInfo.bits = NULL; - entry->bitmapsize = 0; - - next = TAILQ_NEXT(entry, c_hash); - TAILQ_INSERT_HEAD(FreeQueue, entry, c_lru); - HashSize.used -= sizeof (FontCacheEntry); - entry = next; - } - } - - free(this->head); - free(this); -} - -/* - * FontCacheGetEntry() - * - * Allocate font cache entry and initialize it. - */ - -FontCacheEntryPtr -FontCacheGetEntry() -{ - FontCacheEntryPtr entry; - FontCacheEntryPtr p; - long size; - - /* scan in-use queue and purge if required */ - fc_purge_cache(); - - /* allocate hash entry */ - if (TAILQ_EMPTY(FreeQueue)) { - size = sizeof (FontCacheEntry); - p = (FontCacheEntryPtr) malloc(size); - if (p != NULL) { - TAILQ_INSERT_HEAD(FreeQueue, p, c_lru); - HashSize.allocated += size; -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "FontCachegetEntry: allocated new entry\n"); -#endif - } - } - - if (!TAILQ_EMPTY(FreeQueue)) { - entry = TAILQ_FIRST(FreeQueue); - TAILQ_REMOVE(FreeQueue, entry, c_lru); - memset(entry, 0, sizeof (FontCacheEntry)); - } else { - entry = NULL; - } - - return entry; -} - -/* - * FontCacheGetBitmap() - * - * Allocate font glyph bitmap area. - * - * Note: - * Allocated area should be cleared. - */ - -int -FontCacheGetBitmap(FontCacheEntryPtr entry, int size) -{ - int oldsize; - int result; - - /* XXX */ - if ((AllocSize.used > AllocSize.hiMark - size) && - (size > FC_SMALL_BITMAP_SIZE)) { - fc_purge_bitmap(); - } - - if (size < 0) /* wrong size */ - return 0; - - result = 0; - oldsize = entry->bitmapsize; - if (size <= FC_SMALL_BITMAP_SIZE) { - /* use coresponding bitmap area */ - if (oldsize > FC_SMALL_BITMAP_SIZE) { - /* We don't need allocated area anymore */ - fc_free_bitmap_area(entry->bmp); - } - entry->bitmapsize = size; - if (size > 0) { - entry->charInfo.bits = entry->bitmap; - memset(entry->charInfo.bits, 0, size); - } else - entry->charInfo.bits = NULL; - - result = 1; - } else { - /* need extra bitmap area */ - if (entry->charInfo.bits == NULL) { - /* no any extra bitmap area */ - if (fc_get_bitmap_area(entry, size)) { - entry->bitmapsize = size; - memset(entry->charInfo.bits, 0, size); - if (fc_check_size(HI_MARK)) { - fc_purge_cache(); - } - result = 1; - } - } else { - /* we already have extra bitmap area */ - if (oldsize == size) { - /* same size, reuse it */ - memset(entry->charInfo.bits, 0, size); - result = 1; - } else { - /* different size */ - fc_free_bitmap_area(entry->bmp); - if (fc_get_bitmap_area(entry, size)) { - entry->bitmapsize = size; - memset(entry->charInfo.bits, 0, size); - if (fc_check_size(HI_MARK)) { - fc_purge_cache(); - } - result = 1; - } - } - } - } - - return result; -} - -/* - * FontCacheSearchEntry() - * - * Search an entry matched with the key from the hash. - */ - -int -FontCacheSearchEntry(FCCBPtr this, int key, FontCacheEntryPtr *value) -{ - FontCacheHeadPtr head; - FontCacheEntryPtr entry; - int index; - - index = key & this->mask; - head = &this->head[index]; - - TAILQ_FOREACH(entry, head, c_hash) { - if (entry->key == key) { - /* found, change position */ - CacheStatistics.f.hits++; - - TAILQ_REMOVE(InUseQueue, entry, c_lru); - TAILQ_INSERT_HEAD(InUseQueue, entry, c_lru); - - TAILQ_REMOVE(head, entry, c_hash); - TAILQ_INSERT_HEAD(head, entry, c_hash); - - /* purge least recentrly used cache entirs */ - fc_purge_cache(); - - *value = entry; - return 1; - } - } - - /* purge least recentrly used cache entirs */ - fc_purge_cache(); - - /* not found */ - CacheStatistics.f.misshits++; - *value = NULL; - return 0; -} - -/* - * FontCacheInsertEntry() - * - * Insert an entry into the cache pool. - */ - -int -FontCacheInsertEntry(FCCBPtr this, int key, FontCacheEntryPtr entry) -{ - FontCacheHeadPtr head; - int index; - - index = key & this->mask; - head = &this->head[index]; - - entry->key = key; - entry->c_head = head; - TAILQ_INSERT_HEAD(head, entry, c_hash); - - /* insert entry into in-use queue */ - TAILQ_INSERT_HEAD(InUseQueue, entry, c_lru); - - /* adjust cache in-use size */ - HashSize.used += sizeof (FontCacheEntry); - if (fc_check_size(HI_MARK)) { - fc_purge_cache(); - } - - return 1; -} - -/* - * fc_assign_cache() - * - * Assign cache size considered with cache balance rate. - */ - -static void -fc_assign_cache() -{ - HashSize.hiMark = (CacheHiMark * CacheBalance) / 100; - HashSize.lowMark = (CacheLowMark * CacheBalance) / 100; - - AllocSize.hiMark = (CacheHiMark * (100 - CacheBalance)) / 100; - AllocSize.lowMark = (CacheLowMark * (100 - CacheBalance)) / 100; -} - -/* - * fc_assign_entry() - * - * Assign cache entry into free queue. - * - * Returns 0, when memory allocation failed. Otherwise 1. - */ - -static int -fc_assign_entry() -{ - FontCacheEntryPtr entry; - long used; - int result = 1; - - used = 0; - while ((used + sizeof (FontCacheEntry)) < HashSize.hiMark) { - entry = (FontCacheEntryPtr) malloc(sizeof (FontCacheEntry)); - if (entry == NULL) { - fprintf(stderr, "fc_assign_entry: can't allocate memory.\n"); - result = 0; - break; - } - TAILQ_INSERT_HEAD(FreeQueue, entry, c_lru); - used += sizeof (FontCacheEntry); - HashSize.allocated += sizeof (FontCacheEntry); - } - - return result; -} - -/* - * fc_get_bitmap_area() - * - * Search allocated memory area from free bitmap hash pool. If there - * is no entry, then allocate new bitmap area. - * - * Returns 0, when memory allocation failed, otherwise 1. And some - * sort of cache entry structure members were updated. - */ - -static int -fc_get_bitmap_area(FontCacheEntryPtr this, int size) -{ - FontCacheBitmapHeadPtr head; - FontCacheBitmapPtr bitmap; - int index; - int result = 0; - - index = size & FC_MEM_HASH_MASK; - head = &FreeBitmap->head[index]; - TAILQ_FOREACH(bitmap, head, b_hash) { - if (bitmap->key == size) { - TAILQ_REMOVE(head, bitmap, b_hash); - this->bmp = bitmap; - this->charInfo.bits = (char *) (bitmap + 1); - bitmap->b_entry = this; - result = 1; - CacheStatistics.v.hits++; - AllocSize.used += (size + sizeof (FontCacheBitmap)); -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_get_bitmap_area: bitmap entry found in pool\n"); -#endif - break; - } - } - - if (result == 0) { - CacheStatistics.v.misshits++; - bitmap = (FontCacheBitmapPtr) malloc(size + sizeof (FontCacheBitmap)); - if (bitmap != NULL) { - bitmap->b_entry = this; - bitmap->size = size + sizeof (FontCacheBitmap); - bitmap->key = size; - this->bmp = bitmap; - this->charInfo.bits = (char *) (bitmap + 1); - AllocSize.allocated += (size + sizeof (FontCacheBitmap)); - AllocSize.used += (size + sizeof (FontCacheBitmap)); - result = 1; -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_get_bitmap_area: bitmap entry allocated\n"); -#endif - } else { - this->bmp = NULL; - this->charInfo.bits = NULL; - } - } - - return result; -} - -/* - * fc_free_bitmap_area() - * - * Release allocated bitmap area into free hash pool. - */ - -static void -fc_free_bitmap_area(FontCacheBitmapPtr this) -{ - FontCacheBitmapHeadPtr head; - FontCacheEntryPtr entry; - int index; - -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_free_bitmap_area: bitmap entry returns into pool\n"); -#endif - - index = this->key & FC_MEM_HASH_MASK; - head = &FreeBitmap->head[index]; - TAILQ_INSERT_HEAD(head, this, b_hash); - - AllocSize.used -= this->size; - - entry = this->b_entry; - entry->bmp = NULL; - entry->bitmapsize = 0; -} - -/* - * fc_flush_cache_bitmap() - * - * Flush all allocated bitmap area from the free hash pool. - */ - -static void -fc_flush_cache_bitmap() -{ - FontCacheBitmapHeadPtr head; - FontCacheBitmapPtr bitmap; - int i; - - for (i = 0; i < FC_MEM_HASH_SIZE; i++) { - head = &FreeBitmap->head[i]; - while (!TAILQ_EMPTY(head)) { - bitmap = TAILQ_FIRST(head); - TAILQ_REMOVE(head, bitmap, b_hash); - - AllocSize.allocated -= bitmap->size; - free(bitmap); - } - } -} - -/* - * fc_flush_cache_inuse() - * - * Release all in-use cache entries. - */ - -static void -fc_flush_cache_inuse() -{ - FontCacheEntryPtr entry; - FontCacheHeadPtr head; - - while (!TAILQ_EMPTY(InUseQueue)) { - /* remove this entry from in-use queue */ - entry = TAILQ_FIRST(InUseQueue); - TAILQ_REMOVE(InUseQueue, entry, c_lru); - - /* remove this entry from hash */ - head = entry->c_head; - TAILQ_REMOVE(head, entry, c_hash); - - /* release bitmap area */ - if (entry->bitmapsize > FC_SMALL_BITMAP_SIZE - && entry->charInfo.bits != NULL) { - fc_free_bitmap_area(entry->bmp); - } - entry->charInfo.bits = NULL; - entry->bitmapsize = 0; - - /* release font-specific private area */ - if ( entry->vfuncs && entry->vfuncs->f_private_dispose ) - (*entry->vfuncs->f_private_dispose)(entry->f_private); - entry->f_private = NULL; - entry->vfuncs = NULL; - - /* add this entry to free queue */ - TAILQ_INSERT_HEAD(FreeQueue, entry, c_lru); - - /* adjust size */ - HashSize.used -= sizeof (FontCacheEntry); - } -} - -/* - * fc_flush_cache_free() - * - * Flush all free cache entries from the free cache queue. - */ - -static void -fc_flush_cache_free() -{ - FontCacheEntryPtr entry; - - /* release entire entries of the free queue */ - while (!TAILQ_EMPTY(FreeQueue)) { - entry = TAILQ_FIRST(FreeQueue); - TAILQ_REMOVE(FreeQueue, entry, c_lru); - free(entry); - HashSize.allocated -= sizeof (FontCacheEntry); - } -} - -/* - * fc_flush_cache() - * - * Flush all cache entries and allocated bitmap area from the pool. - */ - -static void -fc_flush_cache() -{ - fc_flush_cache_inuse(); - fc_flush_cache_bitmap(); - fc_flush_cache_free(); - - memset(&CacheStatistics, 0, sizeof (CacheStatistics)); -} - -/* - * fc_check_size() - * - * Check cache size, then return it's result. - */ - -static int -fc_check_size(int mark) -{ - int result = 0; - - if (mark == LOW_MARK) { - if (HashSize.used > HashSize.lowMark) { - result |= PURGE_ENTRY; - } - if (AllocSize.used > AllocSize.lowMark) { - result |= PURGE_BITMAP; - } - } else { - if (HashSize.used > HashSize.hiMark) { - result |= PURGE_ENTRY; - } - if (AllocSize.used > AllocSize.hiMark) { - result |= PURGE_BITMAP; - } - } - - return result; -} - -/* - * fc_purge_cache_entry() - * - * Purge least recently used cache entry. - */ - -static void -fc_purge_cache_entry() -{ - FontCacheHeadPtr head; - FontCacheEntryPtr entry; - int i; - - for (i = 0; i < FC_PURGE_PER_SCAN; i++) { - /* get least recently used entry */ - entry = TAILQ_LAST(InUseQueue, FcInUseQueue); - -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_purge_cache_entry: purged: %p, %d\n", - entry, entry->key); -#endif - - /* remove this entry from in-use queue */ - TAILQ_REMOVE(InUseQueue, entry, c_lru); - - /* remove this entry from the hash */ - head = entry->c_head; - TAILQ_REMOVE(head, entry, c_hash); - - /* release bitmap area */ - if (entry->bitmapsize > FC_SMALL_BITMAP_SIZE - && entry->charInfo.bits != NULL) { - fc_free_bitmap_area(entry->bmp); - CacheStatistics.v.purged++; - } - entry->charInfo.bits = NULL; - entry->bitmapsize = 0; - - /* release font-specific private area */ - if ( entry->vfuncs && entry->vfuncs->f_private_dispose ) - (*entry->vfuncs->f_private_dispose)(entry->f_private); - entry->f_private = NULL; - entry->vfuncs = NULL; - - /* add this entry to free queue */ - TAILQ_INSERT_HEAD(FreeQueue, entry, c_lru); - - HashSize.used -= sizeof (FontCacheEntry); - CacheStatistics.f.purged++; - } -} - -/* - * fc_purge_cache_entry_pool() - * - * Purge free cache entries, to adjust cache size. - */ - -static void -fc_purge_cache_entry_pool() -{ - FontCacheEntryPtr entry; - - while (!TAILQ_EMPTY(FreeQueue)) { - entry = TAILQ_LAST(FreeQueue, FcFreeQueue); - TAILQ_REMOVE(FreeQueue, entry, c_lru); -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_purge_cache_entry_pool: purged from free queue: %p\n", - entry); -#endif - HashSize.allocated -= sizeof (FontCacheEntry); - free(entry); - if (HashSize.allocated <= HashSize.hiMark) { - break; - } - } -} - -/* - * fc_purge_bitmap() - * - * Purge least recently used allocated bitmap area. - */ - -static void -fc_purge_bitmap() -{ - FontCacheEntryPtr entry, first; - int purged = 0; - - /* release used entry, if required */ - first = TAILQ_FIRST(InUseQueue); - if (first != NULL) { - entry = TAILQ_LAST(InUseQueue, FcInUseQueue); - while (purged < FC_PURGE_PER_SCAN) { - if (entry->bmp != NULL) { -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_purge_bitmap: purged from live queue: %p, %d(%d)\n", - entry->bmp, entry->bmp->key, entry->bmp->size); -#endif - fc_free_bitmap_area(entry->bmp); - entry->charInfo.bits = NULL; - CacheStatistics.v.purged++; - purged++; - } - if (entry == first) { - break; - } - entry = TAILQ_PREV(entry, FcInUseQueue, c_lru); - } - } -} - -/* - * fc_purge_bitmap_pool() - * - * Purge free bitmap area from pool, to adjust cache size. - */ - -static void -fc_purge_bitmap_pool() -{ - int this, stop, quit; - FontCacheBitmapHeadPtr head; - FontCacheBitmapPtr bitmap; - - /* release free bitmap entry */ - this = FreeBitmap->index; - stop = this; - quit = 0; - - do { - head = &FreeBitmap->head[this]; - while (!TAILQ_EMPTY(head)) { - bitmap = TAILQ_LAST(head, fcmem_head); - TAILQ_REMOVE(head, bitmap, b_hash); -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_purge_bitmap_pool: purged from pool: %p, %d(%d)\n", - bitmap, bitmap->key, bitmap->size); -#endif - AllocSize.allocated -= bitmap->size; - free(bitmap); - if (AllocSize.allocated <= AllocSize.hiMark) { - quit = 1; - break; - } - } - this++; - this &= FC_MEM_HASH_MASK; - } while (this != stop && quit == 0); - - FreeBitmap->index++; - FreeBitmap->index &= FC_MEM_HASH_MASK; -} - -/* - * fc_purge_cache() - * - * Purge font cache, if required. - */ - -static void -fc_purge_cache() -{ - int strategy; - - if (NeedPurgeCache) { - strategy = fc_check_size(LOW_MARK); - switch (strategy) { - case PURGE_ENTRY : - CacheStatistics.purge_runs++; - fc_purge_cache_entry(); - break; - case PURGE_BITMAP : - CacheStatistics.purge_runs++; - fc_purge_bitmap(); - break; - case (PURGE_ENTRY | PURGE_BITMAP) : - CacheStatistics.purge_runs++; - fc_purge_cache_entry(); - fc_purge_bitmap(); - break; - default : - NeedPurgeCache = 0; - break; - } - } else { - strategy = fc_check_size(HI_MARK); - switch (strategy) { - case PURGE_ENTRY : - if ((CacheBalance + FC_BALANCE_DIFFS) <= FC_BALANCE_HI) { - CacheBalance += FC_BALANCE_DIFFS; -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_purge_cache: cache balance changed to %d\n", CacheBalance); -#endif - fc_assign_cache(); - fc_purge_bitmap_pool(); - } else { - CacheStatistics.purge_runs++; - NeedPurgeCache = 1; - while (fc_check_size(HI_MARK) & PURGE_ENTRY) { - fc_purge_cache_entry(); - } - } - break; - case PURGE_BITMAP : - if ((CacheBalance - FC_BALANCE_DIFFS) >= FC_BALANCE_LOW) { - CacheBalance -= FC_BALANCE_DIFFS; -#if defined(HASH_DEBUG) || defined(DEBUG) -fprintf(stderr, "fc_purge_cache: cache balance changed to %d\n", CacheBalance); -#endif - fc_assign_cache(); - fc_purge_cache_entry_pool(); - } else { - CacheStatistics.purge_runs++; - NeedPurgeCache = 1; - while (fc_check_size(HI_MARK) & PURGE_BITMAP) { - fc_purge_bitmap(); - } - } - break; - case (PURGE_ENTRY | PURGE_BITMAP) : - CacheStatistics.purge_runs++; - NeedPurgeCache = 1; - while (fc_check_size(HI_MARK)) { - fc_purge_cache_entry(); - fc_purge_bitmap(); - } - break; - default : - break; - } - } -} diff --git a/nx-X11/lib/font/fontcache/fontcache.h b/nx-X11/lib/font/fontcache/fontcache.h deleted file mode 100644 index c95de25..0000000 --- a/nx-X11/lib/font/fontcache/fontcache.h +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * Copyright (c) 1998-1999 Shunsuke Akiyama <akiyama@jp.FreeBSD.org>. - * All rights reserved. - * Copyright (c) 1998-1999 X-TrueType Server Project, All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * Id: fontcache.h,v 1.12 1999/01/09 06:24:30 akiyama Exp $ - */ -/* $XFree86: xc/lib/font/fontcache/fontcache.h,v 1.6 2002/11/08 00:46:27 alanh Exp $ */ - -#ifndef _FONTCACHE_H_ -#define _FONTCACHE_H_ - -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> -#include "fcqueue.h" -#define _FONTCACHE_SERVER_ -#include <X11/extensions/fontcacheP.h> - -/* constant declarations */ - -#ifndef FC_DEFAULT_CACHE_SIZE -#define FC_DEFAULT_CACHE_SIZE 5120 /* in KB */ -#endif - -#define FC_CACHE_BALANCE 70 /* in percentage */ -#define FC_BALANCE_LOW 10 /* in percentage */ -#define FC_BALANCE_HI 90 /* in percentage */ -#define FC_BALANCE_DIFFS 5 /* in percentage */ - -#define FC_SMALL_BITMAP_SIZE 128 - -#define FC_MEM_HASH_SIZE 256 -#define FC_MEM_HASH_MASK (FC_MEM_HASH_SIZE - 1) - -#define FC_PURGE_PER_SCAN 2 - -/* data type declarations */ - -struct cache_entry; -struct fcbitmap; - -TAILQ_HEAD(fchash_head, cache_entry); -TAILQ_HEAD(fcmem_head, fcbitmap); - -struct fcbitmap { - TAILQ_ENTRY(fcbitmap) b_hash; - struct cache_entry *b_entry; - int size; - int key; -}; - -struct fc_entry_vfuncs { - void (*f_private_dispose)(void *f_private); -}; - -struct cache_entry { - TAILQ_ENTRY(cache_entry) c_hash; /* Hash chain. */ - TAILQ_ENTRY(cache_entry) c_lru; /* Font cache LRU list chain. */ - struct fchash_head *c_head; /* Pointer to head. */ - int key; /* hash key */ - CharInfoRec charInfo; /* CharInfo record */ - struct fcbitmap *bmp; - void *f_private; /* Font-specific private data */ - struct fc_entry_vfuncs *vfuncs; /* virtual function table */ - int bitmapsize; /* Bitmap size */ - char bitmap[FC_SMALL_BITMAP_SIZE]; /* Small bitmap data area */ -}; - -struct fchash { - int size; - int mask; - struct fchash_head *head; -}; - -struct fcmemhash { - int index; - struct fcmem_head head[FC_MEM_HASH_SIZE]; -}; - -typedef struct fcbitmap FontCacheBitmap, *FontCacheBitmapPtr; -typedef struct cache_entry FontCacheEntry, *FontCacheEntryPtr; -typedef struct fchash_head FontCacheHead, *FontCacheHeadPtr; -typedef struct fcmem_head FontCacheBitmapHead, *FontCacheBitmapHeadPtr; -typedef struct fchash FCCB, *FCCBPtr; -typedef struct fcmemhash FCBCB, *FCBCBPtr; - -/* Function prototypes */ - -int FontCacheInitialize(void); -FCCBPtr FontCacheOpenCache(void * /* arg */); -void FontCacheCloseCache(FCCBPtr /* this */); -FontCacheEntryPtr FontCacheGetEntry(void); -int FontCacheSearchEntry(FCCBPtr /* this */, int /* key */, - FontCacheEntryPtr * /* value */); -int FontCacheInsertEntry(FCCBPtr /* this */, int /* key */, - FontCacheEntryPtr /* entry */); -int FontCacheGetBitmap(FontCacheEntryPtr /* entry */, - int /* size */); - -#endif /* _FONTCACHE_H_ */ diff --git a/nx-X11/lib/font/fontfile/Imakefile b/nx-X11/lib/font/fontfile/Imakefile deleted file mode 100644 index fa075a9..0000000 --- a/nx-X11/lib/font/fontfile/Imakefile +++ /dev/null @@ -1,81 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:36 cpqbld Exp $ - - - - -XCOMM $XFree86: xc/lib/font/fontfile/Imakefile,v 3.20 2001/11/03 23:03:00 dawes Exp $ - -#include <Server.tmpl> - -#if BuildServer && DoLoadableServer -#define IHaveSubdirs -#define NoLibSubdirs -SUBDIRS = module -#endif - - INCLUDES = -I$(FONTINCSRC) -I../include -I$(SERVERSRC)/include \ - -I$(INCLUDESRC) - HEADERS = -#ifdef FontFormatDefines -FORMAT_DEFS = FontFormatDefines -#endif - -#if BuildSpeedo -SPEEDO_DEFINES = -DBUILD_SPEEDO -#endif -#if BuildType1 -TYPE1_DEFINES = -DBUILD_TYPE1 -#endif -#if BuildCID -CID_DEFINES = -DBUILD_CID -#endif -#if BuildFreeType -FREETYPE_DEFINES = -DBUILD_FREETYPE -#endif - -#if FontencCompatibility - COMPAT_SRC = fontencc.c - COMPAT_OBJ = fontencc.o -#endif - -#if GzipFontCompression - GUNZIP_SRC = gunzip.c - GUNZIP_OBJ = gunzip.o - GZIP_DEFS = -DX_GZIP_FONT_COMPRESSION -#endif - -FONTENCDEFS = -DFONT_ENCODINGS_DIRECTORY=\"$(ENCODINGSDIR)/encodings.dir\" - - DEFINES = StrcasecmpDefines \ - $(SPEEDO_DEFINES) $(TYPE1_DEFINES) $(CID_DEFINES) \ - $(FREETYPE_DEFINES) $(FONTENCDEFS) \ - $(GZIP_DEFS) - - SRCS = dirfile.c fontdir.c fontfile.c fileio.c fontscale.c \ - defaults.c bitsource.c register.c renderers.c bufio.c \ - decompress.c filewr.c printerfont.c ffcheck.c \ - fontenc.c encparse.c $(COMPAT_SRC) $(GUNZIP_SRC) - OBJS = dirfile.o fontdir.o fontfile.o fileio.o fontscale.o \ - defaults.o bitsource.o register.o renderers.o bufio.o \ - decompress.o filewr.o printerfont.o ffcheck.o \ - fontenc.o encparse.o $(COMPAT_OBJ) $(GUNZIP_OBJ) - -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont -#include <Library.tmpl> -LibraryObjectRule() - -SpecialCLibObjectRule(fileio,$(ICONFIGFILES),$(GZIP_DEFS)) - -SubdirLibraryRule($(OBJS)) -NormalLintTarget($(SRCS)) - -#if BuildServer && DoLoadableServer -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) -#endif - -DependTarget() - diff --git a/nx-X11/lib/font/fontfile/bitsource.c b/nx-X11/lib/font/fontfile/bitsource.c deleted file mode 100644 index ae27de8..0000000 --- a/nx-X11/lib/font/fontfile/bitsource.c +++ /dev/null @@ -1,174 +0,0 @@ -/* $Xorg: bitsource.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/bitsource.c,v 1.3 2001/01/17 19:43:29 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> - -BitmapSourcesRec FontFileBitmapSources; - -Bool -FontFileRegisterBitmapSource (FontPathElementPtr fpe) -{ - FontPathElementPtr *new; - int i; - int newsize; - - for (i = 0; i < FontFileBitmapSources.count; i++) - if (FontFileBitmapSources.fpe[i] == fpe) - return TRUE; - if (FontFileBitmapSources.count == FontFileBitmapSources.size) - { - newsize = FontFileBitmapSources.size + 4; - new = (FontPathElementPtr *) xrealloc (FontFileBitmapSources.fpe, newsize * sizeof *new); - if (!new) - return FALSE; - FontFileBitmapSources.size = newsize; - FontFileBitmapSources.fpe = new; - } - FontFileBitmapSources.fpe[FontFileBitmapSources.count++] = fpe; - return TRUE; -} - -void -FontFileUnregisterBitmapSource (FontPathElementPtr fpe) -{ - int i; - - for (i = 0; i < FontFileBitmapSources.count; i++) - if (FontFileBitmapSources.fpe[i] == fpe) - { - FontFileBitmapSources.count--; - if (FontFileBitmapSources.count == 0) - { - FontFileBitmapSources.size = 0; - xfree (FontFileBitmapSources.fpe); - FontFileBitmapSources.fpe = 0; - } - else - { - for (; i < FontFileBitmapSources.count; i++) - FontFileBitmapSources.fpe[i] = FontFileBitmapSources.fpe[i+1]; - } - break; - } -} - -/* - * Our set_path_hook: unregister all bitmap sources. - * This is necessary because already open fonts will keep their FPEs - * allocated, but they may not be on the new font path. - * The bitmap sources in the new path will be registered by the init_func. - */ -void -FontFileEmptyBitmapSource(void) -{ - if (FontFileBitmapSources.count == 0) - return; - - FontFileBitmapSources.count = 0; - FontFileBitmapSources.size = 0; - xfree (FontFileBitmapSources.fpe); - FontFileBitmapSources.fpe = 0; -} - -int -FontFileMatchBitmapSource (FontPathElementPtr fpe, - FontPtr *pFont, - int flags, - FontEntryPtr entry, - FontNamePtr zeroPat, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - Bool noSpecificSize) -{ - int source; - FontEntryPtr zero; - FontBitmapEntryPtr bitmap; - int ret; - FontDirectoryPtr dir; - FontScaledPtr scaled; - - /* - * Look through all the registered bitmap sources for - * the same zero name as ours; entries along that one - * can be scaled as desired. - */ - ret = BadFontName; - for (source = 0; source < FontFileBitmapSources.count; source++) - { - if (FontFileBitmapSources.fpe[source] == fpe) - continue; - dir = (FontDirectoryPtr) FontFileBitmapSources.fpe[source]->private; - zero = FontFileFindNameInDir (&dir->scalable, zeroPat); - if (!zero) - continue; - scaled = FontFileFindScaledInstance (zero, vals, noSpecificSize); - if (scaled) - { - if (scaled->pFont) - { - *pFont = scaled->pFont; - (*pFont)->fpe = FontFileBitmapSources.fpe[source]; - ret = Successful; - } - else if (scaled->bitmap) - { - entry = scaled->bitmap; - bitmap = &entry->u.bitmap; - if (bitmap->pFont) - { - *pFont = bitmap->pFont; - (*pFont)->fpe = FontFileBitmapSources.fpe[source]; - ret = Successful; - } - else - { - ret = FontFileOpenBitmap ( - FontFileBitmapSources.fpe[source], - pFont, flags, entry, format, fmask); - if (ret == Successful && *pFont) - (*pFont)->fpe = FontFileBitmapSources.fpe[source]; - } - } - else /* "cannot" happen */ - { - ret = BadFontName; - } - break; - } - } - return ret; -} diff --git a/nx-X11/lib/font/fontfile/bufio.c b/nx-X11/lib/font/fontfile/bufio.c deleted file mode 100644 index 43c6a13..0000000 --- a/nx-X11/lib/font/fontfile/bufio.c +++ /dev/null @@ -1,212 +0,0 @@ -/* $Xorg: bufio.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/bufio.c,v 3.9 2001/12/14 19:56:50 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/bufio.h> -#include <errno.h> - -BufFilePtr -BufFileCreate (char *private, - int (*input)(BufFilePtr), - int (*output)(int, BufFilePtr), - int (*skip)(BufFilePtr, int), - int (*close)(BufFilePtr, int)) -{ - BufFilePtr f; - - f = (BufFilePtr) xalloc (sizeof *f); - if (!f) - return 0; - f->private = private; - f->bufp = f->buffer; - f->left = 0; - f->input = input; - f->output = output; - f->skip = skip; - f->eof = 0; - f->close = close; - return f; -} - -#define FileDes(f) ((int)(long) (f)->private) - -static int -BufFileRawFill (BufFilePtr f) -{ - int left; - - left = read (FileDes(f), (char *)f->buffer, BUFFILESIZE); - if (left <= 0) { - f->left = 0; - return BUFFILEEOF; - } - f->left = left - 1; - f->bufp = f->buffer + 1; - return f->buffer[0]; -} - -static int -BufFileRawSkip (BufFilePtr f, int count) -{ - int curoff; - int fileoff; - int todo; - - curoff = f->bufp - f->buffer; - fileoff = curoff + f->left; - if (curoff + count <= fileoff) { - f->bufp += count; - f->left -= count; - } else { - todo = count - (fileoff - curoff); - if (lseek (FileDes(f), todo, 1) == -1) { - if (errno != ESPIPE) - return BUFFILEEOF; - while (todo) { - curoff = BUFFILESIZE; - if (curoff > todo) - curoff = todo; - fileoff = read (FileDes(f), (char *)f->buffer, curoff); - if (fileoff <= 0) - return BUFFILEEOF; - todo -= fileoff; - } - } - f->left = 0; - } - return count; -} - -static int -BufFileRawClose (BufFilePtr f, int doClose) -{ - if (doClose) - close (FileDes (f)); - return 1; -} - -BufFilePtr -BufFileOpenRead (int fd) -{ -#if defined(__UNIXOS2__) || defined (WIN32) - /* hv: I'd bet WIN32 has the same effect here */ - setmode(fd,O_BINARY); -#endif - return BufFileCreate ((char *)(long) fd, BufFileRawFill, 0, BufFileRawSkip, BufFileRawClose); -} - -static int -BufFileRawFlush (int c, BufFilePtr f) -{ - int cnt; - - if (c != BUFFILEEOF) - *f->bufp++ = c; - cnt = f->bufp - f->buffer; - f->bufp = f->buffer; - f->left = BUFFILESIZE; - if (write (FileDes(f), (char *)f->buffer, cnt) != cnt) - return BUFFILEEOF; - return c; -} - -BufFilePtr -BufFileOpenWrite (int fd) -{ - BufFilePtr f; - -#if defined(__UNIXOS2__) || defined(WIN32) - /* hv: I'd bet WIN32 has the same effect here */ - setmode(fd,O_BINARY); -#endif - f = BufFileCreate ((char *)(long) fd, 0, BufFileRawFlush, 0, BufFileFlush); - f->bufp = f->buffer; - f->left = BUFFILESIZE; - return f; -} - -int -BufFileRead (BufFilePtr f, char *b, int n) -{ - int c, cnt; - cnt = n; - while (cnt--) { - c = BufFileGet (f); - if (c == BUFFILEEOF) - break; - *b++ = c; - } - return n - cnt - 1; -} - -int -BufFileWrite (BufFilePtr f, char *b, int n) -{ - int cnt; - cnt = n; - while (cnt--) { - if (BufFilePut (*b++, f) == BUFFILEEOF) - return BUFFILEEOF; - } - return n; -} - -int -BufFileFlush (BufFilePtr f, int doClose) -{ - if (f->bufp != f->buffer) - return (*f->output) (BUFFILEEOF, f); - return 0; -} - -int -BufFileClose (BufFilePtr f, int doClose) -{ - int ret; - ret = (*f->close) (f, doClose); - xfree (f); - return ret; -} - -void -BufFileFree (BufFilePtr f) -{ - xfree (f); -} diff --git a/nx-X11/lib/font/fontfile/decompress.c b/nx-X11/lib/font/fontfile/decompress.c deleted file mode 100644 index c7e649f..0000000 --- a/nx-X11/lib/font/fontfile/decompress.c +++ /dev/null @@ -1,415 +0,0 @@ -/* $Xorg: decompress.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ -/* - * Copyright 1985, 1986 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * James A. Woods, derived from original work by Spencer Thomas - * and Joseph Orost. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* - -Copyright 1993, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/decompress.c,v 1.4 2001/01/17 19:43:29 dawes Exp $ */ -/* - * decompress - cat a compressed file - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/bufio.h> - -#define BITS 16 - -/* - * a code_int must be able to hold 2**BITS values of type int, and also -1 - */ -#if BITS > 15 -typedef long int code_int; -#else -typedef int code_int; -#endif - -typedef long int count_int; - -#ifdef NO_UCHAR - typedef char char_type; -#else - typedef unsigned char char_type; -#endif /* UCHAR */ - -static char_type magic_header[] = { "\037\235" }; /* 1F 9D */ - -/* Defines for third byte of header */ -#define BIT_MASK 0x1f -#define BLOCK_MASK 0x80 -/* Masks 0x40 and 0x20 are free. I think 0x20 should mean that there is - a fourth header byte (for expansion). -*/ - -#define INIT_BITS 9 /* initial number of bits/code */ - -#ifdef COMPATIBLE /* But wrong! */ -# define MAXCODE(n_bits) (1 << (n_bits) - 1) -#else -# define MAXCODE(n_bits) ((1 << (n_bits)) - 1) -#endif /* COMPATIBLE */ - -/* - * the next two codes should not be changed lightly, as they must not - * lie within the contiguous general code space. - */ -#define FIRST 257 /* first free entry */ -#define CLEAR 256 /* table clear output code */ - -#define STACK_SIZE 65300 - -typedef struct _compressedFILE { - BufFilePtr file; - - char_type *stackp; - code_int oldcode; - char_type finchar; - - int block_compress; - int maxbits; - code_int maxcode, maxmaxcode; - - code_int free_ent; - int clear_flg; - int n_bits; - - /* bit buffer */ - int offset, size; - char_type buf[BITS]; - - char_type de_stack[STACK_SIZE]; - char_type *tab_suffix; - unsigned short *tab_prefix; -} CompressedFile; - - -static int hsize_table[] = { - 5003, /* 12 bits - 80% occupancy */ - 9001, /* 13 bits - 91% occupancy */ - 18013, /* 14 bits - 91% occupancy */ - 35023, /* 15 bits - 94% occupancy */ - 69001 /* 16 bits - 95% occupancy */ -}; - -static int BufCompressedClose ( BufFilePtr f, int doClose ); -static int BufCompressedFill ( BufFilePtr f ); -static code_int getcode ( CompressedFile *file ); -static int BufCompressedSkip ( BufFilePtr f, int bytes ); - -BufFilePtr -BufFilePushCompressed (BufFilePtr f) -{ - int code; - int maxbits; - int hsize; - CompressedFile *file; - int extra; - - if ((BufFileGet(f) != (magic_header[0] & 0xFF)) || - (BufFileGet(f) != (magic_header[1] & 0xFF))) - { - return 0; - } - code = BufFileGet (f); - if (code == BUFFILEEOF) return 0; - - maxbits = code & BIT_MASK; - if (maxbits > BITS || maxbits < 12) - return 0; - hsize = hsize_table[maxbits - 12]; - extra = (1 << maxbits) * sizeof (char_type) + - hsize * sizeof (unsigned short); - file = (CompressedFile *) xalloc (sizeof (CompressedFile) + extra); - if (!file) - return 0; - file->file = f; - file->maxbits = maxbits; - file->block_compress = code & BLOCK_MASK; - file->maxmaxcode = 1 << file->maxbits; - file->tab_suffix = (char_type *) &file[1]; - file->tab_prefix = (unsigned short *) (file->tab_suffix + file->maxmaxcode); - /* - * As above, initialize the first 256 entries in the table. - */ - file->maxcode = MAXCODE(file->n_bits = INIT_BITS); - for ( code = 255; code >= 0; code-- ) { - file->tab_prefix[code] = 0; - file->tab_suffix[code] = (char_type) code; - } - file->free_ent = ((file->block_compress) ? FIRST : 256 ); - file->oldcode = -1; - file->clear_flg = 0; - file->offset = 0; - file->size = 0; - file->stackp = file->de_stack; - bzero(file->buf, BITS); - return BufFileCreate ((char *) file, - BufCompressedFill, - 0, - BufCompressedSkip, - BufCompressedClose); -} - -static int -BufCompressedClose (BufFilePtr f, int doClose) -{ - CompressedFile *file; - BufFilePtr raw; - - file = (CompressedFile *) f->private; - raw = file->file; - xfree (file); - BufFileClose (raw, doClose); - return 1; -} - -static int -BufCompressedFill (BufFilePtr f) -{ - CompressedFile *file; - register char_type *stackp, *de_stack; - register char_type finchar; - register code_int code, oldcode, incode; - BufChar *buf, *bufend; - - file = (CompressedFile *) f->private; - - buf = f->buffer; - bufend = buf + BUFFILESIZE; - stackp = file->stackp; - de_stack = file->de_stack; - finchar = file->finchar; - oldcode = file->oldcode; - while (buf < bufend) { - while (stackp > de_stack && buf < bufend) - *buf++ = *--stackp; - - if (buf == bufend) - break; - - code = getcode (file); - if (code == -1) - break; - - if ( (code == CLEAR) && file->block_compress ) { - for ( code = 255; code >= 0; code-- ) - file->tab_prefix[code] = 0; - file->clear_flg = 1; - file->free_ent = FIRST; - oldcode = -1; - continue; - } - incode = code; - /* - * Special case for KwKwK string. - */ - if ( code >= file->free_ent ) { - if ( code > file->free_ent || oldcode == -1 ) { - /* Bad stream. */ - return BUFFILEEOF; - } - *stackp++ = finchar; - code = oldcode; - } - /* - * The above condition ensures that code < free_ent. - * The construction of tab_prefixof in turn guarantees that - * each iteration decreases code and therefore stack usage is - * bound by 1 << BITS - 256. - */ - - /* - * Generate output characters in reverse order - */ - while ( code >= 256 ) - { - *stackp++ = file->tab_suffix[code]; - code = file->tab_prefix[code]; - } - finchar = file->tab_suffix[code]; - *stackp++ = finchar; - - /* - * Generate the new entry. - */ - if ( (code=file->free_ent) < file->maxmaxcode && oldcode != -1) { - file->tab_prefix[code] = (unsigned short)oldcode; - file->tab_suffix[code] = finchar; - file->free_ent = code+1; - } - /* - * Remember previous code. - */ - oldcode = incode; - } - file->oldcode = oldcode; - file->stackp = stackp; - file->finchar = finchar; - if (buf == f->buffer) { - f->left = 0; - return BUFFILEEOF; - } - f->bufp = f->buffer + 1; - f->left = (buf - f->buffer) - 1; - return f->buffer[0]; -} - -/***************************************************************** - * TAG( getcode ) - * - * Read one code from the standard input. If BUFFILEEOF, return -1. - * Inputs: - * stdin - * Outputs: - * code or -1 is returned. - */ - -static char_type rmask[9] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; - -static code_int -getcode(CompressedFile *file) -{ - register code_int code; - register int r_off, bits; - register char_type *bp = file->buf; - register BufFilePtr raw; - - if ( file->clear_flg > 0 || file->offset >= file->size || - file->free_ent > file->maxcode ) - { - /* - * If the next entry will be too big for the current code - * size, then we must increase the size. This implies reading - * a new buffer full, too. - */ - if ( file->free_ent > file->maxcode ) { - file->n_bits++; - if ( file->n_bits == file->maxbits ) - file->maxcode = file->maxmaxcode; /* won't get any bigger now */ - else - file->maxcode = MAXCODE(file->n_bits); - } - if ( file->clear_flg > 0) { - file->maxcode = MAXCODE (file->n_bits = INIT_BITS); - file->clear_flg = 0; - } - bits = file->n_bits; - raw = file->file; - while (bits > 0 && (code = BufFileGet (raw)) != BUFFILEEOF) - { - *bp++ = code; - --bits; - } - bp = file->buf; - if (bits == file->n_bits) - return -1; /* end of file */ - file->size = file->n_bits - bits; - file->offset = 0; - /* Round size down to integral number of codes */ - file->size = (file->size << 3) - (file->n_bits - 1); - } - r_off = file->offset; - bits = file->n_bits; - /* - * Get to the first byte. - */ - bp += (r_off >> 3); - r_off &= 7; - /* Get first part (low order bits) */ -#ifdef NO_UCHAR - code = ((*bp++ >> r_off) & rmask[8 - r_off]) & 0xff; -#else - code = (*bp++ >> r_off); -#endif /* NO_UCHAR */ - bits -= (8 - r_off); - r_off = 8 - r_off; /* now, offset into code word */ - /* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */ - if ( bits >= 8 ) { -#ifdef NO_UCHAR - code |= (*bp++ & 0xff) << r_off; -#else - code |= *bp++ << r_off; -#endif /* NO_UCHAR */ - r_off += 8; - bits -= 8; - } - /* high order bits. */ - code |= (*bp & rmask[bits]) << r_off; - file->offset += file->n_bits; - - return code; -} - -static int -BufCompressedSkip (BufFilePtr f, int bytes) -{ - int c; - while (bytes--) - { - c = BufFileGet(f); - if (c == BUFFILEEOF) - return BUFFILEEOF; - } - return 0; -} - -#ifdef TEST -int -main (int argc, char *argv[]) -{ - BufFilePtr inputraw, input, output; - int c; - - inputraw = BufFileOpenRead (0); - input = BufFilePushCompressed (inputraw); - output = BufFileOpenWrite (1); - while ((c = BufFileGet (input)) != BUFFILEEOF) - BufFilePut (c, output); - BufFileClose (input, FALSE); - BufFileClose (output, FALSE); - return 0; -} -#endif diff --git a/nx-X11/lib/font/fontfile/defaults.c b/nx-X11/lib/font/fontfile/defaults.c deleted file mode 100644 index 7f20cab..0000000 --- a/nx-X11/lib/font/fontfile/defaults.c +++ /dev/null @@ -1,77 +0,0 @@ -/* $Xorg: defaults.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/defaults.c,v 1.7 2001/01/17 19:43:29 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/X.h> -#include <X11/Xproto.h> - -#ifndef DEFAULT_BIT_ORDER -#ifdef BITMAP_BIT_ORDER -#define DEFAULT_BIT_ORDER BITMAP_BIT_ORDER -#else -#define DEFAULT_BIT_ORDER MSBFirst -#endif -#endif - -#ifndef DEFAULT_BYTE_ORDER -#ifdef IMAGE_BYTE_ORDER -#define DEFAULT_BYTE_ORDER IMAGE_BYTE_ORDER -#else -#define DEFAULT_BYTE_ORDER MSBFirst -#endif -#endif - -#ifndef DEFAULT_GLYPH_PAD -#ifdef GLYPHPADBYTES -#define DEFAULT_GLYPH_PAD GLYPHPADBYTES -#else -#define DEFAULT_GLYPH_PAD 4 -#endif -#endif - -#ifndef DEFAULT_SCAN_UNIT -#define DEFAULT_SCAN_UNIT 1 -#endif - -#include <X11/fonts/fntfilst.h> - -void -FontDefaultFormat (int *bit, int *byte, int *glyph, int *scan) -{ - *bit = DEFAULT_BIT_ORDER; - *byte = DEFAULT_BYTE_ORDER; - *glyph = DEFAULT_GLYPH_PAD; - *scan = DEFAULT_SCAN_UNIT; -} diff --git a/nx-X11/lib/font/fontfile/dirfile.c b/nx-X11/lib/font/fontfile/dirfile.c deleted file mode 100644 index 3a2fead..0000000 --- a/nx-X11/lib/font/fontfile/dirfile.c +++ /dev/null @@ -1,495 +0,0 @@ -/* $Xorg: dirfile.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/dirfile.c,v 3.17 2004/02/08 01:52:27 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -/* - * dirfile.c - * - * Read fonts.dir and fonts.alias files - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <errno.h> -#include <limits.h> - -static Bool AddFileNameAliases ( FontDirectoryPtr dir ); -static int ReadFontAlias ( char *directory, Bool isFile, - FontDirectoryPtr *pdir ); -static int lexAlias ( FILE *file, char **lexToken ); -static int lexc ( FILE *file ); - -int -FontFileReadDirectory (char *directory, FontDirectoryPtr *pdir) -{ - char file_name[MAXFONTFILENAMELEN]; - char font_name[MAXFONTNAMELEN]; - char dir_file[MAXFONTFILENAMELEN]; - char dir_path[MAXFONTFILENAMELEN]; - char *ptr; - FILE *file; - int count, - i, - status; - struct stat statb; - static char format[24] = ""; - - FontDirectoryPtr dir = NullFontDirectory; - - if (strlen(directory) + 1 + sizeof(FontDirFile) > sizeof(dir_file)) - return BadFontPath; - - /* Check for font directory attributes */ -#if !defined(__UNIXOS2__) && !defined(WIN32) - if ((ptr = strchr(directory, ':'))) { -#else - /* OS/2 and WIN32 path might start with a drive letter, don't clip this */ - if ((ptr = strchr(directory+2, ':'))) { -#endif - strncpy(dir_path, directory, ptr - directory); - dir_path[ptr - directory] = '\0'; - } else { - strcpy(dir_path, directory); - } - strcpy(dir_file, dir_path); - if (dir_file[strlen(dir_file) - 1] != '/') - strcat(dir_file, "/"); - strcat(dir_file, FontDirFile); - file = fopen(dir_file, "rt"); - if (file) { - Bool found_font = FALSE; - -#ifndef WIN32 - if (fstat (fileno(file), &statb) == -1) -#else - if (stat (dir_file, &statb) == -1) -#endif - { - fclose(file); - return BadFontPath; - } - count = fscanf(file, "%d\n", &i); - if ((count == EOF) || (count != 1)) { - fclose(file); - return BadFontPath; - } - dir = FontFileMakeDir(directory, i); - if (dir == NULL) { - fclose(file); - return BadFontPath; - } - dir->dir_mtime = statb.st_mtime; - if (format[0] == '\0') - sprintf(format, "%%%ds %%%d[^\n]\n", - MAXFONTFILENAMELEN-1, MAXFONTNAMELEN-1); - - while ((count = fscanf(file, format, file_name, font_name)) != EOF) { -#if defined(__UNIXOS2__) || defined(WIN32) - /* strip any existing trailing CR */ - for (i=0; i<strlen(font_name); i++) { - if (font_name[i]=='\r') font_name[i] = '\0'; - } -#endif - if (count != 2) { - FontFileFreeDir (dir); - fclose(file); - return BadFontPath; - } - if (FontFileAddFontFile (dir, font_name, file_name)) - found_font = TRUE; - } - if (!found_font) { - FontFileFreeDir (dir); - fclose(file); - return BadFontPath; - } - fclose(file); - - } else if (errno != ENOENT) { - return BadFontPath; - } - status = ReadFontAlias(dir_path, FALSE, &dir); - if (status != Successful) { - if (dir) - FontFileFreeDir (dir); - return status; - } - if (!dir) - return BadFontPath; - - FontFileSortDir(dir); - - *pdir = dir; - return Successful; -} - -Bool -FontFileDirectoryChanged(FontDirectoryPtr dir) -{ - char dir_file[MAXFONTFILENAMELEN]; - struct stat statb; - - if (strlen(dir->directory) + sizeof(FontDirFile) > sizeof(dir_file)) - return FALSE; - - strcpy (dir_file, dir->directory); - strcat (dir_file, FontDirFile); - if (stat (dir_file, &statb) == -1) - { - if (errno != ENOENT || dir->dir_mtime != 0) - return TRUE; - return FALSE; /* doesn't exist and never did: no change */ - } - if (dir->dir_mtime != statb.st_mtime) - return TRUE; - strcpy (dir_file, dir->directory); - strcat (dir_file, FontAliasFile); - if (stat (dir_file, &statb) == -1) - { - if (errno != ENOENT || dir->alias_mtime != 0) - return TRUE; - return FALSE; /* doesn't exist and never did: no change */ - } - if (dir->alias_mtime != statb.st_mtime) - return TRUE; - return FALSE; -} - -/* - * Make each of the file names an automatic alias for each of the files. - */ - -static Bool -AddFileNameAliases(FontDirectoryPtr dir) -{ - int i; - char copy[MAXFONTFILENAMELEN]; - char *fileName; - FontTablePtr table; - FontRendererPtr renderer; - int len; - FontNameRec name; - - table = &dir->nonScalable; - for (i = 0; i < table->used; i++) { - if (table->entries[i].type != FONT_ENTRY_BITMAP) - continue; - fileName = table->entries[i].u.bitmap.fileName; - renderer = FontFileMatchRenderer (fileName); - if (!renderer) - continue; - - len = strlen (fileName) - renderer->fileSuffixLen; - if (len >= sizeof(copy)) - continue; - CopyISOLatin1Lowered (copy, fileName, len); - copy[len] = '\0'; - name.name = copy; - name.length = len; - name.ndashes = FontFileCountDashes (copy, len); - - if (!FontFileFindNameInDir(table, &name)) { - if (!FontFileAddFontAlias (dir, copy, table->entries[i].name.name)) - return FALSE; - } - } - return TRUE; -} - -/* - * parse the font.alias file. Format is: - * - * alias font-name - * - * To imbed white-space in an alias name, enclose it like "font name" - * in double quotes. \ escapes and character, so - * "font name \"With Double Quotes\" \\ and \\ back-slashes" - * works just fine. - * - * A line beginning with a ! denotes a newline-terminated comment. - */ - -/* - * token types - */ - -#define NAME 0 -#define NEWLINE 1 -#define DONE 2 -#define EALLOC 3 - -static int -ReadFontAlias(char *directory, Bool isFile, FontDirectoryPtr *pdir) -{ - char alias[MAXFONTNAMELEN]; - char font_name[MAXFONTNAMELEN]; - char alias_file[MAXFONTFILENAMELEN]; - FILE *file; - FontDirectoryPtr dir; - int token; - char *lexToken; - int status = Successful; - struct stat statb; - - if (strlen(directory) >= sizeof(alias_file)) - return BadFontPath; - dir = *pdir; - strcpy(alias_file, directory); - if (!isFile) { - if (strlen(directory) + 1 + sizeof(FontAliasFile) > sizeof(alias_file)) - return BadFontPath; - if (directory[strlen(directory) - 1] != '/') - strcat(alias_file, "/"); - strcat(alias_file, FontAliasFile); - } - file = fopen(alias_file, "rt"); - if (!file) - return ((errno == ENOENT) ? Successful : BadFontPath); - if (!dir) - *pdir = dir = FontFileMakeDir(directory, 10); - if (!dir) - { - fclose (file); - return AllocError; - } -#ifndef WIN32 - if (fstat (fileno (file), &statb) == -1) -#else - if (stat (alias_file, &statb) == -1) -#endif - { - fclose (file); - return BadFontPath; - } - dir->alias_mtime = statb.st_mtime; - while (status == Successful) { - token = lexAlias(file, &lexToken); - switch (token) { - case NEWLINE: - break; - case DONE: - fclose(file); - return Successful; - case EALLOC: - status = AllocError; - break; - case NAME: - if (strlen(lexToken) >= sizeof(alias)) { - status = BadFontPath; - break; - } - strcpy(alias, lexToken); - token = lexAlias(file, &lexToken); - switch (token) { - case NEWLINE: - if (strcmp(alias, "FILE_NAMES_ALIASES")) - status = BadFontPath; - else if (!AddFileNameAliases(dir)) - status = AllocError; - break; - case DONE: - status = BadFontPath; - break; - case EALLOC: - status = AllocError; - break; - case NAME: - if (strlen(lexToken) >= sizeof(font_name)) { - status = BadFontPath; - break; - } - CopyISOLatin1Lowered(alias, alias, strlen(alias)); - CopyISOLatin1Lowered(font_name, lexToken, strlen(lexToken)); - if (!FontFileAddFontAlias (dir, alias, font_name)) - status = AllocError; - break; - } - } - } - fclose(file); - return status; -} - -#define QUOTE 0 -#define WHITE 1 -#define NORMAL 2 -#define END 3 -#define NL 4 -#define BANG 5 - -static int charClass; - -static int -lexAlias(FILE *file, char **lexToken) -{ - int c; - char *t; - enum state { - Begin, Normal, Quoted, Comment - } state; - int count; - - static char *tokenBuf = (char *) NULL; - static int tokenSize = 0; - - t = tokenBuf; - count = 0; - state = Begin; - for (;;) { - if (count == tokenSize) { - int nsize; - char *nbuf; - - if (tokenSize >= (INT_MAX >> 2)) - /* Stop before we overflow */ - return EALLOC; - nsize = tokenSize ? (tokenSize << 1) : 64; - nbuf = (char *) xrealloc(tokenBuf, nsize); - if (!nbuf) - return EALLOC; - tokenBuf = nbuf; - tokenSize = nsize; - t = tokenBuf + count; - } - c = lexc(file); - switch (charClass) { - case QUOTE: - switch (state) { - case Begin: - case Normal: - state = Quoted; - break; - case Quoted: - state = Normal; - break; - case Comment: - break; - } - break; - case WHITE: - switch (state) { - case Begin: - case Comment: - continue; - case Normal: - *t = '\0'; - *lexToken = tokenBuf; - return NAME; - case Quoted: - break; - } - /* fall through */ - case NORMAL: - switch (state) { - case Begin: - state = Normal; - break; - case Comment: - continue; - default: - break; - } - *t++ = c; - ++count; - break; - case END: - case NL: - switch (state) { - case Begin: - case Comment: - *lexToken = (char *) NULL; - return charClass == END ? DONE : NEWLINE; - default: - *t = '\0'; - *lexToken = tokenBuf; - ungetc(c, file); - return NAME; - } - break; - case BANG: - switch (state) { - case Begin: - state = Comment; - break; - case Comment: - break; - default: - *t++ = c; - ++count; - } - break; - } - } -} - -static int -lexc(FILE *file) -{ - int c; - - c = getc(file); - switch (c) { - case EOF: - charClass = END; - break; - case '\\': - c = getc(file); - if (c == EOF) - charClass = END; - else - charClass = NORMAL; - break; - case '"': - charClass = QUOTE; - break; - case ' ': - case '\t': - charClass = WHITE; - break; - case '\r': - case '\n': - charClass = NL; - break; - case '!': - charClass = BANG; - break; - default: - charClass = NORMAL; - break; - } - return c; -} diff --git a/nx-X11/lib/font/fontfile/encparse.c b/nx-X11/lib/font/fontfile/encparse.c deleted file mode 100644 index 6262aff..0000000 --- a/nx-X11/lib/font/fontfile/encparse.c +++ /dev/null @@ -1,966 +0,0 @@ -/* -Copyright (c) 1998-2001 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* $XFree86: xc/lib/font/fontfile/encparse.c,v 1.20tsi Exp $ */ - -/* Parser for encoding files */ - -/* This code assumes that we are using ASCII. We don't use the ctype - functions, as they depend on the current locale. On the other - hand, we do use strcasecmp, but only on strings that we've checked - to be pure ASCII. Bloody ``Code Set Independence''. */ - -#include <string.h> -#include <stdio.h> - -#if defined(__SCO__) || defined(__UNIXWARE__) -#include <strings.h> -#endif - -#ifndef FONTENC_NO_LIBFONT - -#include <X11/fonts/fntfilio.h> -#include <X11/fonts/fntfilst.h> - -#else - -#include <stdlib.h> -#define xalloc(n) malloc(n) -#define xrealloc(p, n) realloc(p, n) -#define xfree(p) free(p) - -#include "zlib.h" -typedef gzFile FontFilePtr; -#define FontFileGetc(f) gzgetc(f) -#define FontFileOpen(filename) gzopen(filename, "rb") -#define FontFileClose(f) gzclose(f) - -#define MAXFONTFILENAMELEN 1024 -#define MAXFONTNAMELEN 1024 - -#endif - -#include <X11/fonts/fontenc.h> -#include "fontencI.h" - -#define MAXALIASES 20 - -#define EOF_TOKEN -1 -#define ERROR_TOKEN -2 -#define EOL_TOKEN 0 -#define NUMBER_TOKEN 1 -#define KEYWORD_TOKEN 2 - -#define EOF_LINE -1 -#define ERROR_LINE -2 -#define STARTENCODING_LINE 1 -#define STARTMAPPING_LINE 2 -#define ENDMAPPING_LINE 3 -#define CODE_LINE 4 -#define CODE_RANGE_LINE 5 -#define CODE_UNDEFINE_LINE 6 -#define NAME_LINE 7 -#define SIZE_LINE 8 -#define ALIAS_LINE 9 -#define FIRSTINDEX_LINE 10 - -/* Return from lexer */ -#define MAXKEYWORDLEN 100 - -static long number_value; -static char keyword_value[MAXKEYWORDLEN+1]; - -static long value1, value2, value3; - -/* Lexer code */ - -/* Skip to the beginning of new line */ -static void -skipEndOfLine(FontFilePtr f, int c) -{ - if(c == 0) - c = FontFileGetc(f); - - for(;;) - if(c <= 0 || c == '\n') - return; - else - c = FontFileGetc(f); -} - -/* Get a number; we're at the first digit. */ -static unsigned -getnum(FontFilePtr f, int c, int *cp) -{ - unsigned n = 0; - int base = 10; - - /* look for `0' or `0x' prefix */ - if(c == '0') { - c = FontFileGetc(f); - base = 8; - if(c == 'x' || c == 'X') { - base = 16; - c = FontFileGetc(f); - } - } - - /* accumulate digits */ - for(;;) { - if ('0' <= c && c <= '9') { - n *= base; n += c - '0'; - } else if('a' <= c && c <= 'f') { - n *= base; n += c - 'a' + 10; - } else if('A' <=c && c <= 'F') { - n *= base; n += c - 'A' + 10; - } else - break; - c = FontFileGetc(f); - } - - *cp = c; return n; -} - -/* Skip to beginning of new line; return 1 if only whitespace was found. */ -static int -endOfLine(FontFilePtr f, int c) -{ - if(c == 0) - c = FontFileGetc(f); - - for(;;) { - if(c <= 0 || c == '\n') - return 1; - else if(c == '#') { - skipEndOfLine(f,c); - return 1; - } - else if(c == ' ' || c == '\t') { - skipEndOfLine(f,c); - return 0; - } - c = FontFileGetc(f); - } -} - -/* Get a token; we're at first char */ -static int -gettoken(FontFilePtr f, int c, int *cp) -{ - char *p; - - if(c <= 0) - c = FontFileGetc(f); - - if(c <= 0) { - return EOF_TOKEN; - } - - while(c == ' ' || c == '\t') - c = FontFileGetc(f); - - if(c=='\n') { - return EOL_TOKEN; - } else if(c == '#') { - skipEndOfLine(f,c); - return EOL_TOKEN; - } else if(c >= '0' && c <= '9') { - number_value = getnum(f,c,cp); - return NUMBER_TOKEN; - } else if((c >= 'A' && c <= 'Z') || - (c >= 'a' && c <= 'z') || - c == '/' || c == '_' || c == '-' || c == '.') { - p = keyword_value; - *p++ = c; - while(p-keyword_value < MAXKEYWORDLEN) { - c = FontFileGetc(f); - if(c <= ' ' || c > '~' || c == '#') - break; - *p++ = c; - } - *cp = c; - *p = '\0'; - return KEYWORD_TOKEN; - } else { - *cp = c; - return ERROR_TOKEN; - } -} - -/* Parse a line. - * Always skips to the beginning of a new line, even if an error occurs */ -static int -getnextline(FontFilePtr f) -{ - int c, token; - c = FontFileGetc(f); - if(c <= 0) - return EOF_LINE; - - again: - token=gettoken(f,c,&c); - - switch(token) { - case EOF_TOKEN: - return EOF_LINE; - case EOL_TOKEN: - /* empty line */ - c = FontFileGetc(f); - goto again; - case NUMBER_TOKEN: - value1 = number_value; - token = gettoken(f,c,&c); - switch(token) { - case NUMBER_TOKEN: - value2 = number_value; - token = gettoken(f,c,&c); - switch(token) { - case NUMBER_TOKEN: - value3 = number_value; - return CODE_RANGE_LINE; - case EOL_TOKEN: - return CODE_LINE; - default: - skipEndOfLine(f,c); - return ERROR_LINE; - } - case KEYWORD_TOKEN: - if(!endOfLine(f,c)) - return ERROR_LINE; - else - return NAME_LINE; - default: - skipEndOfLine(f,c); - return ERROR_LINE; - } - case KEYWORD_TOKEN: - if(!strcasecmp(keyword_value, "STARTENCODING")) { - token = gettoken(f,c,&c); - if(token == KEYWORD_TOKEN) { - if(endOfLine(f,c)) - return STARTENCODING_LINE; - else - return ERROR_LINE; - } else { - skipEndOfLine(f,c); - return ERROR_LINE; - } - } else if(!strcasecmp(keyword_value, "ALIAS")) { - token = gettoken(f,c,&c); - if(token == KEYWORD_TOKEN) { - if(endOfLine(f,c)) - return ALIAS_LINE; - else - return ERROR_LINE; - } else { - skipEndOfLine(f,c); - return ERROR_LINE; - } - } else if(!strcasecmp(keyword_value, "SIZE")) { - token = gettoken(f,c,&c); - if(token == NUMBER_TOKEN) { - value1 = number_value; - token = gettoken(f,c,&c); - switch(token) { - case NUMBER_TOKEN: - value2 = number_value; - return SIZE_LINE; - case EOL_TOKEN: - value2=0; - return SIZE_LINE; - default: - skipEndOfLine(f,c); - return ERROR_LINE; - } - } else { - skipEndOfLine(f,c); - return ERROR_LINE; - } - } else if(!strcasecmp(keyword_value, "FIRSTINDEX")) { - token = gettoken(f,c,&c); - if(token == NUMBER_TOKEN) { - value1 = number_value; - token = gettoken(f,c,&c); - switch(token) { - case NUMBER_TOKEN: - value2 = number_value; - return FIRSTINDEX_LINE; - case EOL_TOKEN: - value2 = 0; - return FIRSTINDEX_LINE; - default: - skipEndOfLine(f,c); - return ERROR_LINE; - } - } else { - skipEndOfLine(f,c); - return ERROR_LINE; - } - } else if(!strcasecmp(keyword_value, "STARTMAPPING")) { - keyword_value[0] = 0; - value1 = 0; value1 = 0; - /* first a keyword */ - token = gettoken(f,c,&c); - if(token != KEYWORD_TOKEN) { - skipEndOfLine(f, c); - return ERROR_LINE; - } - - /* optional first integer */ - token = gettoken(f,c,&c); - if(token == NUMBER_TOKEN) { - value1 = number_value; - } else if(token == EOL_TOKEN) { - return STARTMAPPING_LINE; - } else { - skipEndOfLine(f, c); - return ERROR_LINE; - } - - /* optional second integer */ - token = gettoken(f,c,&c); - if(token == NUMBER_TOKEN) { - value2 = number_value; - } else if(token == EOL_TOKEN) { - return STARTMAPPING_LINE; - } else { - skipEndOfLine(f, c); - return ERROR_LINE; - } - - if(!endOfLine(f,c)) - return ERROR_LINE; - else { - return STARTMAPPING_LINE; - } - } else if(!strcasecmp(keyword_value, "UNDEFINE")) { - /* first integer */ - token = gettoken(f,c,&c); - if(token != NUMBER_TOKEN) { - skipEndOfLine(f,c); - return ERROR_LINE; - } - value1 = number_value; - /* optional second integer */ - token = gettoken(f,c,&c); - if(token == EOL_TOKEN) { - value2 = value1; - return CODE_UNDEFINE_LINE; - } else if(token == NUMBER_TOKEN) { - value2 = number_value; - if(endOfLine(f,c)) { - return CODE_UNDEFINE_LINE; - } else - return ERROR_LINE; - } else { - skipEndOfLine(f,c); - return ERROR_LINE; - } - } else if(!strcasecmp(keyword_value, "ENDENCODING")) { - if(endOfLine(f,c)) - return EOF_LINE; - else - return ERROR_LINE; - } else if(!strcasecmp(keyword_value, "ENDMAPPING")) { - if(endOfLine(f,c)) - return ENDMAPPING_LINE; - else - return ERROR_LINE; - } else { - skipEndOfLine(f,c); - return ERROR_LINE; - } - default: - return ERROR_LINE; - } -} - -static void -install_mapping(FontEncPtr encoding, FontMapPtr mapping) -{ - FontMapPtr m; - - if(encoding->mappings == NULL) - encoding->mappings = mapping; - else { - m = encoding->mappings; - while(m->next != NULL) - m = m->next; - m->next = mapping; - } - mapping->next = NULL; - mapping->encoding = encoding; -} - -static int -setCode(unsigned from, unsigned to, unsigned row_size, - unsigned *first, unsigned *last, - unsigned *encsize, unsigned short **enc) -{ - unsigned index, i; - unsigned short *newenc; - - if(from>0xFFFF) - return 0; /* success */ - - if(row_size==0) - index=from; - else { - if((value1 & 0xFF) >= row_size) - return 0; /* ignore out of range mappings */ - index = (from>>8) * row_size + (from&0xFF); - } - - /* Optimize away useless identity mappings. This is only expected - to be useful with linear encodings. */ - if(index == to && (index < *first || index > *last)) - return 0; - if(*encsize == 0) { - *encsize = (index < 256) ? 256 : 0x10000; - *enc = (unsigned short*)xalloc((*encsize) * sizeof(unsigned short)); - if(*enc == NULL) { - *encsize = 0; - return 1; - } - } else if(*encsize <= index) { - *encsize = 0x10000; - if((newenc = (unsigned short*)xrealloc(enc, *encsize))==NULL) - return 1; - *enc = newenc; - } - if(*first > *last) { - *first = *last = index; - } - if(index < *first) { - for(i = index; i < *first; i++) - (*enc)[i] = i; - *first = index; - } - if(index > *last) { - for(i = *last + 1; i <= index; i++) - (*enc)[i] = i; - *last = index; - } - (*enc)[index] = to; - return 0; -} - -/* Parser. If headerOnly is true, we're only interested in the - data contained in the encoding file's header. */ - -/* As font encodings are currently never freed, the allocations done - by this function are mostly its private business. Note, however, - that FontEncIdentify needs to free the header fields -- so if you - change this function, you may need to change FontEncIdentify. */ - -/* I want a garbage collector. */ - -static FontEncPtr -parseEncodingFile(FontFilePtr f, int headerOnly) -{ - int line; - - unsigned short *enc=NULL; - char **nam = NULL, **newnam; - unsigned i, first = 0xFFFF, last=0, encsize=0, namsize=0; - FontEncPtr encoding = NULL; - FontMapPtr mapping = NULL; - FontEncSimpleMapPtr sm; - FontEncSimpleNamePtr sn; - char *aliases[MAXALIASES]; - int numaliases=0; - -#if 0 - /* GCC complains about unused labels. Please fix GCC rather than - obfuscating my code. */ - no_encoding: -#endif - line = getnextline(f); - switch(line) { - case EOF_LINE: - goto error; - case STARTENCODING_LINE: - encoding = (FontEncPtr)xalloc(sizeof(FontEncRec)); - if(encoding == NULL) - goto error; - encoding->name = (char*)xalloc(strlen(keyword_value)+1); - if(encoding->name == NULL) - goto error; - strcpy(encoding->name, keyword_value); - encoding->size = 256; - encoding->row_size = 0; - encoding->mappings = NULL; - encoding->next = NULL; - encoding->first = encoding->first_col=0; - goto no_mapping; - default: - goto error; - } - - no_mapping: - line = getnextline(f); - switch(line) { - case EOF_LINE: goto done; - case ALIAS_LINE: - if(numaliases < MAXALIASES) { - aliases[numaliases] = (char*)xalloc(strlen(keyword_value)+1); - if(aliases[numaliases] == NULL) - goto error; - strcpy(aliases[numaliases], keyword_value); - numaliases++; - } - goto no_mapping; - case SIZE_LINE: - encoding->size = value1; - encoding->row_size = value2; - goto no_mapping; - case FIRSTINDEX_LINE: - encoding->first = value1; - encoding->first_col = value2; - goto no_mapping; - case STARTMAPPING_LINE: - if(headerOnly) - goto done; - if(!strcasecmp(keyword_value, "unicode")) { - mapping = (FontMapPtr)xalloc(sizeof(FontMapRec)); - if(mapping == NULL) - goto error; - mapping->type = FONT_ENCODING_UNICODE; - mapping->pid = 0; - mapping->eid = 0; - mapping->recode = 0; - mapping->name = 0; - mapping->client_data = 0; - mapping->next = 0; - goto mapping; - } else if(!strcasecmp(keyword_value, "cmap")) { - mapping = (FontMapPtr)xalloc(sizeof(FontMapRec)); - if(mapping == NULL) - goto error; - mapping->type = FONT_ENCODING_TRUETYPE; - mapping->pid = value1; - mapping->eid = value2; - mapping->recode = 0; - mapping->name = 0; - mapping->client_data = 0; - mapping->next = 0; - goto mapping; - } else if(!strcasecmp(keyword_value, "postscript")) { - mapping = (FontMapPtr)xalloc(sizeof(FontMapRec)); - if(mapping == NULL) - goto error; - mapping->type = FONT_ENCODING_POSTSCRIPT; - mapping->pid = 0; - mapping->eid = 0; - mapping->recode = 0; - mapping->name = 0; - mapping->client_data = 0; - mapping->next = 0; - goto string_mapping; - } else { /* unknown mapping type -- ignore */ - goto skipmapping; - } - /* NOTREACHED */ - goto error; - default: goto no_mapping; /* ignore unknown lines */ - } - - skipmapping: - line = getnextline(f); - switch(line) { - case ENDMAPPING_LINE: - goto no_mapping; - case EOF_LINE: - goto error; - default: - goto skipmapping; - } - - mapping: - line = getnextline(f); - switch(line) { - case EOF_LINE: goto error; - case ENDMAPPING_LINE: - mapping->recode = FontEncSimpleRecode; - mapping->name = FontEncUndefinedName; - mapping->client_data = sm = - (FontEncSimpleMapPtr)xalloc(sizeof(FontEncSimpleMapRec)); - if(sm == NULL) - goto error; - sm->row_size = encoding->row_size; - if(first <= last) { - sm->first = first; - sm->len=last-first+1; - sm->map = - (unsigned short*)xalloc(sm->len * sizeof(unsigned short)); - if(sm->map == NULL) { - xfree(sm); - mapping->client_data = sm = NULL; - goto error; - } - } else { - sm->first = 0; - sm->len = 0; - sm->map = 0; - } - for(i=0; i < sm->len; i++) - sm -> map[i] = enc[first+i]; - install_mapping(encoding, mapping); - mapping = 0; - first = 0xFFFF; last=0; - goto no_mapping; - - case CODE_LINE: - if(setCode(value1, value2, encoding->row_size, - &first, &last, &encsize, &enc)) - goto error; - goto mapping; - - case CODE_RANGE_LINE: - if(value1 > 0x10000) - value1 = 0x10000; - if(value2 > 0x10000) - value2 = 0x10000; - if(value2 < value1) - goto mapping; - /* Do the last value first to avoid having to realloc() */ - if(setCode(value2, value3+(value2-value1), encoding->row_size, - &first, &last, &encsize, &enc)) - goto error; - for(i=value1; i<value2; i++) { - if(setCode(i, value3+(i-value1), encoding->row_size, - &first, &last, &encsize, &enc)) - goto error; - } - goto mapping; - - case CODE_UNDEFINE_LINE: - if(value1 > 0x10000) - value1 = 0x10000; - if(value2 > 0x10000) - value2 = 0x10000; - if(value2 < value1) - goto mapping; - /* Do the last value first to avoid having to realloc() */ - if(setCode(value2, 0, encoding->row_size, - &first, &last, &encsize, &enc)) - goto error; - for(i = value1; i < value2; i++) { - if(setCode(i, 0, encoding->row_size, - &first, &last, &encsize, &enc)) - goto error; - } - goto mapping; - - default: goto mapping; /* ignore unknown lines */ - } - - string_mapping: - line = getnextline(f); - switch(line) { - case EOF_LINE: goto error; - case ENDMAPPING_LINE: - mapping->recode = FontEncUndefinedRecode; - mapping->name = FontEncSimpleName; - mapping->client_data = sn = - (FontEncSimpleNamePtr)xalloc(sizeof(FontEncSimpleNameRec)); - if(sn == NULL) - goto error; - if(first > last) { - xfree(sn); - mapping->client_data = sn = NULL; - goto error; - } - sn->first = first; - sn->len = last - first + 1; - sn->map = (char**)xalloc(sn->len*sizeof(char*)); - if(sn->map == NULL) { - xfree(sn); - mapping->client_data = sn = NULL; - goto error; - } - for(i = 0; i < sn->len; i++) - sn->map[i] = nam[first+i]; - install_mapping(encoding,mapping); - mapping = 0; - first = 0xFFFF; last=0; - goto no_mapping; - case NAME_LINE: - if(value1 >= 0x10000) goto string_mapping; - if(namsize == 0) { - namsize = (value1) < 256 ? 256 : 0x10000; - nam = (char**)xalloc(namsize * sizeof(char*)); - if(nam == NULL) { - namsize=0; - goto error; - } - } else if(namsize <= value1) { - namsize = 0x10000; - if((newnam = (char**)xrealloc(nam, namsize)) == NULL) - goto error; - nam = newnam; - } - if(first > last) { - first = last = value1; - } - if(value1 < first) { - for(i = value1; i < first; i++) - nam[i] = NULL; - first = value1; - } - if(value1 > last) { - for(i=last+1; i <= value1; i++) - nam[i]=NULL; - last = value1; - } - nam[value1] = (char*)xalloc(strlen(keyword_value)+1); - if(nam[value1] == NULL) { - goto error; - } - strcpy(nam[value1], keyword_value); - goto string_mapping; - - default: goto string_mapping; /* ignore unknown lines */ - } - - done: - if(encsize) xfree(enc); encsize=0; enc = NULL; - if(namsize) xfree(nam); namsize=0; nam = NULL; /* don't free entries! */ - - encoding->aliases=NULL; - if(numaliases) { - encoding->aliases = (char**)xalloc((numaliases+1)*sizeof(char*)); - if(encoding->aliases == NULL) - goto error; - for(i=0; i<numaliases; i++) - encoding->aliases[i] = aliases[i]; - encoding->aliases[numaliases]=NULL; - } - - return encoding; - -error: - if(encsize) xfree(enc); encsize=0; - if(namsize) { - for(i = first; i <= last; i++) - if(nam[i]) - xfree(nam[i]); - xfree(nam); - namsize = 0; - } - if(mapping) { - if(mapping->client_data) xfree(mapping->client_data); - xfree(mapping); - } - if(encoding) { - if(encoding->name) xfree(encoding->name); - for(mapping = encoding->mappings; mapping; mapping = mapping->next) { - if(mapping->client_data) xfree(mapping->client_data); - xfree(mapping); - } - xfree(encoding); - } - for(i = 0; i < numaliases; i++) - xfree(aliases[i]); - /* We don't need to free sn and sm as they handled locally in the body.*/ - return 0; -} - -char* -FontEncDirectory() -{ - static char* dir = NULL; - - if(dir == NULL) { - char *c = getenv("FONT_ENCODINGS_DIRECTORY"); - if(c) { - dir = malloc(strlen(c) + 1); - if(!dir) - return NULL; - strcpy(dir, c); - } else { - dir = FONT_ENCODINGS_DIRECTORY; - } - } - return dir; -} - -static void -parseFontFileName(const char *fontFileName, char *buf, char *dir) -{ - const char *p; - char *q, *lastslash; - - for(p = fontFileName, q = dir, lastslash = NULL; *p; p++, q++) { - *q = *p; - if(*p == '/') - lastslash = q+1; - } - - if(!lastslash) - lastslash = dir; - - *lastslash = '\0'; - - if(buf && strlen(dir) + 14 < MAXFONTFILENAMELEN) { - strcpy(buf, dir); - strcat(buf, "encodings.dir"); - } -} - -static FontEncPtr -FontEncReallyReallyLoad(const char *charset, - const char *dirname, const char *dir) -{ - FontFilePtr f; - FILE *file; - FontEncPtr encoding; - char file_name[MAXFONTFILENAMELEN], encoding_name[MAXFONTNAMELEN], - buf[MAXFONTFILENAMELEN]; - int count, n; - static char format[24] = ""; - - /* As we don't really expect to open encodings that often, we don't - take the trouble of caching encodings directories. */ - - if((file = fopen(dirname, "r")) == NULL) { - return NULL; - } - - count = fscanf(file, "%d\n", &n); - if(count == EOF || count != 1) { - fclose(file); - return NULL; - } - - encoding = NULL; - if (!format[0]) { - sprintf(format, "%%%ds %%%d[^\n]\n", (int)sizeof(encoding_name) - 1, - (int)sizeof(file_name) - 1); - } - for(;;) { - count = fscanf(file, format, encoding_name, file_name); - if(count == EOF) - break; - if(count != 2) - break; - - if(!strcasecmp(encoding_name, charset)) { - /* Found it */ - if(file_name[0] != '/') { - if(strlen(dir) + strlen(file_name) >= MAXFONTFILENAMELEN) { - fclose(file); - return NULL; - } - strcpy(buf, dir); - strcat(buf, file_name); - } else { - strcpy(buf , file_name); - } - - f = FontFileOpen(buf); - if(f == NULL) { - fclose(file); - return NULL; - } - encoding = parseEncodingFile(f, 0); - FontFileClose(f); - break; - } - } - - fclose(file); - - return encoding; -} - -/* Parser ntrypoint -- used by FontEncLoad */ -FontEncPtr -FontEncReallyLoad(const char *charset, const char *fontFileName) -{ - FontEncPtr encoding; - char dir[MAXFONTFILENAMELEN], dirname[MAXFONTFILENAMELEN]; - char *d; - - if(fontFileName) { - parseFontFileName(fontFileName, dirname, dir); - encoding = FontEncReallyReallyLoad(charset, dirname, dir); - if(encoding) - return(encoding); - } - - d = FontEncDirectory(); - if(d) { - parseFontFileName(d, NULL, dir); - encoding = FontEncReallyReallyLoad(charset, d, dir); - return encoding; - } - - return NULL; -} - -/* Return a NULL-terminated array of encoding names. Note that this - * function has incestuous knowledge of the allocations done by - * parseEncodingFile. */ - -char ** -FontEncIdentify(const char *fileName) -{ - FontFilePtr f; - FontEncPtr encoding; - char **names, **name, **alias; - int numaliases; - - if((f = FontFileOpen(fileName))==NULL) { - return NULL; - } - encoding = parseEncodingFile(f, 1); - FontFileClose(f); - - if(!encoding) - return NULL; - - numaliases = 0; - if(encoding->aliases) - for(alias = encoding->aliases; *alias; alias++) - numaliases++; - - names = (char**)xalloc((numaliases+2)*sizeof(char*)); - if(names == NULL) { - if(encoding->aliases) - xfree(encoding->aliases); - xfree(encoding); - return NULL; - } - - name = names; - *(name++) = encoding->name; - if(numaliases > 0) - for(alias = encoding->aliases; *alias; alias++, name++) - *name = *alias; - - *name = 0; - xfree(encoding->aliases); - xfree(encoding); - - return names; -} diff --git a/nx-X11/lib/font/fontfile/ffcheck.c b/nx-X11/lib/font/fontfile/ffcheck.c deleted file mode 100644 index d3d1217..0000000 --- a/nx-X11/lib/font/fontfile/ffcheck.c +++ /dev/null @@ -1,171 +0,0 @@ -/* $Xorg: ffcheck.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/ffcheck.c,v 1.15tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ -/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> -#ifdef LOADABLEFONTS -#include <X11/fonts/fontmod.h> -#endif - -/* - * Map FPE functions to renderer functions - */ - - -/* Here we must check the client to see if it has a context attached to - * it that allows us to access the printer fonts - */ - -static int -FontFileCheckOpenFont (pointer client, FontPathElementPtr fpe, Mask flags, - char *name, int namelen, - fsBitmapFormat format, fsBitmapFormatMask fmask, - XID id, FontPtr *pFont, char **aliasName, - FontPtr non_cachable_font) -{ - if (XpClientIsBitmapClient(client)) - return (FontFileOpenFont (client, fpe, flags, name, namelen, format, - fmask, id, pFont, aliasName, non_cachable_font)); - return BadFontName; -} - -static int -FontFileCheckListFonts (pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, FontNamesPtr names) -{ - if (XpClientIsBitmapClient(client)) - return FontFileListFonts (client, fpe, pat, len, max, names); - return BadFontName; -} - -static int -FontFileCheckStartListFontsWithInfo(pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep) -{ - if (XpClientIsBitmapClient(client)) - return FontFileStartListFontsWithInfo(client, fpe, pat, len, - max, privatep); - return BadFontName; -} - -static int -FontFileCheckListNextFontWithInfo(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - FontInfoPtr *pFontInfo, - int *numFonts, pointer private) -{ - if (XpClientIsBitmapClient(client)) - return FontFileListNextFontWithInfo(client, fpe, namep, namelenp, - pFontInfo, numFonts, private); - return BadFontName; -} - -static int -FontFileCheckStartListFontsAndAliases(pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep) -{ - if (XpClientIsBitmapClient(client)) - return FontFileStartListFontsAndAliases(client, fpe, pat, len, - max, privatep); - return BadFontName; -} - -static int -FontFileCheckListNextFontOrAlias(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - char **resolvedp, int *resolvedlenp, - pointer private) -{ - if (XpClientIsBitmapClient(client)) - return FontFileListNextFontOrAlias(client, fpe, namep, namelenp, - resolvedp, resolvedlenp, private); - return BadFontName; -} - -void -FontFileCheckRegisterFpeFunctions (void) -{ -#ifndef LOADABLEFONTS - BitmapRegisterFontFileFunctions (); - - -#ifdef BUILD_SPEEDO - SpeedoRegisterFontFileFunctions (); -#endif -#ifdef BUILD_TYPE1 - Type1RegisterFontFileFunctions(); -#endif -#ifdef BUILD_CID - CIDRegisterFontFileFunctions(); -#endif -#ifdef BUILD_FREETYPE - FreeTypeRegisterFontFileFunctions(); -#endif - - -#else - - { - int i; - - if (FontModuleList) { - for (i = 0; FontModuleList[i].name; i++) { - if (FontModuleList[i].initFunc) - FontModuleList[i].initFunc(); - } - } - } -#endif - - RegisterFPEFunctions(FontFileNameCheck, - FontFileInitFPE, - FontFileFreeFPE, - FontFileResetFPE, - FontFileCheckOpenFont, - FontFileCloseFont, - FontFileCheckListFonts, - FontFileCheckStartListFontsWithInfo, - FontFileCheckListNextFontWithInfo, - NULL, - NULL, - NULL, - FontFileCheckStartListFontsAndAliases, - FontFileCheckListNextFontOrAlias, - FontFileEmptyBitmapSource); -} diff --git a/nx-X11/lib/font/fontfile/fileio.c b/nx-X11/lib/font/fontfile/fileio.c deleted file mode 100644 index a3f9464..0000000 --- a/nx-X11/lib/font/fontfile/fileio.c +++ /dev/null @@ -1,90 +0,0 @@ -/* $Xorg: fileio.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/fileio.c,v 3.9 2001/12/14 19:56:51 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilio.h> -#include <X11/Xos.h> -#ifndef O_BINARY -#define O_BINARY O_RDONLY -#endif - -FontFilePtr -FontFileOpen (const char *name) -{ - int fd; - int len; - BufFilePtr raw, cooked; - - fd = open (name, O_BINARY); - if (fd < 0) - return 0; - raw = BufFileOpenRead (fd); - if (!raw) - { - close (fd); - return 0; - } - len = strlen (name); -#ifndef __UNIXOS2__ - if (len > 2 && !strcmp (name + len - 2, ".Z")) { -#else - if (len > 2 && (!strcmp (name + len - 4, ".pcz") || - !strcmp (name + len - 2, ".Z"))) { -#endif - cooked = BufFilePushCompressed (raw); - if (!cooked) { - BufFileClose (raw, TRUE); - return 0; - } - raw = cooked; -#ifdef X_GZIP_FONT_COMPRESSION - } else if (len > 3 && !strcmp (name + len - 3, ".gz")) { - cooked = BufFilePushZIP (raw); - if (!cooked) { - BufFileClose (raw, TRUE); - return 0; - } - raw = cooked; -#endif - } - return (FontFilePtr) raw; -} - -int -FontFileClose (FontFilePtr f) -{ - return BufFileClose ((BufFilePtr) f, TRUE); -} - diff --git a/nx-X11/lib/font/fontfile/filewr.c b/nx-X11/lib/font/fontfile/filewr.c deleted file mode 100644 index d076f16..0000000 --- a/nx-X11/lib/font/fontfile/filewr.c +++ /dev/null @@ -1,65 +0,0 @@ -/* $Xorg: filewr.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/filewr.c,v 3.6 2001/12/14 19:56:51 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilio.h> -#include <X11/Xos.h> - -FontFilePtr -FontFileOpenWrite (const char *name) -{ - int fd; - -#if defined(WIN32) || defined(__UNIXOS2__) || defined(__CYGWIN__) - fd = open (name, O_CREAT|O_TRUNC|O_RDWR|O_BINARY, 0666); -#else - fd = creat (name, 0666); -#endif - if (fd < 0) - return 0; - return (FontFilePtr) BufFileOpenWrite (fd); -} - -FontFilePtr -FontFileOpenWriteFd (int fd) -{ - return (FontFilePtr) BufFileOpenWrite (fd); -} - -FontFilePtr -FontFileOpenFd (int fd) -{ - return (FontFilePtr) BufFileOpenRead (fd); -} diff --git a/nx-X11/lib/font/fontfile/fontdir.c b/nx-X11/lib/font/fontfile/fontdir.c deleted file mode 100644 index 899ff05..0000000 --- a/nx-X11/lib/font/fontfile/fontdir.c +++ /dev/null @@ -1,832 +0,0 @@ -/* $XdotOrg: xc/lib/font/fontfile/fontdir.c,v 1.6 2005/11/14 20:40:42 ajax Exp $ */ -/* $Xorg: fontdir.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/fontdir.c,v 3.22 2003/07/07 16:40:11 eich Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#include <X11/keysym.h> - -#if HAVE_STDINT_H -#include <stdint.h> -#elif !defined(INT32_MAX) -#define INT32_MAX 0x7fffffff -#endif - -Bool -FontFileInitTable (FontTablePtr table, int size) -{ - if (size < 0 || (size > INT32_MAX/sizeof(FontEntryRec))) - return FALSE; - if (size) - { - table->entries = (FontEntryPtr) xalloc(sizeof(FontEntryRec) * size); - if (!table->entries) - return FALSE; - } - else - table->entries = 0; - table->used = 0; - table->size = size; - table->sorted = FALSE; - return TRUE; -} - -void -FontFileFreeEntry (FontEntryPtr entry) -{ - FontScalableExtraPtr extra; - int i; - - if (entry->name.name) - xfree(entry->name.name); - entry->name.name = NULL; - - switch (entry->type) - { - case FONT_ENTRY_SCALABLE: - xfree (entry->u.scalable.fileName); - extra = entry->u.scalable.extra; - for (i = 0; i < extra->numScaled; i++) - if (extra->scaled[i].vals.ranges) - xfree (extra->scaled[i].vals.ranges); - xfree (extra->scaled); - xfree (extra); - break; - case FONT_ENTRY_BITMAP: - xfree (entry->u.bitmap.fileName); - entry->u.bitmap.fileName = NULL; - break; - case FONT_ENTRY_ALIAS: - xfree (entry->u.alias.resolved); - entry->u.alias.resolved = NULL; - break; -#ifdef NOTYET - case FONT_ENTRY_BC: - break; -#endif - } -} - -void -FontFileFreeTable (FontTablePtr table) -{ - int i; - - for (i = 0; i < table->used; i++) - FontFileFreeEntry (&table->entries[i]); - xfree (table->entries); -} - -FontDirectoryPtr -FontFileMakeDir(char *dirName, int size) -{ - FontDirectoryPtr dir; - int dirlen; - int needslash = 0; - char *attrib; - int attriblen; - -#if !defined(__UNIXOS2__) && !defined(WIN32) - attrib = strchr(dirName, ':'); -#else - /* OS/2 uses the colon in the drive letter descriptor, skip this */ - attrib = strchr(dirName+2, ':'); -#endif - if (attrib) { - dirlen = attrib - dirName; - attriblen = strlen(attrib); - } else { - dirlen = strlen(dirName); - attriblen = 0; - } - if (dirName[dirlen - 1] != '/') -#ifdef NCD - if (dirlen) /* leave out slash for builtins */ -#endif - needslash = 1; - dir = (FontDirectoryPtr) xalloc(sizeof *dir + dirlen + needslash + 1 + - (attriblen ? attriblen + 1 : 0)); - if (!dir) - return (FontDirectoryPtr)0; - if (!FontFileInitTable (&dir->scalable, 0)) - { - xfree (dir); - return (FontDirectoryPtr)0; - } - if (!FontFileInitTable (&dir->nonScalable, size)) - { - FontFileFreeTable (&dir->scalable); - xfree (dir); - return (FontDirectoryPtr)0; - } - dir->directory = (char *) (dir + 1); - dir->dir_mtime = 0; - dir->alias_mtime = 0; - if (attriblen) - dir->attributes = dir->directory + dirlen + needslash + 1; - else - dir->attributes = NULL; - strncpy(dir->directory, dirName, dirlen); - dir->directory[dirlen] = '\0'; - if (dir->attributes) - strcpy(dir->attributes, attrib); - if (needslash) - strcat(dir->directory, "/"); - return dir; -} - -void -FontFileFreeDir (FontDirectoryPtr dir) -{ - FontFileFreeTable (&dir->scalable); - FontFileFreeTable (&dir->nonScalable); - xfree(dir); -} - -FontEntryPtr -FontFileAddEntry(FontTablePtr table, FontEntryPtr prototype) -{ - FontEntryPtr entry; - int newsize; - - /* can't add entries to a sorted table, pointers get broken! */ - if (table->sorted) - return (FontEntryPtr) 0; /* "cannot" happen */ - if (table->used == table->size) { - if (table->size >= ((INT32_MAX / sizeof(FontEntryRec)) - 100)) - /* If we've read so many entries we're going to ask for 2gb - or more of memory, something is so wrong with this font - directory that we should just give up before we overflow. */ - return NULL; - newsize = table->size + 100; - entry = (FontEntryPtr) xrealloc(table->entries, - newsize * sizeof(FontEntryRec)); - if (!entry) - return (FontEntryPtr)0; - table->size = newsize; - table->entries = entry; - } - entry = &table->entries[table->used]; - *entry = *prototype; - entry->name.name = (char *) xalloc(prototype->name.length + 1); - if (!entry->name.name) - return (FontEntryPtr)0; - memcpy (entry->name.name, prototype->name.name, prototype->name.length); - entry->name.name[entry->name.length] = '\0'; - table->used++; - return entry; -} - -/* - * Compare two strings just like strcmp, but preserve decimal integer - * sorting order, i.e. "2" < "10" or "iso8859-2" < "iso8859-10" < - * "iso10646-1". Strings are sorted as if sequences of digits were - * prefixed by a length indicator (i.e., does not ignore leading zeroes). - * - * Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> - */ -#define Xisdigit(c) ('\060' <= (c) && (c) <= '\071') - -static int strcmpn(const char *s1, const char *s2) -{ - int digits, predigits = 0; - const char *ss1, *ss2; - - while (1) { - if (*s1 == 0 && *s2 == 0) - return 0; - digits = Xisdigit(*s1) && Xisdigit(*s2); - if (digits && !predigits) { - ss1 = s1; - ss2 = s2; - while (Xisdigit(*ss1) && Xisdigit(*ss2)) - ss1++, ss2++; - if (!Xisdigit(*ss1) && Xisdigit(*ss2)) - return -1; - if (Xisdigit(*ss1) && !Xisdigit(*ss2)) - return 1; - } - if ((unsigned char)*s1 < (unsigned char)*s2) - return -1; - if ((unsigned char)*s1 > (unsigned char)*s2) - return 1; - predigits = digits; - s1++, s2++; - } -} - - -static int -FontFileNameCompare(const void* a, const void* b) -{ - FontEntryPtr a_name = (FontEntryPtr) a, - b_name = (FontEntryPtr) b; - - return strcmpn(a_name->name.name, b_name->name.name); -} - -void -FontFileSortTable (FontTablePtr table) -{ - if (!table->sorted) { - qsort((char *) table->entries, table->used, sizeof(FontEntryRec), - FontFileNameCompare); - table->sorted = TRUE; - } -} - -void -FontFileSortDir(FontDirectoryPtr dir) -{ - FontFileSortTable (&dir->scalable); - FontFileSortTable (&dir->nonScalable); - /* now that the table is fixed in size, swizzle the pointers */ - FontFileSwitchStringsToBitmapPointers (dir); -} - -/* - Given a Font Table, SetupWildMatch() sets up various pointers and state - information so the table can be searched for name(s) that match a given - fontname pattern -- which may contain wildcards. Under certain - circumstances, SetupWildMatch() will find the one table entry that - matches the pattern. If those circumstances do not pertain, - SetupWildMatch() returns a range within the the table that should be - searched for matching name(s). With the information established by - SetupWildMatch(), including state information in "private", the - PatternMatch() procedure is then used to test names in the range for a - match. -*/ - -#define isWild(c) ((c) == XK_asterisk || (c) == XK_question) -#define isDigit(c) (XK_0 <= (c) && (c) <= XK_9) - -static int -SetupWildMatch(FontTablePtr table, FontNamePtr pat, - int *leftp, int *rightp, int *privatep) -{ - int nDashes; - char c; - char *t; - char *firstWild; - char *firstDigit; - int first; - int center, - left, - right; - int result; - char *name; - - name = pat->name; - nDashes = pat->ndashes; - firstWild = 0; - firstDigit = 0; - t = name; - while ((c = *t++)) { - if (isWild(c)) { - if (!firstWild) - firstWild = t - 1; - } - if (isDigit(c)) { - if (!firstDigit) - firstDigit = t - 1; - } - } - left = 0; - right = table->used; - if (firstWild) - *privatep = nDashes; - else - *privatep = -1; - if (!table->sorted) { - *leftp = left; - *rightp = right; - return -1; - } else if (firstWild) { - if (firstDigit && firstDigit < firstWild) - first = firstDigit - name; - else - first = firstWild - name; - while (left < right) { - center = (left + right) / 2; - result = strncmp(name, table->entries[center].name.name, first); - if (result == 0) - break; - if (result < 0) - right = center; - else - left = center + 1; - } - *leftp = left; - *rightp = right; - return -1; - } else { - while (left < right) { - center = (left + right) / 2; - result = strcmpn(name, table->entries[center].name.name); - if (result == 0) - return center; - if (result < 0) - right = center; - else - left = center + 1; - } - *leftp = 1; - *rightp = 0; - return -1; - } -} - -static int -PatternMatch(char *pat, int patdashes, char *string, int stringdashes) -{ - char c, - t; - - if (stringdashes < patdashes) - return 0; - for (;;) { - switch (c = *pat++) { - case '*': - if (!(c = *pat++)) - return 1; - if (c == XK_minus) { - patdashes--; - for (;;) { - while ((t = *string++) != XK_minus) - if (!t) - return 0; - stringdashes--; - if (PatternMatch(pat, patdashes, string, stringdashes)) - return 1; - if (stringdashes == patdashes) - return 0; - } - } else { - for (;;) { - while ((t = *string++) != c) { - if (!t) - return 0; - if (t == XK_minus) { - if (stringdashes-- < patdashes) - return 0; - } - } - if (PatternMatch(pat, patdashes, string, stringdashes)) - return 1; - } - } - case '?': - if (*string++ == XK_minus) - stringdashes--; - break; - case '\0': - return (*string == '\0'); - case XK_minus: - if (*string++ == XK_minus) { - patdashes--; - stringdashes--; - break; - } - return 0; - default: - if (c == *string++) - break; - return 0; - } - } -} - -int -FontFileCountDashes (char *name, int namelen) -{ - int ndashes = 0; - - while (namelen--) - if (*name++ == '\055') /* avoid non ascii systems */ - ++ndashes; - return ndashes; -} - -char * -FontFileSaveString (char *s) -{ - char *n; - - n = (char *) xalloc (strlen (s) + 1); - if (!n) - return 0; - strcpy (n, s); - return n; -} - -FontEntryPtr -FontFileFindNameInScalableDir(FontTablePtr table, FontNamePtr pat, - FontScalablePtr vals) -{ - int i, - start, - stop, - res, - private; - FontNamePtr name; - - if ((i = SetupWildMatch(table, pat, &start, &stop, &private)) >= 0) - return &table->entries[i]; - for (i = start; i < stop; i++) { - name = &table->entries[i].name; - res = PatternMatch(pat->name, private, name->name, name->ndashes); - if (res > 0) - { - /* Check to see if enhancements requested are available */ - if (vals) - { - int vs = vals->values_supplied; - int cap; - - if (table->entries[i].type == FONT_ENTRY_SCALABLE) - cap = table->entries[i].u.scalable.renderer->capabilities; - else if (table->entries[i].type == FONT_ENTRY_ALIAS) - cap = ~0; /* Calling code will have to see if true */ - else - cap = 0; - if ((((vs & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || - (vs & POINTSIZE_MASK) == POINTSIZE_ARRAY) && - !(cap & CAP_MATRIX)) || - ((vs & CHARSUBSET_SPECIFIED) && - !(cap & CAP_CHARSUBSETTING))) - continue; - } - return &table->entries[i]; - } - if (res < 0) - break; - } - return (FontEntryPtr)0; -} - -FontEntryPtr -FontFileFindNameInDir(FontTablePtr table, FontNamePtr pat) -{ - return FontFileFindNameInScalableDir(table, pat, (FontScalablePtr)0); -} - -int -FontFileFindNamesInScalableDir(FontTablePtr table, FontNamePtr pat, int max, - FontNamesPtr names, FontScalablePtr vals, - int alias_behavior, int *newmax) -{ - int i, - start, - stop, - res, - private; - int ret = Successful; - FontEntryPtr fname; - FontNamePtr name; - - if (max <= 0) - return Successful; - if ((i = SetupWildMatch(table, pat, &start, &stop, &private)) >= 0) { - if (alias_behavior == NORMAL_ALIAS_BEHAVIOR || - table->entries[i].type != FONT_ENTRY_ALIAS) - { - name = &table->entries[i].name; - if (newmax) *newmax = max - 1; - return AddFontNamesName(names, name->name, name->length); - } - start = i; - stop = i + 1; - } - for (i = start, fname = &table->entries[start]; i < stop; i++, fname++) { - res = PatternMatch(pat->name, private, fname->name.name, fname->name.ndashes); - if (res > 0) { - if (vals) - { - int vs = vals->values_supplied; - int cap; - - if (fname->type == FONT_ENTRY_SCALABLE) - cap = fname->u.scalable.renderer->capabilities; - else if (fname->type == FONT_ENTRY_ALIAS) - cap = ~0; /* Calling code will have to see if true */ - else - cap = 0; - if ((((vs & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || - (vs & POINTSIZE_MASK) == POINTSIZE_ARRAY) && - !(cap & CAP_MATRIX)) || - ((vs & CHARSUBSET_SPECIFIED) && - !(cap & CAP_CHARSUBSETTING))) - continue; - } - - if ((alias_behavior & IGNORE_SCALABLE_ALIASES) && - fname->type == FONT_ENTRY_ALIAS) - { - FontScalableRec tmpvals; - if (FontParseXLFDName (fname->name.name, &tmpvals, - FONT_XLFD_REPLACE_NONE) && - !(tmpvals.values_supplied & SIZE_SPECIFY_MASK)) - continue; - } - - ret = AddFontNamesName(names, fname->name.name, fname->name.length); - if (ret != Successful) - goto bail; - - /* If alias_behavior is LIST_ALIASES_AND_TARGET_NAMES, mark - this entry as an alias by negating its length and follow - it by the resolved name */ - if ((alias_behavior & LIST_ALIASES_AND_TARGET_NAMES) && - fname->type == FONT_ENTRY_ALIAS) - { - names->length[names->nnames - 1] = - -names->length[names->nnames - 1]; - ret = AddFontNamesName(names, fname->u.alias.resolved, - strlen(fname->u.alias.resolved)); - if (ret != Successful) - goto bail; - } - - if (--max <= 0) - break; - } else if (res < 0) - break; - } - bail: ; - if (newmax) *newmax = max; - return ret; -} - -int -FontFileFindNamesInDir(FontTablePtr table, FontNamePtr pat, - int max, FontNamesPtr names) -{ - return FontFileFindNamesInScalableDir(table, pat, max, names, - (FontScalablePtr)0, - NORMAL_ALIAS_BEHAVIOR, (int *)0); -} - -Bool -FontFileMatchName(char *name, int length, FontNamePtr pat) -{ - /* Perform a fontfile-type name match on a single name */ - FontTableRec table; - FontEntryRec entries[1]; - - /* Dummy up a table */ - table.used = 1; - table.size = 1; - table.sorted = TRUE; - table.entries = entries; - entries[0].name.name = name; - entries[0].name.length = length; - entries[0].name.ndashes = FontFileCountDashes(name, length); - - return FontFileFindNameInDir(&table, pat) != (FontEntryPtr)0; -} - -/* - * Add a font file to a directory. This handles bitmap and - * scalable names both - */ - -Bool -FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName) -{ - FontEntryRec entry; - FontScalableRec vals, zeroVals; - FontRendererPtr renderer; - FontEntryPtr existing; - FontScalableExtraPtr extra; - FontEntryPtr bitmap = 0, scalable; - Bool isscale; - Bool scalable_xlfd; - - renderer = FontFileMatchRenderer (fileName); - if (!renderer) - return FALSE; - entry.name.length = strlen (fontName); - if (entry.name.length > MAXFONTNAMELEN) - entry.name.length = MAXFONTNAMELEN; - entry.name.name = fontName; - CopyISOLatin1Lowered (entry.name.name, fontName, entry.name.length); - entry.name.ndashes = FontFileCountDashes (entry.name.name, entry.name.length); - entry.name.name[entry.name.length] = '\0'; - /* - * Add a bitmap name if the incoming name isn't an XLFD name, or - * if it isn't a scalable name (i.e. non-zero scalable fields) - * - * If name of bitmapped font contains XLFD enhancements, do not add - * a scalable version of the name... this can lead to confusion and - * ambiguity between the font name and the field enhancements. - */ - isscale = entry.name.ndashes == 14 && - FontParseXLFDName(entry.name.name, - &vals, FONT_XLFD_REPLACE_NONE) && - (vals.values_supplied & PIXELSIZE_MASK) != PIXELSIZE_ARRAY && - (vals.values_supplied & POINTSIZE_MASK) != POINTSIZE_ARRAY && - !(vals.values_supplied & ENHANCEMENT_SPECIFY_MASK); -#define UNSCALED_ATTRIB "unscaled" - scalable_xlfd = (isscale && - (((vals.values_supplied & PIXELSIZE_MASK) == 0) || - ((vals.values_supplied & POINTSIZE_MASK) == 0))); - /* - * For scalable fonts without a scalable XFLD, check if the "unscaled" - * attribute is present. - */ - if (isscale && !scalable_xlfd && - dir->attributes && dir->attributes[0] == ':') { - char *ptr1 = dir->attributes + 1; - char *ptr2; - int length; - int uslength = strlen(UNSCALED_ATTRIB); - - do { - ptr2 = strchr(ptr1, ':'); - if (ptr2) - length = ptr2 - ptr1; - else - length = dir->attributes + strlen(dir->attributes) - ptr1; - if (length == uslength && !strncmp(ptr1, UNSCALED_ATTRIB, uslength)) - isscale = FALSE; - if (ptr2) - ptr1 = ptr2 + 1; - } while (ptr2); - } - if (!isscale || (vals.values_supplied & SIZE_SPECIFY_MASK)) - { - /* - * If the renderer doesn't support OpenBitmap, FontFileOpenFont - * will still do the right thing. - */ - entry.type = FONT_ENTRY_BITMAP; - entry.u.bitmap.renderer = renderer; - entry.u.bitmap.pFont = NullFont; - if (!(entry.u.bitmap.fileName = FontFileSaveString (fileName))) - return FALSE; - if (!(bitmap = FontFileAddEntry (&dir->nonScalable, &entry))) - { - xfree (entry.u.bitmap.fileName); - return FALSE; - } - } - /* - * Parse out scalable fields from XLFD names - a scalable name - * just gets inserted, a scaled name has more things to do. - */ - if (isscale) - { - if (vals.values_supplied & SIZE_SPECIFY_MASK) - { - bzero((char *)&zeroVals, sizeof(zeroVals)); - zeroVals.x = vals.x; - zeroVals.y = vals.y; - zeroVals.values_supplied = PIXELSIZE_SCALAR | POINTSIZE_SCALAR; - FontParseXLFDName (entry.name.name, &zeroVals, - FONT_XLFD_REPLACE_VALUE); - entry.name.length = strlen (entry.name.name); - existing = FontFileFindNameInDir (&dir->scalable, &entry.name); - if (existing) - { - if ((vals.values_supplied & POINTSIZE_MASK) == - POINTSIZE_SCALAR && - (int)(vals.point_matrix[3] * 10) == GetDefaultPointSize()) - { - existing->u.scalable.extra->defaults = vals; - - xfree (existing->u.scalable.fileName); - if (!(existing->u.scalable.fileName = FontFileSaveString (fileName))) - return FALSE; - } - if(bitmap) - { - FontFileCompleteXLFD(&vals, &vals); - FontFileAddScaledInstance (existing, &vals, NullFont, - bitmap->name.name); - return TRUE; - } - } - } - if (!(entry.u.scalable.fileName = FontFileSaveString (fileName))) - return FALSE; - extra = (FontScalableExtraPtr) xalloc (sizeof (FontScalableExtraRec)); - if (!extra) - { - xfree (entry.u.scalable.fileName); - return FALSE; - } - bzero((char *)&extra->defaults, sizeof(extra->defaults)); - if ((vals.values_supplied & POINTSIZE_MASK) == POINTSIZE_SCALAR && - (int)(vals.point_matrix[3] * 10) == GetDefaultPointSize()) - extra->defaults = vals; - else - { - FontResolutionPtr resolution; - int num; - - extra->defaults.point_matrix[0] = - extra->defaults.point_matrix[3] = - (double)GetDefaultPointSize() / 10.0; - extra->defaults.point_matrix[1] = - extra->defaults.point_matrix[2] = 0.0; - extra->defaults.values_supplied = - POINTSIZE_SCALAR | PIXELSIZE_UNDEFINED; - extra->defaults.width = -1; - if (vals.x <= 0 || vals.y <= 0) - { - resolution = GetClientResolutions (&num); - if (resolution && num > 0) - { - extra->defaults.x = resolution->x_resolution; - extra->defaults.y = resolution->y_resolution; - } - else - { - extra->defaults.x = 75; - extra->defaults.y = 75; - } - } - else - { - extra->defaults.x = vals.x; - extra->defaults.y = vals.y; - } - FontFileCompleteXLFD (&extra->defaults, &extra->defaults); - } - extra->numScaled = 0; - extra->sizeScaled = 0; - extra->scaled = 0; - extra->private = 0; - entry.type = FONT_ENTRY_SCALABLE; - entry.u.scalable.renderer = renderer; - entry.u.scalable.extra = extra; - if (!(scalable = FontFileAddEntry (&dir->scalable, &entry))) - { - xfree (extra); - xfree (entry.u.scalable.fileName); - return FALSE; - } - if (vals.values_supplied & SIZE_SPECIFY_MASK) - { - if(bitmap) - { - FontFileCompleteXLFD(&vals, &vals); - FontFileAddScaledInstance (scalable, &vals, NullFont, - bitmap->name.name); - } - } - } - return TRUE; -} - -Bool -FontFileAddFontAlias (FontDirectoryPtr dir, char *aliasName, char *fontName) -{ - FontEntryRec entry; - - entry.name.length = strlen (aliasName); - CopyISOLatin1Lowered (aliasName, aliasName, entry.name.length); - entry.name.name = aliasName; - entry.name.ndashes = FontFileCountDashes (entry.name.name, entry.name.length); - entry.type = FONT_ENTRY_ALIAS; - if (!(entry.u.alias.resolved = FontFileSaveString (fontName))) - return FALSE; - if (!FontFileAddEntry (&dir->nonScalable, &entry)) - { - xfree (entry.u.alias.resolved); - return FALSE; - } - return TRUE; -} diff --git a/nx-X11/lib/font/fontfile/fontenc.c b/nx-X11/lib/font/fontfile/fontenc.c deleted file mode 100644 index e96cdde..0000000 --- a/nx-X11/lib/font/fontfile/fontenc.c +++ /dev/null @@ -1,952 +0,0 @@ -/* -Copyright (c) 1998-2001 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* $XdotOrg: xc/lib/font/fontfile/fontenc.c,v 1.5 2005/11/08 06:33:26 jkj Exp $ */ -/* $XFree86: xc/lib/font/fontfile/fontenc.c,v 1.15 2003/02/20 03:25:19 dawes Exp $ */ - -/* Backend-independent encoding code */ - -#include <string.h> - -#if defined(__SCO__) || defined(__UNIXWARE__) -#include <strings.h> -#endif - -#ifndef FONTENC_NO_LIBFONT - -#include <X11/fonts/fontmisc.h> /* defines xalloc and friends */ -#include <X11/fonts/fntfilst.h> - -#else - -#include <stdlib.h> -#define xalloc(n) malloc(n) -#define xrealloc(p, n) realloc(p, n) -#define xfree(p) free(p) -#define FALSE 0 -#define TRUE 1 -#define MAXFONTNAMELEN 1024 -#define MAXFONTFILENAMELEN 1024 - -#endif /* FONTENC_NO_FONTFILE */ - -#include <X11/fonts/fontenc.h> -#include "fontencI.h" - -/* Functions local to this file */ - -static FontEncPtr FontEncLoad(const char*, const char*); - -/* Early versions of this code only knew about hardwired encodings, - hence the following data. Now that the code knows how to load an - encoding from a file, most of these tables could go away. */ - -/* At any rate, no new hardcoded encodings will be added. */ - -static FontMapRec iso10646[]= -{ - {FONT_ENCODING_UNICODE,0,0,0,0,0,0}, - {0,0,0,0,0,0,0} -}; - -/* Notice that the Apple encodings do not have all the characters in - the corresponding ISO 8859, and therefore the table has some holes. - There's not much more we can do with fonts without a Unicode cmap - unless we are willing to combine cmaps (which we are not). */ - -static unsigned short -iso8859_1_apple_roman[]= -{ 0xCA, 0xC1, 0xA2, 0xA3, 0xDB, 0xB4, 0x00, 0xA4, - 0xAC, 0xA9, 0xBB, 0xC7, 0xC2, 0x00, 0xA8, 0xF8, - 0xA1, 0xB1, 0x00, 0x00, 0xAB, 0xB5, 0xA6, 0xE1, - 0xFC, 0x00, 0xBC, 0xC8, 0x00, 0x00, 0x00, 0xC0, - 0xCB, 0xE7, 0xE5, 0xCC, 0x80, 0x81, 0xAE, 0x82, - 0xE9, 0x83, 0xE6, 0xE8, 0xED, 0xEA, 0xEB, 0xEC, - 0x00, 0x84, 0xF1, 0xEE, 0xEF, 0xCD, 0x85, 0x00, - 0xAF, 0xF4, 0xF2, 0xF3, 0x86, 0x00, 0x00, 0xA7, - 0x88, 0x87, 0x89, 0x8B, 0x8A, 0x8C, 0xBE, 0x8D, - 0x8F, 0x8E, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, - 0x00, 0x96, 0x98, 0x97, 0x99, 0x9B, 0x9A, 0xD6, - 0xBF, 0x9D, 0x9C, 0x9E, 0x9F, 0x00, 0x00, 0xD8 }; - -/* Cannot use simple_recode because need to eliminate 0x80<=code<0xA0 */ -static unsigned -iso8859_1_to_apple_roman(unsigned isocode, void *client_data) -{ - if(isocode<=0x80) - return isocode; - else if(isocode>=0xA0) - return iso8859_1_apple_roman[isocode-0xA0]; - else - return 0; -} - -static FontMapRec iso8859_1[]= -{ - {FONT_ENCODING_TRUETYPE,2,2,0,0,0,0}, /* ISO 8859-1 */ - {FONT_ENCODING_UNICODE,0,0,0,0,0,0}, /* ISO 8859-1 coincides with Unicode*/ - {FONT_ENCODING_TRUETYPE,1,0,iso8859_1_to_apple_roman,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned short iso8859_2_tophalf[]= -{ 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, - 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, - 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, - 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, - 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, - 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, - 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, - 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, - 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, - 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, - 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 }; - -static FontEncSimpleMapRec iso8859_2_to_unicode_map= -{0x60, 0, 0xA0, iso8859_2_tophalf }; - -static unsigned short iso8859_2_apple_centeuro[]= -{ 0xCA, 0x84, 0x00, 0xFC, 0x00, 0xBB, 0xE5, 0xA4, - 0xAC, 0xE1, 0x00, 0xE8, 0x8F, 0x00, 0xEB, 0xFB, - 0xA1, 0x88, 0x00, 0xB8, 0x00, 0xBC, 0xE6, 0xFF, - 0x00, 0xE4, 0x00, 0xE9, 0x90, 0x00, 0xEC, 0xFD, - 0xD9, 0xE7, 0x00, 0x00, 0x80, 0xBD, 0x8C, 0x00, - 0x89, 0x83, 0xA2, 0x00, 0x9D, 0xEA, 0x00, 0x91, - 0x00, 0xC1, 0xC5, 0xEE, 0xEF, 0xCC, 0x85, 0x00, - 0xDB, 0xF1, 0xF2, 0xF4, 0x86, 0xF8, 0x00, 0xA7, - 0xDA, 0x87, 0x00, 0x00, 0x8A, 0xBE, 0x8D, 0x00, - 0x8B, 0x8E, 0xAB, 0x00, 0x9E, 0x92, 0x00, 0x93, - 0x00, 0xC4, 0xCB, 0x97, 0x99, 0xCE, 0x9A, 0xD6, - 0xDE, 0xF3, 0x9C, 0xF5, 0x9F, 0xF9, 0x00, 0x00 }; - -static unsigned -iso8859_2_to_apple_centeuro(unsigned isocode, void *client_data) -{ - if(isocode<=0x80) - return isocode; - else if(isocode>=0xA0) - return iso8859_2_apple_centeuro[isocode-0xA0]; - else - return 0; -} - - -static FontMapRec iso8859_2[]= -{ - {FONT_ENCODING_UNICODE,0,0, - FontEncSimpleRecode,0,&iso8859_2_to_unicode_map,0}, - {FONT_ENCODING_TRUETYPE,1,29,iso8859_2_to_apple_centeuro,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned short iso8859_3_tophalf[]= -{ 0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0x0000, 0x0124, 0x00A7, - 0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0x0000, 0x017B, - 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7, - 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0x0000, 0x017C, - 0x00C0, 0x00C1, 0x00C2, 0x0000, 0x00C4, 0x010A, 0x0108, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, - 0x0000, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7, - 0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, - 0x00E0, 0x00E1, 0x00E2, 0x0000, 0x00E4, 0x010B, 0x0109, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x0000, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, - 0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9}; - -static FontEncSimpleMapRec iso8859_3_to_unicode_map= -{ 0x60, 0, 0xA0, iso8859_3_tophalf }; - -static FontMapRec iso8859_3[]= -{ - {FONT_ENCODING_UNICODE,0,0, - FontEncSimpleRecode,0,&iso8859_3_to_unicode_map,0}, - {0,0,0,0,0,0,0} -}; - - -static unsigned short iso8859_4_tophalf[]= -{ 0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, - 0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF, - 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7, - 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, - 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A, - 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, - 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, - 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B, - 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9, -}; - -static FontEncSimpleMapRec iso8859_4_to_unicode_map= -{ 0x60, 0, 0xA0, iso8859_4_tophalf }; - -static FontMapRec iso8859_4[]= -{ - {FONT_ENCODING_UNICODE,0,0,FontEncSimpleRecode,0, - &iso8859_4_to_unicode_map,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned short iso8859_5_tophalf[]= -{ 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, - 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F, - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, - 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, - 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, - 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, - 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, - 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, - 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F}; - -static FontEncSimpleMapRec iso8859_5_to_unicode_map= -{ 0x60, 0, 0xA0, iso8859_5_tophalf }; - -static unsigned short -iso8859_5_apple_cyrillic[]= -{ 0xCA, 0xDD, 0xAB, 0xAE, 0xB8, 0xC1, 0xA7, 0xBA, - 0xB7, 0xBC, 0xBE, 0xCB, 0xCD, 0x00, 0xD8, 0xDA, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, - 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, - 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, - 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, - 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF, - 0xDC, 0xDE, 0xAC, 0xAF, 0xB9, 0xCF, 0xB4, 0xBB, - 0xC0, 0xBD, 0xBF, 0xCC, 0xCE, 0xA4, 0xD9, 0xDB }; - -static unsigned -iso8859_5_to_apple_cyrillic(unsigned isocode, void *client_data) -{ - if(isocode<=0x80) - return isocode; - else if(isocode>=0xA0) - return iso8859_5_apple_cyrillic[isocode-0x80]; - else return 0; -} - -static FontMapRec iso8859_5[]= -{ - {FONT_ENCODING_UNICODE,0,0,FontEncSimpleRecode,0, - &iso8859_5_to_unicode_map,0}, - {FONT_ENCODING_TRUETYPE,1,7,iso8859_5_to_apple_cyrillic,0,0,0}, - {0,0,0,0,0,0,0} -}; - -/* ISO 8859-6 seems useless for serving fonts (not enough presentation - * forms). What do Arabic-speakers use? */ - -static unsigned -iso8859_6_to_unicode(unsigned isocode, void *client_data) -{ - if(isocode<=0xA0 || isocode==0xA4 || isocode==0xAD) - return isocode; - else if(isocode==0xAC || isocode==0xBB || - (isocode>=0xBF && isocode<=0xDA) || - (isocode>=0xE0 && isocode<=0xEF) || - (isocode>=0xF0 && isocode<=0xF2)) - return isocode-0xA0+0x0600; - else - return 0; -} - -static FontMapRec iso8859_6[]= -{ - {FONT_ENCODING_UNICODE,0,0,iso8859_6_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned -iso8859_7_to_unicode(unsigned isocode, void *client_data) -{ - if(isocode<=0xA0 || - (isocode>=0xA3 && isocode<=0xAD) || - (isocode>=0xB0 && isocode<=0xB3) || - isocode==0xB7 || isocode==0xBB || isocode==0xBD) - return isocode; - else if(isocode==0xA1) - return 0x02BD; - else if(isocode==0xA2) - return 0x02BC; - else if(isocode==0xAF) - return 0x2015; - else if(isocode>=0xB4) - return isocode-0xA0+0x0370; - else - return 0; -} - -static FontMapRec iso8859_7[]= -{ - {FONT_ENCODING_UNICODE,0,0,iso8859_7_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned -iso8859_8_to_unicode(unsigned isocode, void *client_data) -{ - if(isocode==0xA1) - return 0; - else if(isocode<0xBF) - return isocode; - else if(isocode==0xDF) - return 0x2017; - else if(isocode>=0xE0 && isocode<=0xFA) - return isocode+0x04F0; - else - return 0; -} - -static FontMapRec iso8859_8[]= -{ - {FONT_ENCODING_UNICODE,0,0,iso8859_8_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned -iso8859_9_to_unicode(unsigned isocode, void *client_data) -{ - switch(isocode) { - case 0xD0: return 0x011E; - case 0xDD: return 0x0130; - case 0xDE: return 0x015E; - case 0xF0: return 0x011F; - case 0xFD: return 0x0131; - case 0xFE: return 0x015F; - default: return isocode; - } -} - -static FontMapRec iso8859_9[]= -{ - {FONT_ENCODING_UNICODE,0,0,iso8859_9_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned short iso8859_10_tophalf[]= -{ 0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, - 0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A, - 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7, - 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2014, 0x016B, 0x014B, - 0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF, - 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168, - 0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, - 0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, - 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF, - 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, - 0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138}; - -static FontEncSimpleMapRec iso8859_10_to_unicode_map= -{ 0x60, 0, 0xA0, iso8859_10_tophalf }; - -static FontMapRec iso8859_10[]= -{ - {FONT_ENCODING_UNICODE,0,0,FontEncSimpleRecode,0, - &iso8859_10_to_unicode_map,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned -iso8859_15_to_unicode(unsigned isocode, void *client_data) -{ - switch(isocode) { - case 0xA4: return 0x20AC; - case 0xA6: return 0x0160; - case 0xA8: return 0x0161; - case 0xB4: return 0x017D; - case 0xB8: return 0x017E; - case 0xBC: return 0x0152; - case 0xBD: return 0x0153; - case 0xBE: return 0x0178; - default: return isocode; - } -} - -static FontMapRec iso8859_15[]= -{ - {FONT_ENCODING_UNICODE,0,0,iso8859_15_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned short koi8_r_tophalf[]= -{ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, - 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, - 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2022, 0x221A, 0x2248, - 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, - 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, - 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, - 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, - 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, - 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, - 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, - 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, - 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, - 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, - 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, - 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, - 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A}; - -static FontEncSimpleMapRec koi8_r_to_unicode_map= -{ 0x80, 0, 0x80, koi8_r_tophalf }; - - -static FontMapRec koi8_r[]= -{ - {FONT_ENCODING_UNICODE,0,0,FontEncSimpleRecode,0, - &koi8_r_to_unicode_map,0}, - {0,0,0,0,0,0,0} -}; - -static unsigned -koi8_ru_to_unicode(unsigned koicode, void *client_data) -{ - switch(koicode) { - case 0x93: return 0x201C; - case 0x96: return 0x201D; - case 0x97: return 0x2014; - case 0x98: return 0x2116; - case 0x99: return 0x2122; - case 0x9B: return 0x00BB; - case 0x9C: return 0x00AE; - case 0x9D: return 0x00AB; - case 0x9F: return 0x00A4; - case 0xA4: return 0x0454; - case 0xA6: return 0x0456; - case 0xA7: return 0x0457; - case 0xAD: return 0x0491; - case 0xAE: return 0x045E; - case 0xB4: return 0x0404; - case 0xB6: return 0x0406; - case 0xB7: return 0x0407; - case 0xBD: return 0x0490; - case 0xBE: return 0x040E; - default: return FontEncSimpleRecode(koicode, &koi8_r_to_unicode_map); - } -} - -static FontMapRec koi8_ru[]= -{ - {FONT_ENCODING_UNICODE,0,0,koi8_ru_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -/* koi8-e, ISO-IR-111 or ECMA-Cyrillic */ - -static unsigned short koi8_e_A0_BF[]= -{ 0x00A0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, - 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00AD, 0x045E, 0x045F, - 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, - 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00A4, 0x040E, 0x040F }; - -static unsigned -koi8_e_to_unicode(unsigned koicode, void *client_data) -{ - if(koicode<0xA0) - return koicode; - else if(koicode<0xC0) - return koi8_e_A0_BF[koicode-0xA0]; - else - return FontEncSimpleRecode(koicode, &koi8_r_to_unicode_map); -} - -static FontMapRec koi8_e[]= -{ - {FONT_ENCODING_UNICODE,0,0,koi8_e_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -/* Koi8 unified */ - -static unsigned short koi8_uni_80_BF[]= -{ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, - 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590, - 0x2591, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, - 0x00A9, 0x2122, 0x00A0, 0x00BB, 0x00AE, 0x00AB, 0x00B7, 0x00A4, - 0x00A0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, - 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x0491, 0x045E, 0x045F, - 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, - 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x0490, 0x040E, 0x040F }; - -static unsigned -koi8_uni_to_unicode(unsigned koicode, void *client_data) -{ - if(koicode<0x80) - return koicode; - else if(koicode<0xC0) - return koi8_uni_80_BF[koicode-0x80]; - else - return FontEncSimpleRecode(koicode, &koi8_r_to_unicode_map); -} - -static FontMapRec koi8_uni[]= -{ - {FONT_ENCODING_UNICODE,0,0,koi8_uni_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -/* Ukrainian variant of Koi8-R; see RFC 2319 */ - -static unsigned -koi8_u_to_unicode(unsigned koicode, void *client_data) -{ - switch(koicode) { - case 0xA4: return 0x0454; - case 0xA6: return 0x0456; - case 0xA7: return 0x0457; - case 0xAD: return 0x0491; - case 0xB4: return 0x0404; - case 0xB6: return 0x0406; - case 0xB7: return 0x0407; - case 0xBD: return 0x0490; - default: return FontEncSimpleRecode(koicode, &koi8_r_to_unicode_map); - } -} - -static FontMapRec koi8_u[]= -{ - {FONT_ENCODING_UNICODE,0,0,koi8_u_to_unicode,0,0,0}, - {0,0,0,0,0,0,0} -}; - -/* Microsoft Symbol, which is only meaningful for TrueType fonts, is - treated specially in ftenc.c, where we add usFirstCharIndex-0x20 to - the glyph index before applying the cmap. Lovely design. */ - -static FontMapRec microsoft_symbol[]= -{{FONT_ENCODING_TRUETYPE,3,0,0,0,0,0}, - /* You never know */ - {FONT_ENCODING_TRUETYPE,3,1,0,0,0,0}, - {0,0,0,0,0,0,0}}; - -static FontMapRec apple_roman[]= -{{FONT_ENCODING_TRUETYPE,1,0,0,0,0,0}, {0,0,0,0,0,0,0}}; - -/* The data for recodings */ - -/* For compatibility with X11R6.4. Losers. */ -static char *iso8859_15_aliases[2]={"fcd8859-15",0}; - -static FontEncRec initial_encodings[]= -{ - {"iso10646-1",0,256*256,0,iso10646,0,0,0}, /* Unicode */ - {"iso8859-1",0,256,0,iso8859_1,0,0,0}, /* Latin 1 (West European) */ - {"iso8859-2",0,256,0,iso8859_2,0,0,0}, /* Latin 2 (East European) */ - {"iso8859-3",0,256,0,iso8859_3,0,0,0}, /* Latin 3 (South European) */ - {"iso8859-4",0,256,0,iso8859_4,0,0,0}, /* Latin 4 (North European) */ - {"iso8859-5",0,256,0,iso8859_5,0,0,0}, /* Cyrillic */ - {"iso8859-6",0,256,0,iso8859_6,0,0,0}, /* Arabic */ - {"iso8859-7",0,256,0,iso8859_7,0,0,0}, /* Greek */ - {"iso8859-8",0,256,0,iso8859_8,0,0,0}, /* Hebrew */ - {"iso8859-9",0,256,0,iso8859_9,0,0,0}, /* Latin 5 (Turkish) */ - {"iso8859-10",0,256,0,iso8859_10,0,0,0}, /* Latin 6 (Nordic) */ - {"iso8859-15",iso8859_15_aliases,256,0,iso8859_15,0,0,0}, /* Latin 9 */ - {"koi8-r",0,256,0,koi8_r,0,0,0}, /* Russian */ - {"koi8-ru",0,256,0,koi8_ru,0,0,0}, /* Ukrainian */ - {"koi8-uni",0,256,0,koi8_uni,0,0,0}, /* Russian/Ukrainian/Bielorussian */ - {"koi8-e",0,256,0,koi8_e,0,0,0}, /* ``European'' */ - {"koi8-u",0,256,0,koi8_u,0,0,0}, /* Ukrainian too */ - {"microsoft-symbol",0,256,0,microsoft_symbol,0,0,0}, - {"apple-roman",0,256,0,apple_roman,0,0,0}, - {0,0,0,0,0,0,0} -}; - -static FontEncPtr font_encodings=NULL; - -static void -define_initial_encoding_info(void) -{ - FontEncPtr encoding; - FontMapPtr mapping; - - font_encodings = initial_encodings; - for(encoding = font_encodings; ; encoding++) { - encoding->next = encoding + 1; - for(mapping = encoding->mappings; ; mapping++) { - mapping->next = mapping+1; - mapping->encoding = encoding; - if(mapping->next->type == 0) { - mapping->next = NULL; - break; - } - } - if(!encoding->next->name) { - encoding->next = NULL; - break; - } - } -} - - -char* -FontEncFromXLFD(const char *name, int length) -{ - const char *p; - char *q; - static char charset[MAXFONTNAMELEN]; - int len; - - if(length > MAXFONTNAMELEN - 1) - return 0; - - if(name == NULL) - p = NULL; - else { - p = name + length - 1; - while(p > name && *p != '-') - p--; - p--; - while(p >= name && *p != '-') - p--; - if(p <= name) - p = 0; - } - - /* now p either is null or points at the '-' before the charset registry */ - - if(p == 0) - return 0; - - len = length - (p - name) - 1; - memcpy(charset, p+1, len); - charset[len] = 0; - - /* check for a subset specification */ - if((q = strchr(charset, (int)'['))) - *q = 0; - - return charset; -} - -unsigned -FontEncRecode(unsigned code, FontMapPtr mapping) -{ - FontEncPtr encoding = mapping->encoding; - if(encoding && mapping->recode) { - if(encoding->row_size == 0) { - /* linear encoding */ - if(code < encoding->first || code>=encoding->size) - return 0; - } else { - /* matrix encoding */ - int row = code/0x100, col = code&0xFF; - if(row < encoding->first || row >= encoding->size || - col < encoding->first_col || col >= encoding->row_size) - return 0; - } - return (*mapping->recode)(code, mapping->client_data); - } else - return code; -} - -char* -FontEncName(unsigned code, FontMapPtr mapping) -{ - FontEncPtr encoding = mapping->encoding; - if(encoding && mapping->name) { - if((encoding->row_size == 0 && code >= encoding->size) || - (encoding->row_size != 0 && - (code/0x100 >= encoding->size || - (code&0xFF) >= encoding->row_size))) - return 0; - return (*mapping->name)(code, mapping->client_data); - } else - return 0; -} - -FontEncPtr -FontEncFind(const char *encoding_name, const char *filename) -{ - FontEncPtr encoding; - char **alias; - - if(font_encodings == NULL) define_initial_encoding_info(); - - for(encoding = font_encodings; encoding; encoding = encoding->next) { - if(!strcasecmp(encoding->name, encoding_name)) - return encoding; - if(encoding->aliases) - for(alias=encoding->aliases; *alias; alias++) - if(!strcasecmp(*alias, encoding_name)) - return encoding; - } - - /* Unknown charset, try to load a definition file */ - return FontEncLoad(encoding_name, filename); -} - -FontMapPtr -FontMapFind(FontEncPtr encoding, int type, int pid, int eid) -{ - FontMapPtr mapping; - if(encoding == NULL) - return NULL; - - for(mapping = encoding->mappings; mapping; mapping = mapping->next) { - if(mapping->type != type) - continue; - if(pid > 0 && mapping->pid != pid) - continue; - if(eid > 0 && mapping->eid != eid) - continue; - return mapping; - } - return NULL; -} - -FontMapPtr -FontEncMapFind(const char *encoding_name, int type, int pid, int eid, - const char *filename) -{ - FontEncPtr encoding; - FontMapPtr mapping; - - encoding = FontEncFind(encoding_name, filename); - if(encoding == NULL) - return NULL; - mapping = FontMapFind(encoding, type, pid, eid); - return mapping; -} - -static FontEncPtr -FontEncLoad(const char *encoding_name, const char *filename) -{ - FontEncPtr encoding; - - encoding = FontEncReallyLoad(encoding_name, filename); - if (encoding == NULL) { - return 0; - } else { - char **alias; - int found = 0; - - /* Check whether the name is already known for this encoding */ - if(strcasecmp(encoding->name, encoding_name) == 0) { - found = 1; - } else { - if(encoding->aliases) { - for(alias=encoding->aliases; *alias; alias++) - if(!strcasecmp(*alias, encoding_name)) { - found = 1; - break; - } - } - } - - if(!found) { - /* Add a new alias. This works because we know that this - particular encoding has been allocated dynamically */ - char **new_aliases; - char *new_name; - int numaliases = 0; - - new_name = xalloc(strlen(encoding_name) + 1); - if(new_name == NULL) - return NULL; - strcpy(new_name, encoding_name); - if(encoding->aliases) { - for(alias = encoding->aliases; *alias; alias++) - numaliases++; - } - new_aliases = (char**)xalloc((numaliases+2)*sizeof(char*)); - if(new_aliases == NULL) { - xfree(new_name); - return NULL; - } - if(encoding->aliases) { - memcpy(new_aliases, encoding->aliases, numaliases*sizeof(char*)); - xfree(encoding->aliases); - } - new_aliases[numaliases] = new_name; - new_aliases[numaliases+1] = NULL; - encoding->aliases = new_aliases; - } - - /* register the new encoding */ - encoding->next=font_encodings; - font_encodings=encoding; - - return encoding; - } -} - -unsigned -FontEncSimpleRecode(unsigned code, void *client_data) -{ - FontEncSimpleMapPtr map; - unsigned index; - - map = client_data; - - if(code > 0xFFFF || (map->row_size && (code&0xFF) >= map->row_size)) - return 0; - - if(map->row_size) - index = (code&0xFF)+(code>>8)*map->row_size; - else - index = code; - - if(map->map && index>=map->first && index<map->first+map->len) - return map->map[index-map->first]; - else - return code; -} - -char * -FontEncSimpleName(unsigned code, void *client_data) -{ - FontEncSimpleNamePtr map; - - map = client_data; - if(map && code >= map->first && code<map->first+map->len) - return map->map[code-map->first]; - else - return NULL; -} - -unsigned -FontEncUndefinedRecode(unsigned code, void *client_data) -{ - return code; -} - -char * -FontEncUndefinedName(unsigned code, void *client_data) -{ - return NULL; -} - -#define FONTENC_SEGMENT_SIZE 256 -#define FONTENC_SEGMENTS 256 -#define FONTENC_INVERSE_CODES (FONTENC_SEGMENT_SIZE * FONTENC_SEGMENTS) - -static unsigned int -reverse_reverse(unsigned i, void* data) -{ - int s, j; - unsigned **map = (unsigned**)data; - - if(i >= FONTENC_INVERSE_CODES) - return 0; - - if(map == NULL) - return 0; - - s = i / FONTENC_SEGMENT_SIZE; - j = i % FONTENC_SEGMENT_SIZE; - - if(map[s] == NULL) - return 0; - else - return map[s][j]; -} - -static int -tree_set(unsigned int **map, unsigned int i, unsigned int j) -{ - int s, c; - - if(i >= FONTENC_INVERSE_CODES) - return FALSE; - - s = i / FONTENC_SEGMENT_SIZE; - c = i % FONTENC_SEGMENT_SIZE; - - if(map[s] == NULL) { - map[s] = calloc(FONTENC_SEGMENT_SIZE, sizeof(int)); - if(map[s] == NULL) - return FALSE; - } - - map[s][c] = j; - return TRUE; -} - -FontMapReversePtr -FontMapReverse(FontMapPtr mapping) -{ - FontEncPtr encoding = mapping->encoding; - FontMapReversePtr reverse = NULL; - unsigned int **map = NULL; - int i, j, k; - - if(encoding == NULL) goto bail; - - map = calloc(FONTENC_SEGMENTS, sizeof(int*)); - if(map == NULL) goto bail; - - if(encoding->row_size == 0) { - for(i = encoding->first; i < encoding->size; i++) { - k = FontEncRecode(i, mapping); - if(k != 0) - if(!tree_set(map, k, i)) - goto bail; - } - } else { - for(i = encoding->first; i < encoding->size; i++) { - for(j = encoding->first_col; j < encoding->row_size; j++) { - k = FontEncRecode(i*256 + j, mapping); - if(k != 0) - if(!tree_set(map, k, i*256+j)) - goto bail; - } - } - } - - reverse = malloc(sizeof(FontMapReverseRec)); - if(!reverse) goto bail; - - reverse->reverse = reverse_reverse; - reverse->data = map; - return reverse; - - bail: - if(map) - xfree(map); - if(reverse) - xfree(reverse); - return NULL; -} - -void -FontMapReverseFree(FontMapReversePtr delendum) -{ - unsigned int **map = (unsigned int**)delendum; - int i; - - if(map == NULL) - return; - - for(i = 0; i < FONTENC_SEGMENTS; i++) - if(map[i] != NULL) - xfree(map[i]); - - xfree(map); - return; -} diff --git a/nx-X11/lib/font/fontfile/fontencI.h b/nx-X11/lib/font/fontfile/fontencI.h deleted file mode 100644 index bd35a1f..0000000 --- a/nx-X11/lib/font/fontfile/fontencI.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright (c) 1998-2001 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -/* $XFree86: xc/lib/font/fontfile/fontencI.h,v 1.3 1999/04/25 10:01:43 dawes Exp $ */ - -/* Private types and functions for the encoding code. */ -/* Used by the files `fontenc.h' and `encparse.h' */ - -typedef struct _FontEncSimpleMap { - unsigned len; /* might be 0x10000 */ - unsigned short row_size; - unsigned short first; - unsigned short *map; -} FontEncSimpleMapRec, *FontEncSimpleMapPtr; - -typedef struct _FontEncSimpleName { - unsigned len; - unsigned short first; - char **map; -} FontEncSimpleNameRec, *FontEncSimpleNamePtr; - -unsigned FontEncSimpleRecode(unsigned, void*); -unsigned FontEncUndefinedRecode(unsigned, void*); -char *FontEncSimpleName(unsigned, void*); -char *FontEncUndefinedName(unsigned, void*); - -FontEncPtr FontEncReallyLoad(const char*, const char*); diff --git a/nx-X11/lib/font/fontfile/fontencc.c b/nx-X11/lib/font/fontfile/fontencc.c deleted file mode 100644 index b54079a..0000000 --- a/nx-X11/lib/font/fontfile/fontencc.c +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright (c) 1998-2001 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ -/* $XFree86: xc/lib/font/fontfile/fontencc.c,v 1.1 2001/08/13 21:46:47 dawes Exp $ */ - -/* Binary compatibility code. */ - -/* This file includes code to make modules compiled for earlier - versions of the fontenc interfaces link with this one. It does - *not* provide source compatibility, as many of the data structures - now have different names. */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontenc.h> -#include <X11/fonts/fontencc.h> - -extern void ErrorF(const char *f, ...); - -char * -font_encoding_from_xlfd(const char * name, int length) -{ - return FontEncFromXLFD(name, length); -} - -FontEncPtr -font_encoding_find(const char *encoding_name, const char *filename) -{ - return FontEncFind(encoding_name, filename); -} - -unsigned -font_encoding_recode(unsigned code, - FontEncPtr encoding, FontMapPtr mapping) -{ - if(encoding != mapping->encoding) { - ErrorF("Inconsistent mapping/encoding\n"); - return 0; - } - return FontEncRecode(code, mapping); -} - -char * -font_encoding_name(unsigned code, - FontEncPtr encoding, FontMapPtr mapping) -{ - if(encoding != mapping->encoding) { - ErrorF("Inconsistent mapping/encoding\n"); - return 0; - } - return FontEncName(code, mapping); -} - -char ** -identifyEncodingFile(const char *filename) -{ - return FontEncIdentify(filename); -} diff --git a/nx-X11/lib/font/fontfile/fontfile.c b/nx-X11/lib/font/fontfile/fontfile.c deleted file mode 100644 index 2356c05..0000000 --- a/nx-X11/lib/font/fontfile/fontfile.c +++ /dev/null @@ -1,1147 +0,0 @@ -/* $XdotOrg: xc/lib/font/fontfile/fontfile.c,v 1.5 2005/07/09 06:36:13 keithp Exp $ */ -/* $Xorg: fontfile.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/fontfile.c,v 3.21 2003/12/02 19:50:40 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ -/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#ifdef WIN32 -#include <ctype.h> -#endif - -/* - * Map FPE functions to renderer functions - */ - -static int FontFileOpenBitmapNCF (FontPathElementPtr fpe, FontPtr *pFont, - int flags, FontEntryPtr entry, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font); - -int -FontFileNameCheck (char *name) -{ -#ifndef NCD -#if defined(__UNIXOS2__) || defined(WIN32) - /* OS/2 uses D:/... as a path name for fonts, so accept this as a valid - * path if it starts with a letter and a colon. Same applies for WIN32 - */ - if (isalpha(*name) && name[1]==':') - return TRUE; -#endif - return *name == '/'; -#else - return ((strcmp(name, "built-ins") == 0) || (*name == '/')); -#endif -} - -int -FontFileInitFPE (FontPathElementPtr fpe) -{ - int status; - FontDirectoryPtr dir; - - status = FontFileReadDirectory (fpe->name, &dir); - if (status == Successful) - { - if (dir->nonScalable.used > 0) - if (!FontFileRegisterBitmapSource (fpe)) - { - FontFileFreeFPE (fpe); - return AllocError; - } - fpe->private = (pointer) dir; - } - return status; -} - -/* ARGSUSED */ -int -FontFileResetFPE (FontPathElementPtr fpe) -{ - FontDirectoryPtr dir; - - dir = (FontDirectoryPtr) fpe->private; - /* - * The reset must fail for bitmap fonts because they get cleared when - * the path is set. - */ - if (FontFileDirectoryChanged (dir)) - { - /* can't do it, so tell the caller to close and re-open */ - return FPEResetFailed; - } - else - { - if (dir->nonScalable.used > 0) - if (!FontFileRegisterBitmapSource (fpe)) - { - return FPEResetFailed; - } - return Successful; - } -} - -int -FontFileFreeFPE (FontPathElementPtr fpe) -{ - FontFileUnregisterBitmapSource (fpe); - FontFileFreeDir ((FontDirectoryPtr) fpe->private); - return Successful; -} - -static int -transfer_values_to_alias(char *entryname, int entrynamelength, - char *resolvedname, - char **aliasName, FontScalablePtr vals) -{ - static char aliasname[MAXFONTNAMELEN]; - int nameok = 1, len; - char lowerName[MAXFONTNAMELEN]; - - *aliasName = resolvedname; - if ((len = strlen(*aliasName)) <= MAXFONTNAMELEN && - (entrynamelength < MAXFONTNAMELEN) && - FontFileCountDashes (*aliasName, len) == 14) - { - FontScalableRec tmpVals; - FontScalableRec tmpVals2; - - tmpVals2 = *vals; - - /* If we're aliasing a scalable name, transfer values - from the name into the destination alias, multiplying - by matrices that appear in the alias. */ - - CopyISOLatin1Lowered (lowerName, entryname, - entrynamelength); - lowerName[entrynamelength] = '\0'; - - if (FontParseXLFDName(lowerName, &tmpVals, - FONT_XLFD_REPLACE_NONE) && - !tmpVals.values_supplied && - FontParseXLFDName(*aliasName, &tmpVals, - FONT_XLFD_REPLACE_NONE)) - { - double *matrix = 0, tempmatrix[4]; - - /* Use a matrix iff exactly one is defined */ - if ((tmpVals.values_supplied & PIXELSIZE_MASK) == - PIXELSIZE_ARRAY && - !(tmpVals.values_supplied & POINTSIZE_MASK)) - matrix = tmpVals.pixel_matrix; - else if ((tmpVals.values_supplied & POINTSIZE_MASK) == - POINTSIZE_ARRAY && - !(tmpVals.values_supplied & PIXELSIZE_MASK)) - matrix = tmpVals.point_matrix; - - /* If matrix given in the alias, compute new point - and/or pixel matrices */ - if (matrix) - { - /* Complete the XLFD name to avoid potential - gotchas */ - if (FontFileCompleteXLFD(&tmpVals2, &tmpVals2)) - { - tempmatrix[0] = - matrix[0] * tmpVals2.point_matrix[0] + - matrix[1] * tmpVals2.point_matrix[2]; - tempmatrix[1] = - matrix[0] * tmpVals2.point_matrix[1] + - matrix[1] * tmpVals2.point_matrix[3]; - tempmatrix[2] = - matrix[2] * tmpVals2.point_matrix[0] + - matrix[3] * tmpVals2.point_matrix[2]; - tempmatrix[3] = - matrix[2] * tmpVals2.point_matrix[1] + - matrix[3] * tmpVals2.point_matrix[3]; - tmpVals2.point_matrix[0] = tempmatrix[0]; - tmpVals2.point_matrix[1] = tempmatrix[1]; - tmpVals2.point_matrix[2] = tempmatrix[2]; - tmpVals2.point_matrix[3] = tempmatrix[3]; - - tempmatrix[0] = - matrix[0] * tmpVals2.pixel_matrix[0] + - matrix[1] * tmpVals2.pixel_matrix[2]; - tempmatrix[1] = - matrix[0] * tmpVals2.pixel_matrix[1] + - matrix[1] * tmpVals2.pixel_matrix[3]; - tempmatrix[2] = - matrix[2] * tmpVals2.pixel_matrix[0] + - matrix[3] * tmpVals2.pixel_matrix[2]; - tempmatrix[3] = - matrix[2] * tmpVals2.pixel_matrix[1] + - matrix[3] * tmpVals2.pixel_matrix[3]; - tmpVals2.pixel_matrix[0] = tempmatrix[0]; - tmpVals2.pixel_matrix[1] = tempmatrix[1]; - tmpVals2.pixel_matrix[2] = tempmatrix[2]; - tmpVals2.pixel_matrix[3] = tempmatrix[3]; - - tmpVals2.values_supplied = - (tmpVals2.values_supplied & - ~(PIXELSIZE_MASK | POINTSIZE_MASK)) | - PIXELSIZE_ARRAY | POINTSIZE_ARRAY; - } - else - nameok = 0; - } - - CopyISOLatin1Lowered (aliasname, *aliasName, len + 1); - if (nameok && FontParseXLFDName(aliasname, &tmpVals2, - FONT_XLFD_REPLACE_VALUE)) - /* Return a version of the aliasname that has - had the vals stuffed into it. To avoid - memory leak, this alias name lives in a - static buffer. The caller needs to be done - with this buffer before this procedure is - called again to avoid reentrancy problems. */ - *aliasName = aliasname; - } - } - return nameok; -} - -/* ARGSUSED */ -int -FontFileOpenFont (pointer client, FontPathElementPtr fpe, Mask flags, - char *name, int namelen, - fsBitmapFormat format, fsBitmapFormatMask fmask, - XID id, FontPtr *pFont, char **aliasName, - FontPtr non_cachable_font) -{ - FontDirectoryPtr dir; - char lowerName[MAXFONTNAMELEN]; - char fileName[MAXFONTFILENAMELEN*2 + 1]; - FontNameRec tmpName; - FontEntryPtr entry; - FontScalableRec vals; - FontScalableEntryPtr scalable; - FontScaledPtr scaled; - FontBitmapEntryPtr bitmap; - int ret; - Bool noSpecificSize; - int nranges; - fsRange *ranges; - - if (namelen >= MAXFONTNAMELEN) - return AllocError; - dir = (FontDirectoryPtr) fpe->private; - - /* Match non-scalable pattern */ - CopyISOLatin1Lowered (lowerName, name, namelen); - lowerName[namelen] = '\0'; - ranges = FontParseRanges(lowerName, &nranges); - tmpName.name = lowerName; - tmpName.length = namelen; - tmpName.ndashes = FontFileCountDashes (lowerName, namelen); - if (!FontParseXLFDName(lowerName, &vals, FONT_XLFD_REPLACE_NONE)) - bzero(&vals, sizeof(vals)); - if (!(entry = FontFileFindNameInDir (&dir->nonScalable, &tmpName)) && - tmpName.ndashes == 14 && - FontParseXLFDName (lowerName, &vals, FONT_XLFD_REPLACE_ZERO)) - { - tmpName.length = strlen(lowerName); - entry = FontFileFindNameInDir (&dir->nonScalable, &tmpName); - } - - if (entry) - { - switch (entry->type) { - case FONT_ENTRY_BITMAP: - bitmap = &entry->u.bitmap; - if (bitmap->pFont) - { - *pFont = bitmap->pFont; - (*pFont)->fpe = fpe; - ret = Successful; - } - else - { - ret = FontFileOpenBitmapNCF (fpe, pFont, flags, entry, format, - fmask, non_cachable_font); - if (ret == Successful && *pFont) - (*pFont)->fpe = fpe; - } - break; - case FONT_ENTRY_ALIAS: - vals.nranges = nranges; - vals.ranges = ranges; - transfer_values_to_alias(entry->name.name, entry->name.length, - entry->u.alias.resolved, aliasName, &vals); - ret = FontNameAlias; - break; -#ifdef NOTYET - case FONT_ENTRY_BC: - bc = &entry->u.bc; - entry = bc->entry; - ret = (*scalable->renderer->OpenScalable) - (fpe, pFont, flags, entry, &bc->vals, format, fmask, - non_cachable_font); - if (ret == Successful && *pFont) - (*pFont)->fpe = fpe; - break; -#endif - default: - ret = BadFontName; - } - } - else - { - ret = BadFontName; - } - - if (ret != BadFontName) - { - if (ranges) xfree(ranges); - return ret; - } - - /* Match XLFD patterns */ - CopyISOLatin1Lowered (lowerName, name, namelen); - lowerName[namelen] = '\0'; - tmpName.name = lowerName; - tmpName.length = namelen; - tmpName.ndashes = FontFileCountDashes (lowerName, namelen); - if (!FontParseXLFDName (lowerName, &vals, FONT_XLFD_REPLACE_ZERO) || - !(tmpName.length = strlen (lowerName), - entry = FontFileFindNameInScalableDir (&dir->scalable, &tmpName, - &vals))) { - CopyISOLatin1Lowered (lowerName, name, namelen); - lowerName[namelen] = '\0'; - tmpName.name = lowerName; - tmpName.length = namelen; - tmpName.ndashes = FontFileCountDashes (lowerName, namelen); - entry = FontFileFindNameInScalableDir (&dir->scalable, &tmpName, &vals); - if (entry) - { - strcpy(lowerName, entry->name.name); - tmpName.name = lowerName; - tmpName.length = entry->name.length; - tmpName.ndashes = entry->name.ndashes; - } - } - if (entry) - { - noSpecificSize = FALSE; /* TRUE breaks XLFD enhancements */ - if (entry->type == FONT_ENTRY_SCALABLE && - FontFileCompleteXLFD (&vals, &entry->u.scalable.extra->defaults)) - { - scalable = &entry->u.scalable; - if ((vals.values_supplied & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || - (vals.values_supplied & POINTSIZE_MASK) == POINTSIZE_ARRAY || - (vals.values_supplied & - ~SIZE_SPECIFY_MASK & ~CHARSUBSET_SPECIFIED)) - scaled = 0; - else - scaled = FontFileFindScaledInstance (entry, &vals, - noSpecificSize); - /* - * A scaled instance can occur one of two ways: - * - * Either the font has been scaled to this - * size already, in which case scaled->pFont - * will point at that font. - * - * Or a bitmap instance in this size exists, - * which is handled as if we got a pattern - * matching the bitmap font name. - */ - if (scaled) - { - if (scaled->pFont) - { - *pFont = scaled->pFont; - (*pFont)->fpe = fpe; - ret = Successful; - } - else if (scaled->bitmap) - { - entry = scaled->bitmap; - bitmap = &entry->u.bitmap; - if (bitmap->pFont) - { - *pFont = bitmap->pFont; - (*pFont)->fpe = fpe; - ret = Successful; - } - else - { - ret = FontFileOpenBitmapNCF (fpe, pFont, flags, entry, - format, fmask, - non_cachable_font); - if (ret == Successful && *pFont) - (*pFont)->fpe = fpe; - } - } - else /* "cannot" happen */ - { - ret = BadFontName; - } - } - else - { - ret = FontFileMatchBitmapSource (fpe, pFont, flags, entry, &tmpName, &vals, format, fmask, noSpecificSize); - if (ret != Successful) - { - char origName[MAXFONTNAMELEN]; - - CopyISOLatin1Lowered (origName, name, namelen); - origName[namelen] = '\0'; - - /* Pass the original XLFD name in the vals - structure; the rasterizer is free to examine it - for hidden meanings. This information will not - be saved in the scaled-instances table. */ - - vals.xlfdName = origName; - vals.ranges = ranges; - vals.nranges = nranges; - - if (strlen(dir->directory) + strlen(scalable->fileName) >= - sizeof(fileName)) { - ret = BadFontName; - } else { - strcpy (fileName, dir->directory); - strcat (fileName, scalable->fileName); - ret = (*scalable->renderer->OpenScalable) (fpe, pFont, - flags, entry, fileName, &vals, format, fmask, - non_cachable_font); - } - - /* In case rasterizer does something bad because of - charset subsetting... */ - if (ret == Successful && - ((*pFont)->info.firstCol > (*pFont)->info.lastCol || - (*pFont)->info.firstRow > (*pFont)->info.lastRow)) - { - (*(*pFont)->unload_font)(*pFont); - ret = BadFontName; - } - /* Save the instance */ - if (ret == Successful) - { - if (FontFileAddScaledInstance (entry, &vals, - *pFont, (char *) 0)) - ranges = 0; - else - (*pFont)->fpePrivate = (pointer) 0; - (*pFont)->fpe = fpe; - } - } - } - } - } - else - ret = BadFontName; - - if (ranges) - xfree(ranges); - return ret; -} - -/* ARGSUSED */ -void -FontFileCloseFont (FontPathElementPtr fpe, FontPtr pFont) -{ - FontEntryPtr entry; - - if ((entry = (FontEntryPtr) pFont->fpePrivate)) { - switch (entry->type) { - case FONT_ENTRY_SCALABLE: - FontFileRemoveScaledInstance (entry, pFont); - break; - case FONT_ENTRY_BITMAP: - entry->u.bitmap.pFont = 0; - break; - default: - /* "cannot" happen */ - break; - } - pFont->fpePrivate = 0; - } - (*pFont->unload_font) (pFont); -} - -static int -FontFileOpenBitmapNCF (FontPathElementPtr fpe, FontPtr *pFont, - int flags, FontEntryPtr entry, - fsBitmapFormat format, fsBitmapFormatMask fmask, - FontPtr non_cachable_font) -{ - FontBitmapEntryPtr bitmap; - char fileName[MAXFONTFILENAMELEN*2+1]; - int ret; - FontDirectoryPtr dir; - - dir = (FontDirectoryPtr) fpe->private; - bitmap = &entry->u.bitmap; - if(!bitmap || !bitmap->renderer->OpenBitmap) - return BadFontName; - if (strlen(dir->directory) + strlen(bitmap->fileName) >= sizeof(fileName)) - return BadFontName; - strcpy (fileName, dir->directory); - strcat (fileName, bitmap->fileName); - ret = (*bitmap->renderer->OpenBitmap) - (fpe, pFont, flags, entry, fileName, format, fmask, - non_cachable_font); - if (ret == Successful) - { - bitmap->pFont = *pFont; - (*pFont)->fpePrivate = (pointer) entry; - } - return ret; -} - -int -FontFileOpenBitmap (FontPathElementPtr fpe, FontPtr *pFont, - int flags, FontEntryPtr entry, - fsBitmapFormat format, fsBitmapFormatMask fmask) -{ - return FontFileOpenBitmapNCF (fpe, pFont, flags, entry, format, fmask, - (FontPtr)0); -} - -static int -FontFileGetInfoBitmap (FontPathElementPtr fpe, FontInfoPtr pFontInfo, - FontEntryPtr entry) -{ - FontBitmapEntryPtr bitmap; - char fileName[MAXFONTFILENAMELEN*2+1]; - int ret; - FontDirectoryPtr dir; - - dir = (FontDirectoryPtr) fpe->private; - bitmap = &entry->u.bitmap; - if (!bitmap || !bitmap->renderer->GetInfoBitmap) - return BadFontName; - if (strlen(dir->directory) + strlen(bitmap->fileName) >= sizeof(fileName)) - return BadFontName; - strcpy (fileName, dir->directory); - strcat (fileName, bitmap->fileName); - ret = (*bitmap->renderer->GetInfoBitmap) (fpe, pFontInfo, entry, fileName); - return ret; -} - -static void -_FontFileAddScalableNames(FontNamesPtr names, FontNamesPtr scaleNames, - FontNamePtr nameptr, char *zeroChars, - FontScalablePtr vals, fsRange *ranges, - int nranges, int *max) -{ - int i; - FontScalableRec zeroVals, tmpVals; - for (i = 0; i < scaleNames->nnames; i++) - { - char nameChars[MAXFONTNAMELEN]; - if (!*max) - return; - FontParseXLFDName (scaleNames->names[i], &zeroVals, - FONT_XLFD_REPLACE_NONE); - tmpVals = *vals; - if (FontFileCompleteXLFD (&tmpVals, &zeroVals)) - { - --*max; - - strcpy (nameChars, scaleNames->names[i]); - if ((vals->values_supplied & PIXELSIZE_MASK) || - !(vals->values_supplied & PIXELSIZE_WILDCARD) || - vals->y == 0) - { - tmpVals.values_supplied = - (tmpVals.values_supplied & ~PIXELSIZE_MASK) | - (vals->values_supplied & PIXELSIZE_MASK); - tmpVals.pixel_matrix[0] = vals->pixel_matrix[0]; - tmpVals.pixel_matrix[1] = vals->pixel_matrix[1]; - tmpVals.pixel_matrix[2] = vals->pixel_matrix[2]; - tmpVals.pixel_matrix[3] = vals->pixel_matrix[3]; - } - if ((vals->values_supplied & POINTSIZE_MASK) || - !(vals->values_supplied & POINTSIZE_WILDCARD) || - vals->y == 0) - { - tmpVals.values_supplied = - (tmpVals.values_supplied & ~POINTSIZE_MASK) | - (vals->values_supplied & POINTSIZE_MASK); - tmpVals.point_matrix[0] = vals->point_matrix[0]; - tmpVals.point_matrix[1] = vals->point_matrix[1]; - tmpVals.point_matrix[2] = vals->point_matrix[2]; - tmpVals.point_matrix[3] = vals->point_matrix[3]; - } - if (vals->width <= 0) - tmpVals.width = 0; - if (vals->x == 0) - tmpVals.x = 0; - if (vals->y == 0) - tmpVals.y = 0; - tmpVals.ranges = ranges; - tmpVals.nranges = nranges; - FontParseXLFDName (nameChars, &tmpVals, - FONT_XLFD_REPLACE_VALUE); - /* If we're marking aliases with negative lengths, we - need to concoct a valid target name to follow it. - Otherwise we're done. */ - if (scaleNames->length[i] >= 0) - { - (void) AddFontNamesName (names, nameChars, - strlen (nameChars)); - /* If our original pattern matches the name from - the table and that name doesn't duplicate what - we just added, add the name from the table */ - if (strcmp(nameChars, scaleNames->names[i]) && - FontFileMatchName(scaleNames->names[i], - scaleNames->length[i], - nameptr) && - *max) - { - --*max; - (void) AddFontNamesName (names, scaleNames->names[i], - scaleNames->length[i]); - } - } - else - { - char *aliasName; - vals->ranges = ranges; - vals->nranges = nranges; - if (transfer_values_to_alias(zeroChars, - strlen(zeroChars), - scaleNames->names[++i], - &aliasName, vals)) - { - (void) AddFontNamesName (names, nameChars, - strlen (nameChars)); - names->length[names->nnames - 1] = - -names->length[names->nnames - 1]; - (void) AddFontNamesName (names, aliasName, - strlen (aliasName)); - /* If our original pattern matches the name from - the table and that name doesn't duplicate what - we just added, add the name from the table */ - if (strcmp(nameChars, scaleNames->names[i - 1]) && - FontFileMatchName(scaleNames->names[i - 1], - -scaleNames->length[i - 1], - nameptr) && - *max) - { - --*max; - (void) AddFontNamesName (names, - scaleNames->names[i - 1], - -scaleNames->length[i - 1]); - names->length[names->nnames - 1] = - -names->length[names->nnames - 1]; - (void) AddFontNamesName (names, aliasName, - strlen (aliasName)); - } - } - } - } - } -} - -/* ARGSUSED */ -static int -_FontFileListFonts (pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, FontNamesPtr names, - int mark_aliases) -{ - FontDirectoryPtr dir; - char lowerChars[MAXFONTNAMELEN], zeroChars[MAXFONTNAMELEN]; - FontNameRec lowerName; - FontNameRec zeroName; - FontNamesPtr scaleNames; - FontScalableRec vals; - fsRange *ranges; - int nranges; - int result = BadFontName; - - if (len >= MAXFONTNAMELEN) - return AllocError; - dir = (FontDirectoryPtr) fpe->private; - CopyISOLatin1Lowered (lowerChars, pat, len); - lowerChars[len] = '\0'; - lowerName.name = lowerChars; - lowerName.length = len; - lowerName.ndashes = FontFileCountDashes (lowerChars, len); - - /* Match XLFD patterns */ - - strcpy (zeroChars, lowerChars); - if (lowerName.ndashes == 14 && - FontParseXLFDName (zeroChars, &vals, FONT_XLFD_REPLACE_ZERO)) - { - ranges = FontParseRanges(lowerChars, &nranges); - result = FontFileFindNamesInScalableDir (&dir->nonScalable, - &lowerName, max, names, - (FontScalablePtr)0, - (mark_aliases ? - LIST_ALIASES_AND_TARGET_NAMES : - NORMAL_ALIAS_BEHAVIOR) | - IGNORE_SCALABLE_ALIASES, - &max); - zeroName.name = zeroChars; - zeroName.length = strlen (zeroChars); - zeroName.ndashes = lowerName.ndashes; - - /* Look for scalable names and aliases, adding scaled instances of - them to the output */ - - /* Scalable names... */ - scaleNames = MakeFontNamesRecord (0); - if (!scaleNames) - { - if (ranges) xfree(ranges); - return AllocError; - } - FontFileFindNamesInScalableDir (&dir->scalable, &zeroName, max, - scaleNames, &vals, - mark_aliases ? - LIST_ALIASES_AND_TARGET_NAMES : - NORMAL_ALIAS_BEHAVIOR, (int *)0); - _FontFileAddScalableNames(names, scaleNames, &lowerName, - zeroChars, &vals, ranges, nranges, - &max); - FreeFontNames (scaleNames); - - /* Scalable aliases... */ - scaleNames = MakeFontNamesRecord (0); - if (!scaleNames) - { - if (ranges) xfree(ranges); - return AllocError; - } - FontFileFindNamesInScalableDir (&dir->nonScalable, &zeroName, - max, scaleNames, &vals, - mark_aliases ? - LIST_ALIASES_AND_TARGET_NAMES : - NORMAL_ALIAS_BEHAVIOR, (int *)0); - _FontFileAddScalableNames(names, scaleNames, &lowerName, - zeroChars, &vals, ranges, nranges, - &max); - FreeFontNames (scaleNames); - - if (ranges) xfree(ranges); - } - else - { - result = FontFileFindNamesInScalableDir (&dir->nonScalable, - &lowerName, max, names, - (FontScalablePtr)0, - mark_aliases ? - LIST_ALIASES_AND_TARGET_NAMES : - NORMAL_ALIAS_BEHAVIOR, - &max); - if (result == Successful) - result = FontFileFindNamesInScalableDir (&dir->scalable, - &lowerName, max, names, - (FontScalablePtr)0, - mark_aliases ? - LIST_ALIASES_AND_TARGET_NAMES : - NORMAL_ALIAS_BEHAVIOR, (int *)0); - } - return result; -} - -typedef struct _LFWIData { - FontNamesPtr names; - int current; -} LFWIDataRec, *LFWIDataPtr; - -int -FontFileListFonts (pointer client, FontPathElementPtr fpe, char *pat, - int len, int max, FontNamesPtr names) -{ - return _FontFileListFonts (client, fpe, pat, len, max, names, 0); -} - -int -FontFileStartListFontsWithInfo(pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep) -{ - LFWIDataPtr data; - int ret; - - data = (LFWIDataPtr) xalloc (sizeof *data); - if (!data) - return AllocError; - data->names = MakeFontNamesRecord (0); - if (!data->names) - { - xfree (data); - return AllocError; - } - ret = FontFileListFonts (client, fpe, pat, len, max, data->names); - if (ret != Successful) - { - FreeFontNames (data->names); - xfree (data); - return ret; - } - data->current = 0; - *privatep = (pointer) data; - return Successful; -} - -/* ARGSUSED */ -static int -FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - FontInfoPtr *pFontInfo) -{ - FontDirectoryPtr dir; - char lowerName[MAXFONTNAMELEN]; - char fileName[MAXFONTFILENAMELEN*2 + 1]; - FontNameRec tmpName; - FontEntryPtr entry; - FontScalableRec vals; - FontScalableEntryPtr scalable; - FontScaledPtr scaled; - FontBitmapEntryPtr bitmap; - int ret; - Bool noSpecificSize; - int nranges; - fsRange *ranges; - - char *name = *namep; - int namelen = *namelenp; - - if (namelen >= MAXFONTNAMELEN) - return AllocError; - dir = (FontDirectoryPtr) fpe->private; - - /* Match non-scalable pattern */ - CopyISOLatin1Lowered (lowerName, name, namelen); - lowerName[namelen] = '\0'; - ranges = FontParseRanges(lowerName, &nranges); - tmpName.name = lowerName; - tmpName.length = namelen; - tmpName.ndashes = FontFileCountDashes (lowerName, namelen); - if (!FontParseXLFDName(lowerName, &vals, FONT_XLFD_REPLACE_NONE)) - bzero(&vals, sizeof(vals)); - if (!(entry = FontFileFindNameInDir (&dir->nonScalable, &tmpName)) && - tmpName.ndashes == 14 && - FontParseXLFDName (lowerName, &vals, FONT_XLFD_REPLACE_ZERO)) - { - tmpName.length = strlen(lowerName); - entry = FontFileFindNameInDir (&dir->nonScalable, &tmpName); - } - - if (entry) - { - switch (entry->type) { - case FONT_ENTRY_BITMAP: - bitmap = &entry->u.bitmap; - if (bitmap->pFont) - { - *pFontInfo = &bitmap->pFont->info; - ret = Successful; - } - else - { - ret = FontFileGetInfoBitmap (fpe, *pFontInfo, entry); - } - break; - case FONT_ENTRY_ALIAS: - vals.nranges = nranges; - vals.ranges = ranges; - transfer_values_to_alias(entry->name.name, entry->name.length, - entry->u.alias.resolved, namep, &vals); - *namelenp = strlen (*namep); - ret = FontNameAlias; - break; -#ifdef NOTYET - case FONT_ENTRY_BC: - /* no LFWI for this yet */ - bc = &entry->u.bc; - entry = bc->entry; - /* Make a new scaled instance */ - if (strlen(dir->directory) + strlen(scalable->fileName) >= - sizeof(fileName)) { - ret = BadFontName; - } else { - strcpy (fileName, dir->directory); - strcat (fileName, scalable->fileName); - ret = (*scalable->renderer->GetInfoScalable) - (fpe, *pFontInfo, entry, tmpName, fileName, &bc->vals); - } - break; -#endif - default: - ret = BadFontName; - } - } - else - { - ret = BadFontName; - } - - if (ret != BadFontName) - { - if (ranges) xfree(ranges); - return ret; - } - - /* Match XLFD patterns */ - CopyISOLatin1Lowered (lowerName, name, namelen); - lowerName[namelen] = '\0'; - tmpName.name = lowerName; - tmpName.length = namelen; - tmpName.ndashes = FontFileCountDashes (lowerName, namelen); - if (!FontParseXLFDName (lowerName, &vals, FONT_XLFD_REPLACE_ZERO) || - !(tmpName.length = strlen (lowerName), - entry = FontFileFindNameInScalableDir (&dir->scalable, &tmpName, - &vals))) { - CopyISOLatin1Lowered (lowerName, name, namelen); - lowerName[namelen] = '\0'; - tmpName.name = lowerName; - tmpName.length = namelen; - tmpName.ndashes = FontFileCountDashes (lowerName, namelen); - entry = FontFileFindNameInScalableDir (&dir->scalable, &tmpName, &vals); - if (entry) - { - strcpy(lowerName, entry->name.name); - tmpName.name = lowerName; - tmpName.length = entry->name.length; - tmpName.ndashes = entry->name.ndashes; - } - } - - if (entry) - { - noSpecificSize = FALSE; /* TRUE breaks XLFD enhancements */ - if (entry && entry->type == FONT_ENTRY_SCALABLE && - FontFileCompleteXLFD (&vals, &entry->u.scalable.extra->defaults)) - { - scalable = &entry->u.scalable; - scaled = FontFileFindScaledInstance (entry, &vals, noSpecificSize); - /* - * A scaled instance can occur one of two ways: - * - * Either the font has been scaled to this - * size already, in which case scaled->pFont - * will point at that font. - * - * Or a bitmap instance in this size exists, - * which is handled as if we got a pattern - * matching the bitmap font name. - */ - if (scaled) - { - if (scaled->pFont) - { - *pFontInfo = &scaled->pFont->info; - ret = Successful; - } - else if (scaled->bitmap) - { - entry = scaled->bitmap; - bitmap = &entry->u.bitmap; - if (bitmap->pFont) - { - *pFontInfo = &bitmap->pFont->info; - ret = Successful; - } - else - { - ret = FontFileGetInfoBitmap (fpe, *pFontInfo, entry); - } - } - else /* "cannot" happen */ - { - ret = BadFontName; - } - } - else - { -#ifdef NOTDEF - /* no special case yet */ - ret = FontFileMatchBitmapSource (fpe, pFont, flags, entry, &vals, format, fmask, noSpecificSize); - if (ret != Successful) -#endif - { - char origName[MAXFONTNAMELEN]; - - CopyISOLatin1Lowered (origName, name, namelen); - origName[namelen] = '\0'; - vals.xlfdName = origName; - vals.ranges = ranges; - vals.nranges = nranges; - - /* Make a new scaled instance */ - if (strlen(dir->directory) + strlen(scalable->fileName) >= - sizeof(fileName)) { - ret = BadFontName; - } else { - strcpy (fileName, dir->directory); - strcat (fileName, scalable->fileName); - ret = (*scalable->renderer->GetInfoScalable) - (fpe, *pFontInfo, entry, &tmpName, fileName, &vals); - } - if (ranges) xfree(ranges); - } - } - if (ret == Successful) return ret; - } - CopyISOLatin1Lowered (lowerName, name, namelen); - tmpName.length = namelen; - } - else - ret = BadFontName; - - if (ranges) - xfree(ranges); - return ret; -} - -int -FontFileListNextFontWithInfo(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - FontInfoPtr *pFontInfo, - int *numFonts, pointer private) -{ - LFWIDataPtr data = (LFWIDataPtr) private; - int ret; - char *name; - int namelen; - - if (data->current == data->names->nnames) - { - FreeFontNames (data->names); - xfree (data); - return BadFontName; - } - name = data->names->names[data->current]; - namelen = data->names->length[data->current]; - ret = FontFileListOneFontWithInfo (client, fpe, &name, &namelen, pFontInfo); - if (ret == BadFontName) - ret = AllocError; - *namep = name; - *namelenp = namelen; - ++data->current; - *numFonts = data->names->nnames - data->current; - return ret; -} - -int -FontFileStartListFontsAndAliases(pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep) -{ - LFWIDataPtr data; - int ret; - - data = (LFWIDataPtr) xalloc (sizeof *data); - if (!data) - return AllocError; - data->names = MakeFontNamesRecord (0); - if (!data->names) - { - xfree (data); - return AllocError; - } - ret = _FontFileListFonts (client, fpe, pat, len, max, data->names, 1); - if (ret != Successful) - { - FreeFontNames (data->names); - xfree (data); - return ret; - } - data->current = 0; - *privatep = (pointer) data; - return Successful; -} - -int -FontFileListNextFontOrAlias(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, char **resolvedp, - int *resolvedlenp, pointer private) -{ - LFWIDataPtr data = (LFWIDataPtr) private; - int ret; - char *name; - int namelen; - - if (data->current == data->names->nnames) - { - FreeFontNames (data->names); - xfree (data); - return BadFontName; - } - name = data->names->names[data->current]; - namelen = data->names->length[data->current]; - - /* If this is a real font name... */ - if (namelen >= 0) - { - *namep = name; - *namelenp = namelen; - ret = Successful; - } - /* Else if an alias */ - else - { - /* Tell the caller that this is an alias... let him resolve it to - see if it's valid */ - *namep = name; - *namelenp = -namelen; - *resolvedp = data->names->names[++data->current]; - *resolvedlenp = data->names->length[data->current]; - ret = FontNameAlias; - } - - ++data->current; - return ret; -} - -void -FontFileRegisterLocalFpeFunctions (void) -{ - RegisterFPEFunctions(FontFileNameCheck, - FontFileInitFPE, - FontFileFreeFPE, - FontFileResetFPE, - FontFileOpenFont, - FontFileCloseFont, - FontFileListFonts, - FontFileStartListFontsWithInfo, - FontFileListNextFontWithInfo, - NULL, - NULL, - NULL, - FontFileStartListFontsAndAliases, - FontFileListNextFontOrAlias, - FontFileEmptyBitmapSource); -} diff --git a/nx-X11/lib/font/fontfile/fontscale.c b/nx-X11/lib/font/fontfile/fontscale.c deleted file mode 100644 index 8e9de51..0000000 --- a/nx-X11/lib/font/fontfile/fontscale.c +++ /dev/null @@ -1,447 +0,0 @@ -/* $Xorg: fontscale.c,v 1.5 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/fontscale.c,v 3.9 2001/08/27 19:49:54 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -#ifdef _XOPEN_SOURCE -#include <math.h> -#else -#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */ -#include <math.h> -#undef _XOPEN_SOURCE -#endif - -Bool -FontFileAddScaledInstance (FontEntryPtr entry, FontScalablePtr vals, - FontPtr pFont, char *bitmapName) -{ - FontScalableEntryPtr scalable; - FontScalableExtraPtr extra; - FontScaledPtr new; - int newsize; - - scalable = &entry->u.scalable; - extra = scalable->extra; - if (extra->numScaled == extra->sizeScaled) - { - newsize = extra->sizeScaled + 4; - new = (FontScaledPtr) xrealloc (extra->scaled, - newsize * sizeof (FontScaledRec)); - if (!new) - return FALSE; - extra->sizeScaled = newsize; - extra->scaled = new; - } - new = &extra->scaled[extra->numScaled++]; - new->vals = *vals; - new->pFont = pFont; - new->bitmap = (FontEntryPtr) bitmapName; - if (pFont) - pFont->fpePrivate = (pointer) entry; - return TRUE; -} - -/* Must call this after the directory is sorted */ - -void -FontFileSwitchStringsToBitmapPointers (FontDirectoryPtr dir) -{ - int s; - int b; - int i; - FontEntryPtr scalable; - FontEntryPtr nonScalable; - FontScaledPtr scaled; - FontScalableExtraPtr extra; - - scalable = dir->scalable.entries; - nonScalable = dir->nonScalable.entries; - for (s = 0; s < dir->scalable.used; s++) - { - extra = scalable[s].u.scalable.extra; - scaled = extra->scaled; - for (i = 0; i < extra->numScaled; i++) - for (b = 0; b < dir->nonScalable.used; b++) - if (nonScalable[b].name.name == (char *) scaled[i].bitmap) - scaled[i].bitmap = &nonScalable[b]; - } -} - -void -FontFileRemoveScaledInstance (FontEntryPtr entry, FontPtr pFont) -{ - FontScalableEntryPtr scalable; - FontScalableExtraPtr extra; - int i; - - scalable = &entry->u.scalable; - extra = scalable->extra; - for (i = 0; i < extra->numScaled; i++) - { - if (extra->scaled[i].pFont == pFont) - { - if (extra->scaled[i].vals.ranges) - xfree (extra->scaled[i].vals.ranges); - extra->numScaled--; - for (; i < extra->numScaled; i++) - extra->scaled[i] = extra->scaled[i+1]; - } - } -} - -Bool -FontFileCompleteXLFD (FontScalablePtr vals, FontScalablePtr def) -{ - FontResolutionPtr res; - int num_res; - double sx, sy, temp_matrix[4]; - double pixel_setsize_adjustment = 1.0; - /* - * If two of the three vertical scale values are specified, compute the - * third. If all three are specified, make sure they are consistent - * (within a pixel) - * - * One purpose of this procedure is to complete XLFD names in a - * repeatable manner. That is, if the user partially specifies - * a name (say, pixelsize but not pointsize), the results generated - * here result in a fully specified name that will result in the - * same font. - */ - - res = GetClientResolutions(&num_res); - - if (!(vals->values_supplied & PIXELSIZE_MASK) || - !(vals->values_supplied & POINTSIZE_MASK)) - { - /* If resolution(s) unspecified and cannot be computed from - pixelsize and pointsize, get appropriate defaults. */ - - if (num_res) - { - if (vals->x <= 0) - vals->x = res->x_resolution; - if (vals->y <= 0) - vals->y = res->y_resolution; - } - - if (vals->x <= 0) - vals->x = def->x; - if (vals->y <= 0) - vals->y = def->y; - } - else - { - /* If needed, compute resolution values from the pixel and - pointsize information we were given. This problem is - overdetermined (four equations, two unknowns), but we don't - check for inconsistencies here. If they exist, they will - show up in later tests for the point and pixel sizes. */ - - if (vals->y <= 0) - { - double x = hypot(vals->pixel_matrix[1], vals->pixel_matrix[3]); - double y = hypot(vals->point_matrix[1], vals->point_matrix[3]); - if (y < EPS) return FALSE; - vals->y = (int)(x * 72.27 / y + .5); - } - if (vals->x <= 0) - { - /* If the pixelsize was given as an array, or as a scalar that - has been normalized for the pixel shape, we have enough - information to compute a separate horizontal resolution */ - - if ((vals->values_supplied & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || - (vals->values_supplied & PIXELSIZE_MASK) == - PIXELSIZE_SCALAR_NORMALIZED) - { - double x = hypot(vals->pixel_matrix[0], vals->pixel_matrix[2]); - double y = hypot(vals->point_matrix[0], vals->point_matrix[2]); - if (y < EPS) return FALSE; - vals->x = (int)(x * 72.27 / y + .5); - } - else - { - /* Not enough information in the pixelsize array. Just - assume the pixels are square. */ - vals->x = vals->y; - } - } - } - - if (vals->x <= 0 || vals->y <= 0) return FALSE; - - /* If neither pixelsize nor pointsize is defined, take the pointsize - from the defaults structure we've been passed. */ - if (!(vals->values_supplied & PIXELSIZE_MASK) && - !(vals->values_supplied & POINTSIZE_MASK)) - { - if (num_res) - { - vals->point_matrix[0] = - vals->point_matrix[3] = (double)res->point_size / 10.0; - vals->point_matrix[1] = - vals->point_matrix[2] = 0; - vals->values_supplied = (vals->values_supplied & ~POINTSIZE_MASK) | - POINTSIZE_SCALAR; - } - else if (def->values_supplied & POINTSIZE_MASK) - { - vals->point_matrix[0] = def->point_matrix[0]; - vals->point_matrix[1] = def->point_matrix[1]; - vals->point_matrix[2] = def->point_matrix[2]; - vals->point_matrix[3] = def->point_matrix[3]; - vals->values_supplied = (vals->values_supplied & ~POINTSIZE_MASK) | - (def->values_supplied & POINTSIZE_MASK); - } - else return FALSE; - } - - /* At this point, at least two of the three vertical scale values - should be specified. Our job now is to compute the missing ones - and check for agreement between overspecified values */ - - /* If pixelsize was specified by a scalar, we need to fix the matrix - now that we know the resolutions. */ - if ((vals->values_supplied & PIXELSIZE_MASK) == PIXELSIZE_SCALAR) - { - /* pixel_setsize_adjustment used below to modify permissible - error in pixel/pointsize matching, since multiplying a - number rounded to integer changes the amount of the error - caused by the rounding */ - - pixel_setsize_adjustment = (double)vals->x / (double)vals->y; - vals->pixel_matrix[0] *= pixel_setsize_adjustment; - vals->values_supplied = (vals->values_supplied & ~PIXELSIZE_MASK) | - PIXELSIZE_SCALAR_NORMALIZED; - } - - sx = (double)vals->x / 72.27; - sy = (double)vals->y / 72.27; - - /* If a pointsize was specified, make sure pixelsize is consistent - to within 1 pixel, then replace pixelsize with a consistent - floating-point value. */ - - if (vals->values_supplied & POINTSIZE_MASK) - { - recompute_pixelsize: ; - temp_matrix[0] = vals->point_matrix[0] * sx; - temp_matrix[1] = vals->point_matrix[1] * sy; - temp_matrix[2] = vals->point_matrix[2] * sx; - temp_matrix[3] = vals->point_matrix[3] * sy; - if (vals->values_supplied & PIXELSIZE_MASK) - { - if (fabs(vals->pixel_matrix[0] - temp_matrix[0]) > - pixel_setsize_adjustment || - fabs(vals->pixel_matrix[1] - temp_matrix[1]) > 1 || - fabs(vals->pixel_matrix[2] - temp_matrix[2]) > 1 || - fabs(vals->pixel_matrix[3] - temp_matrix[3]) > 1) - return FALSE; - } - if ((vals->values_supplied & PIXELSIZE_MASK) == PIXELSIZE_ARRAY && - (vals->values_supplied & POINTSIZE_MASK) == POINTSIZE_SCALAR) - { - /* In the special case that pixelsize came as an array and - pointsize as a scalar, recompute the pointsize matrix - from the pixelsize matrix. */ - goto recompute_pointsize; - } - - /* Refresh pixel matrix with precise values computed from - pointsize and resolution. */ - vals->pixel_matrix[0] = temp_matrix[0]; - vals->pixel_matrix[1] = temp_matrix[1]; - vals->pixel_matrix[2] = temp_matrix[2]; - vals->pixel_matrix[3] = temp_matrix[3]; - - /* Set values_supplied for pixel to match that for point */ - vals->values_supplied = - (vals->values_supplied & ~PIXELSIZE_MASK) | - (((vals->values_supplied & POINTSIZE_MASK) == POINTSIZE_ARRAY) ? - PIXELSIZE_ARRAY : PIXELSIZE_SCALAR_NORMALIZED); - } - else - { - /* Pointsize unspecified... compute from pixel size and - resolutions */ - recompute_pointsize: ; - if (fabs(sx) < EPS || fabs(sy) < EPS) return FALSE; - vals->point_matrix[0] = vals->pixel_matrix[0] / sx; - vals->point_matrix[1] = vals->pixel_matrix[1] / sy; - vals->point_matrix[2] = vals->pixel_matrix[2] / sx; - vals->point_matrix[3] = vals->pixel_matrix[3] / sy; - - /* Set values_supplied for pixel to match that for point */ - vals->values_supplied = - (vals->values_supplied & ~POINTSIZE_MASK) | - (((vals->values_supplied & PIXELSIZE_MASK) == PIXELSIZE_ARRAY) ? - POINTSIZE_ARRAY : POINTSIZE_SCALAR); - - /* If we computed scalar pointsize from scalar pixelsize, round - pointsize to decipoints and recompute pixelsize so we end up - with a repeatable name */ - if ((vals->values_supplied & POINTSIZE_MASK) == POINTSIZE_SCALAR) - { - /* Off-diagonal elements should be zero since no matrix was - specified. */ - vals->point_matrix[0] = - (double)(int)(vals->point_matrix[0] * 10.0 + .5) / 10.0; - vals->point_matrix[3] = - (double)(int)(vals->point_matrix[3] * 10.0 + .5) / 10.0; - goto recompute_pixelsize; - } - } - - /* We've succeeded. Round everything to a few decimal places - for repeatability. */ - - vals->pixel_matrix[0] = xlfd_round_double(vals->pixel_matrix[0]); - vals->pixel_matrix[1] = xlfd_round_double(vals->pixel_matrix[1]); - vals->pixel_matrix[2] = xlfd_round_double(vals->pixel_matrix[2]); - vals->pixel_matrix[3] = xlfd_round_double(vals->pixel_matrix[3]); - vals->point_matrix[0] = xlfd_round_double(vals->point_matrix[0]); - vals->point_matrix[1] = xlfd_round_double(vals->point_matrix[1]); - vals->point_matrix[2] = xlfd_round_double(vals->point_matrix[2]); - vals->point_matrix[3] = xlfd_round_double(vals->point_matrix[3]); - - /* Fill in the deprecated fields for the benefit of rasterizers - that do not handle the matrices. */ - vals->point = vals->point_matrix[3] * 10; - vals->pixel = vals->pixel_matrix[3]; - - return TRUE; -} - -static Bool -MatchScalable (FontScalablePtr a, FontScalablePtr b) -{ - int i; - - /* Some asymmetry here: we assume that the first argument (a) is - the table entry and the second (b) the item we're trying to match - (the key). We'll consider the fonts matched if the relevant - metrics match *and* if a) the table entry doesn't have charset - subsetting or b) the table entry has identical charset subsetting - to that in the key. We could add logic to check if the table - entry has a superset of the charset required by the key, but - we'll resist the urge for now. */ - -#define EQUAL(a,b) ((a)[0] == (b)[0] && \ - (a)[1] == (b)[1] && \ - (a)[2] == (b)[2] && \ - (a)[3] == (b)[3]) - - if (!(a->x == b->x && - a->y == b->y && - (a->width == b->width || a->width == 0 || b->width == 0 || b->width == -1) && - (!(b->values_supplied & PIXELSIZE_MASK) || - ((a->values_supplied & PIXELSIZE_MASK) == - (b->values_supplied & PIXELSIZE_MASK) && - EQUAL(a->pixel_matrix, b->pixel_matrix))) && - (!(b->values_supplied & POINTSIZE_MASK) || - ((a->values_supplied & POINTSIZE_MASK) == - (b->values_supplied & POINTSIZE_MASK) && - EQUAL(a->point_matrix, b->point_matrix))) && - (a->nranges == 0 || a->nranges == b->nranges))) - return FALSE; - - for (i = 0; i < a->nranges; i++) - if (a->ranges[i].min_char_low != b->ranges[i].min_char_low || - a->ranges[i].min_char_high != b->ranges[i].min_char_high || - a->ranges[i].max_char_low != b->ranges[i].max_char_low || - a->ranges[i].max_char_high != b->ranges[i].max_char_high) - return FALSE; - - return TRUE; -} - -FontScaledPtr -FontFileFindScaledInstance (FontEntryPtr entry, FontScalablePtr vals, - int noSpecificSize) -{ - FontScalableEntryPtr scalable; - FontScalableExtraPtr extra; - FontScalablePtr mvals; - int dist, i; - int mini; - double mindist; - register double temp, sum=0.0; - -#define NORMDIFF(a, b) ( \ - temp = (a)[0] - (b)[0], \ - sum = temp * temp, \ - temp = (a)[1] - (b)[1], \ - sum += temp * temp, \ - temp = (a)[2] - (b)[2], \ - sum += temp * temp, \ - temp = (a)[3] - (b)[3], \ - sum + temp * temp ) - - scalable = &entry->u.scalable; - extra = scalable->extra; - if (noSpecificSize && extra->numScaled) - { - mini = 0; - mindist = NORMDIFF(extra->scaled[0].vals.point_matrix, - vals->point_matrix); - for (i = 1; i < extra->numScaled; i++) - { - if (extra->scaled[i].pFont && - !extra->scaled[i].pFont->info.cachable) continue; - mvals = &extra->scaled[i].vals; - dist = NORMDIFF(mvals->point_matrix, vals->point_matrix); - if (dist < mindist) - { - mindist = dist; - mini = i; - } - } - if (extra->scaled[mini].pFont && - !extra->scaled[mini].pFont->info.cachable) return 0; - return &extra->scaled[mini]; - } - else - { - /* See if we've scaled to this value yet */ - for (i = 0; i < extra->numScaled; i++) - { - if (extra->scaled[i].pFont && - !extra->scaled[i].pFont->info.cachable) continue; - if (MatchScalable (&extra->scaled[i].vals, vals)) - return &extra->scaled[i]; - } - } - return 0; -} diff --git a/nx-X11/lib/font/fontfile/gunzip.c b/nx-X11/lib/font/fontfile/gunzip.c deleted file mode 100644 index 8c9c317..0000000 --- a/nx-X11/lib/font/fontfile/gunzip.c +++ /dev/null @@ -1,227 +0,0 @@ -/* $Xorg: gunzip.c,v 1.3 2000/08/17 19:46:37 cpqbld Exp $ */ -/* lib/font/fontfile/gunzip.c - written by Mark Eichin <eichin@kitten.gen.ma.us> September 1996. - intended for inclusion in X11 public releases. */ -/* $XFree86: xc/lib/font/fontfile/gunzip.c,v 1.4 2000/09/19 12:46:08 eich Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/bufio.h> -#include <zlib.h> - -typedef struct _xzip_buf { - z_stream z; - int zstat; - BufChar b[BUFFILESIZE]; - BufChar b_in[BUFFILESIZE]; - BufFilePtr f; -} xzip_buf; - -static int BufZipFileClose ( BufFilePtr f, int flag ); -static int BufZipFileFill ( BufFilePtr f ); -static int BufZipFileSkip ( BufFilePtr f, int c ); -static int BufCheckZipHeader ( BufFilePtr f ); - -BufFilePtr -BufFilePushZIP (BufFilePtr f) -{ - xzip_buf *x; - - x = (xzip_buf *) xalloc (sizeof (xzip_buf)); - if (!x) return 0; - /* these are just for raw calloc/free */ - x->z.zalloc = Z_NULL; - x->z.zfree = Z_NULL; - x->z.opaque = Z_NULL; - x->f = f; - - /* force inflateInit to allocate it's own history buffer */ - x->z.next_in = Z_NULL; - x->z.next_out = Z_NULL; - x->z.avail_in = x->z.avail_out = 0; - - /* using negative windowBits sets "nowrap" mode, which turns off - zlib header checking [undocumented, for gzip compatibility only?] */ - x->zstat = inflateInit2(&(x->z), -MAX_WBITS); - if (x->zstat != Z_OK) { - xfree(x); - return 0; - } - - /* now that the history buffer is allocated, we provide the data buffer */ - x->z.next_out = x->b; - x->z.avail_out = BUFFILESIZE; - x->z.next_out = x->b_in; - x->z.avail_in = 0; - - if (BufCheckZipHeader(x->f)) { - xfree(x); - return 0; - } - - return BufFileCreate((char *)x, - BufZipFileFill, - 0, - BufZipFileSkip, - BufZipFileClose); -} - -static int -BufZipFileClose(BufFilePtr f, int flag) -{ - xzip_buf *x = (xzip_buf *)f->private; - inflateEnd (&(x->z)); - BufFileClose (x->f, flag); - xfree (x); - return 1; -} - -/* here's the real work. - -- we need to put stuff in f.buffer, update f.left and f.bufp, - then return the first byte (or BUFFILEEOF). - -- to do this, we need to get stuff into avail_in, and next_in, - and call inflate appropriately. - -- we may also need to add CRC maintenance - if inflate tells us - Z_STREAM_END, we then have 4bytes CRC and 4bytes length... - gzio.c:gzread shows most of the mechanism. - */ -static int -BufZipFileFill (BufFilePtr f) -{ - xzip_buf *x = (xzip_buf *)f->private; - - /* we only get called when left == 0... */ - /* but just in case, deal */ - if (f->left >= 0) { - f->left--; - return *(f->bufp++); - } - /* did we run out last time? */ - switch (x->zstat) { - case Z_OK: - break; - case Z_STREAM_END: - case Z_DATA_ERROR: - case Z_ERRNO: - f->left = 0; - return BUFFILEEOF; - default: - return BUFFILEEOF; - } - /* now we work to consume what we can */ - /* let zlib know what we can handle */ - x->z.next_out = x->b; - x->z.avail_out = BUFFILESIZE; - - /* and try to consume all of it */ - while (x->z.avail_out > 0) { - /* if we don't have anything to work from... */ - if (x->z.avail_in == 0) { - /* ... fill the z buf from underlying file */ - int i, c; - for (i = 0; i < sizeof(x->b_in); i++) { - c = BufFileGet(x->f); - if (c == BUFFILEEOF) break; - x->b_in[i] = c; - } - x->z.avail_in += i; - x->z.next_in = x->b_in; - } - /* so now we have some output space and some input data */ - x->zstat = inflate(&(x->z), Z_NO_FLUSH); - /* the inflation output happens in the f buffer directly... */ - if (x->zstat == Z_STREAM_END) { - /* deal with EOF, crc */ - break; - } - if (x->zstat != Z_OK) { - break; - } - } - f->bufp = x->b; - f->left = BUFFILESIZE - x->z.avail_out; - - if (f->left >= 0) { - f->left--; - return *(f->bufp++); - } else { - return BUFFILEEOF; - } -} - -/* there should be a BufCommonSkip... */ -static int -BufZipFileSkip (BufFilePtr f, int c) -{ - /* BufFileRawSkip returns the count unchanged. - BufCompressedSkip returns 0. - That means it probably never gets called... */ - int retval = c; - while(c--) { - int get = BufFileGet(f); - if (get == BUFFILEEOF) return get; - } - return retval; -} - -/* now we need to duplicate check_header */ -/* contents: - 0x1f, 0x8b -- magic number - 1 byte -- method (Z_DEFLATED) - 1 byte -- flags (mask with RESERVED -> fail) - 4 byte -- time (discard) - 1 byte -- xflags (discard) - 1 byte -- "os" code (discard) - [if flags & EXTRA_FIELD: - 2 bytes -- LSBfirst length n - n bytes -- extra data (discard)] - [if flags & ORIG_NAME: - n bytes -- null terminated name (discard)] - [if flags & COMMENT: - n bytes -- null terminated comment (discard)] - [if flags & HEAD_CRC: - 2 bytes -- crc of headers? (discard)] - */ - -/* gzip flag byte -- from gzio.c */ -#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */ -#define HEAD_CRC 0x02 /* bit 1 set: header CRC present */ -#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */ -#define ORIG_NAME 0x08 /* bit 3 set: original file name present */ -#define COMMENT 0x10 /* bit 4 set: file comment present */ -#define RESERVED 0xE0 /* bits 5..7: reserved */ - -#define GET(f) do {c = BufFileGet(f); if (c == BUFFILEEOF) return c;} while(0) -static int -BufCheckZipHeader(BufFilePtr f) -{ - int c, flags; - GET(f); if (c != 0x1f) return 1; /* magic 1 */ - GET(f); if (c != 0x8b) return 2; /* magic 2 */ - GET(f); if (c != Z_DEFLATED) return 3; /* method */ - GET(f); if (c & RESERVED) return 4; /* reserved flags */ - flags = c; - GET(f); GET(f); GET(f); GET(f); /* time */ - GET(f); /* xflags */ - GET(f); /* os code */ - if (flags & EXTRA_FIELD) { - int len; - GET(f); len = c; - GET(f); len += (c<<8); - while (len-- >= 0) { - GET(f); - } - } - if (flags & ORIG_NAME) { - do { GET(f); } while (c != 0); - } - if (flags & COMMENT) { - do { GET(f); } while (c != 0); - } - if (flags & HEAD_CRC) { - GET(f); GET(f); /* header crc */ - } - return 0; -} diff --git a/nx-X11/lib/font/fontfile/module/Imakefile b/nx-X11/lib/font/fontfile/module/Imakefile deleted file mode 100644 index 0eebe08..0000000 --- a/nx-X11/lib/font/fontfile/module/Imakefile +++ /dev/null @@ -1,21 +0,0 @@ -XCOMM $XFree86: xc/lib/font/fontfile/module/Imakefile,v 1.3 1999/06/13 13:47:35 dawes Exp $ -#include <Server.tmpl> - - INCLUDES = -I$(FONTINCSRC) -I../../include -I$(SERVERSRC)/include \ - -I$(XINCLUDESRC) - - DEFINES = -DLOADABLEFONTS - - SRCS = ffcheck.c register.c - OBJS = ffcheck.o register.o - -SubdirLibraryRule($(OBJS)) - -NormalLibraryObjectRule() -NormalLintTarget($(SRCS)) - -LinkSourceFile(ffcheck.c,..) -LinkSourceFile(register.c,..) - -DependTarget() - diff --git a/nx-X11/lib/font/fontfile/printerfont.c b/nx-X11/lib/font/fontfile/printerfont.c deleted file mode 100644 index 0b6c19c..0000000 --- a/nx-X11/lib/font/fontfile/printerfont.c +++ /dev/null @@ -1,178 +0,0 @@ -/* $Xorg: printerfont.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/printerfont.c,v 1.5tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ -/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> - -/* - * Map FPE functions to renderer functions - */ - -#define PRINTERPATHPREFIX "PRINTER:" - -/* STUB -int XpClientIsPrintClient(client,fpe) -pointer client; -FontPathElementPtr fpe; -{ return 1; } - */ - -static int -PrinterFontNameCheck (char *name) -{ - if (strncmp(name,PRINTERPATHPREFIX,strlen(PRINTERPATHPREFIX)) != 0) - return 0; - name += strlen(PRINTERPATHPREFIX); -#ifndef NCD - return *name == '/'; -#else - return ((strcmp(name, "built-ins") == 0) || (*name == '/')); -#endif -} - -static int -PrinterFontInitFPE (FontPathElementPtr fpe) -{ - int status; - FontDirectoryPtr dir; - char * name; - - name = fpe->name + strlen(PRINTERPATHPREFIX); - status = FontFileReadDirectory (name, &dir); - if (status == Successful) - { - if (dir->nonScalable.used > 0) - if (!FontFileRegisterBitmapSource (fpe)) - { - FontFileFreeFPE (fpe); - return AllocError; - } - fpe->private = (pointer) dir; - } - return status; -} - -/* Here we must check the client to see if it has a context attached to - * it that allows us to access the printer fonts - */ - -static int -PrinterFontOpenFont (pointer client, FontPathElementPtr fpe, Mask flags, - char *name, int namelen, - fsBitmapFormat format, fsBitmapFormatMask fmask, - XID id, FontPtr *pFont, char **aliasName, - FontPtr non_cachable_font) -{ - if (XpClientIsPrintClient(client,fpe)) - return (FontFileOpenFont (client, fpe, flags, name, namelen, format, - fmask, id, pFont, aliasName, non_cachable_font)); - return BadFontName; -} - -static int -PrinterFontListFonts (pointer client, FontPathElementPtr fpe, char *pat, - int len, int max, FontNamesPtr names) -{ - if (XpClientIsPrintClient(client,fpe)) - return FontFileListFonts (client, fpe, pat, len, max, names); - return BadFontName; -} - -static int -PrinterFontStartListFontsWithInfo(pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep) -{ - if (XpClientIsPrintClient(client,fpe)) - return FontFileStartListFontsWithInfo(client, fpe, pat, len, - max, privatep); - return BadFontName; -} - -static int -PrinterFontListNextFontWithInfo(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - FontInfoPtr *pFontInfo, - int *numFonts, pointer private) -{ - if (XpClientIsPrintClient(client,fpe)) - return FontFileListNextFontWithInfo(client, fpe, namep, namelenp, - pFontInfo, numFonts, private); - return BadFontName; -} - -static int -PrinterFontStartListFontsAndAliases(pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep) -{ - if (XpClientIsPrintClient(client,fpe)) - return FontFileStartListFontsAndAliases(client, fpe, pat, len, - max, privatep); - return BadFontName; -} - -static int -PrinterFontListNextFontOrAlias(pointer client, FontPathElementPtr fpe, - char **namep, int *namelenp, - char **resolvedp, int *resolvedlenp, - pointer private) -{ - if (XpClientIsPrintClient(client,fpe)) - return FontFileListNextFontOrAlias(client, fpe, namep, namelenp, - resolvedp, resolvedlenp, private); - return BadFontName; -} - -void -PrinterFontRegisterFpeFunctions (void) -{ - RegisterFPEFunctions(PrinterFontNameCheck, - PrinterFontInitFPE, - FontFileFreeFPE, - FontFileResetFPE, - PrinterFontOpenFont, - FontFileCloseFont, - PrinterFontListFonts, - PrinterFontStartListFontsWithInfo, - PrinterFontListNextFontWithInfo, - NULL, - NULL, - NULL, - PrinterFontStartListFontsAndAliases, - PrinterFontListNextFontOrAlias, - FontFileEmptyBitmapSource); -} diff --git a/nx-X11/lib/font/fontfile/register.c b/nx-X11/lib/font/fontfile/register.c deleted file mode 100644 index 5ddab03..0000000 --- a/nx-X11/lib/font/fontfile/register.c +++ /dev/null @@ -1,107 +0,0 @@ -/* $Xorg: register.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/register.c,v 1.14 2001/01/17 19:43:30 dawes Exp $ */ - -/* - * This is in a separate source file so that small programs - * such as mkfontdir that want to use the fontfile utilities don't - * end up dragging in code from all the renderers, which is not small. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#else -#define XFONT_BITMAP 1 -#endif - -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/bitmap.h> - -#ifdef LOADABLEFONTS -#include <X11/fonts/fontmod.h> -#endif - -/* - * Translate monolithic build symbols to modular build symbols. - * I chose to make the modular symbols 'canonical' because they - * are prefixed with XFONT_, neatly avoiding name collisions - * with other packages. - */ - -#ifdef BUILD_SPEEDO -# define XFONT_SPEEDO 1 -#endif -#ifdef BUILD_TYPE1 -# define XFONT_TYPE1 1 -#endif - -#ifdef BUILD_CID -# define XFONT_CID 1 -#endif -#ifdef BUILD_FREETYPE -# define XFONT_FREETYPE 1 -#endif - -void -FontFileRegisterFpeFunctions(void) -{ -#ifndef LOADABLEFONTS - -#ifdef XFONT_BITMAP - BitmapRegisterFontFileFunctions (); -#endif -#ifdef XFONT_SPEEDO - SpeedoRegisterFontFileFunctions (); -#endif -#ifdef XFONT_TYPE1 - Type1RegisterFontFileFunctions(); -#endif -#ifdef XFONT_CID - CIDRegisterFontFileFunctions(); -#endif -#ifdef XFONT_FREETYPE - FreeTypeRegisterFontFileFunctions(); -#endif - -#else - { - int i; - - if (FontModuleList) { - for (i = 0; FontModuleList[i].name; i++) { - if (FontModuleList[i].initFunc) - FontModuleList[i].initFunc(); - } - } - } -#endif - - FontFileRegisterLocalFpeFunctions (); -} - diff --git a/nx-X11/lib/font/fontfile/renderers.c b/nx-X11/lib/font/fontfile/renderers.c deleted file mode 100644 index f110ba8..0000000 --- a/nx-X11/lib/font/fontfile/renderers.c +++ /dev/null @@ -1,117 +0,0 @@ -/* $Xorg: renderers.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/fontfile/renderers.c,v 1.7 2002/12/09 17:30:00 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fntfilst.h> -extern void ErrorF(const char *f, ...); - -static FontRenderersRec renderers; - -/* - * XXX Maybe should allow unregistering renders. For now, just clear the - * list at each new generation. - */ -extern unsigned long serverGeneration; -static unsigned long rendererGeneration = 0; - -Bool -FontFileRegisterRenderer (FontRendererPtr renderer) -{ - return FontFilePriorityRegisterRenderer(renderer, 0); -} - -Bool -FontFilePriorityRegisterRenderer (FontRendererPtr renderer, int priority) -{ - int i; - struct _FontRenderersElement *new; - - if (rendererGeneration != serverGeneration) { - rendererGeneration = serverGeneration; - renderers.number = 0; - if (renderers.renderers) - xfree(renderers.renderers); - renderers.renderers = NULL; - } - - for (i = 0; i < renderers.number; i++) { - if (!strcmp (renderers.renderers[i].renderer->fileSuffix, - renderer->fileSuffix)) { - if(renderers.renderers[i].priority >= priority) { - if(renderers.renderers[i].priority == priority) { - if (rendererGeneration == 1) - ErrorF("Warning: font renderer for \"%s\" " - "already registered at priority %d\n", - renderer->fileSuffix, priority); - } - return TRUE; - } else { - break; - } - } - } - - if(i >= renderers.number) { - new = xrealloc (renderers.renderers, sizeof(*new) * (i + 1)); - if (!new) - return FALSE; - renderers.renderers = new; - renderers.number = i + 1; - } - renderer->number = i; - renderers.renderers[i].renderer = renderer; - renderers.renderers[i].priority = priority; - return TRUE; -} - -FontRendererPtr -FontFileMatchRenderer (char *fileName) -{ - int i; - int fileLen; - FontRendererPtr r; - - fileLen = strlen (fileName); - for (i = 0; i < renderers.number; i++) - { - r = renderers.renderers[i].renderer; - if (fileLen >= r->fileSuffixLen && - !strcmp (fileName + fileLen - r->fileSuffixLen, r->fileSuffix)) - { - return r; - } - } - return 0; -} diff --git a/nx-X11/lib/font/include/Imakefile b/nx-X11/lib/font/include/Imakefile deleted file mode 100644 index 73e65a4..0000000 --- a/nx-X11/lib/font/include/Imakefile +++ /dev/null @@ -1,11 +0,0 @@ -XCOMM $Xorg$ - HEADERS = bitmap.h bufio.h fntfil.h fntfilio.h fntfilst.h \ - fontencc.h fontmisc.h fontmod.h fontshow.h fontutil.h \ - fontxlfd.h -all:: - -BuildIncludes($(HEADERS),X11/fonts,../..) - -#if BuildLibraries -InstallMultipleFlags($(HEADERS),$(INCDIR)/X11/fonts,$(INSTINCFLAGS)) -#endif diff --git a/nx-X11/lib/font/include/bitmap.h b/nx-X11/lib/font/include/bitmap.h deleted file mode 100644 index e60fda8..0000000 --- a/nx-X11/lib/font/include/bitmap.h +++ /dev/null @@ -1,116 +0,0 @@ -/* $Xorg: bitmap.h,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/include/bitmap.h,v 1.9 2001/01/17 19:43:31 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifndef _BITMAP_H_ -#define _BITMAP_H_ - -#include <X11/fonts/fntfilio.h> -#ifndef FONTMODULE -#include <stdio.h> /* just for NULL */ -#else -#include "xf86_ansic.h" -#endif - -/* - * Internal format used to store bitmap fonts - */ - -/* number of encoding entries in one segment */ -#define BITMAP_FONT_SEGMENT_SIZE 128 - -typedef struct _BitmapExtra { - Atom *glyphNames; - int *sWidths; - CARD32 bitmapsSizes[GLYPHPADOPTIONS]; - FontInfoRec info; -} BitmapExtraRec, *BitmapExtraPtr; - -typedef struct _BitmapFont { - unsigned version_num; - int num_chars; - int num_tables; - CharInfoPtr metrics; /* font metrics, including glyph pointers */ - xCharInfo *ink_metrics; /* ink metrics */ - char *bitmaps; /* base of bitmaps, useful only to free */ - CharInfoPtr **encoding; /* array of arrays of char info pointers */ - CharInfoPtr pDefault; /* default character */ - BitmapExtraPtr bitmapExtra; /* stuff not used by X server */ -} BitmapFontRec, *BitmapFontPtr; - -#define ACCESSENCODING(enc,i) \ -(enc[(i)/BITMAP_FONT_SEGMENT_SIZE]?\ -(enc[(i)/BITMAP_FONT_SEGMENT_SIZE][(i)%BITMAP_FONT_SEGMENT_SIZE]):\ -0) -#define ACCESSENCODINGL(enc,i) \ -(enc[(i)/BITMAP_FONT_SEGMENT_SIZE][(i)%BITMAP_FONT_SEGMENT_SIZE]) - -#define SEGMENT_MAJOR(n) ((n)/BITMAP_FONT_SEGMENT_SIZE) -#define SEGMENT_MINOR(n) ((n)%BITMAP_FONT_SEGMENT_SIZE) -#define NUM_SEGMENTS(n) \ - (((n)+BITMAP_FONT_SEGMENT_SIZE-1)/BITMAP_FONT_SEGMENT_SIZE) - -extern int bitmapGetGlyphs ( FontPtr pFont, unsigned long count, - unsigned char *chars, FontEncoding charEncoding, - unsigned long *glyphCount, CharInfoPtr *glyphs ); -extern int bitmapGetMetrics ( FontPtr pFont, unsigned long count, - unsigned char *chars, FontEncoding charEncoding, - unsigned long *glyphCount, xCharInfo **glyphs ); - -extern void bitmapComputeFontBounds ( FontPtr pFont ); -extern void bitmapComputeFontInkBounds ( FontPtr pFont ); -extern Bool bitmapAddInkMetrics ( FontPtr pFont ); -extern int bitmapComputeWeight ( FontPtr pFont ); - -extern int BitmapOpenBitmap ( FontPathElementPtr fpe, FontPtr *ppFont, - int flags, FontEntryPtr entry, char *fileName, - fsBitmapFormat format, fsBitmapFormatMask fmask, - FontPtr non_cachable_font ); -extern int BitmapGetInfoBitmap ( FontPathElementPtr fpe, - FontInfoPtr pFontInfo, FontEntryPtr entry, - char *fileName ); -extern void BitmapRegisterFontFileFunctions ( void ); -extern int BitmapGetRenderIndex ( FontRendererPtr renderer ); - -extern int BitmapOpenScalable ( FontPathElementPtr fpe, FontPtr *pFont, - int flags, FontEntryPtr entry, char *fileName, - FontScalablePtr vals, fsBitmapFormat format, - fsBitmapFormatMask fmask, - FontPtr non_cachable_font ); -extern int BitmapGetInfoScalable ( FontPathElementPtr fpe, - FontInfoPtr pFontInfo, FontEntryPtr entry, - FontNamePtr fontName, char *fileName, - FontScalablePtr vals ); - -#endif /* _BITMAP_H_ */ diff --git a/nx-X11/lib/font/include/bufio.h b/nx-X11/lib/font/include/bufio.h deleted file mode 100644 index da90064..0000000 --- a/nx-X11/lib/font/include/bufio.h +++ /dev/null @@ -1,92 +0,0 @@ -/* $Xorg: bufio.h,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1993, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/include/bufio.h,v 1.6 2001/07/31 16:44:55 alanh Exp $ */ - -#ifndef ___BUFIO_H___ -#define ___BUFIO_H___ 1 - -#include <X11/Xfuncproto.h> - -#ifdef TEST - -#define xalloc(s) malloc(s) -#define xfree(s) free(s) - -#endif - -#define BUFFILESIZE 8192 -#define BUFFILEEOF -1 - -typedef unsigned char BufChar; -typedef struct _buffile *BufFilePtr; - -typedef struct _buffile { - BufChar *bufp; - int left; - int eof; - BufChar buffer[BUFFILESIZE]; - int (*input)( BufFilePtr /* f */); - int (*output)( int /* c */, BufFilePtr /* f */); - int (*skip)( BufFilePtr /* f */, int /* count */); - int (*close)( BufFilePtr /* f */, int /* doClose */); - char *private; -} BufFileRec; - -extern BufFilePtr BufFileCreate ( - char*, - int (*)(BufFilePtr), - int (*)(int, BufFilePtr), - int (*)(BufFilePtr, int), - int (*)(BufFilePtr, int)); -extern BufFilePtr BufFileOpenRead ( int ); -extern BufFilePtr BufFileOpenWrite ( int ); -extern BufFilePtr BufFilePushCompressed ( BufFilePtr ); -#ifdef X_GZIP_FONT_COMPRESSION -extern BufFilePtr BufFilePushZIP ( BufFilePtr ); -#endif -extern int BufFileClose ( BufFilePtr, int ); -extern int BufFileFlush ( BufFilePtr, int ); -extern int BufFileRead ( BufFilePtr, char*, int ); -extern int BufFileWrite ( BufFilePtr, char*, int ); -extern void BufFileFree ( BufFilePtr ); - -#define BufFileGet(f) ((f)->left-- ? *(f)->bufp++ : ((f)->eof = (*(f)->input) (f))) -#define BufFilePut(c,f) (--(f)->left ? *(f)->bufp++ = ((unsigned char)(c)) : (*(f)->output) ((unsigned char)(c),f)) -#define BufFileSkip(f,c) ((f)->eof = (*(f)->skip) (f, c)) - -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -#endif /* ___BUFIO_H___ */ - diff --git a/nx-X11/lib/font/include/fntfil.h b/nx-X11/lib/font/include/fntfil.h deleted file mode 100644 index 81d2cbc..0000000 --- a/nx-X11/lib/font/include/fntfil.h +++ /dev/null @@ -1,178 +0,0 @@ -/* $Xorg: fntfil.h,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/include/fntfil.h,v 1.9 2001/12/14 19:56:54 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifndef _FONTFILE_H_ -#define _FONTFILE_H_ - -#include <X11/fonts/fontxlfd.h> - -typedef struct _FontEntry *FontEntryPtr; -typedef struct _FontTable *FontTablePtr; -typedef struct _FontName *FontNamePtr; -typedef struct _FontScaled *FontScaledPtr; -typedef struct _FontScalableExtra *FontScalableExtraPtr; -typedef struct _FontScalableEntry *FontScalableEntryPtr; -typedef struct _FontScaleAliasEntry *FontScaleAliasEntryPtr; -typedef struct _FontBitmapEntry *FontBitmapEntryPtr; -typedef struct _FontAliasEntry *FontAliasEntryPtr; -typedef struct _FontBCEntry *FontBCEntryPtr; -typedef struct _FontDirectory *FontDirectoryPtr; -typedef struct _FontRenderer *FontRendererPtr; - -#define NullFontEntry ((FontEntryPtr) 0) -#define NullFontTable ((FontTablePtr) 0) -#define NullFontName ((FontNamePtr) 0) -#define NullFontScaled ((FontScaled) 0) -#define NullFontScalableExtra ((FontScalableExtra) 0) -#define NullFontscalableEntry ((FontScalableEntry) 0) -#define NullFontScaleAliasEntry ((FontScaleAliasEntry) 0) -#define NullFontBitmapEntry ((FontBitmapEntry) 0) -#define NullFontAliasEntry ((FontAliasEntry) 0) -#define NullFontBCEntry ((FontBCEntry) 0) -#define NullFontDirectory ((FontDirectoryPtr) 0) -#define NullFontRenderer ((FontRendererPtr) 0) - -#define FONT_ENTRY_SCALABLE 0 -#define FONT_ENTRY_SCALE_ALIAS 1 -#define FONT_ENTRY_BITMAP 2 -#define FONT_ENTRY_ALIAS 3 -#define FONT_ENTRY_BC 4 - -#define MAXFONTNAMELEN 1024 -#define MAXFONTFILENAMELEN 1024 - -#define FontDirFile "fonts.dir" -#define FontAliasFile "fonts.alias" -#define FontScalableFile "fonts.scale" - -extern int FontFileNameCheck ( char *name ); -extern int FontFileInitFPE ( FontPathElementPtr fpe ); -extern int FontFileResetFPE ( FontPathElementPtr fpe ); -extern int FontFileFreeFPE ( FontPathElementPtr fpe ); -extern int FontFileOpenFont ( pointer client, FontPathElementPtr fpe, - Mask flags, char *name, int namelen, - fsBitmapFormat format, fsBitmapFormatMask fmask, - XID id, FontPtr *pFont, char **aliasName, - FontPtr non_cachable_font ); -extern void FontFileCloseFont ( FontPathElementPtr fpe, FontPtr pFont ); -extern int FontFileOpenBitmap ( FontPathElementPtr fpe, FontPtr *pFont, - int flags, FontEntryPtr entry, - fsBitmapFormat format, - fsBitmapFormatMask fmask ); -extern int FontFileListFonts ( pointer client, FontPathElementPtr fpe, - char *pat, int len, int max, - FontNamesPtr names ); -extern int FontFileStartListFontsWithInfo ( pointer client, - FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep ); -extern int FontFileListNextFontWithInfo ( pointer client, - FontPathElementPtr fpe, - char **namep, int *namelenp, - FontInfoPtr *pFontInfo, - int *numFonts, pointer private ); -extern int FontFileStartListFontsAndAliases ( pointer client, - FontPathElementPtr fpe, - char *pat, int len, int max, - pointer *privatep ); -extern int FontFileListNextFontOrAlias ( pointer client, - FontPathElementPtr fpe, - char **namep, int *namelenp, - char **resolvedp, int *resolvedlenp, - pointer private ); -extern void FontFileRegisterLocalFpeFunctions ( void ); - - -extern FontEntryPtr FontFileAddEntry ( FontTablePtr table, - FontEntryPtr prototype ); -extern Bool FontFileAddFontAlias ( FontDirectoryPtr dir, char *aliasName, - char *fontName ); -extern Bool FontFileAddFontFile ( FontDirectoryPtr dir, char *fontName, - char *fileName ); -extern int FontFileCountDashes ( char *name, int namelen ); -extern FontEntryPtr FontFileFindNameInDir ( FontTablePtr table, - FontNamePtr pat ); -extern FontEntryPtr FontFileFindNameInScalableDir ( FontTablePtr table, - FontNamePtr pat, - FontScalablePtr vals ); -extern int FontFileFindNamesInDir ( FontTablePtr table, FontNamePtr pat, - int max, FontNamesPtr names ); -extern int FontFileFindNamesInScalableDir ( FontTablePtr table, - FontNamePtr pat, int max, - FontNamesPtr names, - FontScalablePtr vals, - int alias_behavior, int *newmax ); - -extern void FontFileFreeDir ( FontDirectoryPtr dir ); -extern void FontFileFreeEntry ( FontEntryPtr entry ); -extern void FontFileFreeTable ( FontTablePtr table ); -extern Bool FontFileInitTable ( FontTablePtr table, int size ); -extern FontDirectoryPtr FontFileMakeDir ( char *dirName, int size ); -extern Bool FontFileMatchName ( char *name, int length, FontNamePtr pat ); -extern char * FontFileSaveString ( char *s ); -extern void FontFileSortDir ( FontDirectoryPtr dir ); -extern void FontFileSortTable ( FontTablePtr table ); - -extern void FontDefaultFormat ( int *bit, int *byte, int *glyph, int *scan ); - -extern Bool FontFileRegisterRenderer ( FontRendererPtr renderer ); -extern Bool FontFilePriorityRegisterRenderer ( FontRendererPtr renderer, - int priority ); -extern FontRendererPtr FontFileMatchRenderer ( char *fileName ); - -extern Bool FontFileAddScaledInstance ( FontEntryPtr entry, - FontScalablePtr vals, FontPtr pFont, - char *bitmapName ); -extern void FontFileSwitchStringsToBitmapPointers ( FontDirectoryPtr dir ); -extern void FontFileRemoveScaledInstance ( FontEntryPtr entry, FontPtr pFont ); -extern Bool FontFileCompleteXLFD ( FontScalablePtr vals, FontScalablePtr def ); -extern FontScaledPtr FontFileFindScaledInstance ( FontEntryPtr entry, - FontScalablePtr vals, - int noSpecificSize ); - -extern Bool FontFileRegisterBitmapSource ( FontPathElementPtr fpe ); -extern void FontFileUnregisterBitmapSource ( FontPathElementPtr fpe ); -extern void FontFileEmptyBitmapSource ( void ); -extern int FontFileMatchBitmapSource ( FontPathElementPtr fpe, - FontPtr *pFont, int flags, - FontEntryPtr entry, - FontNamePtr zeroPat, - FontScalablePtr vals, - fsBitmapFormat format, - fsBitmapFormatMask fmask, - Bool noSpecificSize ); - -extern int FontFileReadDirectory ( char *directory, FontDirectoryPtr *pdir ); -extern Bool FontFileDirectoryChanged ( FontDirectoryPtr dir ); - -#endif /* _FONTFILE_H_ */ diff --git a/nx-X11/lib/font/include/fntfilio.h b/nx-X11/lib/font/include/fntfilio.h deleted file mode 100644 index f8e24f3..0000000 --- a/nx-X11/lib/font/include/fntfilio.h +++ /dev/null @@ -1,56 +0,0 @@ -/* $Xorg: fntfilio.h,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/include/fntfilio.h,v 1.6 2001/10/31 22:50:26 tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifndef _FNTFILIO_H_ -#define _FNTFILIO_H_ - -#include <X11/fonts/bufio.h> - -typedef BufFilePtr FontFilePtr; - -#define FontFileGetc(f) BufFileGet(f) -#define FontFilePutc(c,f) BufFilePut(c,f) -#define FontFileRead(f,b,n) BufFileRead(f,b,n) -#define FontFileWrite(f,b,n) BufFileWrite(f,b,n) -#define FontFileSkip(f,n) (BufFileSkip (f, n) != BUFFILEEOF) -#define FontFileSeek(f,n) (BufFileSeek (f,n,0) != BUFFILEEOF) - -#define FontFileEOF BUFFILEEOF - -extern FontFilePtr FontFileOpen ( const char *name ); -extern int FontFileClose ( FontFilePtr f ); -extern FontFilePtr FontFileOpenWrite ( const char *name ); -extern FontFilePtr FontFileOpenWriteFd ( int fd ); -extern FontFilePtr FontFileOpenFd ( int fd ); - -#endif /* _FNTFILIO_H_ */ diff --git a/nx-X11/lib/font/include/fntfilst.h b/nx-X11/lib/font/include/fntfilst.h deleted file mode 100644 index 1a71eae..0000000 --- a/nx-X11/lib/font/include/fntfilst.h +++ /dev/null @@ -1,198 +0,0 @@ -/* $Xorg: fntfilst.h,v 1.5 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/include/fntfilst.h,v 3.8 2002/12/09 17:30:00 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifndef _FONTFILEST_H_ -#define _FONTFILEST_H_ - -#ifndef FONTMODULE -#include <X11/Xos.h> -#endif -#ifndef XP_PSTEXT -#include <X11/fonts/fontmisc.h> -#endif -#include <X11/fonts/fontstruct.h> -#include <X11/fonts/fontxlfd.h> -#include <X11/fonts/fntfil.h> - -typedef struct _FontName { - char *name; - short length; - short ndashes; -} FontNameRec; - -typedef struct _FontScaled { - FontScalableRec vals; - FontEntryPtr bitmap; - FontPtr pFont; -} FontScaledRec; - -typedef struct _FontScalableExtra { - FontScalableRec defaults; - int numScaled; - int sizeScaled; - FontScaledPtr scaled; - pointer private; -} FontScalableExtraRec; - -typedef struct _FontScalableEntry { - FontRendererPtr renderer; - char *fileName; - FontScalableExtraPtr extra; -} FontScalableEntryRec; - -/* - * This "can't" work yet - the returned alias string must be permanent, - * but this layer would need to generate the appropriate name from the - * resolved scalable + the XLFD values passed in. XXX - */ - -typedef struct _FontScaleAliasEntry { - char *resolved; -} FontScaleAliasEntryRec; - -typedef struct _FontBitmapEntry { - FontRendererPtr renderer; - char *fileName; - FontPtr pFont; -} FontBitmapEntryRec; - -typedef struct _FontAliasEntry { - char *resolved; -} FontAliasEntryRec; - -typedef struct _FontBCEntry { - FontScalableRec vals; - FontEntryPtr entry; -} FontBCEntryRec; - -typedef struct _FontEntry { - FontNameRec name; - int type; - union _FontEntryParts { - FontScalableEntryRec scalable; - FontBitmapEntryRec bitmap; - FontAliasEntryRec alias; - FontBCEntryRec bc; - } u; -} FontEntryRec; - -typedef struct _FontTable { - int used; - int size; - FontEntryPtr entries; - Bool sorted; -} FontTableRec; - -typedef struct _FontDirectory { - char *directory; - unsigned long dir_mtime; - unsigned long alias_mtime; - FontTableRec scalable; - FontTableRec nonScalable; - char *attributes; -} FontDirectoryRec; - -/* Capability bits: for definition of capabilities bitmap in the - FontRendererRec to indicate support of XLFD enhancements */ - -#define CAP_MATRIX 0x1 -#define CAP_CHARSUBSETTING 0x2 - -typedef struct _FontRenderer { - char *fileSuffix; - int fileSuffixLen; - int (*OpenBitmap)(FontPathElementPtr /* fpe */, - FontPtr * /* pFont */, - int /* flags */, - FontEntryPtr /* entry */, - char * /* fileName */, - fsBitmapFormat /* format */, - fsBitmapFormatMask /* mask */, - FontPtr /* non_cachable_font */); - int (*OpenScalable)(FontPathElementPtr /* fpe */, - FontPtr * /* pFont */, - int /* flags */, - FontEntryPtr /* entry */, - char * /* fileName */, - FontScalablePtr /* vals */, - fsBitmapFormat /* format */, - fsBitmapFormatMask /* fmask */, - FontPtr /* non_cachable_font */); - int (*GetInfoBitmap)(FontPathElementPtr /* fpe */, - FontInfoPtr /* pFontInfo */, - FontEntryPtr /* entry */, - char * /*fileName */); - int (*GetInfoScalable)(FontPathElementPtr /* fpe */, - FontInfoPtr /* pFontInfo */, - FontEntryPtr /* entry */, - FontNamePtr /* fontName */, - char * /* fileName */, - FontScalablePtr /* vals */); - int number; - int capabilities; /* Bitmap components defined above */ -} FontRendererRec; - -typedef struct _FontRenders { - int number; - struct _FontRenderersElement { - /* In order to preserve backward compatibility, the - priority field is made invisible to renderers */ - FontRendererPtr renderer; - int priority; - } *renderers; -} FontRenderersRec, *FontRenderersPtr; - -typedef struct _BitmapInstance { - FontScalableRec vals; - FontBitmapEntryPtr bitmap; -} BitmapInstanceRec, *BitmapInstancePtr; - -typedef struct _BitmapScalablePrivate { - int numInstances; - BitmapInstancePtr instances; -} BitmapScalablePrivateRec, *BitmapScalablePrivatePtr; - -typedef struct _BitmapSources { - FontPathElementPtr *fpe; - int size; - int count; -} BitmapSourcesRec, *BitmapSourcesPtr; - -extern BitmapSourcesRec FontFileBitmapSources; - -/* Defines for FontFileFindNamesInScalableDir() behavior */ -#define NORMAL_ALIAS_BEHAVIOR 0 -#define LIST_ALIASES_AND_TARGET_NAMES (1<<0) -#define IGNORE_SCALABLE_ALIASES (1<<1) - -#endif /* _FONTFILEST_H_ */ diff --git a/nx-X11/lib/font/include/fontencc.h b/nx-X11/lib/font/include/fontencc.h deleted file mode 100644 index 51e0e14..0000000 --- a/nx-X11/lib/font/include/fontencc.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright (c) 1998-2001 by Juliusz Chroboczek - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ -/* $XFree86$ */ - -/* Binary compatibility entry points. */ - -/* This file includes code to make modules compiled for earlier - versions of the fontenc interfaces link with this one. It does - *not* provide source compatibility, as many of the data structures - now have different names. */ - -extern char *font_encoding_from_xlfd(const char*, int); -extern unsigned font_encoding_recode(unsigned, FontEncPtr, FontMapPtr); -extern FontEncPtr font_encoding_find(const char*, const char*); -extern char *font_encoding_name(unsigned, FontEncPtr, FontMapPtr); -extern char **identifyEncodingFile(const char *fileName); - diff --git a/nx-X11/lib/font/include/fontmisc.h b/nx-X11/lib/font/include/fontmisc.h deleted file mode 100644 index b7e3590..0000000 --- a/nx-X11/lib/font/include/fontmisc.h +++ /dev/null @@ -1,133 +0,0 @@ -/* $Xorg: fontmisc.h,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/include/fontmisc.h,v 3.16 2001/12/14 19:56:54 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifndef _FONTMISC_H_ -#define _FONTMISC_H_ - -#ifndef FONTMODULE -#include <X11/Xfuncs.h> -#include <stdlib.h> -#include <stdio.h> - -#ifndef X_NOT_POSIX -#include <unistd.h> -#else -extern int close(); -#endif - -#endif /* FONTMODULE */ - -#include "X11/Xdefs.h" - - -#ifndef LSBFirst -#define LSBFirst 0 -#define MSBFirst 1 -#endif - -#ifndef None -#define None 0l -#endif - -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -extern Atom MakeAtom ( char *string, unsigned len, int makeit ); -extern int ValidAtom ( Atom atom ); -extern char *NameForAtom (Atom atom); - -#ifndef _HAVE_XALLOC_DECLS -#define _HAVE_XALLOC_DECLS -extern pointer Xalloc(unsigned long); -extern pointer Xrealloc(pointer, unsigned long); -extern void Xfree(pointer); -extern pointer Xcalloc(unsigned long); -#endif -extern int f_strcasecmp(const char *s1, const char *s2); - -#ifndef xalloc -#define xalloc(n) Xalloc ((unsigned) n) -#define xfree(p) Xfree ((pointer) p) -#define xrealloc(p,n) Xrealloc ((pointer)p,n) -#define xcalloc(n,s) Xcalloc((unsigned) n * (unsigned) s) -#endif -#define lowbit(x) ((x) & (~(x) + 1)) - -#undef assert -#define assert(x) ((void)0) - -#ifndef strcasecmp -#if defined(NEED_STRCASECMP) && !defined(FONTMODULE) -#define strcasecmp(s1,s2) f_strcasecmp(s1,s2) -#endif -#endif - -extern void -BitOrderInvert( - register unsigned char *, - register int -); - -extern void -TwoByteSwap( - register unsigned char *, - register int -); - -extern void -FourByteSwap( - register unsigned char *, - register int -); - -extern int -RepadBitmap ( - char*, - char*, - unsigned, - unsigned, - int, - int -); - -extern void CopyISOLatin1Lowered( - char * /*dest*/, - char * /*source*/, - int /*length*/ -); - -extern void register_fpe_functions(void); - -#endif /* _FONTMISC_H_ */ diff --git a/nx-X11/lib/font/include/fontmod.h b/nx-X11/lib/font/include/fontmod.h deleted file mode 100644 index 42d277f..0000000 --- a/nx-X11/lib/font/include/fontmod.h +++ /dev/null @@ -1,16 +0,0 @@ -/* $XFree86: xc/lib/font/include/fontmod.h,v 1.2 1998/07/25 06:57:09 dawes Exp $ */ - -#ifndef _FONTMOD_H_ -#define _FONTMOD_H_ - -typedef void (*InitFont)(void); - -typedef struct { - InitFont initFunc; - char * name; - pointer module; -} FontModule; - -extern FontModule *FontModuleList; - -#endif /* _FONTMOD_H_ */ diff --git a/nx-X11/lib/font/include/fontshow.h b/nx-X11/lib/font/include/fontshow.h deleted file mode 100644 index 5bb48fe..0000000 --- a/nx-X11/lib/font/include/fontshow.h +++ /dev/null @@ -1,37 +0,0 @@ -/* $Xorg: fontshow.h,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#define FONT_SHOW_INFO (1<<0) -#define FONT_SHOW_PROPS (1<<1) -#define FONT_SHOW_METRICS (1<<2) -#define FONT_SHOW_GLYPHS (1<<3) -#define FONT_SHOW_ALL (FONT_SHOW_INFO|FONT_SHOW_PROPS|FONT_SHOW_GLYPHS) diff --git a/nx-X11/lib/font/include/fontutil.h b/nx-X11/lib/font/include/fontutil.h deleted file mode 100644 index 9a73eaa..0000000 --- a/nx-X11/lib/font/include/fontutil.h +++ /dev/null @@ -1,26 +0,0 @@ -/* $XFree86: xc/lib/font/include/fontutil.h,v 1.1 1999/03/14 11:17:49 dawes Exp $ */ - -#ifndef _FONTUTIL_H_ -#define _FONTUTIL_H_ - -#include <X11/fonts/FSproto.h> - -extern int FontCouldBeTerminal(FontInfoPtr); -extern int CheckFSFormat(fsBitmapFormat, fsBitmapFormatMask, int *, int *, - int *, int *, int *); -extern void FontComputeInfoAccelerators(FontInfoPtr); - -extern void GetGlyphs ( FontPtr font, unsigned long count, - unsigned char *chars, FontEncoding fontEncoding, - unsigned long *glyphcount, CharInfoPtr *glyphs ); -extern void QueryGlyphExtents ( FontPtr pFont, CharInfoPtr *charinfo, - unsigned long count, ExtentInfoRec *info ); -extern Bool QueryTextExtents ( FontPtr pFont, unsigned long count, - unsigned char *chars, ExtentInfoRec *info ); -extern Bool ParseGlyphCachingMode ( char *str ); -extern void InitGlyphCaching ( void ); -extern void SetGlyphCachingMode ( int newmode ); -extern int add_range ( fsRange *newrange, int *nranges, fsRange **range, - Bool charset_subset ); - -#endif /* _FONTUTIL_H_ */ diff --git a/nx-X11/lib/font/include/fontxlfd.h b/nx-X11/lib/font/include/fontxlfd.h deleted file mode 100644 index e87b931..0000000 --- a/nx-X11/lib/font/include/fontxlfd.h +++ /dev/null @@ -1,100 +0,0 @@ -/* $Xorg: fontxlfd.h,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/include/fontxlfd.h,v 1.5 2001/01/17 19:43:32 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifndef _FONTXLFD_H_ -#define _FONTXLFD_H_ - -#include <X11/fonts/FSproto.h> - -/* Constants for values_supplied bitmap */ - -#define SIZE_SPECIFY_MASK 0xf - -#define PIXELSIZE_MASK 0x3 -#define PIXELSIZE_UNDEFINED 0 -#define PIXELSIZE_SCALAR 0x1 -#define PIXELSIZE_ARRAY 0x2 -#define PIXELSIZE_SCALAR_NORMALIZED 0x3 /* Adjusted for resolution */ - -#define POINTSIZE_MASK 0xc -#define POINTSIZE_UNDEFINED 0 -#define POINTSIZE_SCALAR 0x4 -#define POINTSIZE_ARRAY 0x8 - -#define PIXELSIZE_WILDCARD 0x10 -#define POINTSIZE_WILDCARD 0x20 - -#define ENHANCEMENT_SPECIFY_MASK 0x40 - -#define CHARSUBSET_SPECIFIED 0x40 - -#define EPS 1.0e-20 -#define XLFD_NDIGITS 3 /* Round numbers in pixel and - point arrays to this many - digits for repeatability */ - -typedef struct _FontScalable { - int values_supplied; /* Bitmap identifying what advanced - capabilities or enhancements - were specified in the font name */ - double pixel_matrix[4]; - double point_matrix[4]; - - /* Pixel and point fields are deprecated in favor of the - transformation matrices. They are provided and filled in for the - benefit of rasterizers that do not handle the matrices. */ - - int pixel, - point; - - int x, - y, - width; - char *xlfdName; - int nranges; - fsRange *ranges; -} FontScalableRec, *FontScalablePtr; - - -extern double xlfd_round_double ( double x ); -extern Bool FontParseXLFDName ( char *fname, FontScalablePtr vals, int subst ); -extern fsRange *FontParseRanges ( char *name, int *nranges ); - -#define FONT_XLFD_REPLACE_NONE 0 -#define FONT_XLFD_REPLACE_STAR 1 -#define FONT_XLFD_REPLACE_ZERO 2 -#define FONT_XLFD_REPLACE_VALUE 3 - -#endif /* _FONTXLFD_H_ */ diff --git a/nx-X11/lib/font/stubs/Imakefile b/nx-X11/lib/font/stubs/Imakefile deleted file mode 100644 index 555bbf6..0000000 --- a/nx-X11/lib/font/stubs/Imakefile +++ /dev/null @@ -1,25 +0,0 @@ -XCOMM $XFree86: xc/lib/font/stubs/Imakefile,v 1.3 1999/12/15 01:14:35 robin Exp $ - -#include <Server.tmpl> - -INCLUDES = -I$(FONTINCSRC) -I../include -I$(XINCLUDESRC) -SRCS = cauthgen.c csignal.c delfntcid.c errorf.c fatalerror.c \ - findoldfnt.c getcres.c getdefptsize.c getnewfntcid.c gettime.c \ - initfshdl.c regfpefunc.c rmfshdl.c servclient.c setfntauth.c \ - stfntcfnt.c xpstubs.c -OBJS = cauthgen.o csignal.o delfntcid.o errorf.o fatalerror.o \ - findoldfnt.o getcres.o getdefptsize.o getnewfntcid.o gettime.o \ - initfshdl.o regfpefunc.o rmfshdl.o servclient.o setfntauth.o \ - stfntcfnt.o xpstubs.o - -#undef _LinkBuildLibrary -#define _LinkBuildLibrary(lib) LinkBuildLibrary(lib) - -NormalLibraryObjectRule() -NormalLibraryTarget(fntstubs,$(OBJS)) -LintLibraryTarget(fntstubs,$(SRCS)) -InstallLibrary(fntstubs,$(USRLIBDIR)) -NormalLintTarget($(SRCS)) -DependTarget() - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/cauthgen.c b/nx-X11/lib/font/stubs/cauthgen.c deleted file mode 100644 index dec438d..0000000 --- a/nx-X11/lib/font/stubs/cauthgen.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -int -client_auth_generation(ClientPtr client) -{ - return 0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/csignal.c b/nx-X11/lib/font/stubs/csignal.c deleted file mode 100644 index c957eb8..0000000 --- a/nx-X11/lib/font/stubs/csignal.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -Bool -ClientSignal(ClientPtr client) -{ - return True; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/delfntcid.c b/nx-X11/lib/font/stubs/delfntcid.c deleted file mode 100644 index af5c0a8..0000000 --- a/nx-X11/lib/font/stubs/delfntcid.c +++ /dev/null @@ -1,13 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -void -DeleteFontClientID(Font id) -{ -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/errorf.c b/nx-X11/lib/font/stubs/errorf.c deleted file mode 100644 index 52c6042..0000000 --- a/nx-X11/lib/font/stubs/errorf.c +++ /dev/null @@ -1,13 +0,0 @@ -/* $XFree86: xc/lib/font/stubs/errorf.c,v 1.1 1999/01/11 05:13:19 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -void -ErrorF(const char *f, ...) -{ -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/fatalerror.c b/nx-X11/lib/font/stubs/fatalerror.c deleted file mode 100644 index 7dff170..0000000 --- a/nx-X11/lib/font/stubs/fatalerror.c +++ /dev/null @@ -1,13 +0,0 @@ -/* $XFree86: xc/lib/font/stubs/fatalerror.c,v 1.1 1999/01/11 05:13:19 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -void -FatalError(const char *f, ...) -{ -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/findoldfnt.c b/nx-X11/lib/font/stubs/findoldfnt.c deleted file mode 100644 index 218ecd4..0000000 --- a/nx-X11/lib/font/stubs/findoldfnt.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -FontPtr -find_old_font(FSID id) -{ - return (FontPtr)NULL; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/getcres.c b/nx-X11/lib/font/stubs/getcres.c deleted file mode 100644 index da0de91..0000000 --- a/nx-X11/lib/font/stubs/getcres.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -FontResolutionPtr -GetClientResolutions(int *num) -{ - return (FontResolutionPtr) 0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/getdefptsize.c b/nx-X11/lib/font/stubs/getdefptsize.c deleted file mode 100644 index 10a46c8..0000000 --- a/nx-X11/lib/font/stubs/getdefptsize.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -int -GetDefaultPointSize(void) -{ - return 0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/getnewfntcid.c b/nx-X11/lib/font/stubs/getnewfntcid.c deleted file mode 100644 index 5a1e927..0000000 --- a/nx-X11/lib/font/stubs/getnewfntcid.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -Font -GetNewFontClientID(void) -{ - return (Font)0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/gettime.c b/nx-X11/lib/font/stubs/gettime.c deleted file mode 100644 index 60a4e39..0000000 --- a/nx-X11/lib/font/stubs/gettime.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -unsigned long -GetTimeInMillis (void) -{ - return 0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/initfshdl.c b/nx-X11/lib/font/stubs/initfshdl.c deleted file mode 100644 index 15a337a..0000000 --- a/nx-X11/lib/font/stubs/initfshdl.c +++ /dev/null @@ -1,15 +0,0 @@ -/* $XFree86: xc/lib/font/stubs/initfshdl.c,v 1.1 1999/01/11 05:13:20 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -int -init_fs_handlers(FontPathElementPtr fpe, - BlockHandlerProcPtr block_handler) -{ - return Successful; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/regfpefunc.c b/nx-X11/lib/font/stubs/regfpefunc.c deleted file mode 100644 index d6fcf3b..0000000 --- a/nx-X11/lib/font/stubs/regfpefunc.c +++ /dev/null @@ -1,28 +0,0 @@ -/* $XFree86: xc/lib/font/stubs/regfpefunc.c,v 1.1 1999/01/11 05:13:20 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -int -RegisterFPEFunctions(NameCheckFunc name_func, - InitFpeFunc init_func, - FreeFpeFunc free_func, - ResetFpeFunc reset_func, - OpenFontFunc open_func, - CloseFontFunc close_func, - ListFontsFunc list_func, - StartLfwiFunc start_lfwi_func, - NextLfwiFunc next_lfwi_func, - WakeupFpeFunc wakeup_func, - ClientDiedFunc client_died, - LoadGlyphsFunc load_glyphs, - StartLaFunc start_list_alias_func, - NextLaFunc next_list_alias_func, - SetPathFunc set_path_func) -{ - return 0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/rmfshdl.c b/nx-X11/lib/font/stubs/rmfshdl.c deleted file mode 100644 index ae0ab78..0000000 --- a/nx-X11/lib/font/stubs/rmfshdl.c +++ /dev/null @@ -1,15 +0,0 @@ -/* $XFree86: xc/lib/font/stubs/rmfshdl.c,v 1.1 1999/01/11 05:13:21 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -void -remove_fs_handlers(FontPathElementPtr fpe, - BlockHandlerProcPtr blockHandler, - Bool all) -{ -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/servclient.c b/nx-X11/lib/font/stubs/servclient.c deleted file mode 100644 index 25c853f..0000000 --- a/nx-X11/lib/font/stubs/servclient.c +++ /dev/null @@ -1,3 +0,0 @@ -/* $XFree86$ */ - -void *serverClient = 0; diff --git a/nx-X11/lib/font/stubs/setfntauth.c b/nx-X11/lib/font/stubs/setfntauth.c deleted file mode 100644 index 843f155..0000000 --- a/nx-X11/lib/font/stubs/setfntauth.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -int -set_font_authorizations(char **authorizations, int *authlen, ClientPtr client) -{ - return 0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/stfntcfnt.c b/nx-X11/lib/font/stubs/stfntcfnt.c deleted file mode 100644 index c062677..0000000 --- a/nx-X11/lib/font/stubs/stfntcfnt.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -int -StoreFontClientFont(FontPtr pfont, Font id) -{ - return 0; -} - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/stubs.h b/nx-X11/lib/font/stubs/stubs.h deleted file mode 100644 index d687a77..0000000 --- a/nx-X11/lib/font/stubs/stubs.h +++ /dev/null @@ -1,27 +0,0 @@ -/* $XFree86: xc/lib/font/stubs/stubs.h,v 1.3 1999/12/15 01:14:36 robin Exp $ */ - -/* This directory includes dummy entry for bdftopcf and mkfontdir */ - -#include <stdio.h> -#include <X11/fonts/fntfilst.h> -#include <X11/fonts/font.h> - - -#ifndef True -#define True (-1) -#endif -#ifndef False -#define False (0) -#endif - -extern FontPtr find_old_font ( FSID id ); -extern int set_font_authorizations ( char **authorizations, - int *authlen, - ClientPtr client ); - -extern unsigned long GetTimeInMillis (void); - -extern void ErrorF(const char *format, ...); -extern void FatalError(const char *format, ...); - -/* end of file */ diff --git a/nx-X11/lib/font/stubs/xpstubs.c b/nx-X11/lib/font/stubs/xpstubs.c deleted file mode 100644 index 4449153..0000000 --- a/nx-X11/lib/font/stubs/xpstubs.c +++ /dev/null @@ -1,24 +0,0 @@ -/* $XFree86$ */ - -/* - stub for XpClient* functions. -*/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "stubs.h" - -Bool -XpClientIsBitmapClient(ClientPtr client) -{ - return True; -} - -Bool -XpClientIsPrintClient(ClientPtr client, FontPathElementPtr fpe) -{ - return False; -} - -/* end of file */ diff --git a/nx-X11/lib/font/util/Imakefile b/nx-X11/lib/font/util/Imakefile deleted file mode 100644 index 6c318ba..0000000 --- a/nx-X11/lib/font/util/Imakefile +++ /dev/null @@ -1,43 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:46:39 cpqbld Exp $ - - - - -XCOMM $XFree86: xc/lib/font/util/Imakefile,v 1.6 2000/12/07 16:40:30 dawes Exp $ - -#include <Server.tmpl> - - INCLUDES = -I$(FONTINCSRC) -I../include - HEADERS = -#ifdef FontFormatDefines - FORMAT_DEFS = FontFormatDefines -#endif - -#if defined(SunArchitecture) && (OSMajorVersion == 5) && (OSMinorVersion <= 6) - /* Work around a problem with __ctype being a "relocation against - allocatable but non-writable section" on Solaris 2.6. Hopefully - it doesn't break anything. */ - SYS_DEFINES = -D__XPG4_CHAR_CLASS__ -#endif - - - DEFINES = StrcasecmpDefines $(SYS_DEFINES) $(INTERNALDEFINES) - - SRCS = utilbitmap.c fontnames.c fontutil.c fontxlfd.c format.c \ - fontaccel.c atom.c miscutil.c private.c patcache.c - - OBJS = utilbitmap.o fontnames.o fontutil.o fontxlfd.o format.o \ - fontaccel.o atom.o miscutil.o private.o patcache.o - -#define DoNormalLib NormalLibFont -#define DoSharedLib SharedLibFont -#define DoDebugLib DebugLibFont -#define DoProfileLib ProfileLibFont -#include <Library.tmpl> -LibraryObjectRule() - -SubdirLibraryRule($(OBJS)) -NormalLintTarget($(SRCS)) - -DependTarget() - diff --git a/nx-X11/lib/font/util/atom.c b/nx-X11/lib/font/util/atom.c deleted file mode 100644 index 942ea0d..0000000 --- a/nx-X11/lib/font/util/atom.c +++ /dev/null @@ -1,233 +0,0 @@ -/* $Xorg: atom.c,v 1.5 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/atom.c,v 1.9 2002/09/19 13:22:00 tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -/* lame atom replacement routines for font applications */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> - -typedef struct _AtomList { - char *name; - int len; - int hash; - Atom atom; -} AtomListRec, *AtomListPtr; - -static AtomListPtr *hashTable; - -static int hashSize, hashUsed; -static int hashMask; -static int rehash; - -static AtomListPtr *reverseMap; -static int reverseMapSize; -static Atom lastAtom; - -static int -Hash(char *string, int len) -{ - int h; - - h = 0; - while (len--) - h = (h << 3) ^ *string++; - if (h < 0) - return -h; - return h; -} - -static int -ResizeHashTable (void) -{ - int newHashSize; - int newHashMask; - AtomListPtr *newHashTable; - int i; - int h; - int newRehash; - int r; - - if (hashSize == 0) - newHashSize = 1024; - else - newHashSize = hashSize * 2; - newHashTable = (AtomListPtr *) xalloc (newHashSize * sizeof (AtomListPtr)); - if (!newHashTable) { - fprintf(stderr, "ResizeHashTable(): Error: Couldn't allocate" - " newHashTable (%ld)\n", - newHashSize * (unsigned long)sizeof (AtomListPtr)); - return FALSE; - } - bzero ((char *) newHashTable, newHashSize * sizeof (AtomListPtr)); - newHashMask = newHashSize - 1; - newRehash = (newHashMask - 2); - for (i = 0; i < hashSize; i++) - { - if (hashTable[i]) - { - h = (hashTable[i]->hash) & newHashMask; - if (newHashTable[h]) - { - r = hashTable[i]->hash % newRehash | 1; - do { - h += r; - if (h >= newHashSize) - h -= newHashSize; - } while (newHashTable[h]); - } - newHashTable[h] = hashTable[i]; - } - } - xfree (hashTable); - hashTable = newHashTable; - hashSize = newHashSize; - hashMask = newHashMask; - rehash = newRehash; - return TRUE; -} - -static int -ResizeReverseMap (void) -{ - int ret = TRUE; - if (reverseMapSize == 0) - reverseMapSize = 1000; - else - reverseMapSize *= 2; - reverseMap = (AtomListPtr *) xrealloc (reverseMap, reverseMapSize * sizeof (AtomListPtr)); - if (!reverseMap) { - fprintf(stderr, "ResizeReverseMap(): Error: Couldn't reallocate" - " reverseMap (%ld)\n", - reverseMapSize * (unsigned long)sizeof(AtomListPtr)); - ret = FALSE; - } - return ret; -} - -static int -NameEqual (const char *a, const char *b, int l) -{ - while (l--) - if (*a++ != *b++) - return FALSE; - return TRUE; -} - -Atom -MakeAtom(char *string, unsigned len, int makeit) -{ - AtomListPtr a; - int hash; - int h = 0; - int r; - - hash = Hash (string, len); - if (hashTable) - { - h = hash & hashMask; - if (hashTable[h]) - { - if (hashTable[h]->hash == hash && hashTable[h]->len == len && - NameEqual (hashTable[h]->name, string, len)) - { - return hashTable[h]->atom; - } - r = (hash % rehash) | 1; - for (;;) - { - h += r; - if (h >= hashSize) - h -= hashSize; - if (!hashTable[h]) - break; - if (hashTable[h]->hash == hash && hashTable[h]->len == len && - NameEqual (hashTable[h]->name, string, len)) - { - return hashTable[h]->atom; - } - } - } - } - if (!makeit) - return None; - a = (AtomListPtr) xalloc (sizeof (AtomListRec) + len + 1); - if (a == NULL) { - fprintf(stderr, "MakeAtom(): Error: Couldn't allocate AtomListRec" - " (%ld)\n", (unsigned long)sizeof (AtomListRec) + len + 1); - return None; - } - a->name = (char *) (a + 1); - a->len = len; - strncpy (a->name, string, len); - a->name[len] = '\0'; - a->atom = ++lastAtom; - a->hash = hash; - if (hashUsed >= hashSize / 2) - { - ResizeHashTable (); - h = hash & hashMask; - if (hashTable[h]) - { - r = (hash % rehash) | 1; - do { - h += r; - if (h >= hashSize) - h -= hashSize; - } while (hashTable[h]); - } - } - hashTable[h] = a; - hashUsed++; - if (reverseMapSize <= a->atom) { - if (!ResizeReverseMap()) - return None; - } - reverseMap[a->atom] = a; - return a->atom; -} - -int -ValidAtom(Atom atom) -{ - return (atom != None) && (atom <= lastAtom); -} - -char * -NameForAtom(Atom atom) -{ - if (atom != None && atom <= lastAtom) - return reverseMap[atom]->name; - return NULL; -} diff --git a/nx-X11/lib/font/util/fontaccel.c b/nx-X11/lib/font/util/fontaccel.c deleted file mode 100644 index c37f69a..0000000 --- a/nx-X11/lib/font/util/fontaccel.c +++ /dev/null @@ -1,107 +0,0 @@ -/* $Xorg: fontaccel.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/fontaccel.c,v 1.6 2001/01/17 19:43:33 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> -#include <X11/fonts/fontutil.h> - -void -FontComputeInfoAccelerators(FontInfoPtr pFontInfo) -{ - pFontInfo->noOverlap = FALSE; - if (pFontInfo->maxOverlap <= pFontInfo->minbounds.leftSideBearing) - pFontInfo->noOverlap = TRUE; - - if ((pFontInfo->minbounds.ascent == pFontInfo->maxbounds.ascent) && - (pFontInfo->minbounds.descent == pFontInfo->maxbounds.descent) && - (pFontInfo->minbounds.leftSideBearing == - pFontInfo->maxbounds.leftSideBearing) && - (pFontInfo->minbounds.rightSideBearing == - pFontInfo->maxbounds.rightSideBearing) && - (pFontInfo->minbounds.characterWidth == - pFontInfo->maxbounds.characterWidth) && - (pFontInfo->minbounds.attributes == pFontInfo->maxbounds.attributes)) { - pFontInfo->constantMetrics = TRUE; - if ((pFontInfo->maxbounds.leftSideBearing == 0) && - (pFontInfo->maxbounds.rightSideBearing == - pFontInfo->maxbounds.characterWidth) && - (pFontInfo->maxbounds.ascent == pFontInfo->fontAscent) && - (pFontInfo->maxbounds.descent == pFontInfo->fontDescent)) - pFontInfo->terminalFont = TRUE; - else - pFontInfo->terminalFont = FALSE; - } else { - pFontInfo->constantMetrics = FALSE; - pFontInfo->terminalFont = FALSE; - } - if (pFontInfo->minbounds.characterWidth == pFontInfo->maxbounds.characterWidth) - pFontInfo->constantWidth = TRUE; - else - pFontInfo->constantWidth = FALSE; - - if ((pFontInfo->minbounds.leftSideBearing >= 0) && - (pFontInfo->maxOverlap <= 0) && - (pFontInfo->minbounds.ascent >= -pFontInfo->fontDescent) && - (pFontInfo->maxbounds.ascent <= pFontInfo->fontAscent) && - (-pFontInfo->minbounds.descent <= pFontInfo->fontAscent) && - (pFontInfo->maxbounds.descent <= pFontInfo->fontDescent)) - pFontInfo->inkInside = TRUE; - else - pFontInfo->inkInside = FALSE; -} - -int -FontCouldBeTerminal(FontInfoPtr pFontInfo) -{ - if ((pFontInfo->minbounds.leftSideBearing >= 0) && - (pFontInfo->maxbounds.rightSideBearing <= pFontInfo->maxbounds.characterWidth) && - (pFontInfo->minbounds.characterWidth == pFontInfo->maxbounds.characterWidth) && - (pFontInfo->maxbounds.ascent <= pFontInfo->fontAscent) && - (pFontInfo->maxbounds.descent <= pFontInfo->fontDescent) && - (pFontInfo->maxbounds.leftSideBearing != 0 || - pFontInfo->minbounds.rightSideBearing != pFontInfo->minbounds.characterWidth || - pFontInfo->minbounds.ascent != pFontInfo->fontAscent || - pFontInfo->minbounds.descent != pFontInfo->fontDescent)) { - /* blow off font with nothing but a SPACE */ - if (pFontInfo->maxbounds.ascent == 0 && - pFontInfo->maxbounds.descent == 0) - return FALSE; - return TRUE; - } - return FALSE; -} diff --git a/nx-X11/lib/font/util/fontnames.c b/nx-X11/lib/font/util/fontnames.c deleted file mode 100644 index 2d3a517..0000000 --- a/nx-X11/lib/font/util/fontnames.c +++ /dev/null @@ -1,123 +0,0 @@ -/* $Xorg: fontnames.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/fontnames.c,v 1.4 2001/01/17 19:43:33 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - * - * @(#)fontnames.c 3.1 91/04/10 - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> - -void -FreeFontNames(FontNamesPtr pFN) -{ - int i; - - if (!pFN) - return; - for (i = 0; i < pFN->nnames; i++) { - xfree(pFN->names[i]); - } - xfree(pFN->names); - xfree(pFN->length); - xfree(pFN); -} - -FontNamesPtr -MakeFontNamesRecord(unsigned int size) -{ - FontNamesPtr pFN; - - pFN = (FontNamesPtr) xalloc(sizeof(FontNamesRec)); - if (pFN) { - pFN->nnames = 0; - pFN->size = size; - if (size) - { - pFN->length = (int *) xalloc(size * sizeof(int)); - pFN->names = (char **) xalloc(size * sizeof(char *)); - if (!pFN->length || !pFN->names) { - xfree(pFN->length); - xfree(pFN->names); - xfree(pFN); - pFN = (FontNamesPtr) 0; - } - } - else - { - pFN->length = 0; - pFN->names = 0; - } - } - return pFN; -} - -int -AddFontNamesName(FontNamesPtr names, char *name, int length) -{ - int index = names->nnames; - char *nelt; - - nelt = (char *) xalloc(length + 1); - if (!nelt) - return AllocError; - if (index >= names->size) { - int size = names->size << 1; - int *nlength; - char **nnames; - - if (size == 0) - size = 8; - nlength = (int *) xrealloc(names->length, size * sizeof(int)); - nnames = (char **) xrealloc(names->names, size * sizeof(char *)); - if (nlength && nnames) { - names->size = size; - names->length = nlength; - names->names = nnames; - } else { - xfree(nelt); - xfree(nlength); - xfree(nnames); - return AllocError; - } - } - names->length[index] = length; - names->names[index] = nelt; - strncpy(nelt, name, length); - nelt[length] = '\0'; - names->nnames++; - return Successful; -} diff --git a/nx-X11/lib/font/util/fontutil.c b/nx-X11/lib/font/util/fontutil.c deleted file mode 100644 index 05fe5c2..0000000 --- a/nx-X11/lib/font/util/fontutil.c +++ /dev/null @@ -1,443 +0,0 @@ -/* $Xorg: fontutil.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/fontutil.c,v 3.6 2001/10/28 03:32:46 tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> -#include <X11/fonts/FSproto.h> -#include <X11/fonts/fontutil.h> - -/* Define global here... doesn't hurt the servers, and avoids - unresolved references in font clients. */ - -static int defaultGlyphCachingMode = DEFAULT_GLYPH_CACHING_MODE; -int glyphCachingMode = DEFAULT_GLYPH_CACHING_MODE; - -void -GetGlyphs(FontPtr font, - unsigned long count, - unsigned char *chars, - FontEncoding fontEncoding, - unsigned long *glyphcount, /* RETURN */ - CharInfoPtr *glyphs) /* RETURN */ -{ - (*font->get_glyphs) (font, count, chars, fontEncoding, glyphcount, glyphs); -} - -#define MIN(a,b) ((a)<(b)?(a):(b)) -#define MAX(a,b) ((a)>(b)?(a):(b)) - -void -QueryGlyphExtents(FontPtr pFont, - CharInfoPtr *charinfo, - unsigned long count, - ExtentInfoRec *info) -{ - register unsigned long i; - xCharInfo *pCI; - - info->drawDirection = pFont->info.drawDirection; - - info->fontAscent = pFont->info.fontAscent; - info->fontDescent = pFont->info.fontDescent; - - if (count != 0) { - - pCI = &((*charinfo)->metrics); charinfo++; - /* ignore nonexisting characters when calculating text extents */ - if ( !((pCI->characterWidth == 0) - && (pCI->rightSideBearing == 0) - && (pCI->leftSideBearing == 0) - && (pCI->ascent == 0) - && (pCI->descent == 0)) ) { - info->overallAscent = pCI->ascent; - info->overallDescent = pCI->descent; - info->overallLeft = pCI->leftSideBearing; - info->overallRight = pCI->rightSideBearing; - info->overallWidth = pCI->characterWidth; - } - - if (pFont->info.constantMetrics && pFont->info.noOverlap) { - info->overallWidth *= count; - info->overallRight += (info->overallWidth - - pCI->characterWidth); - } else { - for (i = 1; i < count; i++) { - pCI = &((*charinfo)->metrics); charinfo++; - /* ignore nonexisting characters when calculating extents */ - if ( !((pCI->characterWidth == 0) - && (pCI->rightSideBearing == 0) - && (pCI->leftSideBearing == 0) - && (pCI->ascent == 0) - && (pCI->descent == 0)) ) { - info->overallAscent = MAX( - info->overallAscent, - pCI->ascent); - info->overallDescent = MAX( - info->overallDescent, - pCI->descent); - info->overallLeft = MIN( - info->overallLeft, - info->overallWidth + pCI->leftSideBearing); - info->overallRight = MAX( - info->overallRight, - info->overallWidth + pCI->rightSideBearing); - /* - * yes, this order is correct; overallWidth IS incremented - * last - */ - info->overallWidth += pCI->characterWidth; - } - } - } - } else { - info->overallAscent = 0; - info->overallDescent = 0; - info->overallWidth = 0; - info->overallLeft = 0; - info->overallRight = 0; - } -} - -Bool -QueryTextExtents(FontPtr pFont, - unsigned long count, - unsigned char *chars, - ExtentInfoRec *info) -{ - xCharInfo **charinfo; - unsigned long n; - FontEncoding encoding; - int cm; - int i; - unsigned long t; - xCharInfo *defaultChar = 0; - unsigned char defc[2]; - int firstReal; - - charinfo = (xCharInfo **) xalloc(count * sizeof(xCharInfo *)); - if (!charinfo) - return FALSE; - encoding = TwoD16Bit; - if (pFont->info.lastRow == 0) - encoding = Linear16Bit; - (*pFont->get_metrics) (pFont, count, chars, encoding, &n, charinfo); - - /* Do default character substitution as get_metrics doesn't */ - -#define IsNonExistentChar(ci) (!(ci) || \ - ((ci)->ascent == 0 && \ - (ci)->descent == 0 && \ - (ci)->leftSideBearing == 0 && \ - (ci)->rightSideBearing == 0 && \ - (ci)->characterWidth == 0)) - - firstReal = n; - defc[0] = pFont->info.defaultCh >> 8; - defc[1] = pFont->info.defaultCh; - (*pFont->get_metrics) (pFont, 1, defc, encoding, &t, &defaultChar); - if ((IsNonExistentChar (defaultChar))) - defaultChar = 0; - for (i = 0; i < n; i++) - { - if ((IsNonExistentChar (charinfo[i]))) - { - if (!defaultChar) - continue; - charinfo[i] = defaultChar; - } - if (firstReal == n) - firstReal = i; - } - cm = pFont->info.constantMetrics; - pFont->info.constantMetrics = FALSE; - QueryGlyphExtents(pFont, (CharInfoPtr*) charinfo + firstReal, - n - firstReal, info); - pFont->info.constantMetrics = cm; - xfree(charinfo); - return TRUE; -} - -Bool -ParseGlyphCachingMode(char *str) -{ - if (!strcmp(str, "none")) defaultGlyphCachingMode = CACHING_OFF; - else if (!strcmp(str, "all")) defaultGlyphCachingMode = CACHE_ALL_GLYPHS; - else if (!strcmp(str, "16")) defaultGlyphCachingMode = CACHE_16_BIT_GLYPHS; - else return FALSE; - return TRUE; -} - -void -InitGlyphCaching(void) -{ - /* Set glyphCachingMode to the mode the server hopes to - support. DDX drivers that do not support the requested level - of glyph caching can call SetGlyphCachingMode to lower the - level of support. - */ - - glyphCachingMode = defaultGlyphCachingMode; -} - -/* ddxen can call SetGlyphCachingMode to inform us of what level of glyph - * caching they can support. - */ -void -SetGlyphCachingMode(int newmode) -{ - if ( (glyphCachingMode > newmode) && (newmode >= 0) ) - glyphCachingMode = newmode; -} - -#define range_alloc_granularity 16 -#define mincharp(p) ((p)->min_char_low + ((p)->min_char_high << 8)) -#define maxcharp(p) ((p)->max_char_low + ((p)->max_char_high << 8)) - -/* add_range(): Add range to a list of ranges, with coalescence */ -int -add_range(fsRange *newrange, - int *nranges, - fsRange **range, - Bool charset_subset) -{ - int first, last, middle; - unsigned long keymin, keymax; - unsigned long ptrmin = 0, ptrmax = 0; - fsRange *ptr = NULL, *ptr1, *ptr2, *endptr; - - /* There are two different ways to treat ranges: - - 1) Charset subsetting (support of the HP XLFD enhancements), in - which a range of 0x1234,0x3456 means all numbers between - 0x1234 and 0x3456, and in which min and max might be swapped. - - 2) Row/column ranges, in which a range of 0x1234,0x3456 means the - ranges 0x1234-0x1256, 0x1334-0x1356, ... , 0x3434-0x3456. - This is for support of glyph caching. - - The choice of treatment is selected with the "charset_subset" - flag */ - - /* If newrange covers multiple rows; break up the rows */ - if (!charset_subset && newrange->min_char_high != newrange->max_char_high) - { - int i, err = 0; - fsRange temprange; - for (i = newrange->min_char_high; - i <= newrange->max_char_high; - i++) - { - temprange.min_char_low = newrange->min_char_low; - temprange.max_char_low = newrange->max_char_low; - temprange.min_char_high = temprange.max_char_high = i; - err = add_range(&temprange, nranges, range, charset_subset); - if (err != Successful) break; - } - return err; - } - - keymin = mincharp(newrange); - keymax = maxcharp(newrange); - - if (charset_subset && keymin > keymax) - { - unsigned long temp = keymin; - keymin = keymax; - keymax = temp; - } - - /* add_range() maintains a sorted list; this makes possible coalescence - and binary searches */ - - /* Binary search for a range with which the new range can merge */ - - first = middle = 0; - last = *nranges - 1; - while (last >= first) - { - middle = (first + last) / 2; - ptr = (*range) + middle; - ptrmin = mincharp(ptr); - ptrmax = maxcharp(ptr); - - if (ptrmin > 0 && keymax < ptrmin - 1) last = middle - 1; - else if (keymin > ptrmax + 1) first = middle + 1; - else if (!charset_subset) - { - /* We might have a range with which to merge... IF the - result doesn't cross rows */ - if (newrange->min_char_high != ptr->min_char_high) - last = first - 1; /* Force adding a new range */ - break; - } - else break; /* We have at least one range with which we can merge */ - } - - if (last < first) - { - /* Search failed; we need to add a new range to the list. */ - - /* Grow the list if necessary */ - if (*nranges == 0 || *range == (fsRange *)0) - { - *range = (fsRange *)xalloc(range_alloc_granularity * - SIZEOF(fsRange)); - *nranges = 0; - } - else if (!(*nranges % range_alloc_granularity)) - { - *range = (fsRange *)xrealloc((char *)*range, - (*nranges + range_alloc_granularity) * - SIZEOF(fsRange)); - } - - /* If alloc failed, just return a null list */ - if (*range == (fsRange *)0) - { - *nranges = 0; - return AllocError; - } - - /* Should new entry go *at* or *after* ptr? */ - ptr = (*range) + middle; - if (middle < *nranges && keymin > ptrmin) ptr++; /* after */ - - /* Open up a space for our new range */ - memmove((char *)(ptr + 1), - (char *)ptr, - (char *)(*range + *nranges) - (char *)ptr); - - /* Insert the new range */ - ptr->min_char_low = keymin & 0xff; - ptr->min_char_high = keymin >> 8; - ptr->max_char_low = keymax & 0xff; - ptr->max_char_high = keymax >> 8; - - /* Update range count */ - (*nranges)++; - - /* Done */ - return Successful; - } - - /* Join our new range to that pointed to by "ptr" */ - if (keymin < ptrmin) - { - ptr->min_char_low = keymin & 0xff; - ptr->min_char_high = keymin >> 8; - } - if (keymax > ptrmax) - { - ptr->max_char_low = keymax & 0xff; - ptr->max_char_high = keymax >> 8; - } - - ptrmin = mincharp(ptr); - ptrmax = maxcharp(ptr); - - endptr = *range + *nranges; - - for (ptr1 = ptr; ptr1 >= *range; ptr1--) - { - if (ptrmin <= maxcharp(ptr1) + 1) - { - if (!charset_subset && ptr->min_char_high != ptr1->min_char_high) - break; - if (ptrmin >= mincharp(ptr1)) - ptrmin = mincharp(ptr1); - } - else break; - } - for (ptr2 = ptr; ptr2 < endptr; ptr2++) - { - if ((ptr2->min_char_low == 0 && ptr2->min_char_high == 0) || - ptrmax >= mincharp(ptr2) - 1) - { - if (!charset_subset && ptr->min_char_high != ptr2->min_char_high) - break; - if (ptrmax <= maxcharp(ptr2)) - ptrmax = maxcharp(ptr2); - } - else break; - } - - /* We need to coalesce ranges between ptr1 and ptr2 exclusive */ - ptr1++; - ptr2--; - if (ptr1 != ptr2) - { - memmove(ptr1, ptr2, (char *)endptr - (char *)ptr2); - *nranges -= (ptr2 - ptr1); - } - - /* Write the new range into the range list */ - ptr1->min_char_low = ptrmin & 0xff; - ptr1->min_char_high = ptrmin >> 8; - ptr1->max_char_low = ptrmax & 0xff; - ptr1->max_char_high = ptrmax >> 8; - - return Successful; -} - -/* It is difficult to find a good place for this. */ -#ifdef NEED_STRCASECMP -int -f_strcasecmp(const char *s1, const char *s2) -{ - char c1, c2; - - if (*s1 == 0) - if (*s2 == 0) - return 0; - else - return 1; - - c1 = (isupper (*s1) ? tolower (*s1) : *s1); - c2 = (isupper (*s2) ? tolower (*s2) : *s2); - while (c1 == c2) { - if (c1 == '\0') - return 0; - s1++; - s2++; - c1 = (isupper (*s1) ? tolower (*s1) : *s1); - c2 = (isupper (*s2) ? tolower (*s2) : *s2); - } - return c1 - c2; -} -#endif - diff --git a/nx-X11/lib/font/util/fontxlfd.c b/nx-X11/lib/font/util/fontxlfd.c deleted file mode 100644 index 7adf74f..0000000 --- a/nx-X11/lib/font/util/fontxlfd.c +++ /dev/null @@ -1,637 +0,0 @@ -/* $Xorg: fontxlfd.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/fontxlfd.c,v 3.16tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> -#include <X11/fonts/fontxlfd.h> -#include <X11/fonts/fontutil.h> -#include <X11/Xos.h> -#include <math.h> -#include <stdlib.h> -#if defined(sony) && !defined(SYSTYPE_SYSV) && !defined(_SYSTYPE_SYSV) -#define NO_LOCALE -#endif -#ifndef NO_LOCALE -#include <locale.h> -#endif -#include <ctype.h> -#include <stdio.h> /* for sprintf() */ - -static char * -GetInt(char *ptr, int *val) -{ - if (*ptr == '*') { - *val = -1; - ptr++; - } else - for (*val = 0; *ptr >= '0' && *ptr <= '9';) - *val = *val * 10 + *ptr++ - '0'; - if (*ptr == '-') - return ptr; - return (char *) 0; -} - -#define minchar(p) ((p).min_char_low + ((p).min_char_high << 8)) -#define maxchar(p) ((p).max_char_low + ((p).max_char_high << 8)) - - -#ifndef NO_LOCALE -static struct lconv *locale = 0; -#endif -static char *radix = ".", *plus = "+", *minus = "-"; - -static char * -readreal(char *ptr, double *result) -{ - char buffer[80], *p1, *p2; - -#ifndef NO_LOCALE - /* Figure out what symbols apply in this locale */ - - if (!locale) - { - locale = localeconv(); - if (locale->decimal_point && *locale->decimal_point) - radix = locale->decimal_point; - if (locale->positive_sign && *locale->positive_sign) - plus = locale->positive_sign; - if (locale->negative_sign && *locale->negative_sign) - minus = locale->negative_sign; - } -#endif - /* Copy the first 80 chars of ptr into our local buffer, changing - symbols as needed. */ - for (p1 = ptr, p2 = buffer; - *p1 && (p2 - buffer) < sizeof(buffer) - 1; - p1++, p2++) - { - switch(*p1) - { - case '~': *p2 = *minus; break; - case '+': *p2 = *plus; break; - case '.': *p2 = *radix; break; - default: *p2 = *p1; - } - } - *p2 = 0; - - /* Now we have something that strtod() can interpret... do it. */ - *result = strtod(buffer, &p1); - /* Return NULL if failure, pointer past number if success */ - return (p1 == buffer) ? (char *)0 : (ptr + (p1 - buffer)); -} - -static char * -xlfd_double_to_text(double value, char *buffer, int space_required) -{ - char formatbuf[40]; - register char *p1; - int ndigits, exponent; - -#ifndef NO_LOCALE - if (!locale) - { - locale = localeconv(); - if (locale->decimal_point && *locale->decimal_point) - radix = locale->decimal_point; - if (locale->positive_sign && *locale->positive_sign) - plus = locale->positive_sign; - if (locale->negative_sign && *locale->negative_sign) - minus = locale->negative_sign; - } -#endif - /* Compute a format to use to render the number */ - sprintf(formatbuf, "%%.%dle", XLFD_NDIGITS); - - if (space_required) - *buffer++ = ' '; - - /* Render the number using printf's idea of formatting */ - sprintf(buffer, formatbuf, value); - - /* Find and read the exponent value */ - for (p1 = buffer + strlen(buffer); - *p1-- != 'e' && p1[1] != 'E';); - exponent = atoi(p1 + 2); - if (value == 0.0) exponent = 0; - - /* Figure out how many digits are significant */ - while (p1 >= buffer && (!isdigit(*p1) || *p1 == '0')) p1--; - ndigits = 0; - while (p1 >= buffer) if (isdigit(*p1--)) ndigits++; - - /* Figure out notation to use */ - if (exponent >= XLFD_NDIGITS || ndigits - exponent > XLFD_NDIGITS + 1) - { - /* Scientific */ - sprintf(formatbuf, "%%.%dle", ndigits - 1); - sprintf(buffer, formatbuf, value); - } - else - { - /* Fixed */ - ndigits -= exponent + 1; - if (ndigits < 0) ndigits = 0; - sprintf(formatbuf, "%%.%dlf", ndigits); - sprintf(buffer, formatbuf, value); - if (exponent < 0) - { - p1 = buffer; - while (*p1 && *p1 != '0') p1++; - while (*p1++) p1[-1] = *p1; - } - } - - /* Last step, convert the locale-specific sign and radix characters - to our own. */ - for (p1 = buffer; *p1; p1++) - { - if (*p1 == *minus) *p1 = '~'; - else if (*p1 == *plus) *p1 = '+'; - else if (*p1 == *radix) *p1 = '.'; - } - - return buffer - space_required; -} - -double -xlfd_round_double(double x) -{ - /* Utility for XLFD users to round numbers to XLFD_NDIGITS - significant digits. How do you round to n significant digits on - a binary machine? */ - -#if defined(i386) || defined(__i386__) || \ - defined(ia64) || defined(__ia64__) || \ - defined(__alpha__) || defined(__alpha) || \ - defined(__hppa__) || \ - defined(__amd64__) || defined(__amd64) || \ - defined(sgi) -#if !defined(__UNIXOS2__) -#include <float.h> - -/* if we have IEEE 754 fp, we can round to binary digits... */ - -#if (FLT_RADIX == 2) && (DBL_DIG == 15) && (DBL_MANT_DIG == 53) - -#ifndef M_LN2 -#define M_LN2 0.69314718055994530942 -#endif -#ifndef M_LN10 -#define M_LN10 2.30258509299404568402 -#endif - -/* convert # of decimal digits to # of binary digits */ -#define XLFD_NDIGITS_2 ((int)(XLFD_NDIGITS * M_LN10 / M_LN2 + 0.5)) - - union conv_d { - double d; - unsigned char b[8]; - } d; - int i,j,k,d_exp; - - if (x == 0) - return x; - - /* do minor sanity check for IEEE 754 fp and correct byte order */ - d.d = 1.0; - if (sizeof(double) == 8 && d.b[7] == 0x3f && d.b[6] == 0xf0) { - - /* - * this code will round IEEE 754 double to XLFD_NDIGITS_2 binary digits - */ - - d.d = x; - d_exp = (d.b[7] << 4) | (d.b[6] >> 4); - - i = (DBL_MANT_DIG-XLFD_NDIGITS_2) >> 3; - j = 1 << ((DBL_MANT_DIG-XLFD_NDIGITS_2) & 0x07); - for (; i<7; i++) { - k = d.b[i] + j; - d.b[i] = k; - if (k & 0x100) j = 1; - else break; - } - if ((i==7) && ((d.b[6] & 0xf0) != ((d_exp<<4) & 0xf0))) { - /* mantissa overflow: increment exponent */ - d_exp = (d_exp & 0x800 ) | ((d_exp & 0x7ff) + 1); - d.b[7] = d_exp >> 4; - d.b[6] = (d.b[6] & 0x0f) | (d_exp << 4); - } - - i = (DBL_MANT_DIG-XLFD_NDIGITS_2) >> 3; - j = 1 << ((DBL_MANT_DIG-XLFD_NDIGITS_2) & 0x07); - d.b[i] &= ~(j-1); - for (;--i>=0;) d.b[i] = 0; - - return d.d; - } - else -#endif -#endif /* !__UNIXOS2__ */ -#endif /* i386 || __i386__ */ - { - /* - * If not IEEE 754: Let printf() do it for you. - */ - - char formatbuf[40], buffer[40]; - - sprintf(formatbuf, "%%.%dlg", XLFD_NDIGITS); - sprintf(buffer, formatbuf, x); - return atof(buffer); - } -} - -static char * -GetMatrix(char *ptr, FontScalablePtr vals, int which) -{ - double *matrix; - - if (which == PIXELSIZE_MASK) - matrix = vals->pixel_matrix; - else if (which == POINTSIZE_MASK) - matrix = vals->point_matrix; - else return (char *)0; - - while (isspace(*ptr)) ptr++; - if (*ptr == '[') - { - /* This is a matrix containing real numbers. It would be nice - to use strtod() or sscanf() to read the numbers, but those - don't handle '~' for minus and we cannot force them to use a - "." for the radix. We'll have to do the hard work ourselves - (in readreal()). */ - - if ((ptr = readreal(++ptr, matrix + 0)) && - (ptr = readreal(ptr, matrix + 1)) && - (ptr = readreal(ptr, matrix + 2)) && - (ptr = readreal(ptr, matrix + 3))) - { - while (isspace(*ptr)) ptr++; - if (*ptr != ']') - ptr = (char *)0; - else - { - ptr++; - while (isspace(*ptr)) ptr++; - if (*ptr == '-') - { - if (which == POINTSIZE_MASK) - vals->values_supplied |= POINTSIZE_ARRAY; - else - vals->values_supplied |= PIXELSIZE_ARRAY; - } - else ptr = (char *)0; - } - } - } - else - { - int value; - if ((ptr = GetInt(ptr, &value))) - { - vals->values_supplied &= ~which; - if (value > 0) - { - matrix[3] = (double)value; - if (which == POINTSIZE_MASK) - { - matrix[3] /= 10.0; - vals->values_supplied |= POINTSIZE_SCALAR; - } - else - vals->values_supplied |= PIXELSIZE_SCALAR; - /* If we're concocting the pixelsize array from a scalar, - we will need to normalize element 0 for the pixel shape. - This is done in FontFileCompleteXLFD(). */ - matrix[0] = matrix[3]; - matrix[1] = matrix[2] = 0.0; - } - else if (value < 0) - { - if (which == POINTSIZE_MASK) - vals->values_supplied |= POINTSIZE_WILDCARD; - else - vals->values_supplied |= PIXELSIZE_WILDCARD; - } - } - } - return ptr; -} - - -static void -append_ranges(char *fname, int nranges, fsRange *ranges) -{ - if (nranges) - { - int i; - - strcat(fname, "["); - for (i = 0; i < nranges && strlen(fname) < 1010; i++) - { - if (i) strcat(fname, " "); - sprintf(fname + strlen(fname), "%d", - minchar(ranges[i])); - if (ranges[i].min_char_low == - ranges[i].max_char_low && - ranges[i].min_char_high == - ranges[i].max_char_high) continue; - sprintf(fname + strlen(fname), "_%d", - maxchar(ranges[i])); - } - strcat(fname, "]"); - } -} - -Bool -FontParseXLFDName(char *fname, FontScalablePtr vals, int subst) -{ - register char *ptr; - register char *ptr1, - *ptr2, - *ptr3, - *ptr4; - register char *ptr5; - FontScalableRec tmpvals; - char replaceChar = '0'; - char tmpBuf[1024]; - int spacingLen; - int l; - char *p; - - bzero(&tmpvals, sizeof(tmpvals)); - if (subst != FONT_XLFD_REPLACE_VALUE) - *vals = tmpvals; - - if (!(*(ptr = fname) == '-' || (*ptr++ == '*' && *ptr == '-')) || /* fndry */ - !(ptr = strchr(ptr + 1, '-')) || /* family_name */ - !(ptr1 = ptr = strchr(ptr + 1, '-')) || /* weight_name */ - !(ptr = strchr(ptr + 1, '-')) || /* slant */ - !(ptr = strchr(ptr + 1, '-')) || /* setwidth_name */ - !(ptr = strchr(ptr + 1, '-')) || /* add_style_name */ - !(ptr = strchr(ptr + 1, '-')) || /* pixel_size */ - !(ptr = GetMatrix(ptr + 1, &tmpvals, PIXELSIZE_MASK)) || - !(ptr2 = ptr = GetMatrix(ptr + 1, &tmpvals, POINTSIZE_MASK)) || - !(ptr = GetInt(ptr + 1, &tmpvals.x)) || /* resolution_x */ - !(ptr3 = ptr = GetInt(ptr + 1, &tmpvals.y)) || /* resolution_y */ - !(ptr4 = ptr = strchr(ptr + 1, '-')) || /* spacing */ - !(ptr5 = ptr = GetInt(ptr + 1, &tmpvals.width)) || /* average_width */ - !(ptr = strchr(ptr + 1, '-')) || /* charset_registry */ - strchr(ptr + 1, '-'))/* charset_encoding */ - return FALSE; - - /* Lop off HP charset subsetting enhancement. Interpreting this - field requires allocating some space in which to return the - results. So, to prevent memory leaks, this procedure will simply - lop off and ignore charset subsetting, and initialize the - relevant vals fields to zero. It's up to the caller to make its - own call to FontParseRanges() if it's interested in the charset - subsetting. */ - - if (subst != FONT_XLFD_REPLACE_NONE && - (p = strchr(strrchr(fname, '-'), '['))) - { - tmpvals.values_supplied |= CHARSUBSET_SPECIFIED; - *p = '\0'; - } - - /* Fill in deprecated fields for the benefit of rasterizers that care - about them. */ - tmpvals.pixel = (tmpvals.pixel_matrix[3] >= 0) ? - (int)(tmpvals.pixel_matrix[3] + .5) : - (int)(tmpvals.pixel_matrix[3] - .5); - tmpvals.point = (tmpvals.point_matrix[3] >= 0) ? - (int)(tmpvals.point_matrix[3] * 10 + .5) : - (int)(tmpvals.point_matrix[3] * 10 - .5); - - spacingLen = ptr4 - ptr3 + 1; - - switch (subst) { - case FONT_XLFD_REPLACE_NONE: - *vals = tmpvals; - break; - case FONT_XLFD_REPLACE_STAR: - replaceChar = '*'; - case FONT_XLFD_REPLACE_ZERO: - strcpy(tmpBuf, ptr2); - ptr5 = tmpBuf + (ptr5 - ptr2); - ptr3 = tmpBuf + (ptr3 - ptr2); - ptr2 = tmpBuf; - ptr = ptr1 + 1; - - ptr = strchr(ptr, '-') + 1; /* skip weight */ - ptr = strchr(ptr, '-') + 1; /* skip slant */ - ptr = strchr(ptr, '-') + 1; /* skip setwidth_name */ - ptr = strchr(ptr, '-') + 1; /* skip add_style_name */ - - if ((ptr - fname) + spacingLen + strlen(ptr5) + 10 >= (unsigned)1024) - return FALSE; - *ptr++ = replaceChar; - *ptr++ = '-'; - *ptr++ = replaceChar; - *ptr++ = '-'; - *ptr++ = '*'; - *ptr++ = '-'; - *ptr++ = '*'; - if (spacingLen > 2) - { - memmove(ptr, ptr3, spacingLen); - ptr += spacingLen; - } - else - { - *ptr++ = '-'; - *ptr++ = '*'; - *ptr++ = '-'; - } - *ptr++ = replaceChar; - strcpy(ptr, ptr5); - *vals = tmpvals; - break; - case FONT_XLFD_REPLACE_VALUE: - if (vals->values_supplied & PIXELSIZE_MASK) - { - tmpvals.values_supplied = - (tmpvals.values_supplied & ~PIXELSIZE_MASK) | - (vals->values_supplied & PIXELSIZE_MASK); - tmpvals.pixel_matrix[0] = vals->pixel_matrix[0]; - tmpvals.pixel_matrix[1] = vals->pixel_matrix[1]; - tmpvals.pixel_matrix[2] = vals->pixel_matrix[2]; - tmpvals.pixel_matrix[3] = vals->pixel_matrix[3]; - } - if (vals->values_supplied & POINTSIZE_MASK) - { - tmpvals.values_supplied = - (tmpvals.values_supplied & ~POINTSIZE_MASK) | - (vals->values_supplied & POINTSIZE_MASK); - tmpvals.point_matrix[0] = vals->point_matrix[0]; - tmpvals.point_matrix[1] = vals->point_matrix[1]; - tmpvals.point_matrix[2] = vals->point_matrix[2]; - tmpvals.point_matrix[3] = vals->point_matrix[3]; - } - if (vals->x >= 0) - tmpvals.x = vals->x; - if (vals->y >= 0) - tmpvals.y = vals->y; - if (vals->width >= 0) - tmpvals.width = vals->width; - else if (vals->width < -1) /* overload: -1 means wildcard */ - tmpvals.width = -vals->width; - - - p = ptr1 + 1; /* weight field */ - l = strchr(p, '-') - p; - sprintf(tmpBuf, "%*.*s", l, l, p); - - p += l + 1; /* slant field */ - l = strchr(p, '-') - p; - sprintf(tmpBuf + strlen(tmpBuf), "-%*.*s", l, l, p); - - p += l + 1; /* setwidth_name */ - l = strchr(p, '-') - p; - sprintf(tmpBuf + strlen(tmpBuf), "-%*.*s", l, l, p); - - p += l + 1; /* add_style_name field */ - l = strchr(p, '-') - p; - sprintf(tmpBuf + strlen(tmpBuf), "-%*.*s", l, l, p); - - strcat(tmpBuf, "-"); - if ((tmpvals.values_supplied & PIXELSIZE_MASK) == PIXELSIZE_ARRAY) - { - char buffer[80]; - strcat(tmpBuf, "["); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.pixel_matrix[0], - buffer, 0)); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.pixel_matrix[1], - buffer, 1)); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.pixel_matrix[2], - buffer, 1)); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.pixel_matrix[3], - buffer, 1)); - strcat(tmpBuf, "]"); - } - else - { - sprintf(tmpBuf + strlen(tmpBuf), "%d", - (int)(tmpvals.pixel_matrix[3] + .5)); - } - strcat(tmpBuf, "-"); - if ((tmpvals.values_supplied & POINTSIZE_MASK) == POINTSIZE_ARRAY) - { - char buffer[80]; - strcat(tmpBuf, "["); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.point_matrix[0], - buffer, 0)); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.point_matrix[1], - buffer, 1)); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.point_matrix[2], - buffer, 1)); - strcat(tmpBuf, xlfd_double_to_text(tmpvals.point_matrix[3], - buffer, 1)); - strcat(tmpBuf, "]"); - } - else - { - sprintf(tmpBuf + strlen(tmpBuf), "%d", - (int)(tmpvals.point_matrix[3] * 10.0 + .5)); - } - sprintf(tmpBuf + strlen(tmpBuf), "-%d-%d%*.*s%d%s", - tmpvals.x, tmpvals.y, - spacingLen, spacingLen, ptr3, tmpvals.width, ptr5); - strcpy(ptr1 + 1, tmpBuf); - if ((vals->values_supplied & CHARSUBSET_SPECIFIED) && !vals->nranges) - strcat(fname, "[]"); - else - append_ranges(fname, vals->nranges, vals->ranges); - break; - } - return TRUE; -} - -fsRange *FontParseRanges(char *name, int *nranges) -{ - int n; - unsigned long l; - char *p1, *p2; - fsRange *result = (fsRange *)0; - - name = strchr(name, '-'); - for (n = 1; name && n < 14; n++) - name = strchr(name + 1, '-'); - - *nranges = 0; - if (!name || !(p1 = strchr(name, '['))) return (fsRange *)0; - p1++; - - while (*p1 && *p1 != ']') - { - fsRange thisrange; - - l = strtol(p1, &p2, 0); - if (p2 == p1 || l > 0xffff) break; - thisrange.max_char_low = thisrange.min_char_low = l & 0xff; - thisrange.max_char_high = thisrange.min_char_high = l >> 8; - - p1 = p2; - if (*p1 == ']' || *p1 == ' ') - { - while (*p1 == ' ') p1++; - if (add_range(&thisrange, nranges, &result, TRUE) != Successful) - break; - } - else if (*p1 == '_') - { - l = strtol(++p1, &p2, 0); - if (p2 == p1 || l > 0xffff) break; - thisrange.max_char_low = l & 0xff; - thisrange.max_char_high = l >> 8; - p1 = p2; - if (*p1 == ']' || *p1 == ' ') - { - while (*p1 == ' ') p1++; - if (add_range(&thisrange, nranges, &result, TRUE) != Successful) - break; - } - } - else break; - } - - return result; -} diff --git a/nx-X11/lib/font/util/format.c b/nx-X11/lib/font/util/format.c deleted file mode 100644 index 6700721..0000000 --- a/nx-X11/lib/font/util/format.c +++ /dev/null @@ -1,126 +0,0 @@ -/* $Xorg: format.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ -/* - * Copyright 1990, 1991 Network Computing Devices; - * Portions Copyright 1987 by Digital Equipment Corporation - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the names of Network Computing Devices or Digital - * not be used in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. Network Computing - * Devices and Digital make no representations about the suitability of - * this software for any purpose. It is provided "as is" without express - * or implied warranty. - * - * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL BE - * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -/* - -Copyright 1987, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/format.c,v 1.4 2001/01/17 19:43:33 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/FSproto.h> -#include <X11/fonts/font.h> -#include <X11/fonts/fontstruct.h> -#include <X11/fonts/fontutil.h> - -int -CheckFSFormat(fsBitmapFormat format, - fsBitmapFormatMask fmask, - int *bit_order, - int *byte_order, - int *scan, - int *glyph, - int *image) -{ - /* convert format to what the low levels want */ - if (fmask & BitmapFormatMaskBit) { - *bit_order = format & BitmapFormatBitOrderMask; - *bit_order = (*bit_order == BitmapFormatBitOrderMSB) - ? MSBFirst : LSBFirst; - } - if (fmask & BitmapFormatMaskByte) { - *byte_order = format & BitmapFormatByteOrderMask; - *byte_order = (*byte_order == BitmapFormatByteOrderMSB) - ? MSBFirst : LSBFirst; - } - if (fmask & BitmapFormatMaskScanLineUnit) { - *scan = format & BitmapFormatScanlineUnitMask; - /* convert byte paddings into byte counts */ - switch (*scan) { - case BitmapFormatScanlineUnit8: - *scan = 1; - break; - case BitmapFormatScanlineUnit16: - *scan = 2; - break; - case BitmapFormatScanlineUnit32: - *scan = 4; - break; - default: - return BadFontFormat; - } - } - if (fmask & BitmapFormatMaskScanLinePad) { - *glyph = format & BitmapFormatScanlinePadMask; - /* convert byte paddings into byte counts */ - switch (*glyph) { - case BitmapFormatScanlinePad8: - *glyph = 1; - break; - case BitmapFormatScanlinePad16: - *glyph = 2; - break; - case BitmapFormatScanlinePad32: - *glyph = 4; - break; - default: - return BadFontFormat; - } - } - if (fmask & BitmapFormatMaskImageRectangle) { - *image = format & BitmapFormatImageRectMask; - - if (*image != BitmapFormatImageRectMin && - *image != BitmapFormatImageRectMaxWidth && - *image != BitmapFormatImageRectMax) - return BadFontFormat; - } - return Successful; -} diff --git a/nx-X11/lib/font/util/miscutil.c b/nx-X11/lib/font/util/miscutil.c deleted file mode 100644 index 03b4d06..0000000 --- a/nx-X11/lib/font/util/miscutil.c +++ /dev/null @@ -1,99 +0,0 @@ -/* $Xorg: miscutil.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/miscutil.c,v 1.7 2001/07/25 15:04:57 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xosdefs.h> -#include <stdlib.h> -#include <X11/fonts/fontmisc.h> - -#define XK_LATIN1 -#include <X11/keysymdef.h> -/* #include <X11/Xmu/CharSet.h> */ - -/* make sure everything initializes themselves at least once */ - -long serverGeneration = 1; - -void * -Xalloc (unsigned long m) -{ - return malloc (m); -} - -void * -Xrealloc (void *n, unsigned long m) -{ - if (!n) - return malloc (m); - else - return realloc (n, m); -} - -void -Xfree (void *n) -{ - if (n) - free (n); -} - -void * -Xcalloc (unsigned long n) -{ - return calloc (n, 1); -} - -void -CopyISOLatin1Lowered (char *dst, char *src, int len) -{ - register unsigned char *dest, *source; - - for (dest = (unsigned char *)dst, source = (unsigned char *)src; - *source && len > 0; - source++, dest++, len--) - { - if ((*source >= XK_A) && (*source <= XK_Z)) - *dest = *source + (XK_a - XK_A); - else if ((*source >= XK_Agrave) && (*source <= XK_Odiaeresis)) - *dest = *source + (XK_agrave - XK_Agrave); - else if ((*source >= XK_Ooblique) && (*source <= XK_Thorn)) - *dest = *source + (XK_oslash - XK_Ooblique); - else - *dest = *source; - } - *dest = '\0'; -} - -void -register_fpe_functions () -{ -} diff --git a/nx-X11/lib/font/util/patcache.c b/nx-X11/lib/font/util/patcache.c deleted file mode 100644 index 0351b1a..0000000 --- a/nx-X11/lib/font/util/patcache.c +++ /dev/null @@ -1,221 +0,0 @@ -/* $Xorg: patcache.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/patcache.c,v 3.4 2001/01/17 19:43:33 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> - -/* - * Static sized hash table for looking up font name patterns - * - * LRU entries, reusing old entries - */ - -#define NBUCKETS 16 -#define NENTRIES 64 - -#define UNSET (NENTRIES+1) - -typedef unsigned char EntryPtr; - -typedef struct _FontPatternCacheEntry { - struct _FontPatternCacheEntry *next, **prev; - short patlen; - char *pattern; - int hash; - FontPtr pFont; /* associated font */ -} FontPatternCacheEntryRec, *FontPatternCacheEntryPtr; - -typedef struct _FontPatternCache { - FontPatternCacheEntryPtr buckets[NBUCKETS]; - FontPatternCacheEntryRec entries[NENTRIES]; - FontPatternCacheEntryPtr free; -} FontPatternCacheRec; - -/* Empty cache (for rehash) */ -void -EmptyFontPatternCache (FontPatternCachePtr cache) -{ - int i; - - for (i = 0; i < NBUCKETS; i++) - cache->buckets[i] = 0; - for (i = 0; i < NENTRIES; i++) - { - cache->entries[i].next = &cache->entries[i+1]; - cache->entries[i].prev = 0; - cache->entries[i].pFont = 0; - xfree (cache->entries[i].pattern); - cache->entries[i].pattern = 0; - cache->entries[i].patlen = 0; - } - cache->free = &cache->entries[0]; - cache->entries[NENTRIES - 1].next = 0; -} - -/* Create and initialize cache */ -FontPatternCachePtr -MakeFontPatternCache (void) -{ - FontPatternCachePtr cache; - int i; - cache = (FontPatternCachePtr) xalloc (sizeof *cache); - if (!cache) - return 0; - for (i = 0; i < NENTRIES; i++) { - cache->entries[i].patlen = 0; - cache->entries[i].pattern = 0; - cache->entries[i].pFont = 0; - } - EmptyFontPatternCache (cache); - return cache; -} - -/* toss cache */ -void -FreeFontPatternCache (FontPatternCachePtr cache) -{ - int i; - - for (i = 0; i < NENTRIES; i++) - xfree (cache->entries[i].pattern); - xfree (cache); -} - -/* compute id for string */ -static int -Hash (const char *string, int len) -{ - int hash; - - hash = 0; - while (len--) - hash = (hash << 1) ^ *string++; - if (hash < 0) - hash = -hash; - return hash; -} - -/* add entry */ -void -CacheFontPattern (FontPatternCachePtr cache, - char *pattern, - int patlen, - FontPtr pFont) -{ - FontPatternCacheEntryPtr e; - char *newpat; - int i; - - newpat = (char *) xalloc (patlen); - if (!newpat) - return; - if (cache->free) - { - e = cache->free; - cache->free = e->next; - } - else - { - i = rand (); - if (i < 0) - i = -i; - i %= NENTRIES; - e = &cache->entries[i]; - if (e->next) - e->next->prev = e->prev; - *e->prev = e->next; - xfree (e->pattern); - } - /* set pattern */ - memcpy (newpat, pattern, patlen); - e->pattern = newpat; - e->patlen = patlen; - /* link to new hash chain */ - e->hash = Hash (pattern, patlen); - i = e->hash % NBUCKETS; - e->next = cache->buckets[i]; - if (e->next) - e->next->prev = &(e->next); - cache->buckets[i] = e; - e->prev = &(cache->buckets[i]); - e->pFont = pFont; -} - -/* find matching entry */ -FontPtr -FindCachedFontPattern (FontPatternCachePtr cache, - char *pattern, - int patlen) -{ - int hash; - int i; - FontPatternCacheEntryPtr e; - - hash = Hash (pattern, patlen); - i = hash % NBUCKETS; - for (e = cache->buckets[i]; e; e = e->next) - { - if (e->patlen == patlen && e->hash == hash && - !memcmp (e->pattern, pattern, patlen)) - { - return e->pFont; - } - } - return 0; -} - -void -RemoveCachedFontPattern (FontPatternCachePtr cache, - FontPtr pFont) -{ - FontPatternCacheEntryPtr e; - int i; - - for (i = 0; i < NENTRIES; i++) - { - if ((e = &cache->entries[i])->pFont == pFont) - { - e->pFont = 0; - if (e->next) - e->next->prev = e->prev; - *e->prev = e->next; - e->next = cache->free; - cache->free = e; - xfree (e->pattern); - e->pattern = 0; - } - } -} diff --git a/nx-X11/lib/font/util/private.c b/nx-X11/lib/font/util/private.c deleted file mode 100644 index 85e90e5..0000000 --- a/nx-X11/lib/font/util/private.c +++ /dev/null @@ -1,107 +0,0 @@ -/* $Xorg: private.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/private.c,v 1.8tsi Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> -#include <X11/fonts/fontstruct.h> - -static int _FontPrivateAllocateIndex = 0; - -int -AllocateFontPrivateIndex (void) -{ - return _FontPrivateAllocateIndex++; -} - -FontPtr -CreateFontRec (void) -{ - FontPtr pFont; - int size; - - size = sizeof(FontRec) + (sizeof(pointer) * _FontPrivateAllocateIndex); - - pFont = (FontPtr)xalloc(size); - - if(pFont) { - bzero((char*)pFont, size); - pFont->maxPrivate = _FontPrivateAllocateIndex - 1; - if(_FontPrivateAllocateIndex) - pFont->devPrivates = (pointer)(&pFont[1]); - } - - return pFont; -} - -void -DestroyFontRec (FontPtr pFont) -{ - if (pFont->devPrivates && pFont->devPrivates != (pointer)(&pFont[1])) - xfree(pFont->devPrivates); - xfree(pFont); -} - -void -ResetFontPrivateIndex (void) -{ - _FontPrivateAllocateIndex = 0; -} - -Bool -_FontSetNewPrivate (FontPtr pFont, int n, pointer ptr) -{ - pointer *new; - - if (n > pFont->maxPrivate) { - if (pFont->devPrivates && pFont->devPrivates != (pointer)(&pFont[1])) { - new = (pointer *) xrealloc (pFont->devPrivates, (n + 1) * sizeof (pointer)); - if (!new) - return FALSE; - } else { - new = (pointer *) xalloc ((n + 1) * sizeof (pointer)); - if (!new) - return FALSE; - if (pFont->devPrivates) - memcpy (new, pFont->devPrivates, (pFont->maxPrivate + 1) * sizeof (pointer)); - } - pFont->devPrivates = new; - /* zero out new, uninitialized privates */ - while(++pFont->maxPrivate < n) - pFont->devPrivates[pFont->maxPrivate] = (pointer)0; - } - pFont->devPrivates[n] = ptr; - return TRUE; -} - diff --git a/nx-X11/lib/font/util/utilbitmap.c b/nx-X11/lib/font/util/utilbitmap.c deleted file mode 100644 index a817a4e..0000000 --- a/nx-X11/lib/font/util/utilbitmap.c +++ /dev/null @@ -1,188 +0,0 @@ -/* $Xorg: utilbitmap.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */ - -/* - -Copyright 1990, 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/utilbitmap.c,v 1.4 2001/01/17 19:43:34 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/fonts/fontmisc.h> - -/* Utility functions for reformating font bitmaps */ - -static unsigned char _reverse_byte[0x100] = { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff -}; - -/* - * Invert bit order within each BYTE of an array. - */ -void -BitOrderInvert(unsigned char *buf, int nbytes) -{ - unsigned char *rev = _reverse_byte; - - for (; --nbytes >= 0; buf++) - *buf = rev[*buf]; -} - -/* - * Invert byte order within each 16-bits of an array. - */ -void -TwoByteSwap(unsigned char *buf, int nbytes) -{ - unsigned char c; - - for (; nbytes > 0; nbytes -= 2, buf += 2) - { - c = buf[0]; - buf[0] = buf[1]; - buf[1] = c; - } -} - -/* - * Invert byte order within each 32-bits of an array. - */ -void -FourByteSwap(unsigned char *buf, int nbytes) -{ - unsigned char c; - - for (; nbytes > 0; nbytes -= 4, buf += 4) - { - c = buf[0]; - buf[0] = buf[3]; - buf[3] = c; - c = buf[1]; - buf[1] = buf[2]; - buf[2] = c; - } -} - -/* - * Repad a bitmap - */ - -int -RepadBitmap (char *pSrc, char *pDst, - unsigned int srcPad, unsigned int dstPad, - int width, int height) -{ - int srcWidthBytes,dstWidthBytes; - int row,col; - char *pTmpSrc,*pTmpDst; - - switch (srcPad) { - case 1: - srcWidthBytes = (width+7)>>3; - break; - case 2: - srcWidthBytes = ((width+15)>>4)<<1; - break; - case 4: - srcWidthBytes = ((width+31)>>5)<<2; - break; - case 8: - srcWidthBytes = ((width+63)>>6)<<3; - break; - default: - return 0; - } - switch (dstPad) { - case 1: - dstWidthBytes = (width+7)>>3; - break; - case 2: - dstWidthBytes = ((width+15)>>4)<<1; - break; - case 4: - dstWidthBytes = ((width+31)>>5)<<2; - break; - case 8: - dstWidthBytes = ((width+63)>>6)<<3; - break; - default: - return 0; - } - - width = srcWidthBytes; - if (width > dstWidthBytes) - width = dstWidthBytes; - pTmpSrc= pSrc; - pTmpDst= pDst; - for (row = 0; row < height; row++) - { - for (col = 0; col < width; col++) - *pTmpDst++ = *pTmpSrc++; - while (col < dstWidthBytes) - { - *pTmpDst++ = '\0'; - col++; - } - pTmpSrc += srcWidthBytes - width; - } - return dstWidthBytes * height; -} - - diff --git a/nx-X11/programs/Xserver/GL/glx/Imakefile b/nx-X11/programs/Xserver/GL/glx/Imakefile index 5283e22..506ef55 100644 --- a/nx-X11/programs/Xserver/GL/glx/Imakefile +++ b/nx-X11/programs/Xserver/GL/glx/Imakefile @@ -42,7 +42,7 @@ LinkSourceFile(indirect_size.h, $(MESASRCDIR)/src/glx/x11) INCLUDES = -I$(SERVERSRC)/GL/glx -I$(SERVERSRC)/GL/include -I$(SERVERSRC)/include -I$(INCLUDESRC) -I$(MESASRCDIR)/include \ -I$(XINCLUDESRC) -I$(SERVERSRC)/mi \ - -I$(EXTINCSRC) -I$(FONTINCSRC) -I$(LIBSRC)/GL/include \ + -I$(EXTINCSRC) -I$(LIBSRC)/GL/include \ -I$(XF86SRC) #if defined(DarwinArchitecture) && ((OSMajorVersion == 6 && OSMinorVersion < 3) || OSMajorVersion < 6) diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index 1419531..fd0a553 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -201,7 +201,7 @@ INSTPGMFLAGS = $(LBXDIRS) $(DBEDIR) $(RECORDDIR) $(SITEEXTDIRS) \ $(RANDRDIR) $(RENDERDIR) $(XTRAPDIR) $(XPCONFIGDIR) \ $(FIXESDIR) $(DAMAGEDIR) $(CWDIR) $(COMPOSITEDIR) -#if BuildLBX || GzipFontCompression +#if BuildLBX ZLIB = GzipLibrary #endif OS = os/LibraryTargetName(os) $(DEPXAUTHLIB) $(DEPXDMCPLIB) @@ -267,14 +267,6 @@ INSTPGMFLAGS = #endif MIINITEXTOBJ = mi/miinitext.o DIX = dix/LibraryTargetName(dix) - FONTBASE = $(FONTLIBSRC)/fontbase.o \ - $(FONTLIBSRC)/LibraryTargetName(fontbase) -#if XserverStaticFontLib - FONT = $(FONTLIBSRC)/LibraryTargetName(NX_Xfont) $(FREETYPE2LIB) -#else - FONT = $(LDPRELIB) $(XFONTLIB) $(FREETYPE2LIB) -#endif - FONTLIBS = $(FONT) $(XPFBLIBS) #if UsbMouseSupport #if !HasLibUsb USB = $(XF86OSSRC)/bsd/libusb/LibraryTargetName(usb) @@ -432,7 +424,7 @@ NXAGENTOBJS = hw/nxagent/miinitext.o \ XPMLIB = -lXpm NXAGENT = hw/nxagent/LibraryTargetName(nxagent) NXAGENTLIBS = PreFbLibs $(NXAGENT) FbPostFbLibs $(NXAGENT) $(MI) -NXAGENTSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XLIB) $(SYSLIBS) $(XPMLIB) +NXAGENTSYSLIBS = $(LDPRELIBS) $(XLIB) $(SYSLIBS) $(XPMLIB) #if HasParallelMake MakeMutex($(NXAGENTDIRS) $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTSYSLIBS)) #endif @@ -447,17 +439,17 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTSYSLIBS):: $(NXAGENTDIRS) #if defined(SunArchitecture) NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ - -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lNX_Xfixes \ + -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lNX_Xfixes -lXfont \ -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xdmcp \ `pkg-config --libs libxml-2.0` #elif defined(cygwinArchitecture) NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \ - -lXcomp -lXcompext -lNX_Xrender -lX11 -lNX_Xext -lNX_Xcomposite -lNX_Xfixes \ + -lXcomp -lXcompext -lNX_Xrender -lX11 -lNX_Xext -lNX_Xcomposite -lNX_Xfixes -lXfont \ -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdmcp \ `pkg-config --libs libxml-2.0` #else NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ - -lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lNX_Xfixes \ + -lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lNX_Xfixes -lXfont \ -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xinerama -lNX_Xdmcp \ `pkg-config --libs libxml-2.0` #endif @@ -512,7 +504,7 @@ nxagent_static_nolibs: nxagent $(MV) nxagent__static_nolibs nxagent_static_nolibs.bak; \ else exit 0; fi $(CCLINK) -o nxagent_static_nolibs -Wl,-Bstatic $(LDOPTIONS) $(NXAGENTOBJS) \ - $(NXAGENTLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER) $(LDLIBS) $(FONTLIBS) \ + $(NXAGENTLIBS) $(LOADABLEEXTS) $(LIBCWRAPPER) $(LDLIBS) \ $(LDPRELIBS) $(SYSLIBS) -Wl,-Bdynamic -lNX_Xext -lNX_X11 $(EXTRA_LOAD_FLAGS) #endif /* NXAgentServer */ @@ -573,7 +565,7 @@ XWINW32 = -lgdi32 -lwsock32 $(XWINGL32) $(PTHREADLIB) #else XWINW32 = -lgdi32 #endif -NXWINSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XWINX11) $(SYSLIBS) $(XWINW32) +NXWINSYSLIBS = $(LDPRELIBS) $(XWINX11) $(SYSLIBS) $(XWINW32) NXWINNXLIBS = -L../../../nxcomp -lXcomp @@ -638,7 +630,7 @@ NXWINDIRS = $(STDDIRS) $(FBDIR) $(SHADOWDIR) $(LAYERDIR) $(NXWINDDXDIR) \ NXWINOBJS = $(NXWINDDXDIR)/stubs.o $(NXWINDDXDIR)/NX.res NXWINLIBS = PreFbLibs $(NXWINLIB) FbPostFbLibs $(LAYER) $(SHADOW) \ $(XWINPARSERLIB) -NXWINSYSLIBS = $(FONTLIBS) $(LDPRELIBS) $(XLIB) $(SYSLIBS) -lgdi32 -lddraw +NXWINSYSLIBS = $(LDPRELIBS) $(XLIB) $(SYSLIBS) -lgdi32 -lddraw NXWINNXLIBS = -L../../../nxcomp -lXcomp /* @@ -704,7 +696,7 @@ XCOMM Hackery for building dlopen-able .so modules on Solaris AllTarget(linker-deps) -LINKER_DEPS_DIRS = $(SUBDIRS) $(FONTLIBSRC) +LINKER_DEPS_DIRS = $(SUBDIRS) XCOMM After everything is built, run through and generate linker dependencies linker-deps: diff --git a/nx-X11/programs/Xserver/Xext/Imakefile b/nx-X11/programs/Xserver/Xext/Imakefile index 6c2c060..f44edb1 100644 --- a/nx-X11/programs/Xserver/Xext/Imakefile +++ b/nx-X11/programs/Xserver/Xext/Imakefile @@ -111,7 +111,7 @@ XF86BIGFOBJS = xf86bigfont.o #if BuildXinerama PNRXSRCS = panoramiX.c panoramiXSwap.c panoramiXprocs.c PNRXOBJS = panoramiX.o panoramiXSwap.o panoramiXprocs.o - PNRXINCLUDES = -I$(FONTINCSRC) -I../mi -I../render + PNRXINCLUDES = -I../mi -I../render #endif #if BuildDPMS DPMSSRCS = dpms.c @@ -162,7 +162,7 @@ NX_DEFINES = -DNXAGENT_SERVER XF86INCLUDES = -I$(XF86COMSRC) #endif INCLUDES = -I. -I../include -I$(XINCLUDESRC) -I$(EXTINCSRC) \ - $(PNRXINCLUDES) $(XF86INCLUDES) -I$(FONTINCSRC) \ + $(PNRXINCLUDES) $(XF86INCLUDES) \ $(FONTCACHEINCLUDES) $(DMXINCLUDES) LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln diff --git a/nx-X11/programs/Xserver/Xext/extmod/Imakefile b/nx-X11/programs/Xserver/Xext/extmod/Imakefile index 450a318..45f3f39 100644 --- a/nx-X11/programs/Xserver/Xext/extmod/Imakefile +++ b/nx-X11/programs/Xserver/Xext/extmod/Imakefile @@ -98,7 +98,7 @@ LinkSourceFile(cup.c,..) XF86INCLUDES = -I$(XF86COMSRC) INCLUDES = -I.. -I../../include -I$(XINCLUDESRC) -I$(EXTINCSRC) \ - $(XF86INCLUDES) $(FONTCACHEINCLUDES) -I$(FONTINCSRC) + $(XF86INCLUDES) $(FONTCACHEINCLUDES) LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln LinkSourceFile(shape.c,..) diff --git a/nx-X11/programs/Xserver/composite/Imakefile b/nx-X11/programs/Xserver/composite/Imakefile index 9d3edcf..c45aa7f 100644 --- a/nx-X11/programs/Xserver/composite/Imakefile +++ b/nx-X11/programs/Xserver/composite/Imakefile @@ -6,7 +6,7 @@ INCLUDES = -I../include -I../mi -I../Xext -I../render -I../xfixes \ -I../damageext -I../miext/damage -I$(EXTINCSRC) \ - -I$(XINCLUDESRC) -I$(FONTINCSRC) + -I$(XINCLUDESRC) LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln diff --git a/nx-X11/programs/Xserver/dix/Imakefile b/nx-X11/programs/Xserver/dix/Imakefile index a0d4208..47e6177 100644 --- a/nx-X11/programs/Xserver/dix/Imakefile +++ b/nx-X11/programs/Xserver/dix/Imakefile @@ -24,7 +24,7 @@ OBJS = atom.o colormap.o cursor.o devices.o dispatch.o dixutils.o events.o \ main.o property.o resource.o swaprep.o swapreq.o \ tables.o window.o initatoms.o dixfonts.o privates.o pixmap.o $(FFS_OBJ) - INCLUDES = -I../include -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(EXTINCSRC) \ + INCLUDES = -I../include -I$(XINCLUDESRC) -I$(EXTINCSRC) \ -I$(SERVERSRC)/Xext -I$(SERVERSRC)/lbx LINTLIBS = ../os/llib-los.ln diff --git a/nx-X11/programs/Xserver/dix/dixfonts.c b/nx-X11/programs/Xserver/dix/dixfonts.c index 42fd647..9a8b099 100644 --- a/nx-X11/programs/Xserver/dix/dixfonts.c +++ b/nx-X11/programs/Xserver/dix/dixfonts.c @@ -1973,22 +1973,7 @@ InitFonts () { patternCache = MakeFontPatternCache(); -#ifndef KDRIVESERVER - if (screenInfo.numScreens > screenInfo.numVideoScreens) { - PrinterFontRegisterFpeFunctions(); - FontFileCheckRegisterFpeFunctions(); - check_fs_register_fpe_functions(); - } else -#endif - { -#ifdef KDRIVESERVER - BuiltinRegisterFpeFunctions(); -#endif - FontFileRegisterFpeFunctions(); -#ifndef NOFONTSERVERACCESS - fs_register_fpe_functions(); -#endif - } + register_fpe_functions(); } int diff --git a/nx-X11/programs/Xserver/fb/Imakefile b/nx-X11/programs/Xserver/fb/Imakefile index cb560e7..489d6a2 100644 --- a/nx-X11/programs/Xserver/fb/Imakefile +++ b/nx-X11/programs/Xserver/fb/Imakefile @@ -122,7 +122,7 @@ OBJS = $(XFMODOBJ) \ INCLUDES = -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \ -I$(XINCLUDESRC) \ - -I$(FONTINCSRC) -I$(XF86SRC)/common $(EXTRAINCLUDES) \ + -I$(XF86SRC)/common $(EXTRAINCLUDES) \ -I$(SERVERSRC)/render -I$(EXTINCSRC) -I$(SERVERSRC)/Xext LINTLIBS = $(SERVERSRC)/dix/llib-ldix.ln $(SERVERSRC)/os/llib-los.ln \ $(SERVERSRC)/mi/llib-lmi.ln diff --git a/nx-X11/programs/Xserver/hw/nxagent/Font.c b/nx-X11/programs/Xserver/hw/nxagent/Font.c index 178ed3c..5becb2c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Font.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Font.c @@ -31,8 +31,8 @@ is" without express or implied warranty. #include "scrnintstr.h" #include "dixstruct.h" -#include "../../../../include/fonts/font.h" -#include "fontstruct.h" +#include <X11/fonts/font.h> +#include <X11/fonts/fontstruct.h> #include "misc.h" #include "miscstruct.h" #include "opaque.h" diff --git a/nx-X11/programs/Xserver/hw/nxagent/Font.h b/nx-X11/programs/Xserver/hw/nxagent/Font.h index 63cb6aa..d3ee2b0 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Font.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Font.h @@ -32,7 +32,7 @@ is" without express or implied warranty. #ifndef __Font_H__ #define __Font_H__ -#include "fontstruct.h" +#include <X11/fonts/fontstruct.h> #include "resource.h" extern RESTYPE RT_NX_FONT; diff --git a/nx-X11/programs/Xserver/hw/nxagent/GC.c b/nx-X11/programs/Xserver/hw/nxagent/GC.c index 71562d9..ec51bbe 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/GC.c +++ b/nx-X11/programs/Xserver/hw/nxagent/GC.c @@ -36,7 +36,7 @@ is" without express or implied warranty. #include "pixmapstr.h" #include "scrnintstr.h" #include "dixstruct.h" -#include "fontstruct.h" +#include <X11/fonts/fontstruct.h> #include "mistruct.h" #include "region.h" diff --git a/nx-X11/programs/Xserver/hw/nxagent/Imakefile b/nx-X11/programs/Xserver/hw/nxagent/Imakefile index 3d4331c..4d409dc 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile +++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile @@ -134,39 +134,38 @@ OBJS = NXwindow.o \ $(OBJS1) VFBINCLUDES = -I../../fb -I../../mfb -I../../render -NXFONTINCLUDES = -I../../../../lib/font/include LIBXRANDRINCLUDES= -I../../../../lib/Xrandr INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \ -I../../../../extras/Mesa/include \ - -I$(XBUILDINCDIR) -I$(FONTINCSRC) \ + -I$(XBUILDINCDIR) \ -I../../mi -I../../include -I../../os \ -I../../miext/damage -I../../miext/cw \ -I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \ -I$(EXTINCSRC) -I$(XINCLUDESRC) \ - $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \ + $(VFBINCLUDES) $(LIBXRANDRINCLUDES) \ `pkg-config --cflags-only-I libxml-2.0` #ifdef SunArchitecture INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \ -I../../../../extras/Mesa/include \ - -I$(XBUILDINCDIR) -I$(FONTINCSRC) \ + -I$(XBUILDINCDIR) \ -I/usr/sfw/include \ -I../../mi -I../../include -I../../os \ -I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \ -I../../miext/damage -I../../miext/cw \ -I$(EXTINCSRC) -I$(XINCLUDESRC) \ - $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \ + $(VFBINCLUDES) $(LIBXRANDRINCLUDES) \ `pkg-config --cflags-only-I libxml-2.0` #else #ifdef cygwinArchitecture -INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \ +INCLUDES = -I. -I$(XBUILDINCDIR) \ -I../../mi -I../../include -I../../os \ -I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \ -I../../miext/damage -I../../miext/cw \ -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \ -I../../../../extras/Mesa/include \ -I$(EXTINCSRC) -I$(XINCLUDESRC) \ - $(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \ + $(VFBINCLUDES) $(LIBXRANDRINCLUDES) \ `pkg-config --cflags-only-I libxml-2.0` #endif #endif diff --git a/nx-X11/programs/Xserver/hw/nxagent/Init.c b/nx-X11/programs/Xserver/hw/nxagent/Init.c index d0e3e57..3722800 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Init.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c @@ -42,7 +42,7 @@ is" without express or implied warranty. #include "windowstr.h" #include "servermd.h" #include "mi.h" -#include "fontstruct.h" +#include <X11/fonts/fontstruct.h> #include "Agent.h" #include "Display.h" diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c index 2b64269..9224436 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c @@ -82,6 +82,7 @@ Equipment Corporation. #include "cursorstr.h" #include "misc.h" #include "opaque.h" +#include <X11/fonts/fontstruct.h> #include "dixfontstr.h" #include "closestr.h" @@ -2116,22 +2117,7 @@ InitFonts () { patternCache = MakeFontPatternCache(); -#ifndef KDRIVESERVER - if (screenInfo.numScreens > screenInfo.numVideoScreens) { - PrinterFontRegisterFpeFunctions(); - FontFileCheckRegisterFpeFunctions(); - check_fs_register_fpe_functions(); - } else -#endif - { -#ifdef KDRIVESERVER - BuiltinRegisterFpeFunctions(); -#endif - FontFileRegisterFpeFunctions(); -#ifndef NOFONTSERVERACCESS - fs_register_fpe_functions(); -#endif - } + register_fpe_functions(); } int diff --git a/nx-X11/programs/Xserver/mi/Imakefile b/nx-X11/programs/Xserver/mi/Imakefile index b85a9f9..24caa02 100644 --- a/nx-X11/programs/Xserver/mi/Imakefile +++ b/nx-X11/programs/Xserver/mi/Imakefile @@ -88,9 +88,9 @@ EXT_DEFINES = ExtensionDefines -UXINPUT -UXF86VIDMODE -UXFreeXDGA -UXF86MISC \ #endif -INCLUDES = -I. -I../include -I../../../include/fonts -I../render \ +INCLUDES = -I. -I../include -I../render \ -I../xfixes -I../damageext -I../miext/damage \ - -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(EXTINCSRC) -I$(SERVERSRC)/Xext + -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(SERVERSRC)/Xext LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln DEFINES = $(FFS_DEFINES) diff --git a/nx-X11/programs/Xserver/miext/damage/Imakefile b/nx-X11/programs/Xserver/miext/damage/Imakefile index 1fa5cf1..7fa745b 100755 --- a/nx-X11/programs/Xserver/miext/damage/Imakefile +++ b/nx-X11/programs/Xserver/miext/damage/Imakefile @@ -10,7 +10,7 @@ SRCS = damage.c OBJS = damage.o INCLUDES = -I. -I../shadow -I../../mi -I../../fb -I../../include -I$(XINCLUDESRC) \ - -I$(FONTINCSRC) -I$(XF86SRC)/common $(EXTRAINCLUDES) \ + -I$(XF86SRC)/common $(EXTRAINCLUDES) \ -I../../render -I../cw -I$(EXTINCSRC) LINTLIBS = ../../dix/llib-ldix.ln ../../os/llib-los.ln \ ../../mi/llib-lmi.ln diff --git a/nx-X11/programs/Xserver/os/Imakefile b/nx-X11/programs/Xserver/os/Imakefile index 55f8e41..aa3f568 100644 --- a/nx-X11/programs/Xserver/os/Imakefile +++ b/nx-X11/programs/Xserver/os/Imakefile @@ -165,7 +165,7 @@ BOOTSTRAPCFLAGS = $(KRB5_DEFINES) $(RGB_DEFINES) $(GETPEER_DEFINES) \ $(RANDOM_DEFINES) $(BUGMSG) $(XTRANS_FAILDEFINES) $(NX_DEFINES) INCLUDES = -I. -I../include -I$(XINCLUDESRC) -I$(EXTINCSRC) \ - -I$(SERVERSRC)/Xext -I$(FONTINCSRC) -I$(SERVERSRC)/render \ + -I$(SERVERSRC)/Xext -I$(SERVERSRC)/render \ -I$(TOP)/lib/Xau -I../lbx Krb5Includes $(NX_INCLUDES) DEPEND_DEFINES = $(DBM_DEFINES) $(XDMCP_DEFINES) $(EXT_DEFINES) \ $(TRANS_INCLUDES) $(CONNECTION_FLAGS) $(GETPEER_DEFINES) \ diff --git a/nx-X11/programs/Xserver/randr/Imakefile b/nx-X11/programs/Xserver/randr/Imakefile index 2eff07f..19f8143 100644 --- a/nx-X11/programs/Xserver/randr/Imakefile +++ b/nx-X11/programs/Xserver/randr/Imakefile @@ -21,9 +21,9 @@ XCOMM $XFree86: xc/programs/Xserver/randr/Imakefile,v 1.1 2001/05/23 03:29:44 ke OBJS = mirandr.o randr.o rrcrtc.o rrdispatch.o rrinfo.o rrmode.o rroutput.o rrpointer.o rrproperty.o rrscreen.o rrsdispatch.o rrxinerama.o - INCLUDES = -I../include -I../mi -I../../../include/fonts \ + INCLUDES = -I../include -I../mi \ -I../fb -I../hw/kdrive -I$(EXTINCSRC) -I$(XINCLUDESRC) \ - -I$(FONTINCSRC) -I../render + -I../render LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln DEFINES = -DNXAGENT_SERVER diff --git a/nx-X11/programs/Xserver/render/Imakefile b/nx-X11/programs/Xserver/render/Imakefile index 0d7ad15..1331b1f 100644 --- a/nx-X11/programs/Xserver/render/Imakefile +++ b/nx-X11/programs/Xserver/render/Imakefile @@ -27,9 +27,9 @@ XCOMM $XFree86: xc/programs/Xserver/render/Imakefile,v 1.10 2002/11/23 02:38:15 render.o \ renderedge.o - INCLUDES = -I. -I../include -I../mi -I../../../include/fonts \ + INCLUDES = -I. -I../include -I../mi \ -I../fb -I../hw/kdrive -I$(EXTINCSRC) -I$(XINCLUDESRC) \ - -I$(FONTINCSRC) -I../Xext + -I../Xext LINTLIBS = ../dix/llib-ldix.ln ../os/llib-los.ln NormalLibraryTarget(render,$(OBJS)) diff --git a/nx-libs.spec b/nx-libs.spec index 2e6c5da..3e38173 100644 --- a/nx-libs.spec +++ b/nx-libs.spec @@ -27,35 +27,29 @@ BuildRequires: gpg-offline BuildRequires: fdupes %if 0%{?suse_version} >= 1130 BuildRequires: pkgconfig(expat) -BuildRequires: pkgconfig(fontconfig) -BuildRequires: pkgconfig(fontenc) -BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xpm) +BuildRequires: pkgconfig(xfont) %else BuildRequires: libexpat-devel -BuildRequires: fontconfig-devel -BuildRequires: freetype2-devel BuildRequires: libpng-devel BuildRequires: libxml2-devel BuildRequires: xorg-x11-libX11-devel BuildRequires: xorg-x11-libXext-devel -BuildRequires: xorg-x11-libfontenc-devel BuildRequires: xorg-x11-libXpm-devel +BuildRequires: xorg-x11-libXfont-devel %endif BuildRequires: xorg-x11-util-devel %endif %if 0%{?fedora} || 0%{?rhel} BuildRequires: expat-devel -BuildRequires: fontconfig-devel -BuildRequires: freetype-devel -BuildRequires: libfontenc-devel BuildRequires: libpng-devel BuildRequires: libxml2-devel +BuildRequires: libXfont-devel %endif # For imake @@ -680,7 +674,6 @@ find -type f -name '*.[hc]' | xargs chmod -x # Mesa - Used by the X server # Xcursor - Other code still references files in it -# Xfont - Statically linked to nxarget, others? # Xpm @@ -962,20 +955,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %{_includedir}/nx/X11/extensions/record.h %{_includedir}/nx/X11/extensions/xf86dga1.h %{_includedir}/nx/X11/extensions/xf86vmode.h -%dir %{_includedir}/nx/X11/fonts -%{_includedir}/nx/X11/fonts/bdfint.h -%{_includedir}/nx/X11/fonts/bitmap.h -%{_includedir}/nx/X11/fonts/bufio.h -%{_includedir}/nx/X11/fonts/fntfil.h -%{_includedir}/nx/X11/fonts/fntfilio.h -%{_includedir}/nx/X11/fonts/fntfilst.h -%{_includedir}/nx/X11/fonts/fontencc.h -%{_includedir}/nx/X11/fonts/fontmisc.h -%{_includedir}/nx/X11/fonts/fontmod.h -%{_includedir}/nx/X11/fonts/fontshow.h -%{_includedir}/nx/X11/fonts/fontutil.h -%{_includedir}/nx/X11/fonts/fontxlfd.h -%{_includedir}/nx/X11/fonts/pcf.h %{_includedir}/nx/X11/misc.h %{_includedir}/nx/X11/os.h @@ -1041,12 +1020,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %{_includedir}/nx/X11/extensions/xtraplib.h %{_includedir}/nx/X11/extensions/xtraplibp.h %{_includedir}/nx/X11/extensions/xtrapproto.h -%dir %{_includedir}/nx/X11/fonts -%{_includedir}/nx/X11/fonts/FS.h -%{_includedir}/nx/X11/fonts/FSproto.h -%{_includedir}/nx/X11/fonts/font.h -%{_includedir}/nx/X11/fonts/fontstruct.h -%{_includedir}/nx/X11/fonts/fsmasks.h %files -n nxagent %defattr(-,root,root) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit b964406ba6e7e2d65b88010856ce881ee928898a Merge: a77ca87 70b77a0 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 22 08:38:21 2015 +0200 Merge branch 'sunweaver-pr/libxfont-cleanup' into arctica-3.6.x Attributes GH PR #14: https://github.com/ArcticaProject/nx-libs/pull/14 debian/control | 4 +- debian/rules | 1 - nx-X11/Imakefile | 3 - nx-X11/config/cf/Imake.rules | 21 - nx-X11/config/cf/Imake.tmpl | 8 - nx-X11/config/cf/README | 8 - nx-X11/config/cf/X11.tmpl | 1036 +------ nx-X11/config/cf/host.def | 150 - nx-X11/config/cf/linux.cf | 8 - nx-X11/config/cf/xf86site.def | 111 - nx-X11/config/cf/xfree86.cf | 52 - nx-X11/config/cf/xorg.cf | 52 - nx-X11/config/cf/xorgsite.def | 137 - nx-X11/include/Imakefile | 2 +- nx-X11/include/extensions/Imakefile | 2 +- nx-X11/include/fonts/FS.h | 132 - nx-X11/include/fonts/FSproto.h | 816 ------ nx-X11/include/fonts/Imakefile | 22 - nx-X11/include/fonts/font.h | 169 -- nx-X11/include/fonts/fontproto.h | 93 - nx-X11/include/fonts/fontstruct.h | 295 -- nx-X11/include/fonts/fsmasks.h | 98 - nx-X11/lib/Imakefile | 36 +- nx-X11/lib/Xrender/Imakefile | 7 - nx-X11/lib/font/Imakefile | 178 -- nx-X11/lib/font/Speedo/Imakefile | 46 - nx-X11/lib/font/Speedo/adobe-iso.h | 200 -- nx-X11/lib/font/Speedo/bics-iso.h | 224 -- nx-X11/lib/font/Speedo/bics-unicode.c | 138 - nx-X11/lib/font/Speedo/bics-unicode.h | 3 - nx-X11/lib/font/Speedo/do_char.c | 1016 ------- nx-X11/lib/font/Speedo/do_trns.c | 512 ---- nx-X11/lib/font/Speedo/htest.c | 361 --- nx-X11/lib/font/Speedo/iface.c | 650 ----- nx-X11/lib/font/Speedo/keys.h | 56 - nx-X11/lib/font/Speedo/module/Imakefile | 47 - nx-X11/lib/font/Speedo/module/speedomod.c | 72 - nx-X11/lib/font/Speedo/nsample.c | 745 ----- nx-X11/lib/font/Speedo/out_bl2d.c | 772 ----- nx-X11/lib/font/Speedo/out_blk.c | 706 ----- nx-X11/lib/font/Speedo/out_outl.c | 290 -- nx-X11/lib/font/Speedo/out_scrn.c | 1090 ------- nx-X11/lib/font/Speedo/out_util.c | 341 --- nx-X11/lib/font/Speedo/reset.c | 131 - nx-X11/lib/font/Speedo/set_spcs.c | 773 ----- nx-X11/lib/font/Speedo/set_trns.c | 1324 --------- nx-X11/lib/font/Speedo/spdo_prv.h | 421 --- nx-X11/lib/font/Speedo/speedo.h | 890 ------ nx-X11/lib/font/Speedo/spencode.c | 67 - nx-X11/lib/font/Speedo/sperr.c | 127 - nx-X11/lib/font/Speedo/spfile.c | 460 --- nx-X11/lib/font/Speedo/spfont.c | 453 --- nx-X11/lib/font/Speedo/spfuncs.c | 167 -- nx-X11/lib/font/Speedo/spglyph.c | 399 --- nx-X11/lib/font/Speedo/spinfo.c | 462 --- nx-X11/lib/font/Speedo/spint.h | 180 -- nx-X11/lib/font/Speedo/sptobdf.c | 678 ----- nx-X11/lib/font/Speedo/useropt.h | 41 - nx-X11/lib/font/Type1/AFM.h | 62 - nx-X11/lib/font/Type1/Imakefile | 91 - nx-X11/lib/font/Type1/afm.c | 200 -- nx-X11/lib/font/Type1/arith.c | 486 ---- nx-X11/lib/font/Type1/arith.h | 77 - nx-X11/lib/font/Type1/blues.h | 95 - nx-X11/lib/font/Type1/cidchar.c | 621 ---- nx-X11/lib/font/Type1/cluts.h | 35 - nx-X11/lib/font/Type1/curves.c | 228 -- nx-X11/lib/font/Type1/curves.h | 44 - nx-X11/lib/font/Type1/digit.h | 64 - nx-X11/lib/font/Type1/fontfcn.c | 709 ----- nx-X11/lib/font/Type1/fontfcn.h | 250 -- nx-X11/lib/font/Type1/fonts.h | 49 - nx-X11/lib/font/Type1/hdigit.h | 94 - nx-X11/lib/font/Type1/hints.c | 890 ------ nx-X11/lib/font/Type1/hints.h | 48 - nx-X11/lib/font/Type1/lines.c | 189 -- nx-X11/lib/font/Type1/lines.h | 39 - nx-X11/lib/font/Type1/minimain.c | 48 - nx-X11/lib/font/Type1/module/Imakefile | 99 - nx-X11/lib/font/Type1/module/type1mod.c | 91 - nx-X11/lib/font/Type1/objects.c | 1101 ------- nx-X11/lib/font/Type1/objects.h | 354 --- nx-X11/lib/font/Type1/paths.c | 1406 --------- nx-X11/lib/font/Type1/paths.h | 239 -- nx-X11/lib/font/Type1/pictures.h | 50 - nx-X11/lib/font/Type1/range.h | 48 - nx-X11/lib/font/Type1/regions.c | 1651 ----------- nx-X11/lib/font/Type1/regions.h | 250 -- nx-X11/lib/font/Type1/scanfont.c | 2370 --------------- nx-X11/lib/font/Type1/spaces.c | 998 ------- nx-X11/lib/font/Type1/spaces.h | 172 -- nx-X11/lib/font/Type1/strokes.h | 38 - nx-X11/lib/font/Type1/t1funcs.c | 1668 ----------- nx-X11/lib/font/Type1/t1hdigit.h | 40 - nx-X11/lib/font/Type1/t1imager.h | 84 - nx-X11/lib/font/Type1/t1info.c | 1096 ------- nx-X11/lib/font/Type1/t1intf.h | 143 - nx-X11/lib/font/Type1/t1io.c | 388 --- nx-X11/lib/font/Type1/t1malloc.c | 759 ----- nx-X11/lib/font/Type1/t1snap.c | 85 - nx-X11/lib/font/Type1/t1stdio.h | 101 - nx-X11/lib/font/Type1/t1stub.c | 56 - nx-X11/lib/font/Type1/t1test.c | 246 -- nx-X11/lib/font/Type1/t1unicode.c | 251 -- nx-X11/lib/font/Type1/t1unicode.h | 25 - nx-X11/lib/font/Type1/token.c | 1208 -------- nx-X11/lib/font/Type1/token.h | 79 - nx-X11/lib/font/Type1/tokst.h | 510 ---- nx-X11/lib/font/Type1/trig.h | 41 - nx-X11/lib/font/Type1/type1.c | 1892 ------------ nx-X11/lib/font/Type1/util.c | 222 -- nx-X11/lib/font/Type1/util.h | 217 -- nx-X11/lib/font/bitmap/Imakefile | 71 - nx-X11/lib/font/bitmap/bdfint.h | 90 - nx-X11/lib/font/bitmap/bdfread.c | 967 ------- nx-X11/lib/font/bitmap/bdfutils.c | 340 --- nx-X11/lib/font/bitmap/bitmap.c | 160 -- nx-X11/lib/font/bitmap/bitmapfunc.c | 240 -- nx-X11/lib/font/bitmap/bitmaputil.c | 232 -- nx-X11/lib/font/bitmap/bitscale.c | 1978 ------------- nx-X11/lib/font/bitmap/fontink.c | 219 -- nx-X11/lib/font/bitmap/module/Imakefile | 45 - nx-X11/lib/font/bitmap/module/bitmapmod.c | 76 - nx-X11/lib/font/bitmap/pcf.h | 100 - nx-X11/lib/font/bitmap/pcfread.c | 997 ------- nx-X11/lib/font/bitmap/pcfwrite.c | 468 --- nx-X11/lib/font/bitmap/snfread.c | 514 ---- nx-X11/lib/font/bitmap/snfstr.h | 185 -- nx-X11/lib/font/builtins/Imakefile | 17 - nx-X11/lib/font/builtins/buildfont | 14 - nx-X11/lib/font/builtins/builtin.h | 60 - nx-X11/lib/font/builtins/dir.c | 64 - nx-X11/lib/font/builtins/file.c | 139 - nx-X11/lib/font/builtins/fonts.c | 2438 ---------------- nx-X11/lib/font/builtins/fpe.c | 98 - nx-X11/lib/font/builtins/render.c | 114 - nx-X11/lib/font/fc/Imakefile | 31 - nx-X11/lib/font/fc/fsconvert.c | 774 ----- nx-X11/lib/font/fc/fserve.c | 3480 ----------------------- nx-X11/lib/font/fc/fserve.h | 96 - nx-X11/lib/font/fc/fservestr.h | 211 -- nx-X11/lib/font/fc/fsio.c | 516 ---- nx-X11/lib/font/fc/fsio.h | 187 -- nx-X11/lib/font/fc/fsio.h.NX.reference | 191 -- nx-X11/lib/font/fc/fsio.h.XF86.reference | 187 -- nx-X11/lib/font/fc/fslibos.h | 216 -- nx-X11/lib/font/fontcache/Imakefile | 29 - nx-X11/lib/font/fontcache/fcqueue.h | 133 - nx-X11/lib/font/fontcache/fontcache.c | 1022 ------- nx-X11/lib/font/fontcache/fontcache.h | 121 - nx-X11/lib/font/fontfile/Imakefile | 81 - nx-X11/lib/font/fontfile/bitsource.c | 174 -- nx-X11/lib/font/fontfile/bufio.c | 212 -- nx-X11/lib/font/fontfile/decompress.c | 415 --- nx-X11/lib/font/fontfile/defaults.c | 77 - nx-X11/lib/font/fontfile/dirfile.c | 495 ---- nx-X11/lib/font/fontfile/encparse.c | 966 ------- nx-X11/lib/font/fontfile/ffcheck.c | 171 -- nx-X11/lib/font/fontfile/fileio.c | 90 - nx-X11/lib/font/fontfile/filewr.c | 65 - nx-X11/lib/font/fontfile/fontdir.c | 832 ------ nx-X11/lib/font/fontfile/fontenc.c | 952 ------- nx-X11/lib/font/fontfile/fontencI.h | 46 - nx-X11/lib/font/fontfile/fontencc.c | 77 - nx-X11/lib/font/fontfile/fontfile.c | 1147 -------- nx-X11/lib/font/fontfile/fontscale.c | 447 --- nx-X11/lib/font/fontfile/gunzip.c | 227 -- nx-X11/lib/font/fontfile/module/Imakefile | 21 - nx-X11/lib/font/fontfile/printerfont.c | 178 -- nx-X11/lib/font/fontfile/register.c | 107 - nx-X11/lib/font/fontfile/renderers.c | 117 - nx-X11/lib/font/include/Imakefile | 11 - nx-X11/lib/font/include/bitmap.h | 116 - nx-X11/lib/font/include/bufio.h | 92 - nx-X11/lib/font/include/fntfil.h | 178 -- nx-X11/lib/font/include/fntfilio.h | 56 - nx-X11/lib/font/include/fntfilst.h | 198 -- nx-X11/lib/font/include/fontencc.h | 36 - nx-X11/lib/font/include/fontmisc.h | 133 - nx-X11/lib/font/include/fontmod.h | 16 - nx-X11/lib/font/include/fontshow.h | 37 - nx-X11/lib/font/include/fontutil.h | 26 - nx-X11/lib/font/include/fontxlfd.h | 100 - nx-X11/lib/font/stubs/Imakefile | 25 - nx-X11/lib/font/stubs/cauthgen.c | 14 - nx-X11/lib/font/stubs/csignal.c | 14 - nx-X11/lib/font/stubs/delfntcid.c | 13 - nx-X11/lib/font/stubs/errorf.c | 13 - nx-X11/lib/font/stubs/fatalerror.c | 13 - nx-X11/lib/font/stubs/findoldfnt.c | 14 - nx-X11/lib/font/stubs/getcres.c | 14 - nx-X11/lib/font/stubs/getdefptsize.c | 14 - nx-X11/lib/font/stubs/getnewfntcid.c | 14 - nx-X11/lib/font/stubs/gettime.c | 14 - nx-X11/lib/font/stubs/initfshdl.c | 15 - nx-X11/lib/font/stubs/regfpefunc.c | 28 - nx-X11/lib/font/stubs/rmfshdl.c | 15 - nx-X11/lib/font/stubs/servclient.c | 3 - nx-X11/lib/font/stubs/setfntauth.c | 14 - nx-X11/lib/font/stubs/stfntcfnt.c | 14 - nx-X11/lib/font/stubs/stubs.h | 27 - nx-X11/lib/font/stubs/xpstubs.c | 24 - nx-X11/lib/font/util/Imakefile | 43 - nx-X11/lib/font/util/atom.c | 233 -- nx-X11/lib/font/util/fontaccel.c | 107 - nx-X11/lib/font/util/fontnames.c | 123 - nx-X11/lib/font/util/fontutil.c | 443 --- nx-X11/lib/font/util/fontxlfd.c | 637 ----- nx-X11/lib/font/util/format.c | 126 - nx-X11/lib/font/util/miscutil.c | 99 - nx-X11/lib/font/util/patcache.c | 221 -- nx-X11/lib/font/util/private.c | 107 - nx-X11/lib/font/util/utilbitmap.c | 188 -- nx-X11/programs/Xserver/GL/glx/Imakefile | 2 +- nx-X11/programs/Xserver/Imakefile | 26 +- nx-X11/programs/Xserver/Xext/Imakefile | 4 +- nx-X11/programs/Xserver/Xext/extmod/Imakefile | 2 +- nx-X11/programs/Xserver/composite/Imakefile | 2 +- nx-X11/programs/Xserver/dix/Imakefile | 2 +- nx-X11/programs/Xserver/dix/dixfonts.c | 17 +- nx-X11/programs/Xserver/fb/Imakefile | 2 +- nx-X11/programs/Xserver/hw/nxagent/Font.c | 4 +- nx-X11/programs/Xserver/hw/nxagent/Font.h | 2 +- nx-X11/programs/Xserver/hw/nxagent/GC.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/Imakefile | 13 +- nx-X11/programs/Xserver/hw/nxagent/Init.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c | 18 +- nx-X11/programs/Xserver/mi/Imakefile | 4 +- nx-X11/programs/Xserver/miext/damage/Imakefile | 2 +- nx-X11/programs/Xserver/os/Imakefile | 2 +- nx-X11/programs/Xserver/randr/Imakefile | 4 +- nx-X11/programs/Xserver/render/Imakefile | 4 +- nx-libs.spec | 33 +- 233 files changed, 50 insertions(+), 67022 deletions(-) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 294d91223f75a70614a4b8f5e93ddfc7cd7565e5 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Apr 22 22:39:14 2015 +0200 debian/control: Typo fix (Meas -> Mesa). --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 9572f7c..e17a387 100644 --- a/debian/control +++ b/debian/control @@ -977,7 +977,7 @@ Architecture: any Depends: libnx-x11-dev (= ${binary:Version}), ${misc:Depends}, -Description: Library headers for nx-X11/Meas (dummy package) +Description: Library headers for nx-X11/Mesa (dummy package) NX is a software suite which implements very efficient compression of the X11 protocol. This increases performance when using X applications over a network, especially a slow one. -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit a5bb888248b3887bbe306505f900368b931b7f18 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Apr 22 22:41:14 2015 +0200 nx-libs.spec: Drop packaging of libNX_Xpm*, in RPM packages there is no such concept for transitional/dummy packages as know from Debian/Ubuntu. --- nx-libs.spec | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/nx-libs.spec b/nx-libs.spec index 3e38173..f4525be 100644 --- a/nx-libs.spec +++ b/nx-libs.spec @@ -354,33 +354,6 @@ multi-headed X applications and window managers to use two or more physical displays as one large virtual display. -%package -n libNX_Xpm-devel -Group: Development/Libraries -Summary: Development files for the NX Pixmap image file format library (dummy package) -Requires: libNX_Xpm4%{?_isa} = %{version}-%{release} - -%description -n libNX_Xpm-devel -NX is a software suite which implements very efficient compression of -the X11 protocol. This increases performance when using X -applications over a network, especially a slow one. - -This package obsoletes libNX_Xpm-devel in NX and can be safely removed. - - -%package -n libNX_Xpm4 -Group: System Environment/Libraries -Summary: NX Pixmap image file format library (dummy package) -Requires: %{name}%{?_isa} >= 3.5.0.29 -Obsoletes: libNX_Xpm - -%description -n libNX_Xpm4 -NX is a software suite which implements very efficient compression of -the X11 protocol. This increases performance when using X -applications over a network, especially a slow one. - -This package obsoletes libNX_Xpm4 in NX and can be safely removed. - - %package -n libNX_Xrandr2 Group: System Environment/Libraries Summary: NX Resize, Rotate and Reflection extension library @@ -670,11 +643,9 @@ find -name LICENSE | xargs sed -i \ find -type f -name '*.[hc]' | xargs chmod -x # Bundled nx-X11/extras -# Xpm - Is needed and needs to get linked to libXcomp # Mesa - Used by the X server # Xcursor - Other code still references files in it -# Xpm %build -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 825af1835c81070931d078b153e2d49df4a6bc69 Merge: a5bb888 49fc383 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 22 22:48:54 2015 +0200 Merge branch 'sunweaver-pr/libxdmcp-cleanup' into arctica-3.6.x Attributes GH PR #15: https://github.com/ArcticaProject/nx-libs/pull/15 debian/control | 39 +-- debian/libnx-x11-6.symbols | 8 +- debian/libnx-xdmcp-dev.install.in | 2 - debian/libnx-xdmcp6.install.in | 1 - debian/libnx-xdmcp6.symbols | 46 --- debian/rules | 1 - nx-X11/config/cf/README | 6 - nx-X11/config/cf/X11.tmpl | 30 -- nx-X11/lib/Imakefile | 7 +- nx-X11/lib/X11/Imakefile | 11 +- nx-X11/lib/Xdmcp/A8Eq.c | 50 ---- nx-X11/lib/Xdmcp/AA16.c | 51 ---- nx-X11/lib/Xdmcp/AA32.c | 51 ---- nx-X11/lib/Xdmcp/AA8.c | 51 ---- nx-X11/lib/Xdmcp/Alloc.c | 66 ---- nx-X11/lib/Xdmcp/AofA8.c | 51 ---- nx-X11/lib/Xdmcp/CA8.c | 49 --- nx-X11/lib/Xdmcp/CmpKey.c | 49 --- nx-X11/lib/Xdmcp/DA16.c | 46 --- nx-X11/lib/Xdmcp/DA32.c | 45 --- nx-X11/lib/Xdmcp/DA8.c | 45 --- nx-X11/lib/Xdmcp/DAofA8.c | 51 ---- nx-X11/lib/Xdmcp/DecKey.c | 49 --- nx-X11/lib/Xdmcp/Fill.c | 102 ------- nx-X11/lib/Xdmcp/Flush.c | 83 ----- nx-X11/lib/Xdmcp/GenKey.c | 74 ----- nx-X11/lib/Xdmcp/Imakefile | 121 -------- nx-X11/lib/Xdmcp/IncKey.c | 49 --- nx-X11/lib/Xdmcp/RA16.c | 72 ----- nx-X11/lib/Xdmcp/RA32.c | 72 ----- nx-X11/lib/Xdmcp/RA8.c | 72 ----- nx-X11/lib/Xdmcp/RAofA8.c | 75 ----- nx-X11/lib/Xdmcp/RC16.c | 52 ---- nx-X11/lib/Xdmcp/RC32.c | 56 ---- nx-X11/lib/Xdmcp/RC8.c | 47 --- nx-X11/lib/Xdmcp/RHead.c | 48 --- nx-X11/lib/Xdmcp/RR.c | 43 --- nx-X11/lib/Xdmcp/RaA16.c | 51 ---- nx-X11/lib/Xdmcp/RaA32.c | 51 ---- nx-X11/lib/Xdmcp/RaA8.c | 51 ---- nx-X11/lib/Xdmcp/RaAoA8.c | 51 ---- nx-X11/lib/Xdmcp/Unwrap.c | 95 ------ nx-X11/lib/Xdmcp/WA16.c | 51 ---- nx-X11/lib/Xdmcp/WA32.c | 51 ---- nx-X11/lib/Xdmcp/WA8.c | 51 ---- nx-X11/lib/Xdmcp/WAofA8.c | 51 ---- nx-X11/lib/Xdmcp/WC16.c | 50 ---- nx-X11/lib/Xdmcp/WC32.c | 53 ---- nx-X11/lib/Xdmcp/WC8.c | 49 --- nx-X11/lib/Xdmcp/Whead.c | 64 ---- nx-X11/lib/Xdmcp/Wrap.c | 133 -------- nx-X11/lib/Xdmcp/Wrap.h | 19 -- nx-X11/lib/Xdmcp/Wraphelp.README.crypto | 64 ---- nx-X11/lib/Xdmcp/Wraphelp.c | 500 ------------------------------- nx-X11/lib/Xdmcp/Xdmcp.h | 190 ------------ nx-X11/programs/Xserver/Imakefile | 8 +- nx-libs.spec | 59 +--- 57 files changed, 28 insertions(+), 3435 deletions(-) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 49fc383a4107062a843bc0c3a8fd9cae7e20e032 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Apr 5 18:07:53 2015 +0200 library clean-up: Don't build libNX_Xdmcp anymore. Use system's libXdmcp shared library. --- debian/control | 39 +-- debian/libnx-x11-6.symbols | 8 +- debian/libnx-xdmcp-dev.install.in | 2 - debian/libnx-xdmcp6.install.in | 1 - debian/libnx-xdmcp6.symbols | 46 --- debian/rules | 1 - nx-X11/config/cf/README | 6 - nx-X11/config/cf/X11.tmpl | 30 -- nx-X11/lib/Imakefile | 7 +- nx-X11/lib/X11/Imakefile | 11 +- nx-X11/lib/Xdmcp/A8Eq.c | 50 ---- nx-X11/lib/Xdmcp/AA16.c | 51 ---- nx-X11/lib/Xdmcp/AA32.c | 51 ---- nx-X11/lib/Xdmcp/AA8.c | 51 ---- nx-X11/lib/Xdmcp/Alloc.c | 66 ---- nx-X11/lib/Xdmcp/AofA8.c | 51 ---- nx-X11/lib/Xdmcp/CA8.c | 49 --- nx-X11/lib/Xdmcp/CmpKey.c | 49 --- nx-X11/lib/Xdmcp/DA16.c | 46 --- nx-X11/lib/Xdmcp/DA32.c | 45 --- nx-X11/lib/Xdmcp/DA8.c | 45 --- nx-X11/lib/Xdmcp/DAofA8.c | 51 ---- nx-X11/lib/Xdmcp/DecKey.c | 49 --- nx-X11/lib/Xdmcp/Fill.c | 102 ------- nx-X11/lib/Xdmcp/Flush.c | 83 ----- nx-X11/lib/Xdmcp/GenKey.c | 74 ----- nx-X11/lib/Xdmcp/Imakefile | 121 -------- nx-X11/lib/Xdmcp/IncKey.c | 49 --- nx-X11/lib/Xdmcp/RA16.c | 72 ----- nx-X11/lib/Xdmcp/RA32.c | 72 ----- nx-X11/lib/Xdmcp/RA8.c | 72 ----- nx-X11/lib/Xdmcp/RAofA8.c | 75 ----- nx-X11/lib/Xdmcp/RC16.c | 52 ---- nx-X11/lib/Xdmcp/RC32.c | 56 ---- nx-X11/lib/Xdmcp/RC8.c | 47 --- nx-X11/lib/Xdmcp/RHead.c | 48 --- nx-X11/lib/Xdmcp/RR.c | 43 --- nx-X11/lib/Xdmcp/RaA16.c | 51 ---- nx-X11/lib/Xdmcp/RaA32.c | 51 ---- nx-X11/lib/Xdmcp/RaA8.c | 51 ---- nx-X11/lib/Xdmcp/RaAoA8.c | 51 ---- nx-X11/lib/Xdmcp/Unwrap.c | 95 ------ nx-X11/lib/Xdmcp/WA16.c | 51 ---- nx-X11/lib/Xdmcp/WA32.c | 51 ---- nx-X11/lib/Xdmcp/WA8.c | 51 ---- nx-X11/lib/Xdmcp/WAofA8.c | 51 ---- nx-X11/lib/Xdmcp/WC16.c | 50 ---- nx-X11/lib/Xdmcp/WC32.c | 53 ---- nx-X11/lib/Xdmcp/WC8.c | 49 --- nx-X11/lib/Xdmcp/Whead.c | 64 ---- nx-X11/lib/Xdmcp/Wrap.c | 133 -------- nx-X11/lib/Xdmcp/Wrap.h | 19 -- nx-X11/lib/Xdmcp/Wraphelp.README.crypto | 64 ---- nx-X11/lib/Xdmcp/Wraphelp.c | 500 ------------------------------- nx-X11/lib/Xdmcp/Xdmcp.h | 190 ------------ nx-X11/programs/Xserver/Imakefile | 8 +- nx-libs.spec | 59 +--- 57 files changed, 28 insertions(+), 3435 deletions(-) diff --git a/debian/control b/debian/control index e17a387..4e49189 100644 --- a/debian/control +++ b/debian/control @@ -16,6 +16,7 @@ Build-Depends: libxml2-dev, libxpm-dev, libxfont-dev, + libxdmcp-dev, autoconf, pkg-config, x11proto-core-dev, @@ -367,19 +368,16 @@ Multi-Arch: same Pre-Depends: ${misc:Pre-Depends}, Depends: - ${shlibs:Depends}, ${misc:Depends}, -Breaks: nxlibs (<= 3.5.1), - libnx-x11 (<< 2:3.5.0.29-0x2go2~), -Description: nx-X11 Display Manager Control Protocol library +Description: nx-X11 Display Manager Control Protocol library (dummy package) NX is a software suite which implements very efficient compression of the X11 protocol. This increases performance when using X applications over a network, especially a slow one. . - nx-X11 Display Manager Control Protocol library + This package removes the obsoleted libNX_Xdmcp.so.6 library. With + recent versions of NX, the system-wide installed libXdmcp gets used. . - This package provides the main interface to the nx-X11 display manager control - protocol library, which allows for remote logins to display managers. + This package can be safely removed. Package: libnx-xdmcp-dev Provides: libnx-xdmcp6-dev @@ -387,21 +385,17 @@ Section: libdevel Architecture: any Multi-Arch: same Depends: - libnx-xdmcp6 (= ${binary:Version}), ${misc:Depends}, -Breaks: nxlibs (<= 3.5.1), - libnx-x11-dev (<< 2:3.5.0.29-0x2go2~), -Description: nx-X11 Display Manager Control Protocol library (development headers) +Description: nx-X11 Display Manager Control Protocol library (dummy package) NX is a software suite which implements very efficient compression of the X11 protocol. This increases performance when using X applications over a network, especially a slow one. . - nx-X11 Display Manager Control Protocol library - . - This package provides the main interface to the nx-X11 display manager control - protocol library, which allows for remote logins to display managers. + This package removes the obsoleted headers for the libNX_Xdmcp.so.6 + library. With recent versions of NX, the system-wide installed libXdmcp + gets used. . - This package contains the development headers for this library. + This package can be safely removed. Package: libnx-xdmcp6-dbg Architecture: any @@ -409,21 +403,18 @@ Multi-Arch: same Pre-Depends: ${misc:Pre-Depends}, Depends: - libnx-xdmcp6 (= ${binary:Version}), ${misc:Depends}, Section: debug -Breaks: nx-x11-dbg (<< 2:3.5.0.29-0x2go2~), -Description: nx-X11 Display Manager Control Protocol library (debug package) +Description: nx-X11 Display Manager Control Protocol library (dummy package) NX is a software suite which implements very efficient compression of the X11 protocol. This increases performance when using X applications over a network, especially a slow one. . - nx-X11 Display Manager Control Protocol library - . - This package provides the main interface to the nx-X11 display manager control - protocol library, which allows for remote logins to display managers. + This package removes the obsoleted debug symbols for the libNX_Xdmcp.so.6 + library. With recent versions of NX, the system-wide installed libXdmcp + gets used. . - This package contains debug symbols for this library. + This package can be safely removed. Package: libnx-xext6 Architecture: any diff --git a/debian/libnx-x11-6.symbols b/debian/libnx-x11-6.symbols index 4b7ceac..b9ab971 100644 --- a/debian/libnx-x11-6.symbols +++ b/debian/libnx-x11-6.symbols @@ -547,7 +547,7 @@ libNX_X11.so.6 libnx-x11-6 #MINVER# XcmsTekHVCWhiteShiftColors@Base 3.5.0.29 XcmsUNDEFINEDColorSpace@Base 3.5.0.29 XcmsVisualOfCCC@Base 3.5.0.29 - XdmcpWrap@Base 3.5.0.29 +#MISSING: 2:3.5.99.0-0~build1# XdmcpWrap@Base 3.5.0.29 XkbAddDeviceLedInfo@Base 3.5.0.29 XkbAddGeomColor@Base 3.5.0.29 XkbAddGeomDoodad@Base 3.5.0.29 @@ -956,9 +956,9 @@ libNX_X11.so.6 libnx-x11-6 #MINVER# _XcmsTekHVC_prefix@Base 3.5.0.29 _XcmsUnresolveColor@Base 3.5.0.29 _Xdebug@Base 3.5.0.29 - _XdmcpAuthDoIt@Base 3.5.0.29 - _XdmcpAuthSetup@Base 3.5.0.29 - _XdmcpWrapperToOddParity@Base 3.5.0.29 +#MISSING: 2:3.5.99.0-0~build1# _XdmcpAuthDoIt@Base 3.5.0.29 +#MISSING: 2:3.5.99.0-0~build1# _XdmcpAuthSetup@Base 3.5.0.29 +#MISSING: 2:3.5.99.0-0~build1# _XdmcpWrapperToOddParity@Base 3.5.0.29 _Xevent_to_mask@Base 3.5.0.29 _Xglobal_lock@Base 3.5.0.29 _Xi18n_lock@Base 3.5.0.29 diff --git a/debian/libnx-xdmcp-dev.install.in b/debian/libnx-xdmcp-dev.install.in deleted file mode 100644 index 2c2457b..0000000 --- a/debian/libnx-xdmcp-dev.install.in +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib/*/libNX_Xdmcp.so -usr/include/*/nx/X11/Xdmcp.h diff --git a/debian/libnx-xdmcp6.install.in b/debian/libnx-xdmcp6.install.in deleted file mode 100644 index 6910013..0000000 --- a/debian/libnx-xdmcp6.install.in +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libNX_Xdmcp.so.* diff --git a/debian/libnx-xdmcp6.symbols b/debian/libnx-xdmcp6.symbols deleted file mode 100644 index 49645d6..0000000 --- a/debian/libnx-xdmcp6.symbols +++ /dev/null @@ -1,46 +0,0 @@ -libNX_Xdmcp.so.6 libnx-xdmcp6 #MINVER# - Xalloc@Base 3.5.0.29 - XdmcpARRAY8Equal@Base 3.5.0.29 - XdmcpAllocARRAY16@Base 3.5.0.29 - XdmcpAllocARRAY32@Base 3.5.0.29 - XdmcpAllocARRAY8@Base 3.5.0.29 - XdmcpAllocARRAYofARRAY8@Base 3.5.0.29 - XdmcpCompareKeys@Base 3.5.0.29 - XdmcpCopyARRAY8@Base 3.5.0.29 - XdmcpDecrementKey@Base 3.5.0.29 - XdmcpDisposeARRAY16@Base 3.5.0.29 - XdmcpDisposeARRAY32@Base 3.5.0.29 - XdmcpDisposeARRAY8@Base 3.5.0.29 - XdmcpDisposeARRAYofARRAY8@Base 3.5.0.29 - XdmcpFill@Base 3.5.0.29 - XdmcpFlush@Base 3.5.0.29 - XdmcpGenerateKey@Base 3.5.0.29 - XdmcpIncrementKey@Base 3.5.0.29 - XdmcpReadARRAY16@Base 3.5.0.29 - XdmcpReadARRAY32@Base 3.5.0.29 - XdmcpReadARRAY8@Base 3.5.0.29 - XdmcpReadARRAYofARRAY8@Base 3.5.0.29 - XdmcpReadCARD16@Base 3.5.0.29 - XdmcpReadCARD32@Base 3.5.0.29 - XdmcpReadCARD8@Base 3.5.0.29 - XdmcpReadHeader@Base 3.5.0.29 - XdmcpReadRemaining@Base 3.5.0.29 - XdmcpReallocARRAY16@Base 3.5.0.29 - XdmcpReallocARRAY32@Base 3.5.0.29 - XdmcpReallocARRAY8@Base 3.5.0.29 - XdmcpReallocARRAYofARRAY8@Base 3.5.0.29 - XdmcpUnwrap@Base 3.5.0.29 - XdmcpWrap@Base 3.5.0.29 - XdmcpWriteARRAY16@Base 3.5.0.29 - XdmcpWriteARRAY32@Base 3.5.0.29 - XdmcpWriteARRAY8@Base 3.5.0.29 - XdmcpWriteARRAYofARRAY8@Base 3.5.0.29 - XdmcpWriteCARD16@Base 3.5.0.29 - XdmcpWriteCARD32@Base 3.5.0.29 - XdmcpWriteCARD8@Base 3.5.0.29 - XdmcpWriteHeader@Base 3.5.0.29 - Xfree@Base 3.5.0.29 - Xrealloc@Base 3.5.0.29 - _XdmcpAuthDoIt@Base 3.5.0.29 - _XdmcpAuthSetup@Base 3.5.0.29 - _XdmcpWrapperToOddParity@Base 3.5.0.29 diff --git a/debian/rules b/debian/rules index 6d076a1..dd4f1c7 100755 --- a/debian/rules +++ b/debian/rules @@ -83,7 +83,6 @@ override_dh_strip: dh_strip -plibnx-xau6 --dbg-package=libnx-xau6-dbg dh_strip -plibnx-xcomposite1 --dbg-package=libnx-xcomposite1-dbg dh_strip -plibnx-xdamage1 --dbg-package=libnx-xdamage1-dbg - dh_strip -plibnx-xdmcp6 --dbg-package=libnx-xdmcp6-dbg dh_strip -plibnx-xext6 --dbg-package=libnx-xext6-dbg dh_strip -plibnx-xfixes3 --dbg-package=libnx-xfixes3-dbg dh_strip -plibnx-xinerama1 --dbg-package=libnx-xinerama1-dbg diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README index 80113a9..323b6bc 100644 --- a/nx-X11/config/cf/README +++ b/nx-X11/config/cf/README @@ -204,7 +204,6 @@ X11.tmpl provides defaults for the following variables: DebugLibX11 build libX11_d.a DebugLibXau build libXau_d.a DebugLibXaw build libXaw_d.a - DebugLibXdmcp build libXdmcp_d.a DebugLibXext build libXext_d.a DebugLibXi build libXi_d.a DebugLibXmu build libXmu_d.a @@ -253,7 +252,6 @@ X11.tmpl provides defaults for the following variables: NormalLibX11 build libX11.a NormalLibXau build libXau.a NormalLibXaw build libXaw.a - NormalLibXdmcp build libXdmcp.a NormalLibXext build libXext.a NormalLibXi build libXi.a NormalLibXmu build libXmu.a @@ -269,7 +267,6 @@ X11.tmpl provides defaults for the following variables: ProfileLibX11 build libX11_p.a ProfileLibXau build libXau_p.a ProfileLibXaw build libXaw_p.a - ProfileLibXdmcp build libXdmcp_p.a ProfileLibXext build libXext_p.a ProfileLibXi build libXi_p.a ProfileLibXmu build libXmu_p.a @@ -291,7 +288,6 @@ X11.tmpl provides defaults for the following variables: SharedLibX11 boolean for making sharable libX11.so SharedLibXau boolean for making sharable libXau.so SharedLibXaw boolean for making sharable libXaw.so - SharedLibXdmcp boolean for making sharable libXdmcp.so SharedLibXext boolean for making sharable libXext.so SharedLibXi boolean for making sharable libXi.so SharedLibXmu boolean for making sharable libXmu.so @@ -384,8 +380,6 @@ An <os>Lib.tmpl file provides defaults for the following variables: SharedXauRev version number for libXau.so SharedXawReqs required libs for libXaw.so SharedXawRev version number for libXaw.so - SharedXdmcpReqs required libs for libXdmcp.so - SharedXdmcpRev version number for libXdmcp.so SharedXextReqs required libs for libXext.so SharedXextRev version number for libXext.so SharedXiReqs required libs for libXi.so diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl index 30b0451..f89873d 100644 --- a/nx-X11/config/cf/X11.tmpl +++ b/nx-X11/config/cf/X11.tmpl @@ -171,10 +171,6 @@ XORGRELSTRING = XorgManVersionString #define BuildXauLib (BuildLibraries || BuildLibrariesForXServers) #endif #define UseInstalledXauLib (defined(UseInstalled) || !BuildXauLib) -#ifndef BuildXdmcpLib -#define BuildXdmcpLib (BuildLibraries || BuildLibrariesForXServers) -#endif -#define UseInstalledXdmcpLib (defined(UseInstalled) || !BuildXdmcpLib) #ifndef BuildMITMiscExt #define BuildMITMiscExt YES #endif @@ -2442,32 +2438,6 @@ ProjectUnsharedLibReferences(XAUTH,NX_Xau,$(XAUTHSRC),$(USRLIBDIR)) #endif #endif -#ifndef SharedLibXdmcp -#define SharedLibXdmcp YES -#endif -#ifndef NormalLibXdmcp -#define NormalLibXdmcp (!SharedLibXdmcp | ForceNormalLib) -#endif -#ifndef DebugLibXdmcp -#define DebugLibXdmcp NO /* debugged XDMCP library */ -#endif -#ifndef ProfileLibXdmcp -#define ProfileLibXdmcp NO /* profiled XDMCP library */ -#endif - XDMCPLIBSRC = $(LIBSRC)/Xdmcp -#if SharedLibXdmcp -#ifndef SharedXdmcpRev -#define SharedXdmcpRev 6.0 -#endif -SharedLibReferences(XDMCP,NX_Xdmcp,$(XDMCPLIBSRC),SOXDMCPREV,SharedXdmcpRev) -#else -#if !UseInstalledXdmcpLib -ProjectUnsharedLibReferences(XDMCP,NX_Xdmcp,$(XDMCPLIBSRC),XBuildLibDir) -#else -ProjectUnsharedLibReferences(XDMCP,NX_Xdmcp,$(XDMCPLIBSRC),$(USRLIBDIR)) -#endif -#endif - #ifndef SharedLibXmu #define SharedLibXmu HasSharedLibraries #endif diff --git a/nx-X11/lib/Imakefile b/nx-X11/lib/Imakefile index 2c7f174..28d9f12 100644 --- a/nx-X11/lib/Imakefile +++ b/nx-X11/lib/Imakefile @@ -165,10 +165,6 @@ XALIBDIR = Xa XAULIBDIR = Xau #endif -#if BuildXdmcpLib -XDMCPLIBDIR = Xdmcp -#endif - #if BuildX11Lib X11LIBDIR = X11 #endif @@ -183,7 +179,7 @@ XTSTLIBDIR = Xtst #endif -LINTSUBDIRS = $(XAULIBDIR) $(XDMCPLIBDIR) $(X11LIBDIR) \ +LINTSUBDIRS = $(XAULIBDIR) $(X11LIBDIR) \ $(OLDXLIBDIR) $(ICELIBDIR) $(SMLIBDIR) $(XEXTLIBDIR) $(XTLIBDIR) \ $(SSLIBDIR) $(XF86MISCLIBDIR) $(XF86VMLIBDIR) $(XF86DGALIBDIR) \ $(XF86RUSHLIBDIR) $(XMULIBDIR) $(XMUULIBDIR) $(XPMLIBDIR) \ @@ -204,4 +200,3 @@ MakeSubdirs($(SUBDIRS)) DependSubdirs($(SUBDIRS)) MakeLintLibSubdirs($(LINTSUBDIRS)) MakeLintSubdirs($(LINTSUBDIRS),install.ln,install.ln) - diff --git a/nx-X11/lib/X11/Imakefile b/nx-X11/lib/X11/Imakefile index 4e781f5..e003511 100644 --- a/nx-X11/lib/X11/Imakefile +++ b/nx-X11/lib/X11/Imakefile @@ -120,8 +120,6 @@ EXTRA_LIBRARIES = /**/ #endif #if HasXdmAuth XDMAUTHDEFS = -DHASXDMAUTH - XDMAUTHOBJS = Wrap.o Wraphelp.o - XDMAUTHSRCS = Wrap.c Wraphelp.c #endif #if BuildXKBlib XKB_DEFINES = -DXKB @@ -593,7 +591,7 @@ SRCS2 = \ Withdraw.c \ WMGeom.c \ WMProps.c \ - $(AUTHSRCS) $(XDMAUTHSRCS) $(K5SRCS) $(THRSTUBSRCS) + $(AUTHSRCS) $(K5SRCS) $(THRSTUBSRCS) OBJS2 = \ Macros.o \ @@ -716,7 +714,6 @@ OBJS2 = \ WMGeom.o \ WMProps.o \ $(AUTHOBJS) \ - $(XDMAUTHOBJS) \ $(K5OBJS) \ $(THRSTUBOBJS) @@ -1069,7 +1066,6 @@ LinkFile(x11trans.c,$(TRANSCOMMSRC)/transport.c) SpecialCLibObjectRule(ximtrans,$(ICONFIGFILES),$(TRANS_INCLUDES) $(CONN_DEFINES) $(SOCK_DEFINES) $(XTRANS_XIM_DEFINES) $(POLL_DEFINES)) LinkFile(ximtrans.c,$(TRANSCOMMSRC)/transport.c) SpecialCLibObjectRule(OpenDis,$(ICONFIGFILES),$(BC_DEFINES) $(OPEN_DEFINES) $(XTRANS_X_DEFINES) $(XKB_DEFINES)) -SpecialCLibObjectRule(Wrap,$(ICONFIGFILES),$(XDMAUTHDEFS)) SpecialCLibObjectRule(XlibInt,$(ICONFIGFILES),$(CONN_DEFINES) $(POLL_DEFINES) $(XTRANS_X_DEFINES)) SpecialCLibObjectRule(Font,$(ICONFIGFILES),$(SHM_DEFINES) $(XF86BIGFONT_DEFINES)) SpecialCLibObjectRule(FontInfo,$(ICONFIGFILES),$(SHM_DEFINES) $(XF86BIGFONT_DEFINES)) @@ -1116,11 +1112,6 @@ LinkSourceFile(AuRead.c,$(XAUTHSRC)) #if HasKrb5 LinkSourceFile(k5encode.c,$(XAUTHSRC)) #endif -#if HasXdmAuth -LinkSourceFile(Wrap.h,$(XDMCPLIBSRC)) -LinkSourceFile(Wrap.c,$(XDMCPLIBSRC)) -LinkSourceFile(Wraphelp.c,$(XDMCPLIBSRC)) -#endif #ifdef QNX4Architecture LOCAL_LDFLAGS=-F diff --git a/nx-X11/lib/Xdmcp/A8Eq.c b/nx-X11/lib/Xdmcp/A8Eq.c deleted file mode 100644 index b986580..0000000 --- a/nx-X11/lib/Xdmcp/A8Eq.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * $Xorg: A8Eq.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpARRAY8Equal (array1, array2) - ARRAY8Ptr array1, array2; -{ - int i; - - if (array1->length != array2->length) - return FALSE; - for (i = 0; i < (int)array1->length; i++) - if (array1->data[i] != array2->data[i]) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/AA16.c b/nx-X11/lib/Xdmcp/AA16.c deleted file mode 100644 index 5de5caf..0000000 --- a/nx-X11/lib/Xdmcp/AA16.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: AA16.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/AA16.c,v 1.3 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpAllocARRAY16 (ARRAY16Ptr array, int length) -{ - CARD16Ptr newData; - - newData = (CARD16Ptr) Xalloc (length * sizeof (CARD16)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/AA32.c b/nx-X11/lib/Xdmcp/AA32.c deleted file mode 100644 index fbeded1..0000000 --- a/nx-X11/lib/Xdmcp/AA32.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: AA32.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/AA32.c,v 1.3 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpAllocARRAY32 (ARRAY32Ptr array, int length) -{ - CARD32Ptr newData; - - newData = (CARD32Ptr) Xalloc (length * sizeof (CARD32)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/AA8.c b/nx-X11/lib/Xdmcp/AA8.c deleted file mode 100644 index 391e788..0000000 --- a/nx-X11/lib/Xdmcp/AA8.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: AA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/AA8.c,v 1.3 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpAllocARRAY8 (ARRAY8Ptr array, int length) -{ - CARD8Ptr newData; - - newData = (CARD8Ptr) Xalloc (length * sizeof (CARD8)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/Alloc.c b/nx-X11/lib/Xdmcp/Alloc.c deleted file mode 100644 index 40cbacf..0000000 --- a/nx-X11/lib/Xdmcp/Alloc.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * $Xorg: Alloc.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/Alloc.c,v 3.4 2001/07/25 15:04:50 dawes Exp $ */ - -/* stubs for use when Xalloc, Xrealloc and Xfree are not defined */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> -#include <stdlib.h> - -void * -Xalloc (unsigned long amount) -{ - if (amount == 0) - amount = 1; - return malloc (amount); -} - -void * -Xrealloc (void *old, unsigned long amount) -{ - if (amount == 0) - amount = 1; - if (!old) - return malloc (amount); - return realloc ((char *) old, amount); -} - -void -Xfree (void *old) -{ - if (old) - free ((char *) old); -} diff --git a/nx-X11/lib/Xdmcp/AofA8.c b/nx-X11/lib/Xdmcp/AofA8.c deleted file mode 100644 index fe77330..0000000 --- a/nx-X11/lib/Xdmcp/AofA8.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: AofA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/AofA8.c,v 1.3 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpAllocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length) -{ - ARRAY8Ptr newData; - - newData = (ARRAY8Ptr) Xalloc (length * sizeof (ARRAY8)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/CA8.c b/nx-X11/lib/Xdmcp/CA8.c deleted file mode 100644 index efdd5a1..0000000 --- a/nx-X11/lib/Xdmcp/CA8.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * $Xorg: CA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> -#include <X11/Xfuncs.h> - -int -XdmcpCopyARRAY8 (src, dst) - ARRAY8Ptr src, dst; -{ - dst->length = src->length; - dst->data = (CARD8 *) Xalloc (dst->length * sizeof (CARD8)); - if (!dst->data) - return FALSE; - memmove (dst->data, src->data, src->length * sizeof (CARD8)); - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/CmpKey.c b/nx-X11/lib/Xdmcp/CmpKey.c deleted file mode 100644 index 112bc20..0000000 --- a/nx-X11/lib/Xdmcp/CmpKey.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * $Xorg: CmpKey.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/CmpKey.c,v 1.3 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpCompareKeys (XdmAuthKeyPtr a, XdmAuthKeyPtr b) -{ - int i; - - for (i = 0; i < 8; i++) - if (a->data[i] != b->data[i]) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/DA16.c b/nx-X11/lib/Xdmcp/DA16.c deleted file mode 100644 index 021acce..0000000 --- a/nx-X11/lib/Xdmcp/DA16.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * $Xorg: DA16.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/DA16.c,v 1.5 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -void -XdmcpDisposeARRAY16 (ARRAY16Ptr array) -{ - if (array->data != NULL) Xfree (array->data); - array->length = 0; - array->data = NULL; -} diff --git a/nx-X11/lib/Xdmcp/DA32.c b/nx-X11/lib/Xdmcp/DA32.c deleted file mode 100644 index 9d9620b..0000000 --- a/nx-X11/lib/Xdmcp/DA32.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * $Xorg: DA32.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -void -XdmcpDisposeARRAY32 (array) - ARRAY32Ptr array; -{ - if (array->data != NULL) Xfree (array->data); - array->length = 0; - array->data = NULL; -} diff --git a/nx-X11/lib/Xdmcp/DA8.c b/nx-X11/lib/Xdmcp/DA8.c deleted file mode 100644 index 9c20690..0000000 --- a/nx-X11/lib/Xdmcp/DA8.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * $Xorg: DA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -void -XdmcpDisposeARRAY8 (array) - ARRAY8Ptr array; -{ - if (array->data != NULL) Xfree (array->data); - array->length = 0; - array->data = NULL; -} diff --git a/nx-X11/lib/Xdmcp/DAofA8.c b/nx-X11/lib/Xdmcp/DAofA8.c deleted file mode 100644 index 73a2e9c..0000000 --- a/nx-X11/lib/Xdmcp/DAofA8.c +++ /dev/null @@ -1,51 +0,0 @@ -/* $Xdotorg: $ - * $Xorg: DAofA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -void -XdmcpDisposeARRAYofARRAY8 (array) - ARRAYofARRAY8Ptr array; -{ - int i; - - if (array->data != NULL) { - for (i = 0; i < (int)array->length; i++) - XdmcpDisposeARRAY8 (&array->data[i]); - Xfree (array->data); - } - array->length = 0; - array->data = NULL; -} diff --git a/nx-X11/lib/Xdmcp/DecKey.c b/nx-X11/lib/Xdmcp/DecKey.c deleted file mode 100644 index fe08cc3..0000000 --- a/nx-X11/lib/Xdmcp/DecKey.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * $Xorg: DecKey.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/DecKey.c,v 1.3 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -void -XdmcpDecrementKey (XdmAuthKeyPtr key) -{ - int i; - - i = 7; - while (key->data[i]-- == 0) - if (--i < 0) - break; -} diff --git a/nx-X11/lib/Xdmcp/Fill.c b/nx-X11/lib/Xdmcp/Fill.c deleted file mode 100644 index 08f6b35..0000000 --- a/nx-X11/lib/Xdmcp/Fill.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * $Xorg: Fill.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/Fill.c,v 3.8 2001/07/23 13:15:42 dawes Exp $ */ - -#ifdef WIN32 -#define _WILLWINSOCK_ -#endif -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -#ifdef STREAMSCONN -#include <tiuser.h> -#else -#ifdef WIN32 -#include <X11/Xwinsock.h> -#else -#ifndef Lynx -#include <sys/socket.h> -#else -#include <socket.h> -#endif /* !Lynx */ -#endif -#endif - -int -XdmcpFill (fd, buffer, from, fromlen) - int fd; - XdmcpBufferPtr buffer; - XdmcpNetaddr from; /* return */ - int *fromlen; /* return */ -{ - BYTE *newBuf; -#ifdef STREAMSCONN - struct t_unitdata dataunit; - int gotallflag, result; -#endif - - if (buffer->size < XDM_MAX_MSGLEN) - { - newBuf = (BYTE *) Xalloc (XDM_MAX_MSGLEN); - if (newBuf) - { - Xfree (buffer->data); - buffer->data = newBuf; - buffer->size = XDM_MAX_MSGLEN; - } - } - buffer->pointer = 0; -#ifdef STREAMSCONN - dataunit.addr.buf = from; - dataunit.addr.maxlen = *fromlen; - dataunit.opt.maxlen = 0; /* don't care to know about options */ - dataunit.udata.buf = (char *)buffer->data; - dataunit.udata.maxlen = buffer->size; - result = t_rcvudata (fd, &dataunit, &gotallflag); - if (result < 0) { - return FALSE; - } - buffer->count = dataunit.udata.len; - *fromlen = dataunit.addr.len; -#else - buffer->count = recvfrom (fd, (char*)buffer->data, buffer->size, 0, - (struct sockaddr *)from, (void *)fromlen); -#endif - if (buffer->count < 6) { - buffer->count = 0; - return FALSE; - } - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/Flush.c b/nx-X11/lib/Xdmcp/Flush.c deleted file mode 100644 index d04cdb3..0000000 --- a/nx-X11/lib/Xdmcp/Flush.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * $Xorg: Flush.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/Flush.c,v 3.7 2001/07/23 13:15:42 dawes Exp $ */ - -#ifdef WIN32 -#define _WILLWINSOCK_ -#endif -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -#ifdef STREAMSCONN -#include <tiuser.h> -#else -#ifdef WIN32 -#include <X11/Xwinsock.h> -#else -#ifndef Lynx -#include <sys/socket.h> -#else -#include <socket.h> -#endif /* !Lynx */ -#endif -#endif - -int -XdmcpFlush (fd, buffer, to, tolen) - int fd; - XdmcpBufferPtr buffer; - XdmcpNetaddr to; - int tolen; -{ - int result; -#ifdef STREAMSCONN - struct t_unitdata dataunit; - - dataunit.addr.buf = to; - dataunit.addr.len = tolen; - dataunit.opt.len = 0; /* default options */ - dataunit.udata.buf = (char *)buffer->data; - dataunit.udata.len = buffer->pointer; - result = t_sndudata(fd, &dataunit); - if (result < 0) - return FALSE; -#else - result = sendto (fd, (char *)buffer->data, buffer->pointer, 0, - (struct sockaddr *)to, tolen); - if (result != buffer->pointer) - return FALSE; -#endif - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/GenKey.c b/nx-X11/lib/Xdmcp/GenKey.c deleted file mode 100644 index 0d70256..0000000 --- a/nx-X11/lib/Xdmcp/GenKey.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * $Xorg: GenKey.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/GenKey.c,v 3.7 2001/07/25 15:04:50 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -static void -getbits (long data, unsigned char *dst) -{ - dst[0] = (data ) & 0xff; - dst[1] = (data >> 8) & 0xff; - dst[2] = (data >> 16) & 0xff; - dst[3] = (data >> 24) & 0xff; -} - -#define Time_t time_t - -#include <stdlib.h> - -#if defined(SYSV) || defined(SVR4) -#define srandom srand48 -#define random lrand48 -#endif -#ifdef WIN32 -#include <process.h> -#define srandom srand -#define random rand -#define getpid(x) _getpid(x) -#endif - -void -XdmcpGenerateKey (XdmAuthKeyPtr key) -{ - long lowbits, highbits; - - srandom ((int)getpid() ^ time((Time_t *)0)); - lowbits = random (); - highbits = random (); - getbits (lowbits, key->data); - getbits (highbits, key->data + 4); -} diff --git a/nx-X11/lib/Xdmcp/Imakefile b/nx-X11/lib/Xdmcp/Imakefile deleted file mode 100644 index 1fc7b6d..0000000 --- a/nx-X11/lib/Xdmcp/Imakefile +++ /dev/null @@ -1,121 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/17 19:45:48 cpqbld Exp $ -XCOMM $XdotOrg: xc/lib/Xdmcp/Imakefile,v 1.3 2005/09/22 23:54:18 alanc Exp $ - - - -XCOMM $XFree86: xc/lib/Xdmcp/Imakefile,v 3.4 1999/04/17 09:08:12 dawes Exp $ - -#define DoNormalLib NormalLibXdmcp -#define DoSharedLib SharedLibXdmcp -#define DoExtraLib SharedLibXdmcp -#define DoDebugLib DebugLibXdmcp -#define DoProfileLib ProfileLibXdmcp -#define LibName NX_Xdmcp -#define SoRev SOXDMCPREV -#define IncSubdir X11 - -#ifdef SharedXdmcpReqs -REQUIREDLIBS = SharedXdmcpReqs -#endif - -#if HasXdmAuth -AUTHDEFS = -DHASXDMAUTH -AUTHSRCS = Wrap.c Unwrap.c Wraphelp.c -AUTHOBJS = Wrap.o Unwrap.o Wraphelp.o -#endif - -DEFINES = $(AUTHDEFS) - -HEADERS = Xdmcp.h - -SRCS = \ - A8Eq.c \ - AA8.c \ - AA16.c \ - AA32.c \ - AofA8.c \ - CA8.c \ - DA8.c \ - DA16.c \ - DA32.c \ - DAofA8.c \ - Fill.c \ - Flush.c \ - RA8.c \ - RA16.c \ - RA32.c \ - RAofA8.c \ - RC8.c \ - RC16.c \ - RC32.c \ - RHead.c \ - RR.c \ - RaA8.c \ - RaA16.c \ - RaA32.c \ - RaAoA8.c \ - WA8.c \ - WA16.c \ - WA32.c \ - WAofA8.c \ - WC8.c \ - WC16.c \ - WC32.c \ - Whead.c \ - Alloc.c \ - CmpKey.c \ - DecKey.c \ - GenKey.c \ - IncKey.c \ - $(AUTHSRCS) - -OBJS = \ - A8Eq.o \ - AA8.o \ - AA16.o \ - AA32.o \ - AofA8.o \ - CA8.o \ - DA8.o \ - DA16.o \ - DA32.o \ - DAofA8.o \ - Fill.o \ - Flush.o \ - RA8.o \ - RA16.o \ - RA32.o \ - RAofA8.o \ - RC8.o \ - RC16.o \ - RC32.o \ - RHead.o \ - RR.o \ - RaA8.o \ - RaA16.o \ - RaA32.o \ - RaAoA8.o \ - WA8.o \ - WA16.o \ - WA32.o \ - WAofA8.o \ - WC8.o \ - WC16.o \ - WC32.o \ - Whead.o \ - Alloc.o \ - CmpKey.o \ - DecKey.o \ - GenKey.o \ - IncKey.o \ - $(AUTHOBJS) - -#include <Library.tmpl> - -#ifdef WraphelpSourceRule -WraphelpSourceRule() -#endif -SpecialCLibObjectRule(Fill,$(ICONFIGFILES),$(CONNECTION_FLAGS)) -SpecialCLibObjectRule(Flush,$(ICONFIGFILES),$(CONNECTION_FLAGS)) - -DependTarget() diff --git a/nx-X11/lib/Xdmcp/IncKey.c b/nx-X11/lib/Xdmcp/IncKey.c deleted file mode 100644 index 292413a..0000000 --- a/nx-X11/lib/Xdmcp/IncKey.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * $Xorg: IncKey.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/IncKey.c,v 1.3 2001/01/17 19:42:43 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -void -XdmcpIncrementKey (XdmAuthKeyPtr key) -{ - int i; - - i = 7; - while (++key->data[i] == 0) - if (--i < 0) - break; -} diff --git a/nx-X11/lib/Xdmcp/RA16.c b/nx-X11/lib/Xdmcp/RA16.c deleted file mode 100644 index cdaaa22..0000000 --- a/nx-X11/lib/Xdmcp/RA16.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * $Xorg: RA16.c,v 1.5 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadARRAY16 (buffer, array) - XdmcpBufferPtr buffer; - ARRAY16Ptr array; -{ - int i; - - if (!XdmcpReadCARD8 (buffer, &array->length)) { - - /* Must set array->data to NULL to guarantee safe call of - * XdmcpDisposeARRAY*(array) (which calls Xfree(array->data)); - * see defect 7329 */ - array->data = 0; - return FALSE; - } - if (!array->length) - { - array->data = NULL; - return TRUE; - } - array->data = (CARD16 *) Xalloc (array->length * sizeof (CARD16)); - if (!array->data) - return FALSE; - for (i = 0; i < (int)array->length; i++) - { - if (!XdmcpReadCARD16 (buffer, &array->data[i])) - { - Xfree (array->data); - array->data = NULL; - array->length = 0; - return FALSE; - } - } - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RA32.c b/nx-X11/lib/Xdmcp/RA32.c deleted file mode 100644 index 09f72da..0000000 --- a/nx-X11/lib/Xdmcp/RA32.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * $Xorg: RA32.c,v 1.5 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadARRAY32 (buffer, array) - XdmcpBufferPtr buffer; - ARRAY32Ptr array; -{ - int i; - - if (!XdmcpReadCARD8 (buffer, &array->length)) { - - /* Must set array->data to NULL to guarantee safe call of - * XdmcpDisposeARRAY*(array) (which calls Xfree(array->data)); - * see defect 7329 */ - array->data = 0; - return FALSE; - } - if (!array->length) - { - array->data = NULL; - return TRUE; - } - array->data = (CARD32 *) Xalloc (array->length * sizeof (CARD32)); - if (!array->data) - return FALSE; - for (i = 0; i < (int)array->length; i++) - { - if (!XdmcpReadCARD32 (buffer, &array->data[i])) - { - Xfree (array->data); - array->data = NULL; - array->length = 0; - return FALSE; - } - } - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RA8.c b/nx-X11/lib/Xdmcp/RA8.c deleted file mode 100644 index eee3c6b..0000000 --- a/nx-X11/lib/Xdmcp/RA8.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * $Xorg: RA8.c,v 1.5 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadARRAY8 (buffer, array) - XdmcpBufferPtr buffer; - ARRAY8Ptr array; -{ - int i; - - if (!XdmcpReadCARD16 (buffer, &array->length)) { - - /* Must set array->data to NULL to guarantee safe call of - * XdmcpDisposeARRAY*(array) (which calls Xfree(array->data)); - * see defect 7329 */ - array->data = 0; - return FALSE; - } - if (!array->length) - { - array->data = NULL; - return TRUE; - } - array->data = (CARD8 *) Xalloc (array->length * sizeof (CARD8)); - if (!array->data) - return FALSE; - for (i = 0; i < (int)array->length; i++) - { - if (!XdmcpReadCARD8 (buffer, &array->data[i])) - { - Xfree (array->data); - array->data = NULL; - array->length = 0; - return FALSE; - } - } - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RAofA8.c b/nx-X11/lib/Xdmcp/RAofA8.c deleted file mode 100644 index 568236c..0000000 --- a/nx-X11/lib/Xdmcp/RAofA8.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * $Xorg: RAofA8.c,v 1.6 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadARRAYofARRAY8 (buffer, array) - XdmcpBufferPtr buffer; - ARRAYofARRAY8Ptr array; -{ - int i; - - if (!XdmcpReadCARD8 (buffer, &array->length)) { - - /* Must set array->data to NULL to guarantee safe call of - * XdmcpDisposeARRAY*(array) (which calls Xfree(array->data)); - * see defect 7329 */ - array->data = 0; - return FALSE; - } - if (!array->length) - { - array->data = NULL; - return TRUE; - } - array->data = (ARRAY8 *) Xalloc (array->length * sizeof (ARRAY8)); - if (!array->data) - return FALSE; - for (i = 0; i < (int)array->length; i++) - { - if (!XdmcpReadARRAY8 (buffer, &array->data[i])) - { - - /* All arrays allocated thus far in the loop must be freed - * if there is an error in the read. - * See Defect 7328 */ - array->length = i; - XdmcpDisposeARRAYofARRAY8(array); - return FALSE; - } - } - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RC16.c b/nx-X11/lib/Xdmcp/RC16.c deleted file mode 100644 index 1af69a6..0000000 --- a/nx-X11/lib/Xdmcp/RC16.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * $Xorg: RC16.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadCARD16 (buffer, valuep) - XdmcpBufferPtr buffer; - CARD16Ptr valuep; -{ - CARD8 high, low; - - if (XdmcpReadCARD8 (buffer, &high) && - XdmcpReadCARD8 (buffer, &low)) - { - *valuep = (((CARD16) high) << 8) | ((CARD16) low); - return TRUE; - } - return FALSE; -} diff --git a/nx-X11/lib/Xdmcp/RC32.c b/nx-X11/lib/Xdmcp/RC32.c deleted file mode 100644 index caf19e6..0000000 --- a/nx-X11/lib/Xdmcp/RC32.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * $Xorg: RC32.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadCARD32 (buffer, valuep) - XdmcpBufferPtr buffer; - CARD32Ptr valuep; -{ - CARD8 byte0, byte1, byte2, byte3; - if (XdmcpReadCARD8 (buffer, &byte0) && - XdmcpReadCARD8 (buffer, &byte1) && - XdmcpReadCARD8 (buffer, &byte2) && - XdmcpReadCARD8 (buffer, &byte3)) - { - *valuep = (((CARD32) byte0) << 24) | - (((CARD32) byte1) << 16) | - (((CARD32) byte2) << 8) | - (((CARD32) byte3)); - return TRUE; - } - return FALSE; -} diff --git a/nx-X11/lib/Xdmcp/RC8.c b/nx-X11/lib/Xdmcp/RC8.c deleted file mode 100644 index a9cd068..0000000 --- a/nx-X11/lib/Xdmcp/RC8.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * $Xorg: RC8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadCARD8 (buffer, valuep) - XdmcpBufferPtr buffer; - CARD8Ptr valuep; -{ - if (buffer->pointer >= buffer->count) - return FALSE; - *valuep = (CARD8) buffer->data[buffer->pointer++]; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RHead.c b/nx-X11/lib/Xdmcp/RHead.c deleted file mode 100644 index 6b0b837..0000000 --- a/nx-X11/lib/Xdmcp/RHead.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * $Xorg: RHead.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadHeader (buffer, header) - XdmcpBufferPtr buffer; - XdmcpHeaderPtr header; -{ - if (XdmcpReadCARD16 (buffer, &header->version) && - XdmcpReadCARD16 (buffer, &header->opcode) && - XdmcpReadCARD16 (buffer, &header->length)) - return TRUE; - return FALSE; -} diff --git a/nx-X11/lib/Xdmcp/RR.c b/nx-X11/lib/Xdmcp/RR.c deleted file mode 100644 index 2d7d2db..0000000 --- a/nx-X11/lib/Xdmcp/RR.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * $Xorg: RR.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReadRemaining (buffer) - XdmcpBufferPtr buffer; -{ - return buffer->count - buffer->pointer; -} diff --git a/nx-X11/lib/Xdmcp/RaA16.c b/nx-X11/lib/Xdmcp/RaA16.c deleted file mode 100644 index b02fa2f..0000000 --- a/nx-X11/lib/Xdmcp/RaA16.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: RaA16.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/RaA16.c,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReallocARRAY16 (ARRAY16Ptr array, int length) -{ - CARD16Ptr newData; - - newData = (CARD16Ptr) Xrealloc (array->data, length * sizeof (CARD16)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RaA32.c b/nx-X11/lib/Xdmcp/RaA32.c deleted file mode 100644 index 52167d1..0000000 --- a/nx-X11/lib/Xdmcp/RaA32.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: RaA32.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/RaA32.c,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReallocARRAY32 (ARRAY32Ptr array, int length) -{ - CARD32Ptr newData; - - newData = (CARD32Ptr) Xrealloc (array->data, length * sizeof (CARD32)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RaA8.c b/nx-X11/lib/Xdmcp/RaA8.c deleted file mode 100644 index 3e7bc08..0000000 --- a/nx-X11/lib/Xdmcp/RaA8.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: RaA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/RaA8.c,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReallocARRAY8 (ARRAY8Ptr array, int length) -{ - CARD8Ptr newData; - - newData = (CARD8Ptr) Xrealloc (array->data, length * sizeof (CARD8)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/RaAoA8.c b/nx-X11/lib/Xdmcp/RaAoA8.c deleted file mode 100644 index 8b4806c..0000000 --- a/nx-X11/lib/Xdmcp/RaAoA8.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: RaAoA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/RaAoA8.c,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpReallocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length) -{ - ARRAY8Ptr newData; - - newData = (ARRAY8Ptr) Xrealloc (array->data, length * sizeof (ARRAY8)); - if (!newData) - return FALSE; - array->length = length; - array->data = newData; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/Unwrap.c b/nx-X11/lib/Xdmcp/Unwrap.c deleted file mode 100644 index 0d60c2b..0000000 --- a/nx-X11/lib/Xdmcp/Unwrap.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * $Xorg: Unwrap.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/Unwrap.c,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -#ifdef HASXDMAUTH - -/* - * The following function exists only to demonstrate the - * desired functional interface for this routine. You will - * need to add the appropriate algorithm if you wish to - * use XDM-AUTHENTICATION-1/XDM-AUTHORIZATION-1. - * - * The interface for this routine is quite simple. All three - * arguments are arrays of 8 unsigned characters, the first two - * are 64 bits of useful data, the last is 56 bits of useful - * data packed into 8 bytes, using the low 7 bits of each - * byte, filling the high bit with odd parity. - * - * Examine the XDMCP specification for the correct algorithm - */ - -#include "Wrap.h" - -void -XdmcpUnwrap ( - unsigned char *input, - unsigned char *wrapper, - unsigned char *output, - int bytes) -{ - int i, j, k; - unsigned char tmp[8]; - unsigned char blocks[2][8]; - unsigned char expand_wrapper[8]; - auth_wrapper_schedule schedule; - - _XdmcpWrapperToOddParity (wrapper, expand_wrapper); - _XdmcpAuthSetup (expand_wrapper, schedule); - - k = 0; - for (j = 0; j < bytes; j += 8) - { - if (bytes - j < 8) - return; /* bad input length */ - for (i = 0; i < 8; i++) - blocks[k][i] = input[j + i]; - _XdmcpAuthDoIt ((unsigned char *) (input + j), (unsigned char *) tmp, schedule, 0); - /* block chaining */ - k = (k == 0) ? 1 : 0; - for (i = 0; i < 8; i++) - { - if (j == 0) - output[j + i] = tmp[i]; - else - output[j + i] = tmp[i] ^ blocks[k][i]; - } - } -} - -#endif /* HASXDMAUTH */ diff --git a/nx-X11/lib/Xdmcp/WA16.c b/nx-X11/lib/Xdmcp/WA16.c deleted file mode 100644 index 4551161..0000000 --- a/nx-X11/lib/Xdmcp/WA16.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: WA16.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteARRAY16 (buffer, array) - XdmcpBufferPtr buffer; - ARRAY16Ptr array; -{ - int i; - - if (!XdmcpWriteCARD8 (buffer, array->length)) - return FALSE; - for (i = 0; i < (int)array->length; i++) - if (!XdmcpWriteCARD16 (buffer, array->data[i])) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/WA32.c b/nx-X11/lib/Xdmcp/WA32.c deleted file mode 100644 index 8d61b1e..0000000 --- a/nx-X11/lib/Xdmcp/WA32.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: WA32.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteARRAY32 (buffer, array) - XdmcpBufferPtr buffer; - ARRAY32Ptr array; -{ - int i; - - if (!XdmcpWriteCARD8 (buffer, array->length)) - return FALSE; - for (i = 0; i < (int)array->length; i++) - if (!XdmcpWriteCARD32 (buffer, array->data[i])) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/WA8.c b/nx-X11/lib/Xdmcp/WA8.c deleted file mode 100644 index 43443c9..0000000 --- a/nx-X11/lib/Xdmcp/WA8.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: WA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteARRAY8 (buffer, array) - XdmcpBufferPtr buffer; - ARRAY8Ptr array; -{ - int i; - - if (!XdmcpWriteCARD16 (buffer, array->length)) - return FALSE; - for (i = 0; i < (int)array->length; i++) - if (!XdmcpWriteCARD8 (buffer, array->data[i])) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/WAofA8.c b/nx-X11/lib/Xdmcp/WAofA8.c deleted file mode 100644 index 69f7bd0..0000000 --- a/nx-X11/lib/Xdmcp/WAofA8.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Xorg: WAofA8.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteARRAYofARRAY8 (buffer, array) - XdmcpBufferPtr buffer; - ARRAYofARRAY8Ptr array; -{ - int i; - - if (!XdmcpWriteCARD8 (buffer, array->length)) - return FALSE; - for (i = 0; i < (int)array->length; i++) - if (!XdmcpWriteARRAY8 (buffer, &array->data[i])) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/WC16.c b/nx-X11/lib/Xdmcp/WC16.c deleted file mode 100644 index 945171d..0000000 --- a/nx-X11/lib/Xdmcp/WC16.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * $Xorg: WC16.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/WC16.c,v 1.4 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteCARD16 ( - XdmcpBufferPtr buffer, - unsigned value) -{ - if (!XdmcpWriteCARD8 (buffer, value >> 8)) - return FALSE; - if (!XdmcpWriteCARD8 (buffer, value & 0xff)) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/WC32.c b/nx-X11/lib/Xdmcp/WC32.c deleted file mode 100644 index 2d5df83..0000000 --- a/nx-X11/lib/Xdmcp/WC32.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * $Xorg: WC32.c,v 1.4 2001/02/09 02:03:49 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ -/* $XFree86: xc/lib/Xdmcp/WC32.c,v 1.4 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteCARD32 ( - XdmcpBufferPtr buffer, - unsigned value) -{ - if (!XdmcpWriteCARD8 (buffer, value >> 24)) - return FALSE; - if (!XdmcpWriteCARD8 (buffer, (value >> 16) & 0xff)) - return FALSE; - if (!XdmcpWriteCARD8 (buffer, (value >> 8) & 0xff)) - return FALSE; - if (!XdmcpWriteCARD8 (buffer, value & 0xff)) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/WC8.c b/nx-X11/lib/Xdmcp/WC8.c deleted file mode 100644 index 2cbd6f1..0000000 --- a/nx-X11/lib/Xdmcp/WC8.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * $Xorg: WC8.c,v 1.4 2001/02/09 02:03:49 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/WC8.c,v 1.4 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteCARD8 ( - XdmcpBufferPtr buffer, - unsigned value) -{ - if (buffer->pointer >= buffer->size) - return FALSE; - buffer->data[buffer->pointer++] = (BYTE) value; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/Whead.c b/nx-X11/lib/Xdmcp/Whead.c deleted file mode 100644 index 82c55c9..0000000 --- a/nx-X11/lib/Xdmcp/Whead.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * $Xorg: Whead.c,v 1.4 2001/02/09 02:03:49 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/Whead.c,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -int -XdmcpWriteHeader ( - XdmcpBufferPtr buffer, - XdmcpHeaderPtr header) -{ - BYTE *newData; - - if ((int)buffer->size < 6 + (int)header->length) - { - newData = (BYTE *) Xalloc (XDM_MAX_MSGLEN * sizeof (BYTE)); - if (!newData) - return FALSE; - Xfree ((unsigned long *)(buffer->data)); - buffer->data = newData; - buffer->size = XDM_MAX_MSGLEN; - } - buffer->pointer = 0; - if (!XdmcpWriteCARD16 (buffer, header->version)) - return FALSE; - if (!XdmcpWriteCARD16 (buffer, header->opcode)) - return FALSE; - if (!XdmcpWriteCARD16 (buffer, header->length)) - return FALSE; - return TRUE; -} diff --git a/nx-X11/lib/Xdmcp/Wrap.c b/nx-X11/lib/Xdmcp/Wrap.c deleted file mode 100644 index d8a032a..0000000 --- a/nx-X11/lib/Xdmcp/Wrap.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * $Xorg: Wrap.c,v 1.4 2001/02/09 02:03:49 xorgcvs Exp $ - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Keith Packard, MIT X Consortium - */ - -/* $XFree86: xc/lib/Xdmcp/Wrap.c,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xos.h> -#include <X11/X.h> -#include <X11/Xmd.h> -#include <X11/Xdmcp.h> - -#ifdef HASXDMAUTH - -/* - * The following function exists only to demonstrate the - * desired functional interface for this routine. You will - * need to add the appropriate algorithm if you wish to - * use XDM-AUTHENTICATION-1/XDM-AUTHORIZATION-1. - * - * Examine the XDMCP specification for the correct algorithm - */ - -#include "Wrap.h" - -void -XdmcpWrap ( - unsigned char *input, - unsigned char *wrapper, - unsigned char *output, - int bytes) -{ - int i, j; - int len; - unsigned char tmp[8]; - unsigned char expand_wrapper[8]; - auth_wrapper_schedule schedule; - - _XdmcpWrapperToOddParity (wrapper, expand_wrapper); - _XdmcpAuthSetup (expand_wrapper, schedule); - for (j = 0; j < bytes; j += 8) - { - len = 8; - if (bytes - j < len) - len = bytes - j; - /* block chaining */ - for (i = 0; i < len; i++) - { - if (j == 0) - tmp[i] = input[i]; - else - tmp[i] = input[j + i] ^ output[j - 8 + i]; - } - for (; i < 8; i++) - { - if (j == 0) - tmp[i] = 0; - else - tmp[i] = 0 ^ output[j - 8 + i]; - } - _XdmcpAuthDoIt (tmp, (output + j), schedule, 1); - } -} - -/* - * Given a 56 bit wrapper in XDMCP format, create a 56 - * bit wrapper in 7-bits + odd parity format - */ - -static int -OddParity (unsigned char c) -{ - c = c ^ (c >> 4); - c = c ^ (c >> 2); - c = c ^ (c >> 1); - return ~c & 0x1; -} - -/* - * Spread the 56 bit wrapper among 8 bytes, using the upper 7 bits - * of each byte, and storing an odd parity bit in the low bit - */ - -void -_XdmcpWrapperToOddParity ( - unsigned char *in, - unsigned char *out) -{ - int ashift, bshift; - int i; - unsigned char c; - - ashift = 7; - bshift = 1; - for (i = 0; i < 7; i++) - { - c = ((in[i] << ashift) | (in[i+1] >> bshift)) & 0x7f; - out[i] = (c << 1) | OddParity (c); - ashift--; - bshift++; - } - c = in[i]; - out[i] = (c << 1) | OddParity(c); -} - -#endif diff --git a/nx-X11/lib/Xdmcp/Wrap.h b/nx-X11/lib/Xdmcp/Wrap.h deleted file mode 100644 index 5112549..0000000 --- a/nx-X11/lib/Xdmcp/Wrap.h +++ /dev/null @@ -1,19 +0,0 @@ -/* $XdotOrg: xc/lib/Xdmcp/Wrap.h,v 1.6 2005/07/03 07:00:56 daniels Exp $ */ -/* $Xorg: Wrap.h,v 1.3 2000/08/17 19:45:50 cpqbld Exp $ */ -/* - * header file for compatibility with something useful - */ - -/* $XFree86: xc/lib/Xdmcp/Wrap.h,v 1.3 2001/01/17 19:42:44 dawes Exp $ */ - -typedef unsigned char auth_cblock[8]; /* block size */ - -typedef struct auth_ks_struct { auth_cblock _; } auth_wrapper_schedule[16]; - -extern void _XdmcpWrapperToOddParity (unsigned char *in, unsigned char *out); - -#ifdef HASXDMAUTH -extern void _XdmcpAuthSetup (auth_cblock key, auth_wrapper_schedule schedule); -extern void _XdmcpAuthDoIt (auth_cblock input, auth_cblock output, - auth_wrapper_schedule schedule, int edflag); -#endif diff --git a/nx-X11/lib/Xdmcp/Wraphelp.README.crypto b/nx-X11/lib/Xdmcp/Wraphelp.README.crypto deleted file mode 100644 index 20c34c0..0000000 --- a/nx-X11/lib/Xdmcp/Wraphelp.README.crypto +++ /dev/null @@ -1,64 +0,0 @@ -Export Requirements. - -You may not export or re-export this software or any copy or -adaptation in violation of any applicable laws or regulations. - -Without limiting the generality of the foregoing, hardware, software, -technology or services provided under this license agreement may not -be exported, reexported, transferred or downloaded to or within (or to -a national resident of) countries under U.S. economic embargo -including the following countries: - -Cuba, Iran, Libya, North Korea, Sudan and Syria. This list is subject -to change. - -Hardware, software, technology or services may not be exported, -reexported, transferred or downloaded to persons or entities listed on -the U.S. Department of Commerce Denied Persons List, Entity List of -proliferation concern or on any U.S. Treasury Department Designated -Nationals exclusion list, or to parties directly or indirectly -involved in the development or production of nuclear, chemical, -biological weapons or in missile technology programs as specified in -the U.S. Export Administration Regulations (15 CFR 744). - -By accepting this license agreement you confirm that you are not -located in (or a national resident of) any country under U.S. economic -embargo, not identified on any U.S. Department of Commerce Denied -Persons List, Entity List or Treasury Department Designated Nationals -exclusion list, and not directly or indirectly involved in the -development or production of nuclear, chemical, biological weapons or -in missile technology programs as specified in the U.S. Export -Administration Regulations. - -Software available on this web site contains cryptography and is -therefore subject to US government export control under the -U.S. Export Administration Regulations ("EAR"). EAR Part 740.13(e) -allows the export and reexport of publicly available encryption source -code that is not subject to payment of license fee or royalty -payment. Object code resulting from the compiling of such source code -may also be exported and reexported under this provision if publicly -available and not subject to a fee or payment other than reasonable -and customary fees for reproduction and distribution. This kind of -encryption source code and the corresponding object code may be -exported or reexported without prior U.S. government export license -authorization provided that the U.S. government is notified about the -Internet location of the software. - -The open source software available on this web site is publicly -available without license fee or royalty payment, and all binary -software is compiled from the source code. The U.S. government has -been notified about this site and the location site for the source -code. Therefore, the source code and compiled object code may be -downloaded and exported under U.S. export license exception (without a -U.S. export license) in accordance with the further restrictions -outlined above regarding embargoed countries, restricted persons and -restricted end uses. - -Local Country Import Requirements. The software you are about to -download contains cryptography technology. Some countries regulate the -import, use and/or export of certain products with cryptography. The -X.org Foundation makes no claims as to the applicability of local -country import, use and/or export regulations in relation to the -download of this product. If you are located outside the U.S. and -Canada you are advised to consult your local country regulations to -insure compliance. diff --git a/nx-X11/lib/Xdmcp/Wraphelp.c b/nx-X11/lib/Xdmcp/Wraphelp.c deleted file mode 100644 index 8e50ee2..0000000 --- a/nx-X11/lib/Xdmcp/Wraphelp.c +++ /dev/null @@ -1,500 +0,0 @@ -/* - * $Xorg: A8Eq.c,v 1.4 2001/02/09 02:03:48 xorgcvs Exp $ - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <sys/types.h> -#include <X11/Xmd.h> -#include "Wrap.h" - -/* des routines for non-usa - eay 10/9/1991 eay@psych.psy.uq.oz.au - * These routines were written for speed not size so they are bigger than - * needed. I have removed some of the loop unrolling, this will reduce - * code size at the expense of some speed. - * 25/9/1991 eay - much faster _XdmcpAuthSetup (4 times faster). - * 19/9/1991 eay - cleaned up the IP and FP code. - * 10/9/1991 eay - first release. - * The des routines this file has been made from can be found in - * ftp.psy.uq.oz.au /pub/DES - * This particular version derived from OpenBSD Revsion 1.3. - */ - -/* - * - * Export Requirements. - * You may not export or re-export this software or any copy or - * adaptation in violation of any applicable laws or regulations. - * - * Without limiting the generality of the foregoing, hardware, software, - * technology or services provided under this license agreement may not - * be exported, reexported, transferred or downloaded to or within (or to - * a national resident of) countries under U.S. economic embargo - * including the following countries: - * - * Cuba, Iran, Libya, North Korea, Sudan and Syria. This list is subject - * to change. - * - * Hardware, software, technology or services may not be exported, - * reexported, transferred or downloaded to persons or entities listed on - * the U.S. Department of Commerce Denied Persons List, Entity List of - * proliferation concern or on any U.S. Treasury Department Designated - * Nationals exclusion list, or to parties directly or indirectly - * involved in the development or production of nuclear, chemical, - * biological weapons or in missile technology programs as specified in - * the U.S. Export Administration Regulations (15 CFR 744). - * - * By accepting this license agreement you confirm that you are not - * located in (or a national resident of) any country under U.S. economic - * embargo, not identified on any U.S. Department of Commerce Denied - * Persons List, Entity List or Treasury Department Designated Nationals - * exclusion list, and not directly or indirectly involved in the - * development or production of nuclear, chemical, biological weapons or - * in missile technology programs as specified in the U.S. Export - * Administration Regulations. - * - * - * Local Country Import Requirements. The software you are about to - * download contains cryptography technology. Some countries regulate the - * import, use and/or export of certain products with cryptography. The - * X.org Foundation makes no claims as to the applicability of local - * country import, use and/or export regulations in relation to the - * download of this product. If you are located outside the U.S. and - * Canada you are advised to consult your local country regulations to - * insure compliance. - */ - -static CARD32 skb[8][64] = { - /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ - { 0x00000000,0x00000010,0x20000000,0x20000010, - 0x00010000,0x00010010,0x20010000,0x20010010, - 0x00000800,0x00000810,0x20000800,0x20000810, - 0x00010800,0x00010810,0x20010800,0x20010810, - 0x00000020,0x00000030,0x20000020,0x20000030, - 0x00010020,0x00010030,0x20010020,0x20010030, - 0x00000820,0x00000830,0x20000820,0x20000830, - 0x00010820,0x00010830,0x20010820,0x20010830, - 0x00080000,0x00080010,0x20080000,0x20080010, - 0x00090000,0x00090010,0x20090000,0x20090010, - 0x00080800,0x00080810,0x20080800,0x20080810, - 0x00090800,0x00090810,0x20090800,0x20090810, - 0x00080020,0x00080030,0x20080020,0x20080030, - 0x00090020,0x00090030,0x20090020,0x20090030, - 0x00080820,0x00080830,0x20080820,0x20080830, - 0x00090820,0x00090830,0x20090820,0x20090830 }, - /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */ - { 0x00000000,0x02000000,0x00002000,0x02002000, - 0x00200000,0x02200000,0x00202000,0x02202000, - 0x00000004,0x02000004,0x00002004,0x02002004, - 0x00200004,0x02200004,0x00202004,0x02202004, - 0x00000400,0x02000400,0x00002400,0x02002400, - 0x00200400,0x02200400,0x00202400,0x02202400, - 0x00000404,0x02000404,0x00002404,0x02002404, - 0x00200404,0x02200404,0x00202404,0x02202404, - 0x10000000,0x12000000,0x10002000,0x12002000, - 0x10200000,0x12200000,0x10202000,0x12202000, - 0x10000004,0x12000004,0x10002004,0x12002004, - 0x10200004,0x12200004,0x10202004,0x12202004, - 0x10000400,0x12000400,0x10002400,0x12002400, - 0x10200400,0x12200400,0x10202400,0x12202400, - 0x10000404,0x12000404,0x10002404,0x12002404, - 0x10200404,0x12200404,0x10202404,0x12202404 }, - /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */ - { 0x00000000,0x00000001,0x00040000,0x00040001, - 0x01000000,0x01000001,0x01040000,0x01040001, - 0x00000002,0x00000003,0x00040002,0x00040003, - 0x01000002,0x01000003,0x01040002,0x01040003, - 0x00000200,0x00000201,0x00040200,0x00040201, - 0x01000200,0x01000201,0x01040200,0x01040201, - 0x00000202,0x00000203,0x00040202,0x00040203, - 0x01000202,0x01000203,0x01040202,0x01040203, - 0x08000000,0x08000001,0x08040000,0x08040001, - 0x09000000,0x09000001,0x09040000,0x09040001, - 0x08000002,0x08000003,0x08040002,0x08040003, - 0x09000002,0x09000003,0x09040002,0x09040003, - 0x08000200,0x08000201,0x08040200,0x08040201, - 0x09000200,0x09000201,0x09040200,0x09040201, - 0x08000202,0x08000203,0x08040202,0x08040203, - 0x09000202,0x09000203,0x09040202,0x09040203 }, - /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */ - { 0x00000000,0x00100000,0x00000100,0x00100100, - 0x00000008,0x00100008,0x00000108,0x00100108, - 0x00001000,0x00101000,0x00001100,0x00101100, - 0x00001008,0x00101008,0x00001108,0x00101108, - 0x04000000,0x04100000,0x04000100,0x04100100, - 0x04000008,0x04100008,0x04000108,0x04100108, - 0x04001000,0x04101000,0x04001100,0x04101100, - 0x04001008,0x04101008,0x04001108,0x04101108, - 0x00020000,0x00120000,0x00020100,0x00120100, - 0x00020008,0x00120008,0x00020108,0x00120108, - 0x00021000,0x00121000,0x00021100,0x00121100, - 0x00021008,0x00121008,0x00021108,0x00121108, - 0x04020000,0x04120000,0x04020100,0x04120100, - 0x04020008,0x04120008,0x04020108,0x04120108, - 0x04021000,0x04121000,0x04021100,0x04121100, - 0x04021008,0x04121008,0x04021108,0x04121108 }, - /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ - { 0x00000000,0x10000000,0x00010000,0x10010000, - 0x00000004,0x10000004,0x00010004,0x10010004, - 0x20000000,0x30000000,0x20010000,0x30010000, - 0x20000004,0x30000004,0x20010004,0x30010004, - 0x00100000,0x10100000,0x00110000,0x10110000, - 0x00100004,0x10100004,0x00110004,0x10110004, - 0x20100000,0x30100000,0x20110000,0x30110000, - 0x20100004,0x30100004,0x20110004,0x30110004, - 0x00001000,0x10001000,0x00011000,0x10011000, - 0x00001004,0x10001004,0x00011004,0x10011004, - 0x20001000,0x30001000,0x20011000,0x30011000, - 0x20001004,0x30001004,0x20011004,0x30011004, - 0x00101000,0x10101000,0x00111000,0x10111000, - 0x00101004,0x10101004,0x00111004,0x10111004, - 0x20101000,0x30101000,0x20111000,0x30111000, - 0x20101004,0x30101004,0x20111004,0x30111004 }, - /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */ - { 0x00000000,0x08000000,0x00000008,0x08000008, - 0x00000400,0x08000400,0x00000408,0x08000408, - 0x00020000,0x08020000,0x00020008,0x08020008, - 0x00020400,0x08020400,0x00020408,0x08020408, - 0x00000001,0x08000001,0x00000009,0x08000009, - 0x00000401,0x08000401,0x00000409,0x08000409, - 0x00020001,0x08020001,0x00020009,0x08020009, - 0x00020401,0x08020401,0x00020409,0x08020409, - 0x02000000,0x0A000000,0x02000008,0x0A000008, - 0x02000400,0x0A000400,0x02000408,0x0A000408, - 0x02020000,0x0A020000,0x02020008,0x0A020008, - 0x02020400,0x0A020400,0x02020408,0x0A020408, - 0x02000001,0x0A000001,0x02000009,0x0A000009, - 0x02000401,0x0A000401,0x02000409,0x0A000409, - 0x02020001,0x0A020001,0x02020009,0x0A020009, - 0x02020401,0x0A020401,0x02020409,0x0A020409 }, - /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */ - { 0x00000000,0x00000100,0x00080000,0x00080100, - 0x01000000,0x01000100,0x01080000,0x01080100, - 0x00000010,0x00000110,0x00080010,0x00080110, - 0x01000010,0x01000110,0x01080010,0x01080110, - 0x00200000,0x00200100,0x00280000,0x00280100, - 0x01200000,0x01200100,0x01280000,0x01280100, - 0x00200010,0x00200110,0x00280010,0x00280110, - 0x01200010,0x01200110,0x01280010,0x01280110, - 0x00000200,0x00000300,0x00080200,0x00080300, - 0x01000200,0x01000300,0x01080200,0x01080300, - 0x00000210,0x00000310,0x00080210,0x00080310, - 0x01000210,0x01000310,0x01080210,0x01080310, - 0x00200200,0x00200300,0x00280200,0x00280300, - 0x01200200,0x01200300,0x01280200,0x01280300, - 0x00200210,0x00200310,0x00280210,0x00280310, - 0x01200210,0x01200310,0x01280210,0x01280310 }, - /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */ - { 0x00000000,0x04000000,0x00040000,0x04040000, - 0x00000002,0x04000002,0x00040002,0x04040002, - 0x00002000,0x04002000,0x00042000,0x04042000, - 0x00002002,0x04002002,0x00042002,0x04042002, - 0x00000020,0x04000020,0x00040020,0x04040020, - 0x00000022,0x04000022,0x00040022,0x04040022, - 0x00002020,0x04002020,0x00042020,0x04042020, - 0x00002022,0x04002022,0x00042022,0x04042022, - 0x00000800,0x04000800,0x00040800,0x04040800, - 0x00000802,0x04000802,0x00040802,0x04040802, - 0x00002800,0x04002800,0x00042800,0x04042800, - 0x00002802,0x04002802,0x00042802,0x04042802, - 0x00000820,0x04000820,0x00040820,0x04040820, - 0x00000822,0x04000822,0x00040822,0x04040822, - 0x00002820,0x04002820,0x00042820,0x04042820, - 0x00002822,0x04002822,0x00042822,0x04042822 } -}; - - -static CARD32 SPtrans[8][64] = { - /* nibble 0 */ - { 0x00410100, 0x00010000, 0x40400000, 0x40410100, - 0x00400000, 0x40010100, 0x40010000, 0x40400000, - 0x40010100, 0x00410100, 0x00410000, 0x40000100, - 0x40400100, 0x00400000, 0x00000000, 0x40010000, - 0x00010000, 0x40000000, 0x00400100, 0x00010100, - 0x40410100, 0x00410000, 0x40000100, 0x00400100, - 0x40000000, 0x00000100, 0x00010100, 0x40410000, - 0x00000100, 0x40400100, 0x40410000, 0x00000000, - 0x00000000, 0x40410100, 0x00400100, 0x40010000, - 0x00410100, 0x00010000, 0x40000100, 0x00400100, - 0x40410000, 0x00000100, 0x00010100, 0x40400000, - 0x40010100, 0x40000000, 0x40400000, 0x00410000, - 0x40410100, 0x00010100, 0x00410000, 0x40400100, - 0x00400000, 0x40000100, 0x40010000, 0x00000000, - 0x00010000, 0x00400000, 0x40400100, 0x00410100, - 0x40000000, 0x40410000, 0x00000100, 0x40010100 }, - - /* nibble 1 */ - { 0x08021002, 0x00000000, 0x00021000, 0x08020000, - 0x08000002, 0x00001002, 0x08001000, 0x00021000, - 0x00001000, 0x08020002, 0x00000002, 0x08001000, - 0x00020002, 0x08021000, 0x08020000, 0x00000002, - 0x00020000, 0x08001002, 0x08020002, 0x00001000, - 0x00021002, 0x08000000, 0x00000000, 0x00020002, - 0x08001002, 0x00021002, 0x08021000, 0x08000002, - 0x08000000, 0x00020000, 0x00001002, 0x08021002, - 0x00020002, 0x08021000, 0x08001000, 0x00021002, - 0x08021002, 0x00020002, 0x08000002, 0x00000000, - 0x08000000, 0x00001002, 0x00020000, 0x08020002, - 0x00001000, 0x08000000, 0x00021002, 0x08001002, - 0x08021000, 0x00001000, 0x00000000, 0x08000002, - 0x00000002, 0x08021002, 0x00021000, 0x08020000, - 0x08020002, 0x00020000, 0x00001002, 0x08001000, - 0x08001002, 0x00000002, 0x08020000, 0x00021000 }, - - /* nibble 2 */ - { 0x20800000, 0x00808020, 0x00000020, 0x20800020, - 0x20008000, 0x00800000, 0x20800020, 0x00008020, - 0x00800020, 0x00008000, 0x00808000, 0x20000000, - 0x20808020, 0x20000020, 0x20000000, 0x20808000, - 0x00000000, 0x20008000, 0x00808020, 0x00000020, - 0x20000020, 0x20808020, 0x00008000, 0x20800000, - 0x20808000, 0x00800020, 0x20008020, 0x00808000, - 0x00008020, 0x00000000, 0x00800000, 0x20008020, - 0x00808020, 0x00000020, 0x20000000, 0x00008000, - 0x20000020, 0x20008000, 0x00808000, 0x20800020, - 0x00000000, 0x00808020, 0x00008020, 0x20808000, - 0x20008000, 0x00800000, 0x20808020, 0x20000000, - 0x20008020, 0x20800000, 0x00800000, 0x20808020, - 0x00008000, 0x00800020, 0x20800020, 0x00008020, - 0x00800020, 0x00000000, 0x20808000, 0x20000020, - 0x20800000, 0x20008020, 0x00000020, 0x00808000 }, - - /* nibble 3 */ - { 0x00080201, 0x02000200, 0x00000001, 0x02080201, - 0x00000000, 0x02080000, 0x02000201, 0x00080001, - 0x02080200, 0x02000001, 0x02000000, 0x00000201, - 0x02000001, 0x00080201, 0x00080000, 0x02000000, - 0x02080001, 0x00080200, 0x00000200, 0x00000001, - 0x00080200, 0x02000201, 0x02080000, 0x00000200, - 0x00000201, 0x00000000, 0x00080001, 0x02080200, - 0x02000200, 0x02080001, 0x02080201, 0x00080000, - 0x02080001, 0x00000201, 0x00080000, 0x02000001, - 0x00080200, 0x02000200, 0x00000001, 0x02080000, - 0x02000201, 0x00000000, 0x00000200, 0x00080001, - 0x00000000, 0x02080001, 0x02080200, 0x00000200, - 0x02000000, 0x02080201, 0x00080201, 0x00080000, - 0x02080201, 0x00000001, 0x02000200, 0x00080201, - 0x00080001, 0x00080200, 0x02080000, 0x02000201, - 0x00000201, 0x02000000, 0x02000001, 0x02080200 }, - - /* nibble 4 */ - { 0x01000000, 0x00002000, 0x00000080, 0x01002084, - 0x01002004, 0x01000080, 0x00002084, 0x01002000, - 0x00002000, 0x00000004, 0x01000004, 0x00002080, - 0x01000084, 0x01002004, 0x01002080, 0x00000000, - 0x00002080, 0x01000000, 0x00002004, 0x00000084, - 0x01000080, 0x00002084, 0x00000000, 0x01000004, - 0x00000004, 0x01000084, 0x01002084, 0x00002004, - 0x01002000, 0x00000080, 0x00000084, 0x01002080, - 0x01002080, 0x01000084, 0x00002004, 0x01002000, - 0x00002000, 0x00000004, 0x01000004, 0x01000080, - 0x01000000, 0x00002080, 0x01002084, 0x00000000, - 0x00002084, 0x01000000, 0x00000080, 0x00002004, - 0x01000084, 0x00000080, 0x00000000, 0x01002084, - 0x01002004, 0x01002080, 0x00000084, 0x00002000, - 0x00002080, 0x01002004, 0x01000080, 0x00000084, - 0x00000004, 0x00002084, 0x01002000, 0x01000004 }, - - /* nibble 5 */ - { 0x10000008, 0x00040008, 0x00000000, 0x10040400, - 0x00040008, 0x00000400, 0x10000408, 0x00040000, - 0x00000408, 0x10040408, 0x00040400, 0x10000000, - 0x10000400, 0x10000008, 0x10040000, 0x00040408, - 0x00040000, 0x10000408, 0x10040008, 0x00000000, - 0x00000400, 0x00000008, 0x10040400, 0x10040008, - 0x10040408, 0x10040000, 0x10000000, 0x00000408, - 0x00000008, 0x00040400, 0x00040408, 0x10000400, - 0x00000408, 0x10000000, 0x10000400, 0x00040408, - 0x10040400, 0x00040008, 0x00000000, 0x10000400, - 0x10000000, 0x00000400, 0x10040008, 0x00040000, - 0x00040008, 0x10040408, 0x00040400, 0x00000008, - 0x10040408, 0x00040400, 0x00040000, 0x10000408, - 0x10000008, 0x10040000, 0x00040408, 0x00000000, - 0x00000400, 0x10000008, 0x10000408, 0x10040400, - 0x10040000, 0x00000408, 0x00000008, 0x10040008 }, - - /* nibble 6 */ - { 0x00000800, 0x00000040, 0x00200040, 0x80200000, - 0x80200840, 0x80000800, 0x00000840, 0x00000000, - 0x00200000, 0x80200040, 0x80000040, 0x00200800, - 0x80000000, 0x00200840, 0x00200800, 0x80000040, - 0x80200040, 0x00000800, 0x80000800, 0x80200840, - 0x00000000, 0x00200040, 0x80200000, 0x00000840, - 0x80200800, 0x80000840, 0x00200840, 0x80000000, - 0x80000840, 0x80200800, 0x00000040, 0x00200000, - 0x80000840, 0x00200800, 0x80200800, 0x80000040, - 0x00000800, 0x00000040, 0x00200000, 0x80200800, - 0x80200040, 0x80000840, 0x00000840, 0x00000000, - 0x00000040, 0x80200000, 0x80000000, 0x00200040, - 0x00000000, 0x80200040, 0x00200040, 0x00000840, - 0x80000040, 0x00000800, 0x80200840, 0x00200000, - 0x00200840, 0x80000000, 0x80000800, 0x80200840, - 0x80200000, 0x00200840, 0x00200800, 0x80000800 }, - - /* nibble 7 */ - { 0x04100010, 0x04104000, 0x00004010, 0x00000000, - 0x04004000, 0x00100010, 0x04100000, 0x04104010, - 0x00000010, 0x04000000, 0x00104000, 0x00004010, - 0x00104010, 0x04004010, 0x04000010, 0x04100000, - 0x00004000, 0x00104010, 0x00100010, 0x04004000, - 0x04104010, 0x04000010, 0x00000000, 0x00104000, - 0x04000000, 0x00100000, 0x04004010, 0x04100010, - 0x00100000, 0x00004000, 0x04104000, 0x00000010, - 0x00100000, 0x00004000, 0x04000010, 0x04104010, - 0x00004010, 0x04000000, 0x00000000, 0x00104000, - 0x04100010, 0x04004010, 0x04004000, 0x00100010, - 0x04104000, 0x00000010, 0x00100010, 0x04004000, - 0x04104010, 0x00100000, 0x04100000, 0x04000010, - 0x00104000, 0x00004010, 0x04004010, 0x04100000, - 0x00000010, 0x04104000, 0x00104010, 0x00000000, - 0x04000000, 0x04100010, 0x00004000, 0x00104010} -}; - -#define ITERATIONS 16 -#define HALF_ITERATIONS 8 - -#define c2l(c,l) (l =((CARD32)(*((c)++))) , \ - l|=((CARD32)(*((c)++)))<< 8, \ - l|=((CARD32)(*((c)++)))<<16, \ - l|=((CARD32)(*((c)++)))<<24) - -#define l2c(l,c) (*((c)++)=(CARD8)(((l) )&0xff), \ - *((c)++)=(CARD8)(((l)>> 8)&0xff), \ - *((c)++)=(CARD8)(((l)>>16)&0xff), \ - *((c)++)=(CARD8)(((l)>>24)&0xff)) - -#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\ - (b)^=(t),\ - (a)^=((t)<<(n))) - -#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\ - (a)=(a)^(t)^(t>>(16-(n))))\ - -static char shifts2[16] = {0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0}; - -void _XdmcpAuthSetup(auth_cblock key, auth_wrapper_schedule schedule) -{ - CARD32 c,d,t,s; - CARD8 *in; - CARD32 *k; - int i; - - k=(CARD32 *)schedule; - in=(CARD8 *)key; - - c2l(in,c); - c2l(in,d); - - /* do PC1 in 60 simple operations */ - PERM_OP(d,c,t,4,0x0f0f0f0f); - HPERM_OP(c,t,-2, 0xcccc0000); - HPERM_OP(c,t,-1, 0xaaaa0000); - HPERM_OP(c,t, 8, 0x00ff0000); - HPERM_OP(c,t,-1, 0xaaaa0000); - HPERM_OP(d,t,-8, 0xff000000); - HPERM_OP(d,t, 8, 0x00ff0000); - HPERM_OP(d,t, 2, 0x33330000); - d=((d&0x00aa00aa)<<7)|((d&0x55005500)>>7)|(d&0xaa55aa55); - d=(d>>8)|((c&0xf0000000)>>4); - c&=0x0fffffff; - - for (i=0; i<ITERATIONS; i++) { - if (shifts2[i]) { - c=((c>>2)|(c<<26)); d=((d>>2)|(d<<26)); - } else { - c=((c>>1)|(c<<27)); d=((d>>1)|(d<<27)); - } - c&=0x0fffffff; - d&=0x0fffffff; - /* could be a few less shifts but I am to lazy at this - * point in time to investigate */ - s= skb[0][ (c )&0x3f ]| - skb[1][((c>> 6)&0x03)|((c>> 7)&0x3c)]| - skb[2][((c>>13)&0x0f)|((c>>14)&0x30)]| - skb[3][((c>>20)&0x01)|((c>>21)&0x06) | - ((c>>22)&0x38)]; - t= skb[4][ (d )&0x3f ]| - skb[5][((d>> 7)&0x03)|((d>> 8)&0x3c)]| - skb[6][ (d>>15)&0x3f ]| - skb[7][((d>>21)&0x0f)|((d>>22)&0x30)]; - - /* table contained 0213 4657 */ - *(k++)=((t<<16)|(s&0x0000ffff)); - s= ((s>>16)|(t&0xffff0000)); - - s=(s<<4)|(s>>28); - *(k++)=s; - } - return; -} - -#define D_ENCRYPT(L,R,S) \ - t=(R<<1)|(R>>31); \ - u=(t^s[S ]); \ - t=(t^s[S+1]); \ - t=(t>>4)|(t<<28); \ - L^= SPtrans[1][(t )&0x3f]| \ - SPtrans[3][(t>> 8)&0x3f]| \ - SPtrans[5][(t>>16)&0x3f]| \ - SPtrans[7][(t>>24)&0x3f]| \ - SPtrans[0][(u )&0x3f]| \ - SPtrans[2][(u>> 8)&0x3f]| \ - SPtrans[4][(u>>16)&0x3f]| \ - SPtrans[6][(u>>24)&0x3f]; - - -void _XdmcpAuthDoIt(auth_cblock input, auth_cblock output, - auth_wrapper_schedule ks, int encrypt) -{ - CARD32 l,r,t,u; - CARD32 *s; - CARD8 *in,*out; - int i; - - in=(CARD8 *)input; - out=(CARD8 *)output; - c2l(in,l); - c2l(in,r); - - /* do IP */ - PERM_OP(r,l,t, 4,0x0f0f0f0f); - PERM_OP(l,r,t,16,0x0000ffff); - PERM_OP(r,l,t, 2,0x33333333); - PERM_OP(l,r,t, 8,0x00ff00ff); - PERM_OP(r,l,t, 1,0x55555555); - /* r and l are reversed - remember that :-) */ - t=l; - l=r; - r=t; - - s=(CARD32 *)ks; - - if (encrypt) { - for (i=0; i<(ITERATIONS*2); i+=4) { - D_ENCRYPT(l,r, i); /* 1 */ - D_ENCRYPT(r,l, i+2); /* 2 */ - } - } else { - for (i=(ITERATIONS*2)-2; i >= 0; i-=4) { - D_ENCRYPT(l,r, i); /* 1 */ - D_ENCRYPT(r,l, i-2); /* 2 */ - } - } - - /* swap l and r - * we will not do the swap so just remember they are - * reversed for the rest of the subroutine - * luckily by FP fixes this problem :-) */ - - PERM_OP(r,l,t, 1,0x55555555); - PERM_OP(l,r,t, 8,0x00ff00ff); - PERM_OP(r,l,t, 2,0x33333333); - PERM_OP(l,r,t,16,0x0000ffff); - PERM_OP(r,l,t, 4,0x0f0f0f0f); - - l2c(l,out); - l2c(r,out); - return; -} diff --git a/nx-X11/lib/Xdmcp/Xdmcp.h b/nx-X11/lib/Xdmcp/Xdmcp.h deleted file mode 100644 index 8fcf632..0000000 --- a/nx-X11/lib/Xdmcp/Xdmcp.h +++ /dev/null @@ -1,190 +0,0 @@ -/* $XdotOrg: xc/lib/Xdmcp/Xdmcp.h,v 1.3 2005/07/03 07:00:56 daniels Exp $ */ -/* $Xorg: Xdmcp.h,v 1.7 2001/04/13 14:43:00 steve Exp $ */ -/* - * Copyright 1989 Network Computing Devices, Inc., Mountain View, California. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of N.C.D. not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. N.C.D. makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - */ -/* $XFree86: xc/lib/Xdmcp/Xdmcp.h,v 3.7 2003/07/09 15:27:29 tsi Exp $ */ - -#ifndef _XDMCP_H_ -#define _XDMCP_H_ - -#include <X11/Xmd.h> - -#include <X11/Xfuncproto.h> - -_XFUNCPROTOBEGIN - -#define XDM_PROTOCOL_VERSION 1 -#define XDM_UDP_PORT 177 - -/* IANA has assigned FF0X:0:0:0:0:0:0:12B as the permanently assigned - * multicast addresses for XDMCP, where X in the prefix may be replaced - * by any valid scope identifier, such as 1 for Node-Local, 2 for Link-Local, - * 5 for Site-Local, and so on. We set the default here to the Link-Local - * version to most closely match the old IPv4 subnet broadcast behavior. - * Both xdm and X -query allow specifying a different address if a different - * scope is defined. - */ -#define XDM_DEFAULT_MCAST_ADDR6 "ff02:0:0:0:0:0:0:12b" - -#define XDM_MAX_MSGLEN 8192 -#define XDM_MIN_RTX 2 -#define XDM_MAX_RTX 32 -#define XDM_RTX_LIMIT 7 -#define XDM_KA_RTX_LIMIT 4 -#define XDM_DEF_DORMANCY (3 * 60) /* 3 minutes */ -#define XDM_MAX_DORMANCY (24 * 60 * 60) /* 24 hours */ - -typedef enum { - BROADCAST_QUERY = 1, QUERY, INDIRECT_QUERY, FORWARD_QUERY, - WILLING, UNWILLING, REQUEST, ACCEPT, DECLINE, MANAGE, REFUSE, - FAILED, KEEPALIVE, ALIVE -} xdmOpCode; - -typedef enum { - XDM_QUERY, XDM_BROADCAST, XDM_INDIRECT, XDM_COLLECT_QUERY, - XDM_COLLECT_BROADCAST_QUERY, XDM_COLLECT_INDIRECT_QUERY, - XDM_START_CONNECTION, XDM_AWAIT_REQUEST_RESPONSE, - XDM_AWAIT_MANAGE_RESPONSE, XDM_MANAGE, XDM_RUN_SESSION, XDM_OFF, - XDM_AWAIT_USER_INPUT, XDM_KEEPALIVE, XDM_AWAIT_ALIVE_RESPONSE, -#if defined(IPv6) && defined(AF_INET6) - XDM_MULTICAST, XDM_COLLECT_MULTICAST_QUERY, -#endif - XDM_KEEP_ME_LAST -} xdmcp_states; - -#ifdef NOTDEF -/* table of hosts */ - -#define XDM_MAX_STR_LEN 21 -#define XDM_MAX_HOSTS 20 -struct xdm_host_table { - struct sockaddr_in sockaddr; - char name[XDM_MAX_STR_LEN]; - char status[XDM_MAX_STR_LEN]; -}; -#endif /* NOTDEF */ - -typedef CARD8 *CARD8Ptr; -typedef CARD16 *CARD16Ptr; -typedef CARD32 *CARD32Ptr; - -typedef struct _ARRAY8 { - CARD16 length; - CARD8Ptr data; -} ARRAY8, *ARRAY8Ptr; - -typedef struct _ARRAY16 { - CARD8 length; - CARD16Ptr data; -} ARRAY16, *ARRAY16Ptr; - -typedef struct _ARRAY32 { - CARD8 length; - CARD32Ptr data; -} ARRAY32, *ARRAY32Ptr; - -typedef struct _ARRAYofARRAY8 { - CARD8 length; - ARRAY8Ptr data; -} ARRAYofARRAY8, *ARRAYofARRAY8Ptr; - -typedef struct _XdmcpHeader { - CARD16 version, opcode, length; -} XdmcpHeader, *XdmcpHeaderPtr; - -typedef struct _XdmcpBuffer { - BYTE *data; - int size; /* size of buffer pointed by to data */ - int pointer; /* current index into data */ - int count; /* bytes read from network into data */ -} XdmcpBuffer, *XdmcpBufferPtr; - -typedef struct _XdmAuthKey { - BYTE data[8]; -} XdmAuthKeyRec, *XdmAuthKeyPtr; - - -/* implementation-independent network address structure. - Equiv to sockaddr* for sockets and netbuf* for STREAMS. */ - -typedef char *XdmcpNetaddr; - -extern int XdmcpWriteARRAY16(XdmcpBufferPtr buffer, ARRAY16Ptr array); -extern int XdmcpWriteARRAY32(XdmcpBufferPtr buffer, ARRAY32Ptr array); -extern int XdmcpWriteARRAY8(XdmcpBufferPtr buffer, ARRAY8Ptr array); -extern int XdmcpWriteARRAYofARRAY8(XdmcpBufferPtr buffer, ARRAYofARRAY8Ptr array); -extern int XdmcpWriteCARD16(XdmcpBufferPtr buffer, unsigned value); -extern int XdmcpWriteCARD32(XdmcpBufferPtr buffer, unsigned value); -extern int XdmcpWriteCARD8(XdmcpBufferPtr buffer, unsigned value); -extern int XdmcpWriteHeader(XdmcpBufferPtr buffer, XdmcpHeaderPtr header); - -extern int XdmcpFlush(int fd, XdmcpBufferPtr buffer, XdmcpNetaddr to, int tolen); - -extern int XdmcpReadARRAY16(XdmcpBufferPtr buffer, ARRAY16Ptr array); -extern int XdmcpReadARRAY32(XdmcpBufferPtr buffer, ARRAY32Ptr array); -extern int XdmcpReadARRAY8(XdmcpBufferPtr buffer, ARRAY8Ptr array); -extern int XdmcpReadARRAYofARRAY8(XdmcpBufferPtr buffer, ARRAYofARRAY8Ptr array); -extern int XdmcpReadCARD16(XdmcpBufferPtr buffer, CARD16Ptr valuep); -extern int XdmcpReadCARD32(XdmcpBufferPtr buffer, CARD32Ptr valuep); -extern int XdmcpReadCARD8(XdmcpBufferPtr buffer, CARD8Ptr valuep); -extern int XdmcpReadHeader(XdmcpBufferPtr buffer, XdmcpHeaderPtr header); - -extern int XdmcpFill(int fd, XdmcpBufferPtr buffer, XdmcpNetaddr from, int *fromlen); - -extern int XdmcpReadRemaining(XdmcpBufferPtr buffer); - -extern void XdmcpDisposeARRAY8(ARRAY8Ptr array); -extern void XdmcpDisposeARRAY16(ARRAY16Ptr array); -extern void XdmcpDisposeARRAY32(ARRAY32Ptr array); -extern void XdmcpDisposeARRAYofARRAY8(ARRAYofARRAY8Ptr array); - -extern int XdmcpCopyARRAY8(ARRAY8Ptr src, ARRAY8Ptr dst); - -extern int XdmcpARRAY8Equal(ARRAY8Ptr array1, ARRAY8Ptr array2); - -extern void XdmcpGenerateKey (XdmAuthKeyPtr key); -extern void XdmcpIncrementKey (XdmAuthKeyPtr key); -extern void XdmcpDecrementKey (XdmAuthKeyPtr key); -#ifdef HASXDMAUTH -extern void XdmcpWrap(unsigned char *input, unsigned char *wrapper, unsigned char *output, int bytes); -extern void XdmcpUnwrap(unsigned char *input, unsigned char *wrapper, unsigned char *output, int bytes); -#endif - -#ifndef TRUE -#define TRUE 1 -#define FALSE 0 -#endif - -#if !defined(Xalloc) && !defined(xalloc) && !defined(Xrealloc) -extern void *Xalloc (unsigned long amount); -extern void *Xrealloc (void *old, unsigned long amount); -extern void Xfree(void *old); -#endif - -extern int XdmcpCompareKeys (XdmAuthKeyPtr a, XdmAuthKeyPtr b); - -extern int XdmcpAllocARRAY16 (ARRAY16Ptr array, int length); -extern int XdmcpAllocARRAY32 (ARRAY32Ptr array, int length); -extern int XdmcpAllocARRAY8 (ARRAY8Ptr array, int length); -extern int XdmcpAllocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length); - -extern int XdmcpReallocARRAY16 (ARRAY16Ptr array, int length); -extern int XdmcpReallocARRAY32 (ARRAY32Ptr array, int length); -extern int XdmcpReallocARRAY8 (ARRAY8Ptr array, int length); -extern int XdmcpReallocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length); - -_XFUNCPROTOEND - -#endif /* _XDMCP_H_ */ diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile index fd0a553..bf791c8 100644 --- a/nx-X11/programs/Xserver/Imakefile +++ b/nx-X11/programs/Xserver/Imakefile @@ -204,7 +204,7 @@ INSTPGMFLAGS = #if BuildLBX ZLIB = GzipLibrary #endif - OS = os/LibraryTargetName(os) $(DEPXAUTHLIB) $(DEPXDMCPLIB) + OS = os/LibraryTargetName(os) $(DEPXAUTHLIB) BSDEMUL = $(DEPXBSDLIB) #if DoLoadableServer MFB = mfb/ModuleLibraryTargetName(mfb) @@ -440,17 +440,17 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTSYSLIBS):: $(NXAGENTDIRS) #if defined(SunArchitecture) NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lNX_Xfixes -lXfont \ - -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xdmcp \ + -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lXdmcp \ `pkg-config --libs libxml-2.0` #elif defined(cygwinArchitecture) NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \ -lXcomp -lXcompext -lNX_Xrender -lX11 -lNX_Xext -lNX_Xcomposite -lNX_Xfixes -lXfont \ - -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdmcp \ + -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lNX_Xtst -lXdmcp \ `pkg-config --libs libxml-2.0` #else NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \ -lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lNX_Xfixes -lXfont \ - -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xinerama -lNX_Xdmcp \ + -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xinerama -lXdmcp \ `pkg-config --libs libxml-2.0` #endif diff --git a/nx-libs.spec b/nx-libs.spec index f4525be..6774a7e 100644 --- a/nx-libs.spec +++ b/nx-libs.spec @@ -33,6 +33,7 @@ BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xpm) BuildRequires: pkgconfig(xfont) +BuildRequires: pkgconfig(xdmcp) %else BuildRequires: libexpat-devel BuildRequires: libpng-devel @@ -41,6 +42,7 @@ BuildRequires: xorg-x11-libX11-devel BuildRequires: xorg-x11-libXext-devel BuildRequires: xorg-x11-libXpm-devel BuildRequires: xorg-x11-libXfont-devel +BuildRequires: xorg-x11-libXdmcp-devel %endif BuildRequires: xorg-x11-util-devel %endif @@ -50,6 +52,7 @@ BuildRequires: expat-devel BuildRequires: libpng-devel BuildRequires: libxml2-devel BuildRequires: libXfont-devel +BuildRequires: libXdmcp-devel %endif # For imake @@ -214,50 +217,6 @@ The X Damage Extension allows applications to track modified regions of drawables. -%package -n libNX_Xdmcp-devel -Group: Development/Libraries -Summary: Development files for the NXDM Control Protocol library -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: libNX_Xdmcp6%{?_isa} = %{version}-%{release} -Requires: nx-proto-devel%{?_isa} = %{version}-%{release} - -%description -n libNX_Xdmcp-devel -NX is a software suite which implements very efficient compression of -the X11 protocol. This increases performance when using X -applications over a network, especially a slow one. - -The X Display Manager Control Protocol (XDMCP) provides a uniform -mechanism for an autonomous display to request login service from a -remote host. By autonomous, we mean the display consists of hardware -and processes that are independent of any particular host where login -service is desired. An X terminal (screen, keyboard, mouse, -processor, network interface) is a prime example of an autonomous -display. - -This package contains all necessary include files and libraries -needed to develop applications that require these. - - -%package -n libNX_Xdmcp6 -Group: System Environment/Libraries -Summary: NX Display Manager Control Protocol library -Requires: %{name}%{?_isa} >= 3.5.0.29 -Obsoletes: libNX_Xdmcp - -%description -n libNX_Xdmcp6 -NX is a software suite which implements very efficient compression of -the X11 protocol. This increases performance when using X -applications over a network, especially a slow one. - -The X Display Manager Control Protocol (XDMCP) provides a uniform -mechanism for an autonomous display to request login service from a -remote host. By autonomous, we mean the display consists of hardware -and processes that are independent of any particular host where login -service is desired. An X terminal (screen, keyboard, mouse, -processor, network interface) is a prime example of an autonomous -display. - - %package -n libNX_Xext-devel Group: Development/Libraries Summary: Development files for the NX Common Extensions library @@ -518,7 +477,6 @@ Group: Development/Libraries Summary: Include files and libraries for NX development Requires: libNX_X11-devel%{?_isa} = %{version}-%{release} Requires: libNX_Xau-devel%{?_isa} = %{version}-%{release} -Requires: libNX_Xdmcp-devel%{?_isa} = %{version}-%{release} Requires: libNX_Xext-devel%{?_isa} = %{version}-%{release} Requires: libNX_Xfixes-devel%{?_isa} = %{version}-%{release} Requires: libNX_Xrender-devel%{?_isa} = %{version}-%{release} @@ -699,7 +657,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %post -n libNX_Xau6 -p /sbin/ldconfig %post -n libNX_Xcomposite1 -p /sbin/ldconfig %post -n libNX_Xdamage1 -p /sbin/ldconfig -%post -n libNX_Xdmcp6 -p /sbin/ldconfig %post -n libNX_Xext6 -p /sbin/ldconfig %post -n libNX_Xfixes3 -p /sbin/ldconfig %post -n libNX_Xinerama1 -p /sbin/ldconfig @@ -714,7 +671,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %postun -n libNX_Xau6 -p /sbin/ldconfig %postun -n libNX_Xcomposite1 -p /sbin/ldconfig %postun -n libNX_Xdamage1 -p /sbin/ldconfig -%postun -n libNX_Xdmcp6 -p /sbin/ldconfig %postun -n libNX_Xext6 -p /sbin/ldconfig %postun -n libNX_Xfixes3 -p /sbin/ldconfig %postun -n libNX_Xinerama1 -p /sbin/ldconfig @@ -776,15 +732,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama %defattr(-,root,root) %{_libdir}/libNX_Xdamage.so.1* -%files -n libNX_Xdmcp-devel -%defattr(-,root,root) -%{_libdir}/libNX_Xdmcp.so -%{_includedir}/nx/X11/Xdmcp.h - -%files -n libNX_Xdmcp6 -%defattr(-,root,root) -%{_libdir}/libNX_Xdmcp.so.6* - %files -n libNX_Xext-devel %defattr(-,root,root) %{_libdir}/libNX_Xext.so -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit e69b7d1ecf9672effd4715a4bc8d5bd729b5bd37 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Tue Apr 21 10:42:47 2015 +0200 xbitmaps cleanup: The <X11/bitmaps/*> headers are not required at build time for NX. --- Makefile | 6 +- debian/rules | 1 - nx-X11/include/Imakefile | 2 +- nx-X11/include/bitmaps/1x1 | 6 - nx-X11/include/bitmaps/2x2 | 6 - nx-X11/include/bitmaps/Imakefile | 86 --- nx-X11/include/bitmaps/black | 6 - nx-X11/include/bitmaps/boxes | 6 - nx-X11/include/bitmaps/calculator | 19 - nx-X11/include/bitmaps/cntr_ptr | 8 - nx-X11/include/bitmaps/cntr_ptrmsk | 6 - nx-X11/include/bitmaps/cross_weave | 6 - nx-X11/include/bitmaps/dimple1 | 6 - nx-X11/include/bitmaps/dimple3 | 6 - nx-X11/include/bitmaps/dot | 6 - nx-X11/include/bitmaps/dropbar7 | 4 - nx-X11/include/bitmaps/dropbar8 | 4 - nx-X11/include/bitmaps/escherknot | 473 --------------- nx-X11/include/bitmaps/flagdown | 27 - nx-X11/include/bitmaps/flagup | 27 - nx-X11/include/bitmaps/flipped_gray | 4 - nx-X11/include/bitmaps/gray | 4 - nx-X11/include/bitmaps/gray1 | 4 - nx-X11/include/bitmaps/gray3 | 4 - nx-X11/include/bitmaps/grid16 | 6 - nx-X11/include/bitmaps/grid2 | 4 - nx-X11/include/bitmaps/grid4 | 4 - nx-X11/include/bitmaps/grid8 | 4 - nx-X11/include/bitmaps/hlines2 | 4 - nx-X11/include/bitmaps/hlines3 | 4 - nx-X11/include/bitmaps/icon | 6 - nx-X11/include/bitmaps/keyboard16 | 6 - nx-X11/include/bitmaps/left_ptr | 8 - nx-X11/include/bitmaps/left_ptrmsk | 6 - nx-X11/include/bitmaps/letters | 27 - nx-X11/include/bitmaps/light_gray | 4 - nx-X11/include/bitmaps/mailempty | 27 - nx-X11/include/bitmaps/mailemptymsk | 27 - nx-X11/include/bitmaps/mailfull | 27 - nx-X11/include/bitmaps/mailfullmsk | 27 - nx-X11/include/bitmaps/mensetmanus | 258 -------- nx-X11/include/bitmaps/menu10 | 5 - nx-X11/include/bitmaps/menu12 | 5 - nx-X11/include/bitmaps/menu16 | 6 - nx-X11/include/bitmaps/menu6 | 4 - nx-X11/include/bitmaps/menu8 | 4 - nx-X11/include/bitmaps/noletters | 27 - nx-X11/include/bitmaps/opendot | 8 - nx-X11/include/bitmaps/opendotMask | 8 - nx-X11/include/bitmaps/plaid | 11 - nx-X11/include/bitmaps/right_ptr | 8 - nx-X11/include/bitmaps/right_ptrmsk | 6 - nx-X11/include/bitmaps/root_weave | 4 - nx-X11/include/bitmaps/scales | 6 - nx-X11/include/bitmaps/sipb | 16 - nx-X11/include/bitmaps/star | 8 - nx-X11/include/bitmaps/starMask | 8 - nx-X11/include/bitmaps/stipple | 4 - nx-X11/include/bitmaps/target | 6 - nx-X11/include/bitmaps/terminal | 52 -- nx-X11/include/bitmaps/tie_fighter | 6 - nx-X11/include/bitmaps/vlines2 | 4 - nx-X11/include/bitmaps/vlines3 | 4 - nx-X11/include/bitmaps/weird_size | 5 - nx-X11/include/bitmaps/wide_weave | 6 - nx-X11/include/bitmaps/wingdogs | 14 - nx-X11/include/bitmaps/woman | 66 --- nx-X11/include/bitmaps/xfd_icon | 27 - nx-X11/include/bitmaps/xlogo11 | 6 - nx-X11/include/bitmaps/xlogo16 | 6 - nx-X11/include/bitmaps/xlogo32 | 14 - nx-X11/include/bitmaps/xlogo64 | 46 -- nx-X11/include/bitmaps/xsnow | 1112 ----------------------------------- nx-libs.spec | 1 - 74 files changed, 2 insertions(+), 2687 deletions(-) diff --git a/Makefile b/Makefile index 6400f21..9f64421 100644 --- a/Makefile +++ b/Makefile @@ -147,7 +147,7 @@ install-full: $(INSTALL_DIR) $(DESTDIR)$(USRLIBDIR) $(COPY_SYMLINK) nx-X11/.build-exports/lib/*.so* $(DESTDIR)$(USRLIBDIR)/ - . replace.sh; set -x; find nx-X11/.build-exports/include/ -type d | grep -v "include/X11/bitmaps" | \ + . replace.sh; set -x; find nx-X11/.build-exports/include/ -type d | \ while read dirname; do \ $(INSTALL_DIR) "$$(string_rep "$$dirname" nx-X11/.build-exports/include "$(DESTDIR)$(INCLUDEDIR)/nx")"; \ $(INSTALL_FILE) $${dirname}/*.h \ @@ -161,10 +161,6 @@ install-full: $(INSTALL_DIR) $(DESTDIR)$(NXLIBDIR)/X11/Xinerama $(INSTALL_SYMLINK) $(USRLIBDIR)/libNX_Xinerama.so.1 $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libXinerama.so.1 - $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/nx/X11/bitmaps - $(INSTALL_FILE) nx-X11/.build-exports/include/X11/bitmaps/* \ - $(DESTDIR)$(INCLUDEDIR)/nx/X11/bitmaps/ - $(INSTALL_DIR) $(DESTDIR)/$(ETCDIR_NX) $(INSTALL_DIR) $(DESTDIR)/$(ETCDIR_X2GO) $(INSTALL_FILE) etc/keystrokes.cfg $(DESTDIR)/$(ETCDIR_NX)/ diff --git a/debian/rules b/debian/rules index dd4f1c7..0da6db7 100755 --- a/debian/rules +++ b/debian/rules @@ -43,7 +43,6 @@ override_dh_install: # remove extras, GL, and other unneeded headers rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/GL/ - rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/bitmaps/ rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/XInput.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/XK*.h rm -R debian/tmp/usr/include/$(DEB_BUILD_MULTIARCH)/nx/X11/extensions/*Xv*.h diff --git a/nx-X11/include/Imakefile b/nx-X11/include/Imakefile index 39d330d..74d775b 100644 --- a/nx-X11/include/Imakefile +++ b/nx-X11/include/Imakefile @@ -15,7 +15,7 @@ GLXDIR = GL DPSDIR = DPS #endif -SUBDIRS = bitmaps extensions $(GLXDIR) $(DPSDIR) +SUBDIRS = extensions $(GLXDIR) $(DPSDIR) #ifdef Win32Architecture EXTRA_HEADERS = Xw32defs.h Xwinsock.h Xwindows.h diff --git a/nx-X11/include/bitmaps/1x1 b/nx-X11/include/bitmaps/1x1 deleted file mode 100644 index 6d013d4..0000000 --- a/nx-X11/include/bitmaps/1x1 +++ /dev/null @@ -1,6 +0,0 @@ -#define 1x1_width 16 -#define 1x1_height 16 -static char 1x1_bits[] = { - 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, 0x55, - 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, 0x55, - 0xff, 0xff, 0x55, 0x55, 0xff, 0xff, 0x55, 0x55}; diff --git a/nx-X11/include/bitmaps/2x2 b/nx-X11/include/bitmaps/2x2 deleted file mode 100644 index 8490457..0000000 --- a/nx-X11/include/bitmaps/2x2 +++ /dev/null @@ -1,6 +0,0 @@ -#define 2x2_width 16 -#define 2x2_height 16 -static char 2x2_bits[] = { - 0xff, 0xff, 0xff, 0xff, 0x33, 0x33, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, - 0x33, 0x33, 0x33, 0x33, 0xff, 0xff, 0xff, 0xff, 0x33, 0x33, 0x33, 0x33, - 0xff, 0xff, 0xff, 0xff, 0x33, 0x33, 0x33, 0x33}; diff --git a/nx-X11/include/bitmaps/Imakefile b/nx-X11/include/bitmaps/Imakefile deleted file mode 100644 index 4e1ec0b..0000000 --- a/nx-X11/include/bitmaps/Imakefile +++ /dev/null @@ -1,86 +0,0 @@ -XCOMM $Xorg: Imakefile,v 1.3 2000/08/18 04:05:43 coskrey Exp $ - - - -XCOMM $XFree86$ - -HEADERS = \ - 1x1 \ - 2x2 \ - black \ - boxes \ - calculator \ - cntr_ptr \ - cntr_ptrmsk \ - cross_weave \ - dimple1 \ - dimple3 \ - dot \ - dropbar7 \ - dropbar8 \ - escherknot \ - flagdown \ - flagup \ - flipped_gray \ - gray \ - gray1 \ - gray3 \ - grid2 \ - grid4 \ - grid8 \ - grid16 \ - hlines2 \ - hlines3 \ - icon \ - keyboard16 \ - left_ptr \ - left_ptrmsk \ - letters \ - light_gray \ - mailempty \ - mailemptymsk \ - mailfull \ - mailfullmsk \ - mensetmanus \ - menu6 \ - menu8 \ - menu10 \ - menu12 \ - menu16 \ - noletters \ - opendot \ - opendotMask \ - plaid \ - right_ptr \ - right_ptrmsk \ - root_weave \ - scales \ - sipb \ - star \ - starMask \ - stipple \ - target \ - terminal \ - tie_fighter \ - vlines2 \ - vlines3 \ - weird_size \ - wide_weave \ - wingdogs \ - woman \ - xfd_icon \ - xlogo11 \ - xlogo16 \ - xlogo32 \ - xlogo64 \ - xsnow - - -all:: - -BuildIncludes($(HEADERS),X11/bitmaps,../..) - -#if BuildLibraries -InstallMultipleFlags($(HEADERS),$(INCDIR)/X11/bitmaps,$(INSTINCFLAGS)) -#endif - diff --git a/nx-X11/include/bitmaps/black b/nx-X11/include/bitmaps/black deleted file mode 100644 index 3a1ec90..0000000 --- a/nx-X11/include/bitmaps/black +++ /dev/null @@ -1,6 +0,0 @@ -#define black_width 16 -#define black_height 16 -static char black_bits[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; diff --git a/nx-X11/include/bitmaps/boxes b/nx-X11/include/bitmaps/boxes deleted file mode 100644 index 0deb801..0000000 --- a/nx-X11/include/bitmaps/boxes +++ /dev/null @@ -1,6 +0,0 @@ -#define boxes_width 16 -#define boxes_height 16 -static char boxes_bits[] = { - 0x0f, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x0f, 0xf0, 0xf0, 0x90, 0x90, - 0x90, 0x90, 0xf0, 0xf0, 0x0f, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x0f, 0x0f, - 0xf0, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xf0, 0xf0}; diff --git a/nx-X11/include/bitmaps/calculator b/nx-X11/include/bitmaps/calculator deleted file mode 100644 index 2be3b9d..0000000 --- a/nx-X11/include/bitmaps/calculator +++ /dev/null @@ -1,19 +0,0 @@ -#define icon_width 28 -#define icon_height 48 -static char icon_bits[] = { - 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x0f, 0x03, 0x00, 0x00, 0x0c, - 0xd3, 0x5d, 0x5d, 0x0c, 0x13, 0x51, 0x45, 0x0c, 0xd3, 0xdd, 0xdd, 0x0d, - 0x53, 0x10, 0x51, 0x0d, 0xd3, 0x1d, 0xdd, 0x0d, 0x03, 0x00, 0x00, 0x0c, - 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x00, 0x08, - 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, - 0xbd, 0xf7, 0xde, 0x0b, 0xa5, 0x94, 0x52, 0x0a, 0xbd, 0xf7, 0xde, 0x0b, - 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, - 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, - 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, - 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, - 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, - 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, - 0x01, 0x00, 0x00, 0x08, 0xbd, 0xf7, 0xde, 0x0b, 0xbd, 0x94, 0xd2, 0x0b, - 0xbd, 0x94, 0xd2, 0x0b, 0xbd, 0xf7, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, - 0xbd, 0xff, 0xde, 0x0b, 0xbd, 0x80, 0xd2, 0x0b, 0xbd, 0x80, 0xd2, 0x0b, - 0xbd, 0xff, 0xde, 0x0b, 0x01, 0x00, 0x00, 0x08, 0xff, 0xff, 0xff, 0x0f}; diff --git a/nx-X11/include/bitmaps/cntr_ptr b/nx-X11/include/bitmaps/cntr_ptr deleted file mode 100644 index eddb25f..0000000 --- a/nx-X11/include/bitmaps/cntr_ptr +++ /dev/null @@ -1,8 +0,0 @@ -#define cntr_ptr_width 16 -#define cntr_ptr_height 16 -#define cntr_ptr_x_hot 7 -#define cntr_ptr_y_hot 1 -static char cntr_ptr_bits[] = { - 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, - 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, 0x98, 0x19, 0x88, 0x11, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/cntr_ptrmsk b/nx-X11/include/bitmaps/cntr_ptrmsk deleted file mode 100644 index d3607a4..0000000 --- a/nx-X11/include/bitmaps/cntr_ptrmsk +++ /dev/null @@ -1,6 +0,0 @@ -#define cntr_ptrmsk_width 16 -#define cntr_ptrmsk_height 16 -static char cntr_ptrmsk_bits[] = { - 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, - 0xf8, 0x1f, 0xf8, 0x1f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xdc, 0x3b, - 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03}; diff --git a/nx-X11/include/bitmaps/cross_weave b/nx-X11/include/bitmaps/cross_weave deleted file mode 100644 index 40de9e4..0000000 --- a/nx-X11/include/bitmaps/cross_weave +++ /dev/null @@ -1,6 +0,0 @@ -#define cross_weave_width 16 -#define cross_weave_height 16 -static char cross_weave_bits[] = { - 0x55, 0x55, 0x88, 0x88, 0x55, 0x55, 0x22, 0x22, 0x55, 0x55, 0x88, 0x88, - 0x55, 0x55, 0x22, 0x22, 0x55, 0x55, 0x88, 0x88, 0x55, 0x55, 0x22, 0x22, - 0x55, 0x55, 0x88, 0x88, 0x55, 0x55, 0x22, 0x22}; diff --git a/nx-X11/include/bitmaps/dimple1 b/nx-X11/include/bitmaps/dimple1 deleted file mode 100644 index 9144605..0000000 --- a/nx-X11/include/bitmaps/dimple1 +++ /dev/null @@ -1,6 +0,0 @@ -#define dimple1_width 16 -#define dimple1_height 16 -static char dimple1_bits[] = { - 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, - 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, - 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/dimple3 b/nx-X11/include/bitmaps/dimple3 deleted file mode 100644 index 209b4e8..0000000 --- a/nx-X11/include/bitmaps/dimple3 +++ /dev/null @@ -1,6 +0,0 @@ -#define dimple3_width 16 -#define dimple3_height 16 -static char dimple3_bits[] = { - 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/dot b/nx-X11/include/bitmaps/dot deleted file mode 100644 index e403eeb..0000000 --- a/nx-X11/include/bitmaps/dot +++ /dev/null @@ -1,6 +0,0 @@ -#define dot_width 16 -#define dot_height 16 -static char dot_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xf0, 0x0f, 0xf0, 0x0f, - 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf0, 0x0f, 0xf0, 0x0f, - 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/dropbar7 b/nx-X11/include/bitmaps/dropbar7 deleted file mode 100644 index 2689300..0000000 --- a/nx-X11/include/bitmaps/dropbar7 +++ /dev/null @@ -1,4 +0,0 @@ -#define bar7_width 7 -#define bar7_height 7 -static char bar7_bits[] = { - 0x00, 0x3f, 0x61, 0x61, 0x7f, 0x7e, 0x00}; diff --git a/nx-X11/include/bitmaps/dropbar8 b/nx-X11/include/bitmaps/dropbar8 deleted file mode 100644 index d7cfdeb..0000000 --- a/nx-X11/include/bitmaps/dropbar8 +++ /dev/null @@ -1,4 +0,0 @@ -#define dropbar8_width 8 -#define dropbar8_height 8 -static char dropbar8_bits[] = { - 0x00, 0x7f, 0xc1, 0xc1, 0xc1, 0xff, 0xfe, 0x00}; diff --git a/nx-X11/include/bitmaps/escherknot b/nx-X11/include/bitmaps/escherknot deleted file mode 100644 index 80bc471..0000000 --- a/nx-X11/include/bitmaps/escherknot +++ /dev/null @@ -1,473 +0,0 @@ -#define escherknot_width 216 -#define escherknot_height 208 - -static char escherknot_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x5f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0x6f, 0xf6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0xff, 0x3a, 0x13, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0d, 0x02, 0x51, 0x71, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2f, 0x20, 0xd9, 0x88, - 0x9b, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82, - 0xac, 0x44, 0x4e, 0x1c, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x40, 0x02, 0x44, 0x60, 0xe2, 0xfc, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x25, 0x09, 0x90, 0x22, 0x13, 0xb7, 0x9a, 0x1e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x10, 0x89, - 0x18, 0xe3, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x08, - 0x01, 0x10, 0xc8, 0xa8, 0xd5, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x83, 0x80, 0x20, 0x40, 0x82, 0x00, 0x66, 0x9c, 0xec, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x24, 0x12, 0x93, 0x5b, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x12, 0x80, 0x04, 0x01, 0x00, 0x80, - 0x19, 0x33, 0xfa, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x80, 0x00, - 0x20, 0x08, 0x12, 0xc4, 0x68, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x02, 0x04, 0x24, 0x00, 0x01, 0x40, 0x24, 0x8c, 0xcd, 0x3f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x80, 0x49, 0x10, 0x90, 0x00, 0x21, 0x20, 0x08, 0x11, 0x43, 0xd9, - 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, - 0xff, 0xff, 0x0b, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x30, 0xb9, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x97, 0x04, 0x08, 0xfe, 0x05, 0x30, 0x10, 0x12, 0x20, 0x20, - 0x04, 0x00, 0x80, 0x48, 0x0c, 0xa3, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x92, 0x20, 0x49, 0x40, 0x3e, 0x0e, 0x82, - 0x00, 0x84, 0x25, 0x01, 0x80, 0x00, 0x80, 0xc8, 0x34, 0xed, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x25, 0x01, 0x04, 0x01, 0x08, - 0xd0, 0x17, 0x00, 0x80, 0x25, 0x01, 0xad, 0x04, 0x12, 0x20, 0x23, 0x4c, - 0x6a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x02, 0x48, - 0x92, 0x20, 0x41, 0x92, 0x9e, 0x80, 0x24, 0x24, 0x29, 0x00, 0x04, 0x00, - 0x10, 0x98, 0xcc, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x4f, 0x10, 0x01, 0x90, 0x24, 0x40, 0x12, 0xf0, 0x00, 0x24, 0x41, 0x0b, - 0xa9, 0x10, 0x00, 0x00, 0x04, 0xd9, 0x96, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x00, 0x92, 0x48, 0x02, 0x04, 0x09, 0xc0, 0x84, 0x8f, - 0x29, 0x2d, 0xf8, 0xa9, 0x02, 0x00, 0x00, 0x20, 0x90, 0xf4, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x24, 0x91, 0x04, 0x50, 0x22, 0x24, - 0x1b, 0x12, 0x7a, 0x48, 0xca, 0x03, 0x21, 0x10, 0x00, 0x00, 0x48, 0x93, - 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x24, 0x92, 0x20, - 0x81, 0xda, 0x24, 0xc8, 0x16, 0xd0, 0xe7, 0x50, 0xd2, 0xbf, 0x03, 0x00, - 0x80, 0x00, 0x30, 0x29, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, - 0x20, 0x80, 0x24, 0x41, 0x12, 0x2a, 0x41, 0xb2, 0x80, 0x33, 0x0e, 0x7e, - 0x88, 0x1c, 0x01, 0x00, 0xa0, 0x24, 0x69, 0x75, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x82, 0x44, 0x11, 0x24, 0x09, 0x90, 0xa4, 0x4d, 0xd2, 0x92, - 0x9e, 0xd3, 0x83, 0x6b, 0x62, 0x00, 0x00, 0x10, 0x22, 0xff, 0x7f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x42, 0x04, 0x92, 0x24, 0x6b, 0x53, 0x32, - 0x59, 0x90, 0x16, 0xfa, 0xb4, 0xf4, 0xff, 0x0f, 0x01, 0x00, 0x90, 0x68, - 0x4a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x90, 0x24, 0x11, 0x24, - 0x49, 0xda, 0x82, 0xc5, 0x92, 0xd2, 0xd0, 0x9e, 0x1e, 0x00, 0x78, 0x0a, - 0x00, 0x00, 0x05, 0xd2, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x02, - 0x44, 0xb2, 0x65, 0xea, 0x49, 0x9e, 0x2c, 0x4b, 0x1a, 0xd2, 0xeb, 0xe3, - 0xff, 0xc7, 0x09, 0x00, 0x20, 0x68, 0xff, 0xd6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x90, 0x40, 0x92, 0x24, 0x09, 0x5f, 0xd2, 0x64, 0x59, 0x72, - 0x56, 0x7f, 0xfd, 0xdf, 0x1f, 0x12, 0x00, 0x20, 0x49, 0x92, 0xde, 0x01, - 0x00, 0x00, 0x00, 0x80, 0x41, 0x92, 0x4c, 0x92, 0x24, 0x25, 0xc9, 0x8b, - 0x2e, 0xcb, 0x92, 0x4b, 0x5a, 0x2f, 0x75, 0xf4, 0x04, 0x00, 0x00, 0x41, - 0xf6, 0x74, 0x01, 0x00, 0x00, 0x00, 0x40, 0x49, 0x02, 0x00, 0xba, 0xb6, - 0xfd, 0x49, 0xf8, 0x74, 0x6d, 0x4b, 0x72, 0xed, 0xdb, 0xff, 0xcf, 0x53, - 0x00, 0x00, 0x48, 0xb6, 0xd7, 0x03, 0x00, 0x00, 0x00, 0x60, 0x48, 0x10, - 0xc9, 0x93, 0x24, 0x00, 0x7b, 0xc3, 0xa6, 0x69, 0x58, 0x5a, 0xfb, 0xfa, - 0xa5, 0xbe, 0x16, 0x00, 0x00, 0x92, 0xa4, 0xfd, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x01, 0x20, 0x5d, 0xa2, 0xfe, 0x7f, 0x01, 0x4f, 0x1a, 0xcd, 0x6b, - 0x6a, 0xa9, 0x5f, 0xff, 0xf3, 0x24, 0x01, 0x40, 0xc0, 0xb4, 0xf4, 0x03, - 0x00, 0x00, 0x00, 0x2c, 0x88, 0x84, 0x89, 0xb6, 0x00, 0x24, 0x7d, 0x69, - 0xf2, 0x34, 0xad, 0x99, 0x2d, 0xf7, 0xff, 0x9f, 0x4b, 0x00, 0x00, 0x92, - 0xa6, 0xad, 0x07, 0x00, 0x00, 0x00, 0x06, 0x91, 0x24, 0xe9, 0xa4, 0xfd, - 0xa5, 0xa9, 0x4b, 0x93, 0xe7, 0x34, 0x63, 0xf9, 0xfc, 0xd5, 0xef, 0x16, - 0x00, 0x40, 0x90, 0xb4, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x6a, 0x80, 0x4c, - 0x96, 0xbe, 0x2d, 0xfd, 0x2f, 0x7c, 0x5e, 0x9c, 0x67, 0xad, 0xa5, 0xfd, - 0xff, 0xbf, 0x29, 0x00, 0x00, 0x92, 0x76, 0xed, 0x06, 0x00, 0x00, 0x00, - 0x05, 0x12, 0x48, 0x53, 0x25, 0x65, 0x25, 0xf4, 0xe5, 0xd3, 0x72, 0x9c, - 0x35, 0xdf, 0xf6, 0x7f, 0xf5, 0x56, 0x00, 0x00, 0x92, 0xa4, 0xed, 0x0f, - 0x00, 0x00, 0x80, 0x49, 0x20, 0x59, 0x38, 0xec, 0xff, 0xff, 0xad, 0x2f, - 0x5d, 0xd3, 0x33, 0xe6, 0x24, 0xed, 0xff, 0xdf, 0x2d, 0x01, 0x40, 0x80, - 0x24, 0xbd, 0x07, 0x00, 0x00, 0xc0, 0x48, 0x24, 0x49, 0x87, 0x37, 0x21, - 0xa0, 0xbd, 0xf4, 0x79, 0x4f, 0xc7, 0x9c, 0xde, 0xf6, 0xff, 0xff, 0x5b, - 0x08, 0x00, 0x92, 0xfc, 0xe9, 0x0e, 0x00, 0x00, 0x20, 0x89, 0x40, 0xd3, - 0xf4, 0x49, 0xff, 0xff, 0xe7, 0x2f, 0xcf, 0x79, 0x9c, 0x53, 0xb2, 0x35, - 0xff, 0xff, 0x37, 0x00, 0x40, 0x90, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x30, - 0x91, 0x49, 0x32, 0x2d, 0xff, 0x6b, 0xb7, 0xbd, 0xbc, 0x3c, 0xef, 0x79, - 0xce, 0xde, 0xd6, 0xfd, 0xff, 0x9f, 0x00, 0x00, 0x92, 0xa6, 0xad, 0x0b, - 0x00, 0x00, 0x30, 0x11, 0x89, 0x8c, 0xcb, 0x5b, 0xba, 0xaf, 0xf6, 0xd7, - 0xe7, 0x35, 0xe7, 0x59, 0xb3, 0xfb, 0xff, 0xff, 0x7f, 0x04, 0x40, 0x80, - 0xe4, 0xb9, 0x1f, 0x00, 0x00, 0x48, 0x22, 0x91, 0x66, 0x79, 0xeb, 0xff, - 0xff, 0xdf, 0xbe, 0xbe, 0xe7, 0x8c, 0x75, 0x6b, 0x4a, 0xfa, 0xbf, 0x7f, - 0x00, 0x00, 0x82, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x4c, 0x22, 0xb2, 0x79, - 0x5e, 0xfa, 0x5b, 0xa9, 0xfd, 0xeb, 0xf5, 0x9c, 0x3d, 0xc6, 0xcc, 0xee, - 0xed, 0x01, 0xf8, 0x00, 0x40, 0x82, 0xb6, 0xa9, 0x1b, 0x00, 0x00, 0x94, - 0x64, 0x66, 0x8e, 0xd3, 0x97, 0xfe, 0xff, 0xd7, 0xdf, 0x9f, 0x7b, 0xf3, - 0x3c, 0x35, 0x59, 0x6b, 0x00, 0x70, 0x00, 0x00, 0x40, 0xe4, 0xed, 0x1e, - 0x00, 0x00, 0x92, 0xc4, 0x34, 0xf3, 0xfc, 0xfd, 0x5f, 0xad, 0x7d, 0xfa, - 0x7a, 0xce, 0x8e, 0xb3, 0x76, 0x2f, 0xfd, 0x00, 0xe0, 0x04, 0x00, 0x9a, - 0x26, 0xaf, 0x1e, 0x00, 0x00, 0x13, 0x88, 0xcc, 0xb5, 0x3f, 0xbf, 0xff, - 0xff, 0xd7, 0xef, 0xef, 0xbd, 0x79, 0x6a, 0xde, 0xec, 0xab, 0x01, 0xc0, - 0x00, 0x00, 0x40, 0xb6, 0xbd, 0x1b, 0x00, 0x00, 0x05, 0x91, 0xeb, 0x5c, - 0xeb, 0xeb, 0xff, 0xff, 0xff, 0x7e, 0xef, 0x6b, 0xef, 0xcd, 0x99, 0xb3, - 0xe4, 0x07, 0x80, 0x00, 0x40, 0x49, 0xb2, 0xe5, 0x1a, 0x00, 0x80, 0x20, - 0x32, 0xb1, 0xe7, 0x79, 0x7f, 0xf7, 0xff, 0xfd, 0xeb, 0xbd, 0xfe, 0x2c, - 0x3d, 0x6b, 0xb6, 0xaf, 0x06, 0x80, 0x00, 0x00, 0x41, 0x96, 0xfe, 0x1e, - 0x00, 0x80, 0x44, 0xb2, 0x9b, 0xf9, 0xde, 0xff, 0xff, 0xff, 0x7f, 0xbf, - 0xf7, 0xbb, 0xb3, 0x77, 0xce, 0xce, 0xb6, 0x0d, 0x80, 0x01, 0x00, 0x49, - 0xf2, 0x94, 0x1f, 0x00, 0x40, 0x49, 0x44, 0xe6, 0x9e, 0x77, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xbf, 0xf7, 0x7e, 0xd6, 0xbc, 0xd9, 0xba, 0x3b, 0x80, - 0x00, 0x00, 0x64, 0x93, 0xf7, 0x1b, 0x00, 0x40, 0x89, 0xec, 0x7e, 0x67, - 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xdb, 0x99, 0x33, 0x37, - 0xd3, 0x36, 0x80, 0x01, 0x80, 0x24, 0xda, 0xd6, 0x1e, 0x00, 0x20, 0x90, - 0x99, 0x99, 0x7b, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbd, 0x37, - 0x63, 0xf3, 0x66, 0xdb, 0x7a, 0x80, 0x00, 0x00, 0x24, 0x59, 0xde, 0x1f, - 0x00, 0x60, 0x12, 0xb3, 0xf7, 0xdd, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, - 0xbf, 0xf7, 0xfe, 0x6e, 0xce, 0xdd, 0x6d, 0xd7, 0x80, 0x00, 0x80, 0x20, - 0xcb, 0xfb, 0x1f, 0x00, 0x10, 0x20, 0x6e, 0x66, 0x76, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xef, 0xde, 0xdb, 0x9b, 0x99, 0xb3, 0x5d, 0x6b, 0x81, - 0x00, 0x40, 0x96, 0x59, 0x6a, 0x1f, 0x00, 0x98, 0xc4, 0xe4, 0xdf, 0xff, - 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x6f, 0x7b, 0x37, 0x7f, - 0xb3, 0xdd, 0x83, 0x00, 0x00, 0xb0, 0xed, 0xef, 0x1d, 0x00, 0x10, 0x88, - 0x9e, 0xdd, 0xcd, 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xed, - 0x6c, 0xe6, 0xcc, 0x76, 0x6d, 0xc1, 0x00, 0x40, 0x91, 0x24, 0x7b, 0x1f, - 0x00, 0x08, 0xd1, 0xf1, 0x66, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xdf, 0xbd, 0xbf, 0xd9, 0xdd, 0xdd, 0xb6, 0x47, 0x00, 0x00, 0xd8, - 0xb4, 0xad, 0x1f, 0x00, 0x24, 0x24, 0x6f, 0xf6, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xb7, 0x9d, 0x33, 0xd9, 0x96, 0x4e, - 0x00, 0x20, 0x49, 0xf7, 0xfd, 0x1e, 0x00, 0x48, 0xe4, 0xac, 0xb9, 0xdd, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdd, 0x76, 0xb6, - 0xb7, 0xfd, 0x7a, 0x00, 0x00, 0x44, 0x96, 0xb7, 0x1f, 0x00, 0x02, 0x9a, - 0xbe, 0x6f, 0x77, 0xff, 0xff, 0x7f, 0x61, 0xd9, 0xff, 0xff, 0xff, 0xfd, - 0xdd, 0x66, 0xed, 0x66, 0x5b, 0x37, 0x00, 0x90, 0x64, 0xb9, 0xf6, 0x1f, - 0x00, 0x02, 0xc9, 0xf3, 0xee, 0xfd, 0xff, 0xff, 0x2f, 0x24, 0x4f, 0xfe, - 0xff, 0xff, 0x7f, 0x37, 0xdb, 0xcd, 0x7c, 0xff, 0x3a, 0x00, 0x88, 0x24, - 0xdb, 0xde, 0x1a, 0x00, 0x13, 0x31, 0x6f, 0xbb, 0xdf, 0xff, 0xff, 0x21, - 0xa0, 0x64, 0xf3, 0xff, 0xff, 0xe7, 0xff, 0x96, 0xbb, 0x9b, 0xa5, 0x1d, - 0x00, 0x60, 0x32, 0xe9, 0xdb, 0x0f, 0x00, 0x65, 0xe6, 0x3c, 0xfb, 0xf6, - 0xff, 0x7f, 0x10, 0xa4, 0xb5, 0x9d, 0xfe, 0xdf, 0xdf, 0xdd, 0x6d, 0x32, - 0xb3, 0x7d, 0x0d, 0x00, 0x0b, 0x93, 0x7c, 0x7b, 0x0f, 0x00, 0x89, 0xdc, - 0xb3, 0xed, 0xfb, 0xff, 0x1f, 0x10, 0x90, 0x92, 0xd9, 0xfe, 0x7f, 0xff, - 0x77, 0xdb, 0xee, 0x6e, 0xdb, 0x0e, 0x00, 0x20, 0xdd, 0x66, 0x6f, 0x0f, - 0x80, 0x91, 0x5a, 0xfb, 0xbe, 0xef, 0xff, 0x0f, 0x10, 0xda, 0x92, 0xee, - 0xff, 0xff, 0xff, 0xf7, 0xb7, 0xcd, 0xee, 0xde, 0x07, 0x00, 0x24, 0x49, - 0xb6, 0xed, 0x0f, 0x00, 0x12, 0x6b, 0xcd, 0xf3, 0xbe, 0xff, 0x07, 0x08, - 0x48, 0xda, 0x76, 0xb7, 0xff, 0xff, 0xdd, 0x6e, 0xba, 0x99, 0x65, 0x03, - 0x40, 0x92, 0xe4, 0xba, 0xbd, 0x0e, 0x80, 0x62, 0xed, 0x7d, 0x5f, 0xf7, - 0xff, 0x01, 0x08, 0x28, 0xc9, 0x26, 0xbb, 0xff, 0xff, 0xff, 0x99, 0xb7, - 0xbb, 0x7d, 0x03, 0x00, 0x89, 0x64, 0xdb, 0xf6, 0x07, 0x40, 0x0c, 0x35, - 0xe7, 0x79, 0xdd, 0xff, 0x01, 0x84, 0xa5, 0x7d, 0xba, 0xdd, 0xfe, 0x7f, - 0xbf, 0xbf, 0x6d, 0x76, 0xdb, 0x01, 0x00, 0x48, 0x36, 0xdb, 0xd6, 0x07, - 0xc0, 0x88, 0xb4, 0xb6, 0xbf, 0xff, 0x7f, 0x00, 0x0c, 0x24, 0x44, 0xdb, - 0xed, 0xff, 0xdf, 0xef, 0x6e, 0xdb, 0x6e, 0xb7, 0x00, 0x80, 0x44, 0x93, - 0xed, 0x5b, 0x07, 0x40, 0x91, 0xd2, 0xfa, 0xfc, 0xf6, 0x7f, 0x00, 0x02, - 0xb4, 0x35, 0xd9, 0xef, 0xff, 0xff, 0xfb, 0xef, 0xb6, 0xc9, 0xe4, 0x00, - 0x10, 0x24, 0xd9, 0x6d, 0xfb, 0x03, 0x00, 0x27, 0xfe, 0xd3, 0xd6, 0xdb, - 0x3f, 0x00, 0xa2, 0x94, 0xb4, 0xdb, 0x7c, 0xff, 0xff, 0xbf, 0xd9, 0xad, - 0xdb, 0x7d, 0x00, 0x40, 0x32, 0xd9, 0xb6, 0xef, 0x03, 0x60, 0xe4, 0x5a, - 0x5f, 0x5f, 0xff, 0x1f, 0x00, 0x02, 0x52, 0x92, 0xec, 0xb6, 0xff, 0xff, - 0xef, 0xff, 0x6d, 0xb6, 0x3b, 0x00, 0x28, 0x90, 0xcc, 0xbe, 0xfd, 0x03, - 0xa0, 0x88, 0xeb, 0xf9, 0xfd, 0xf5, 0x1f, 0x00, 0x82, 0x53, 0xbb, 0x6d, - 0xf7, 0xff, 0xf9, 0xff, 0x6f, 0xdb, 0x6d, 0x1b, 0x00, 0x04, 0xc9, 0x66, - 0xdb, 0x57, 0x03, 0xa0, 0x52, 0xaf, 0xa7, 0x97, 0xff, 0x0f, 0x00, 0x51, - 0x48, 0xda, 0x66, 0xdb, 0xff, 0xf8, 0xdf, 0xed, 0xbe, 0xed, 0x0e, 0x00, - 0x92, 0x64, 0x32, 0xeb, 0xf6, 0x01, 0x20, 0x63, 0xbd, 0xbc, 0xfc, 0xfa, - 0x0f, 0x00, 0x09, 0x20, 0x89, 0x3e, 0xff, 0xff, 0xe0, 0x7f, 0xdf, 0x6f, - 0xdb, 0x07, 0x00, 0x01, 0x24, 0xbb, 0xed, 0xfe, 0x01, 0xa0, 0xce, 0xf5, - 0xf6, 0xdb, 0xdf, 0x07, 0x00, 0x41, 0xad, 0x5f, 0xf2, 0xed, 0xff, 0xc0, - 0xff, 0xbf, 0xdd, 0x92, 0x03, 0x00, 0x44, 0xb2, 0xd9, 0x7d, 0xfb, 0x01, - 0xe0, 0xaa, 0xdf, 0x9b, 0x7f, 0xfb, 0x07, 0x80, 0x28, 0x21, 0x64, 0xbb, - 0x7f, 0x7f, 0x80, 0xff, 0xf6, 0xbb, 0xee, 0x03, 0x80, 0x22, 0x99, 0xed, - 0xb6, 0xff, 0x00, 0x90, 0xb8, 0x5e, 0x5b, 0x6b, 0xed, 0x03, 0x00, 0x01, - 0xa6, 0x6d, 0xdb, 0xf6, 0x7f, 0x00, 0xff, 0xff, 0xf6, 0xcd, 0x00, 0x40, - 0x10, 0xc9, 0x6c, 0xff, 0xf7, 0x00, 0xa0, 0xe3, 0x72, 0xeb, 0xef, 0xff, - 0x03, 0x80, 0xe0, 0x90, 0x24, 0xdb, 0xbd, 0x3f, 0x00, 0xfe, 0xdb, 0x6f, - 0xfb, 0x00, 0x00, 0x89, 0x4c, 0xb6, 0xd9, 0x7e, 0x00, 0x70, 0xaf, 0xaf, - 0x6f, 0xb5, 0xde, 0x03, 0x80, 0x94, 0x92, 0xb6, 0xf9, 0xf6, 0x3f, 0x00, - 0xfc, 0xbf, 0xdd, 0x7b, 0x00, 0x10, 0x48, 0x26, 0xb3, 0xdf, 0x7f, 0x00, - 0x70, 0xd8, 0xae, 0xfd, 0xff, 0xf7, 0x03, 0x80, 0x00, 0xd2, 0x36, 0xcf, - 0xdf, 0x3f, 0x00, 0xb8, 0x6d, 0xdf, 0x16, 0x00, 0x48, 0x44, 0xb2, 0xfb, - 0x6c, 0x3f, 0x00, 0x50, 0x75, 0xfd, 0xa5, 0xd5, 0xfe, 0x01, 0x40, 0xd1, - 0x12, 0xa2, 0x7d, 0xfb, 0x1f, 0x00, 0xf0, 0xff, 0xbf, 0x0d, 0x00, 0x20, - 0x12, 0x9b, 0xcd, 0xf6, 0x3f, 0x00, 0x90, 0xd5, 0xa7, 0xfd, 0x77, 0xab, - 0x03, 0x40, 0x1c, 0xc8, 0xbe, 0x6d, 0xfb, 0x1f, 0x00, 0xe0, 0xff, 0xee, - 0x07, 0x00, 0x04, 0x91, 0xc9, 0x7e, 0xbf, 0x1f, 0x00, 0x30, 0x57, 0xbf, - 0xa6, 0xde, 0xfd, 0x01, 0x40, 0x40, 0x6b, 0xd3, 0x6e, 0xef, 0x0f, 0x00, - 0xc0, 0xeb, 0x7d, 0x03, 0x00, 0x90, 0xc8, 0x6c, 0x76, 0xfb, 0x0f, 0x00, - 0x70, 0x5c, 0xe5, 0xf7, 0xfa, 0xeb, 0x01, 0x40, 0x50, 0x49, 0x92, 0xf4, - 0xfd, 0x0f, 0x00, 0xc0, 0xff, 0xdb, 0x01, 0x80, 0x44, 0x44, 0x66, 0xbb, - 0x6f, 0x0f, 0x00, 0xd0, 0xf1, 0x95, 0xf6, 0x6f, 0xad, 0x01, 0x40, 0x08, - 0x78, 0xdb, 0xb6, 0xef, 0x0f, 0x00, 0x00, 0xdf, 0xd6, 0x00, 0x00, 0x20, - 0x32, 0xb3, 0xdb, 0xfd, 0x0f, 0x00, 0x10, 0xd7, 0xf7, 0xb6, 0xd8, 0xeb, - 0x03, 0x20, 0x43, 0x27, 0xd9, 0xb6, 0xfd, 0x0f, 0x00, 0x00, 0xff, 0x7e, - 0x00, 0x40, 0x12, 0x93, 0xd9, 0xec, 0xb6, 0x07, 0x00, 0x70, 0x55, 0xdd, - 0xf6, 0x6f, 0xbb, 0x01, 0x40, 0x28, 0xa1, 0x6f, 0xb6, 0xb7, 0x0f, 0x00, - 0x00, 0xde, 0x1f, 0x00, 0x80, 0x88, 0xd8, 0xcc, 0x66, 0xff, 0x03, 0x00, - 0x70, 0xf4, 0xf5, 0xdb, 0xaa, 0xee, 0x01, 0x60, 0x28, 0x2d, 0x49, 0xf7, - 0xf6, 0x07, 0x00, 0x00, 0x7c, 0x0f, 0x00, 0x08, 0x48, 0x66, 0x6e, 0xfb, - 0xef, 0x03, 0x00, 0xd0, 0xd5, 0xdf, 0x52, 0xff, 0xda, 0x03, 0x20, 0xa3, - 0xa5, 0xd9, 0xb2, 0xff, 0x07, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x20, 0x22, - 0x33, 0x37, 0xbf, 0xfd, 0x01, 0x00, 0x70, 0x5f, 0xf7, 0xfe, 0xab, 0x6b, - 0x02, 0xa0, 0xa8, 0xb4, 0x6d, 0xdf, 0xf6, 0x07, 0x00, 0x00, 0xf8, 0x01, - 0x00, 0x12, 0x33, 0x11, 0xd9, 0xdd, 0xff, 0x01, 0x00, 0x70, 0x75, 0xd5, - 0x52, 0xea, 0x8a, 0x03, 0x20, 0x84, 0x36, 0x69, 0xba, 0xdb, 0x07, 0x00, - 0x00, 0xf0, 0x01, 0x00, 0x81, 0xc8, 0xcc, 0xdd, 0xed, 0xff, 0x00, 0x00, - 0x60, 0xd5, 0xdf, 0xf6, 0xae, 0x6b, 0x03, 0x00, 0xa1, 0xa4, 0x6d, 0xdf, - 0xfe, 0x07, 0x00, 0x00, 0x60, 0x00, 0x40, 0x44, 0xc6, 0xcc, 0x64, 0xb7, - 0xfd, 0x00, 0x00, 0xe0, 0x55, 0xf7, 0xd6, 0xea, 0xba, 0x07, 0x20, 0x94, - 0x94, 0x6d, 0xfb, 0xdb, 0x07, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x32, - 0x76, 0x77, 0xff, 0x7f, 0x00, 0x00, 0x60, 0x7d, 0xd5, 0xb6, 0x3f, 0xaf, - 0x06, 0xa0, 0xa4, 0x95, 0x6c, 0x9b, 0xee, 0x07, 0x00, 0x00, 0x18, 0x00, - 0x10, 0x92, 0x15, 0x73, 0xbb, 0xd9, 0x3f, 0x00, 0x00, 0xe0, 0xf5, 0xff, - 0xf7, 0x6a, 0xa9, 0x06, 0x80, 0xa2, 0xb4, 0x6d, 0xfb, 0xfb, 0x07, 0x00, - 0x00, 0x04, 0x00, 0x84, 0x88, 0xc8, 0x99, 0xdd, 0xff, 0x3f, 0x00, 0x00, - 0xe0, 0x8b, 0xff, 0x96, 0x6a, 0xb6, 0x0a, 0xa0, 0x94, 0x96, 0x64, 0xdb, - 0xee, 0x07, 0x00, 0x00, 0x03, 0x08, 0x20, 0x60, 0x66, 0xec, 0xee, 0xb6, - 0x1d, 0x00, 0x00, 0xc0, 0x7e, 0xa5, 0xf4, 0xab, 0x55, 0x0d, 0x20, 0xe7, - 0xd4, 0x6d, 0xdb, 0xfb, 0x07, 0x00, 0x80, 0x00, 0x00, 0x09, 0x12, 0x33, - 0x67, 0x77, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xfa, 0xff, 0xb7, 0x7a, 0x55, - 0x19, 0x90, 0x91, 0xd4, 0x64, 0xdb, 0xee, 0x07, 0x00, 0x40, 0x00, 0x81, - 0x04, 0x88, 0x91, 0x3b, 0xbb, 0xfd, 0x0f, 0x00, 0x00, 0xc0, 0xab, 0xbf, - 0xed, 0x4e, 0xbb, 0x32, 0x20, 0x94, 0x96, 0x6c, 0xff, 0xfa, 0x03, 0x00, - 0x30, 0x40, 0x20, 0x20, 0x64, 0xcc, 0xdc, 0xdd, 0xff, 0x07, 0x00, 0x00, - 0xc0, 0xeb, 0xea, 0xfd, 0xd5, 0xaa, 0x2a, 0x20, 0xd7, 0xb0, 0x6d, 0x93, - 0xef, 0x07, 0x00, 0x08, 0x00, 0x08, 0x01, 0x23, 0xee, 0xee, 0xee, 0xfb, - 0x03, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x2d, 0xdd, 0x6a, 0x49, 0xd0, 0x90, - 0x9a, 0x64, 0xdf, 0xea, 0x07, 0x00, 0x03, 0x80, 0x40, 0x8c, 0x98, 0x33, - 0xb3, 0xbb, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xa5, 0x7b, 0x6d, 0xa7, 0x56, - 0xc5, 0xa0, 0x94, 0x94, 0x6f, 0xd3, 0xbb, 0x07, 0x80, 0x10, 0x0c, 0x12, - 0x40, 0xc6, 0xb9, 0xdb, 0xfb, 0xfd, 0x01, 0x00, 0x00, 0x80, 0x97, 0xee, - 0xdf, 0xba, 0x54, 0x1a, 0xa1, 0xe5, 0xd2, 0x64, 0x7e, 0xee, 0x07, 0x60, - 0x02, 0x80, 0x00, 0x31, 0x62, 0xcc, 0xdc, 0xee, 0x7f, 0x00, 0x00, 0x00, - 0x80, 0xff, 0xff, 0xdb, 0xaa, 0xb5, 0x8a, 0x86, 0x98, 0x96, 0x6d, 0x9b, - 0xea, 0x07, 0x98, 0x00, 0x22, 0x44, 0x88, 0x39, 0x77, 0x77, 0xff, 0x7f, - 0x00, 0x00, 0x00, 0x80, 0x7d, 0x77, 0xba, 0x7b, 0x2d, 0x55, 0x3c, 0xa6, - 0xb4, 0x6c, 0xf6, 0xaf, 0x07, 0x07, 0x90, 0x88, 0x20, 0x42, 0x9c, 0xbb, - 0xbb, 0xbb, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xbd, 0xbf, 0x55, 0x53, - 0xa5, 0xb2, 0xa1, 0xb4, 0xc9, 0x9f, 0xda, 0xcf, 0x28, 0x24, 0x42, 0x08, - 0x31, 0xe6, 0xcc, 0xdd, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xef, - 0xb7, 0xbd, 0xde, 0x12, 0xd1, 0xac, 0x95, 0x4d, 0xf2, 0x56, 0x9f, 0x88, - 0x80, 0x10, 0xc2, 0x9c, 0x73, 0x77, 0xef, 0xfe, 0x7f, 0x00, 0x00, 0x00, - 0x00, 0xbf, 0xfb, 0xed, 0xeb, 0x35, 0x95, 0x72, 0xa2, 0x35, 0xcd, 0xb6, - 0xd6, 0x2f, 0x21, 0x24, 0x04, 0x31, 0xc6, 0x98, 0x33, 0xf7, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0xd6, 0x6a, 0x7f, 0x5b, 0xab, 0x2d, 0x28, 0x23, - 0x65, 0xd9, 0xb6, 0x55, 0x5f, 0x88, 0x08, 0x43, 0x0c, 0x61, 0xde, 0xdd, - 0xfb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x76, 0xff, 0x4d, 0xd7, 0x4d, - 0x4a, 0xa5, 0x29, 0x2d, 0xdb, 0xbe, 0x55, 0x1f, 0x22, 0x42, 0x28, 0xc2, - 0x39, 0xe7, 0xee, 0xee, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x7f, - 0xfb, 0xb6, 0xb6, 0x95, 0x70, 0x2e, 0xa5, 0xd9, 0x24, 0x5d, 0x5f, 0x8a, - 0x28, 0x88, 0x31, 0x9e, 0x39, 0x73, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x00, 0xec, 0xb7, 0xdf, 0x6c, 0xb5, 0x65, 0x26, 0xa3, 0x39, 0x9b, 0xfc, - 0x85, 0x5d, 0x21, 0x04, 0x63, 0x1c, 0xe6, 0xdd, 0xbd, 0xfb, 0xff, 0xff, - 0x01, 0x00, 0x00, 0x00, 0xb8, 0xfa, 0xb6, 0x6f, 0x4d, 0x9a, 0x28, 0x59, - 0x4d, 0xd3, 0x2f, 0xf5, 0x3f, 0x8c, 0xd1, 0x18, 0xc6, 0x31, 0xf6, 0xdd, - 0xfe, 0xff, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xb9, 0xb6, - 0x25, 0xe1, 0x4d, 0x69, 0xba, 0x6c, 0xad, 0x3c, 0x41, 0x14, 0x84, 0xe9, - 0x9e, 0x37, 0xf7, 0xff, 0xff, 0xfb, 0x03, 0x00, 0x00, 0x00, 0x70, 0x5d, - 0x3d, 0x9f, 0x3d, 0x6d, 0x26, 0x52, 0x59, 0xb6, 0x6d, 0xab, 0x7f, 0x14, - 0x82, 0xe1, 0x39, 0xe6, 0xdd, 0xfb, 0xff, 0xbf, 0xff, 0x01, 0x00, 0x00, - 0x00, 0xf0, 0xf6, 0x6f, 0x77, 0xcd, 0x92, 0xd0, 0x52, 0x4b, 0xb3, 0x49, - 0x0b, 0x3a, 0x41, 0x61, 0x38, 0x9e, 0x73, 0xee, 0xdc, 0xff, 0xff, 0xfd, - 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xd7, 0x65, 0xda, 0x66, 0x63, 0x9d, - 0xf2, 0x36, 0x7b, 0x6a, 0x7f, 0x14, 0x18, 0x8e, 0xe7, 0xd9, 0x7b, 0xff, - 0xff, 0xef, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xdd, 0xb6, - 0xc9, 0x4c, 0x46, 0x9a, 0x64, 0xcb, 0x5b, 0xed, 0x06, 0xc6, 0xe3, 0x71, - 0xde, 0xbd, 0xff, 0xff, 0x7f, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x7f, - 0x7f, 0xff, 0x59, 0x37, 0x75, 0xbb, 0x96, 0x66, 0xdb, 0x56, 0xf7, 0xe0, - 0xf2, 0x74, 0x9e, 0x77, 0xef, 0xfd, 0xff, 0xeb, 0xed, 0x03, 0x00, 0x00, - 0x00, 0xc0, 0xea, 0xdf, 0xb3, 0xdb, 0xde, 0xc6, 0x81, 0xb0, 0x6c, 0xba, - 0xb4, 0xf6, 0x38, 0x18, 0x3c, 0xe7, 0x9c, 0xfb, 0xff, 0x7f, 0xff, 0xff, - 0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0xf7, 0x6e, 0x66, 0xd9, 0x99, 0xac, - 0xa4, 0xcd, 0x96, 0xa5, 0xea, 0x03, 0xa7, 0xcf, 0x79, 0xef, 0xfd, 0xff, - 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0xef, 0xdf, - 0x6f, 0xef, 0x72, 0x65, 0xd9, 0xb6, 0xad, 0xe8, 0xc1, 0xe1, 0xf1, 0xbe, - 0x7b, 0xef, 0xff, 0xdf, 0x7a, 0xfb, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x5f, 0xdd, 0x9d, 0xac, 0x99, 0x84, 0x29, 0xcd, 0x3c, 0x4f, 0x9d, 0x7d, - 0x3c, 0x9e, 0xe7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xef, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xff, 0x77, 0x7b, 0x33, 0xe7, 0x5a, 0x49, 0x9b, 0x65, - 0x59, 0x75, 0x07, 0x97, 0xf7, 0xbb, 0xef, 0xff, 0xff, 0xdb, 0xfe, 0xff, - 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf7, 0x3f, 0xe7, 0xcf, 0x9c, 0x51, - 0x4d, 0xb0, 0x6d, 0x4b, 0xc9, 0xd3, 0xf5, 0x79, 0xfe, 0xfb, 0xff, 0xff, - 0xdb, 0xda, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xde, - 0xdd, 0xf3, 0x4d, 0x52, 0x36, 0xcb, 0xd2, 0x3a, 0x7e, 0x3c, 0xde, 0xe7, - 0xbe, 0xff, 0x7f, 0xda, 0xff, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0xff, 0xfb, 0xdd, 0x73, 0x8f, 0xa5, 0x9a, 0xe6, 0xd9, 0xb6, 0xe2, 0x4e, - 0xc7, 0xf7, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0xf6, 0xff, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xee, 0x79, 0xb2, 0xb2, 0x2c, 0x9f, - 0xb6, 0x54, 0xfe, 0xfb, 0x79, 0xbf, 0xff, 0xff, 0x5f, 0xda, 0xff, 0xfa, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xf7, 0xbf, 0xe7, 0x4b, - 0xb4, 0x69, 0xd3, 0x2c, 0x25, 0xbd, 0xbc, 0xcf, 0xf7, 0xfd, 0xff, 0xd7, - 0xf6, 0xfe, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xbf, 0x9d, - 0xf1, 0x3e, 0x57, 0x25, 0xcb, 0xb6, 0x6d, 0xa9, 0xb5, 0xef, 0xfb, 0xff, - 0xff, 0xff, 0xd5, 0xda, 0xd6, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xff, 0xff, 0xfb, 0xcf, 0xf5, 0x25, 0x65, 0xd9, 0x66, 0x5b, 0x4a, 0xfa, - 0xf9, 0x7e, 0xff, 0xff, 0xff, 0xf6, 0xd6, 0xdf, 0xfa, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0xff, 0xef, 0x3e, 0xf7, 0x9f, 0x5b, 0x92, 0x6c, - 0xdb, 0x52, 0xe5, 0xbe, 0xdf, 0xff, 0xff, 0xbf, 0x51, 0xda, 0xfa, 0x7f, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7b, 0x9f, 0xe7, - 0x4c, 0xb3, 0x4d, 0xd3, 0x54, 0xd9, 0xe7, 0xfb, 0xff, 0xff, 0x5f, 0xdc, - 0xfa, 0xdf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, - 0xe7, 0xf9, 0x3a, 0xd3, 0xa6, 0xe9, 0xb6, 0xa5, 0xca, 0xf9, 0xfd, 0xff, - 0xff, 0x83, 0x42, 0xd2, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xff, 0xfd, 0xbf, 0xef, 0x4f, 0xd5, 0x64, 0xdb, 0x26, 0x4d, 0x30, - 0x7f, 0xff, 0xff, 0xff, 0x91, 0xda, 0xdb, 0xda, 0xdf, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf, 0xff, 0x7d, 0xbe, 0xb5, 0x6d, 0x97, - 0x6d, 0x93, 0x56, 0xdf, 0xff, 0xff, 0x7f, 0x81, 0x4a, 0xda, 0x7f, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xef, 0xeb, 0xbb, - 0xa6, 0x4d, 0x73, 0xcd, 0x92, 0xaa, 0xfe, 0xff, 0xff, 0x1f, 0x01, 0x6a, - 0x5b, 0xfb, 0xfb, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xfd, 0xbf, 0x5f, 0x3b, 0xdb, 0x36, 0xbb, 0x26, 0x4c, 0xf9, 0xff, 0xff, - 0x0f, 0xa3, 0x2a, 0xe9, 0x7f, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xee, 0xff, 0xff, 0xfe, 0xfe, 0xcc, 0x91, 0xec, 0x93, 0x6d, 0x93, - 0xf2, 0xff, 0xff, 0x03, 0x00, 0x6a, 0x6d, 0x6f, 0xff, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x6f, 0x76, 0xb6, 0xcd, - 0x76, 0xc9, 0x2a, 0xe9, 0xff, 0xff, 0x00, 0x02, 0x24, 0xed, 0xf9, 0xed, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xdf, 0xff, - 0xd9, 0x66, 0x9b, 0x6c, 0x93, 0x54, 0xc5, 0xff, 0x3f, 0x00, 0x01, 0x95, - 0xb5, 0xaf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, - 0xff, 0xff, 0xfd, 0xae, 0x7d, 0xde, 0x6d, 0xf6, 0xa1, 0x8a, 0xff, 0x0f, - 0x00, 0x81, 0x90, 0xb4, 0xfd, 0xfd, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xcd, 0xb2, 0xdb, 0x2c, 0xcb, - 0x54, 0xfe, 0x01, 0x00, 0x01, 0xd2, 0xb6, 0xb7, 0xff, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x39, 0xdb, 0x76, - 0xb3, 0x4b, 0xb6, 0x0a, 0xfe, 0x00, 0x00, 0x01, 0x48, 0xda, 0xfe, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, - 0xcf, 0xb9, 0x6d, 0xb6, 0xd9, 0xa5, 0x75, 0x1c, 0x00, 0x80, 0x80, 0x20, - 0xdb, 0xda, 0xbe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0xff, 0xff, 0xff, 0x77, 0x96, 0xd9, 0x26, 0xb3, 0x4d, 0x82, 0x11, 0x00, - 0x80, 0x80, 0x24, 0x6d, 0xff, 0xf7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xbb, 0x67, 0xdb, 0xdd, 0x36, 0xd9, - 0x54, 0x60, 0x00, 0xc0, 0x00, 0x92, 0x65, 0x6b, 0xff, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x4f, 0x7d, 0x96, - 0xd9, 0x6c, 0x36, 0xad, 0xc2, 0x00, 0x60, 0x00, 0xc8, 0xb6, 0x6d, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, - 0xff, 0xc8, 0x76, 0xbb, 0xcb, 0x64, 0x52, 0x02, 0x03, 0x10, 0x00, 0x64, - 0xda, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xff, 0xff, 0x5f, 0xd7, 0x4d, 0x33, 0x99, 0xdd, 0x96, 0x04, 0x2c, - 0x1c, 0x40, 0x22, 0xdb, 0xb6, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xdf, 0xb5, 0xed, 0xe6, 0x36, 0x9b, - 0x6c, 0x29, 0xf0, 0x03, 0x00, 0x99, 0x6c, 0xfb, 0xfd, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x35, 0xbb, - 0xec, 0x76, 0x33, 0x91, 0x02, 0x00, 0x00, 0x00, 0x64, 0x67, 0xdf, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, - 0xbf, 0x6f, 0x9b, 0x9d, 0xc9, 0xce, 0x36, 0x49, 0x00, 0x00, 0x00, 0x93, - 0xb1, 0xdd, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0xff, 0x6a, 0x76, 0xbb, 0xdd, 0xd9, 0x64, 0x12, 0x01, - 0x00, 0x40, 0x98, 0xdd, 0x6d, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0x66, 0x73, 0x33, 0xbb, - 0x9d, 0x4d, 0x00, 0x00, 0x00, 0x63, 0xe6, 0xf6, 0xff, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xed, 0xfd, - 0xee, 0xee, 0x36, 0x73, 0x2b, 0x04, 0x00, 0xa0, 0x38, 0x75, 0xbf, 0xff, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7f, 0xd9, 0xec, 0xce, 0x66, 0x66, 0x66, 0x22, 0x04, 0x00, 0xc6, - 0x99, 0xbb, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5e, 0xb3, 0xdb, 0xb9, 0xcd, 0xc9, 0x88, 0x89, - 0x00, 0x68, 0x31, 0xee, 0xdd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xbe, 0xbb, 0x9b, 0x3f, - 0xbb, 0x33, 0x23, 0x04, 0x00, 0x8c, 0xf3, 0xee, 0xff, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x67, - 0x76, 0x77, 0xb2, 0x66, 0xce, 0x0c, 0xd1, 0xd6, 0xe3, 0x79, 0xf7, 0xff, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0xfd, 0xef, 0xe6, 0xee, 0xce, 0x9c, 0x31, 0x16, 0x00, 0x3c, - 0x9e, 0xfb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x9f, 0xdb, 0xdc, 0x9d, 0x99, 0x33, 0xc6, - 0xc1, 0xff, 0x8f, 0xe7, 0xbb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf7, 0xbd, 0xbb, 0x33, - 0x7b, 0xee, 0x18, 0x1e, 0x50, 0xf0, 0xf9, 0xfe, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7b, - 0xf7, 0x77, 0xf7, 0xe6, 0x9c, 0xe3, 0xf0, 0x4d, 0xff, 0x7c, 0xef, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0xdf, 0x76, 0x7f, 0xcf, 0x9e, 0x73, 0x8f, 0x07, 0xff, 0x0b, - 0xdf, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xee, 0xcd, 0xdd, 0x9d, 0x7b, 0xf7, 0x7c, - 0x7a, 0x00, 0xf0, 0xe7, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xbf, 0xdd, 0x7b, - 0x6b, 0x9e, 0xf3, 0xe1, 0xff, 0xff, 0x7d, 0xff, 0x7f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, - 0xb7, 0xbb, 0x7b, 0xee, 0x79, 0x8f, 0x0f, 0xfa, 0x2f, 0xff, 0xf7, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7e, 0xff, 0x77, 0xef, 0xdd, 0x77, 0x7c, 0xfe, 0x02, 0xe8, - 0xcf, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xef, 0xee, 0xdd, 0xb3, 0xcf, 0xf3, - 0xf1, 0xff, 0xff, 0xf9, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfb, 0xff, 0xbf, - 0xef, 0xbe, 0xcf, 0x8f, 0xfe, 0x5f, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0xbf, 0xbb, 0xf7, 0xde, 0x79, 0x3e, 0xff, 0x52, 0xd2, 0xdf, 0xff, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xef, 0xef, 0xef, 0x3c, 0xef, 0xf9, 0xf8, 0xff, 0xff, - 0xf7, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xee, 0xdc, 0xf7, 0xfe, 0xe7, - 0x97, 0xfe, 0xff, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbf, - 0xef, 0xbf, 0x3e, 0xff, 0xda, 0xf6, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xbf, 0xf7, 0xfe, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0xff, 0xde, 0xbd, 0xef, 0xfb, 0xd7, 0xff, 0xbf, - 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x7d, 0xbf, - 0xff, 0xd2, 0xf6, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf, - 0xef, 0xfb, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0xef, 0xbe, 0xf7, 0xef, 0xef, 0xff, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xdf, 0xbf, 0xff, 0xff, 0xff, - 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, - 0xfe, 0xff, 0xfb, 0xf7, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; diff --git a/nx-X11/include/bitmaps/flagdown b/nx-X11/include/bitmaps/flagdown deleted file mode 100644 index 55abc51..0000000 --- a/nx-X11/include/bitmaps/flagdown +++ /dev/null @@ -1,27 +0,0 @@ -#define flagdown_width 48 -#define flagdown_height 48 -static char flagdown_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x80, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04, - 0x00, 0x00, 0x03, 0x00, 0x06, 0x06, 0x00, 0x80, 0x01, 0x00, 0x06, 0x07, - 0x00, 0xc0, 0x1f, 0x00, 0x87, 0x07, 0x00, 0xe0, 0x7f, 0x80, 0xc7, 0x07, - 0x00, 0x70, 0xe0, 0xc0, 0xe5, 0x07, 0x00, 0x38, 0x80, 0xe1, 0x74, 0x07, - 0x00, 0x18, 0x80, 0x71, 0x3c, 0x07, 0x00, 0x0c, 0x00, 0x3b, 0x1e, 0x03, - 0x00, 0x0c, 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x86, 0x1f, 0x8e, 0x07, 0x00, - 0x00, 0x06, 0x06, 0xc6, 0x05, 0x00, 0x00, 0x06, 0x00, 0xc6, 0x05, 0x00, - 0x00, 0x06, 0x00, 0xc6, 0x04, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, - 0x7f, 0x06, 0x00, 0x06, 0xe4, 0xff, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, - 0x00, 0x06, 0x00, 0x06, 0x04, 0x00, 0x00, 0x06, 0x00, 0x06, 0x06, 0x00, - 0x00, 0x06, 0x00, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x86, 0x01, 0x00, - 0x00, 0x06, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3e, 0x00, 0x00, - 0x00, 0xfe, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x27, 0x00, 0x00, - 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, - 0xf7, 0xbf, 0x8e, 0xfc, 0xdf, 0xf8, 0x9d, 0xeb, 0x9b, 0x76, 0xd2, 0x7a, - 0x46, 0x30, 0xe2, 0x0f, 0xe1, 0x47, 0x55, 0x84, 0x48, 0x11, 0x84, 0x19}; diff --git a/nx-X11/include/bitmaps/flagup b/nx-X11/include/bitmaps/flagup deleted file mode 100644 index 6eb0d84..0000000 --- a/nx-X11/include/bitmaps/flagup +++ /dev/null @@ -1,27 +0,0 @@ -#define flagup_width 48 -#define flagup_height 48 -static char flagup_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xef, 0x6a, 0x00, - 0x00, 0x00, 0xc0, 0x7b, 0x75, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x6a, 0x00, - 0x00, 0x00, 0x30, 0x60, 0x75, 0x00, 0x00, 0x00, 0x18, 0xe0, 0x7f, 0x00, - 0x00, 0x00, 0x0c, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x04, 0x00, - 0x00, 0x00, 0x03, 0xe0, 0x04, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x06, 0x00, - 0x00, 0xc0, 0x1f, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x7f, 0xe0, 0x07, 0x00, - 0x00, 0x70, 0xe0, 0xe0, 0x05, 0x00, 0x00, 0x38, 0x80, 0xe1, 0x04, 0x00, - 0x00, 0x18, 0x80, 0xf1, 0x04, 0x00, 0x00, 0x0c, 0x00, 0xfb, 0x04, 0x00, - 0x00, 0x0c, 0x00, 0xff, 0x04, 0x00, 0x00, 0x86, 0x1f, 0xee, 0x04, 0x00, - 0x00, 0x06, 0x06, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0xe6, 0x04, 0x00, - 0x00, 0x06, 0x00, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0x66, 0x04, 0x00, - 0x7f, 0x56, 0x52, 0x06, 0xe4, 0xff, 0x00, 0x76, 0x55, 0x06, 0x04, 0x00, - 0x00, 0x56, 0x57, 0x06, 0x04, 0x00, 0x00, 0x56, 0x55, 0x06, 0x06, 0x00, - 0x00, 0x56, 0xd5, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x86, 0x01, 0x00, - 0x54, 0x06, 0x00, 0xc6, 0x54, 0x55, 0xaa, 0x06, 0x00, 0x66, 0xaa, 0x2a, - 0x54, 0x06, 0x00, 0x36, 0x55, 0x55, 0xaa, 0x06, 0x00, 0xbe, 0xaa, 0x2a, - 0x54, 0xfe, 0xff, 0x6f, 0x55, 0x55, 0xaa, 0xfc, 0xff, 0xa7, 0xaa, 0x2a, - 0x54, 0x01, 0x88, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a, - 0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a, - 0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a, - 0x54, 0x55, 0x8d, 0x50, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa8, 0xaa, 0x2a, - 0x54, 0x55, 0x95, 0x54, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x2a, - 0x54, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/flipped_gray b/nx-X11/include/bitmaps/flipped_gray deleted file mode 100644 index b75cacd..0000000 --- a/nx-X11/include/bitmaps/flipped_gray +++ /dev/null @@ -1,4 +0,0 @@ -#define flipped_gray_width 4 -#define flipped_gray_height 2 -static char flipped_gray_bits[] = { - 0x07, 0x0d}; diff --git a/nx-X11/include/bitmaps/gray b/nx-X11/include/bitmaps/gray deleted file mode 100644 index dc7327e..0000000 --- a/nx-X11/include/bitmaps/gray +++ /dev/null @@ -1,4 +0,0 @@ -#define gray_width 2 -#define gray_height 2 -static char gray_bits[] = { - 0x01, 0x02}; diff --git a/nx-X11/include/bitmaps/gray1 b/nx-X11/include/bitmaps/gray1 deleted file mode 100644 index 476d930..0000000 --- a/nx-X11/include/bitmaps/gray1 +++ /dev/null @@ -1,4 +0,0 @@ -#define gray1_width 2 -#define gray1_height 2 -static char gray1_bits[] = { - 0x01, 0x02}; diff --git a/nx-X11/include/bitmaps/gray3 b/nx-X11/include/bitmaps/gray3 deleted file mode 100644 index 2302884..0000000 --- a/nx-X11/include/bitmaps/gray3 +++ /dev/null @@ -1,4 +0,0 @@ -#define gray3_width 4 -#define gray3_height 4 -static char gray3_bits[] = { - 0x01, 0x00, 0x04, 0x00}; diff --git a/nx-X11/include/bitmaps/grid16 b/nx-X11/include/bitmaps/grid16 deleted file mode 100644 index edc7c73..0000000 --- a/nx-X11/include/bitmaps/grid16 +++ /dev/null @@ -1,6 +0,0 @@ -#define grid16_width 16 -#define grid16_height 16 -static char grid16_bits[] = { - 0x55, 0x55, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/grid2 b/nx-X11/include/bitmaps/grid2 deleted file mode 100644 index 7a02167..0000000 --- a/nx-X11/include/bitmaps/grid2 +++ /dev/null @@ -1,4 +0,0 @@ -#define grid2_width 2 -#define grid2_height 2 -static char grid2_bits[] = { - 0x01, 0x00}; diff --git a/nx-X11/include/bitmaps/grid4 b/nx-X11/include/bitmaps/grid4 deleted file mode 100644 index 8062f40..0000000 --- a/nx-X11/include/bitmaps/grid4 +++ /dev/null @@ -1,4 +0,0 @@ -#define grid4_width 4 -#define grid4_height 4 -static char grid4_bits[] = { - 0x05, 0x00, 0x01, 0x00}; diff --git a/nx-X11/include/bitmaps/grid8 b/nx-X11/include/bitmaps/grid8 deleted file mode 100644 index 02ce50e..0000000 --- a/nx-X11/include/bitmaps/grid8 +++ /dev/null @@ -1,4 +0,0 @@ -#define grid8_width 8 -#define grid8_height 8 -static char grid8_bits[] = { - 0x55, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00}; diff --git a/nx-X11/include/bitmaps/hlines2 b/nx-X11/include/bitmaps/hlines2 deleted file mode 100644 index 5c1a396..0000000 --- a/nx-X11/include/bitmaps/hlines2 +++ /dev/null @@ -1,4 +0,0 @@ -#define hlines2_width 1 -#define hlines2_height 2 -static char hlines2_bits[] = { - 0x01, 0x00}; diff --git a/nx-X11/include/bitmaps/hlines3 b/nx-X11/include/bitmaps/hlines3 deleted file mode 100644 index ed49433..0000000 --- a/nx-X11/include/bitmaps/hlines3 +++ /dev/null @@ -1,4 +0,0 @@ -#define hlines3_width 1 -#define hlines3_height 3 -static char hlines3_bits[] = { - 0x00, 0x01, 0x00}; diff --git a/nx-X11/include/bitmaps/icon b/nx-X11/include/bitmaps/icon deleted file mode 100644 index 9a75a57..0000000 --- a/nx-X11/include/bitmaps/icon +++ /dev/null @@ -1,6 +0,0 @@ -#define icon_width 16 -#define icon_height 16 -static char icon_bits[] = { - 0xff, 0xff, 0xab, 0xaa, 0x55, 0xd5, 0xab, 0xaa, 0x05, 0xd0, 0x0b, 0xa0, - 0x05, 0xd0, 0x0b, 0xa0, 0x05, 0xd0, 0x0b, 0xa0, 0x05, 0xd0, 0x0b, 0xa0, - 0x55, 0xd5, 0xab, 0xaa, 0x55, 0xd5, 0xff, 0xff}; diff --git a/nx-X11/include/bitmaps/keyboard16 b/nx-X11/include/bitmaps/keyboard16 deleted file mode 100644 index c4ead32..0000000 --- a/nx-X11/include/bitmaps/keyboard16 +++ /dev/null @@ -1,6 +0,0 @@ -#define keyboard16_width 16 -#define keyboard16_height 16 -static char keyboard16_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, - 0x08, 0x10, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xa8, 0x1a, - 0x54, 0x35, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/left_ptr b/nx-X11/include/bitmaps/left_ptr deleted file mode 100644 index 8a6abb1..0000000 --- a/nx-X11/include/bitmaps/left_ptr +++ /dev/null @@ -1,8 +0,0 @@ -#define left_ptr_width 16 -#define left_ptr_height 16 -#define left_ptr_x_hot 3 -#define left_ptr_y_hot 1 -static char left_ptr_bits[] = { - 0x00, 0x00, 0x08, 0x00, 0x18, 0x00, 0x38, 0x00, 0x78, 0x00, 0xf8, 0x00, - 0xf8, 0x01, 0xf8, 0x03, 0xf8, 0x07, 0xf8, 0x00, 0xd8, 0x00, 0x88, 0x01, - 0x80, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/left_ptrmsk b/nx-X11/include/bitmaps/left_ptrmsk deleted file mode 100644 index 851911d..0000000 --- a/nx-X11/include/bitmaps/left_ptrmsk +++ /dev/null @@ -1,6 +0,0 @@ -#define left_ptrmsk_width 16 -#define left_ptrmsk_height 16 -static char left_ptrmsk_bits[] = { - 0x0c, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x7c, 0x00, 0xfc, 0x00, 0xfc, 0x01, - 0xfc, 0x03, 0xfc, 0x07, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x01, 0xdc, 0x03, - 0xcc, 0x03, 0x80, 0x07, 0x80, 0x07, 0x00, 0x03}; diff --git a/nx-X11/include/bitmaps/letters b/nx-X11/include/bitmaps/letters deleted file mode 100644 index 0f12568..0000000 --- a/nx-X11/include/bitmaps/letters +++ /dev/null @@ -1,27 +0,0 @@ -#define letters_width 48 -#define letters_height 48 -static char letters_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xfa, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2e, - 0xe0, 0xff, 0xff, 0xff, 0xff, 0x21, 0x20, 0x00, 0x00, 0x00, 0x00, 0x21, - 0xa0, 0x03, 0x00, 0x00, 0x70, 0x21, 0x20, 0x00, 0x00, 0x00, 0x50, 0x21, - 0xa0, 0x1f, 0x00, 0x00, 0x50, 0x21, 0x20, 0x00, 0x00, 0x00, 0x70, 0x21, - 0xfe, 0xff, 0xff, 0xff, 0x0f, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x21, - 0xfa, 0x01, 0x00, 0x80, 0x0b, 0x21, 0x02, 0x00, 0x00, 0x80, 0x0a, 0x21, - 0xba, 0x01, 0x00, 0x80, 0x0a, 0x21, 0x02, 0x00, 0x00, 0x80, 0x0b, 0x21, - 0x3a, 0x00, 0x00, 0x00, 0x08, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x21, - 0x02, 0xc0, 0xfb, 0x03, 0x08, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x3f, - 0x02, 0xc0, 0xbd, 0x0f, 0x08, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x02, 0xc0, 0x7f, 0x7b, 0x08, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x02, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, - 0xfe, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/light_gray b/nx-X11/include/bitmaps/light_gray deleted file mode 100644 index ea62e17..0000000 --- a/nx-X11/include/bitmaps/light_gray +++ /dev/null @@ -1,4 +0,0 @@ -#define light_gray_width 4 -#define light_gray_height 2 -static char light_gray_bits[] = { - 0x08, 0x02}; diff --git a/nx-X11/include/bitmaps/mailempty b/nx-X11/include/bitmaps/mailempty deleted file mode 100644 index 0642525..0000000 --- a/nx-X11/include/bitmaps/mailempty +++ /dev/null @@ -1,27 +0,0 @@ -#define mailempty_width 48 -#define mailempty_height 48 -static unsigned char mailempty_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff, 0xff, 0x7f, - 0xc0, 0xaf, 0xaa, 0xaa, 0xaa, 0x7a, 0xe0, 0x57, 0x55, 0x55, 0x55, 0x7d, - 0xf0, 0xaf, 0xaa, 0xaa, 0xaa, 0x7e, 0xf8, 0x57, 0x55, 0x55, 0x55, 0x7f, - 0xfc, 0xaf, 0xaa, 0xaa, 0xaa, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xab, 0xaa, 0xaa, 0xea, 0x7f, - 0xfe, 0x55, 0x55, 0x55, 0xf5, 0x6f, 0xfe, 0xaa, 0xaa, 0xaa, 0xea, 0x67, - 0x7e, 0x55, 0x55, 0x55, 0xf5, 0x63, 0xbe, 0xaa, 0xaa, 0xaa, 0xea, 0x61, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0x60, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x60, - 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x06, 0xfe, 0xff, 0xff, 0xff, 0x7f, - 0x06, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x86, 0xaf, 0xaa, 0xaa, 0xea, 0x7a, - 0xc6, 0x57, 0x55, 0x55, 0x75, 0x7d, 0xe6, 0xaf, 0xaa, 0xaa, 0xea, 0x7e, - 0xf6, 0x57, 0x55, 0x55, 0x75, 0x7f, 0xfe, 0xaf, 0xaa, 0xaa, 0xea, 0x7f, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, - 0xfe, 0xab, 0xaa, 0xaa, 0xea, 0x7f, 0xfe, 0x55, 0x55, 0x55, 0xf5, 0x6f, - 0xfe, 0xaa, 0xaa, 0xaa, 0xea, 0x67, 0x7e, 0x55, 0x55, 0x55, 0xf5, 0x63, - 0xbe, 0xaa, 0xaa, 0xaa, 0xea, 0x61, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x60, - 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x60, 0x06, 0x06, 0x00, 0x00, 0x60, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/mailemptymsk b/nx-X11/include/bitmaps/mailemptymsk deleted file mode 100644 index f1204b2..0000000 --- a/nx-X11/include/bitmaps/mailemptymsk +++ /dev/null @@ -1,27 +0,0 @@ -#define mailemask_width 48 -#define mailemask_height 48 -static char mailemask_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0xf0, - 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0xf0, - 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0x00}; diff --git a/nx-X11/include/bitmaps/mailfull b/nx-X11/include/bitmaps/mailfull deleted file mode 100644 index cc2f6f8..0000000 --- a/nx-X11/include/bitmaps/mailfull +++ /dev/null @@ -1,27 +0,0 @@ -#define mailfull_width 48 -#define mailfull_height 48 -static unsigned char mailfull_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x07, - 0xc0, 0xff, 0xff, 0xff, 0x1f, 0x04, 0x40, 0x00, 0x00, 0x00, 0xd0, 0x05, - 0x40, 0x00, 0x00, 0x00, 0x57, 0x7d, 0x40, 0x1e, 0x00, 0x00, 0x55, 0x7d, - 0x40, 0x00, 0x00, 0x00, 0xd5, 0x7d, 0x60, 0x02, 0x00, 0x00, 0x17, 0x7c, - 0x70, 0x00, 0x7e, 0x00, 0x10, 0x7c, 0x78, 0x00, 0x00, 0x00, 0x10, 0x7e, - 0x7c, 0x00, 0x1e, 0x00, 0x10, 0x7f, 0x7e, 0x00, 0x00, 0x00, 0x90, 0x7f, - 0x7e, 0x00, 0x3e, 0x07, 0xd0, 0x7f, 0x7e, 0x00, 0x00, 0x00, 0xf0, 0x7f, - 0x7e, 0x00, 0x00, 0x00, 0xf0, 0x6f, 0x7e, 0x00, 0x00, 0x00, 0xf0, 0x67, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0x63, 0xbe, 0xaa, 0xaa, 0xaa, 0xea, 0x61, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0x60, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x60, - 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, 0x06, 0xff, 0xff, 0xff, 0xff, 0x7f, - 0x86, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xc6, 0xaf, 0xaa, 0xaa, 0xea, 0x7a, - 0xe6, 0x57, 0x55, 0x55, 0x75, 0x7d, 0xf6, 0xaf, 0xaa, 0xaa, 0xea, 0x7e, - 0xfe, 0x57, 0x55, 0x55, 0x75, 0x7f, 0xfe, 0xaf, 0xaa, 0xaa, 0xea, 0x7f, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, - 0xfe, 0xab, 0xaa, 0xaa, 0xea, 0x7f, 0xfe, 0x55, 0x55, 0x55, 0xf5, 0x6f, - 0xfe, 0xaa, 0xaa, 0xaa, 0xea, 0x67, 0x7e, 0x55, 0x55, 0x55, 0xf5, 0x63, - 0xbe, 0xaa, 0xaa, 0xaa, 0xea, 0x61, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x60, - 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x60, 0x06, 0x06, 0x00, 0x00, 0x60, 0x60, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x06, 0xee, 0x9c, 0x37, 0x60, 0x00, - 0x06, 0xfe, 0x36, 0x33, 0x60, 0x00, 0x06, 0xd6, 0x3e, 0x33, 0x60, 0x00, - 0x06, 0xc6, 0xb6, 0xf7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/mailfullmsk b/nx-X11/include/bitmaps/mailfullmsk deleted file mode 100644 index 6dfc942..0000000 --- a/nx-X11/include/bitmaps/mailfullmsk +++ /dev/null @@ -1,27 +0,0 @@ -#define mailfullmsk_width 48 -#define mailfullmsk_height 48 -static char mailfullmsk_bits[] = { - 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x0f, - 0xe0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0xf0, - 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0xf0, 0x0f, 0x0f, 0x00, 0x00, 0xf0, 0xf0, - 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0x0f, 0xff, 0xff, 0xff, 0xf1, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xf1, 0x00, - 0x0f, 0xff, 0xff, 0xff, 0xf1, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf1, 0x00, - 0x0f, 0xff, 0xff, 0xff, 0xf1, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf1, 0x00}; diff --git a/nx-X11/include/bitmaps/mensetmanus b/nx-X11/include/bitmaps/mensetmanus deleted file mode 100644 index 095b8ec..0000000 --- a/nx-X11/include/bitmaps/mensetmanus +++ /dev/null @@ -1,258 +0,0 @@ -#define mensetmanus_width 161 -#define mensetmanus_height 145 - -static char mensetmanus_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, - 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xdb, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, - 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf7, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0xc6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xff, - 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xff, 0xff, 0x87, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xf6, 0x1f, 0x00, 0x00, - 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x9f, 0x65, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x00, - 0x07, 0x80, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x9f, 0x6d, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xc7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x89, 0x6d, - 0x1b, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, - 0x00, 0xc0, 0xe1, 0x5b, 0xdb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x83, - 0x5b, 0xdb, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x5b, 0x1b, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x6d, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x5b, 0x1b, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x6d, 0x1b, 0x00, 0x00, - 0x00, 0x00, 0xf8, 0x5b, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x83, 0x6d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x5b, 0x0b, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x83, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5b, 0x0f, 0x0e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x6d, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4b, 0x0f, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x79, 0x1b, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x6b, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x6d, 0xb7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xed, 0xf7, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xfe, - 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xed, 0xd7, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0xf8, 0xff, 0x07, 0x00, - 0x00, 0x00, 0xe0, 0xfe, 0xd7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xff, 0x7f, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, - 0xff, 0xd6, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0xbf, 0x73, 0x80, 0x3b, 0x7c, 0x00, 0x00, 0x00, 0xf8, 0xe7, 0xd6, 0xef, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb9, 0x73, 0xc0, - 0x3b, 0xf0, 0x01, 0x00, 0x00, 0xff, 0xc3, 0xbf, 0xe7, 0x3f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb8, 0x7f, 0xe0, 0x3b, 0xc0, 0x03, - 0x00, 0xc0, 0xbf, 0xc7, 0xbf, 0xe7, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0xb8, 0xff, 0xf8, 0x3b, 0x80, 0x07, 0x00, 0xe0, 0x61, - 0x87, 0xfd, 0xe7, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0xb8, 0xf3, 0xff, 0x3b, 0x00, 0x0f, 0x00, 0x78, 0x60, 0x8e, 0xf1, 0x67, - 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb8, 0xc3, 0x8f, - 0x7b, 0x00, 0x0e, 0x00, 0x38, 0xe0, 0x8c, 0x03, 0x66, 0x87, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xb8, 0x03, 0x83, 0x7b, 0x00, 0x1e, - 0x00, 0x1c, 0xe0, 0x1d, 0x03, 0x76, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x07, 0xb8, 0xe3, 0x8f, 0xbb, 0x01, 0x39, 0x00, 0x1e, 0xe0, - 0x3b, 0x03, 0xf6, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, - 0xb8, 0xe3, 0x8f, 0x3b, 0xc6, 0x38, 0x00, 0x17, 0xe0, 0x73, 0x07, 0xfe, - 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0b, 0xb8, 0xe7, 0x8e, - 0x3b, 0x38, 0x78, 0x00, 0x13, 0xe0, 0x77, 0x06, 0xfe, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x12, 0x3c, 0xff, 0xce, 0x3b, 0x00, 0x78, - 0x80, 0x13, 0x60, 0xef, 0x0e, 0xfe, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, - 0x00, 0x70, 0x22, 0x3e, 0xfc, 0xfe, 0x39, 0x00, 0xe8, 0x80, 0x61, 0x60, - 0xce, 0x0f, 0xfe, 0x00, 0x00, 0x60, 0xf8, 0x00, 0x00, 0x00, 0x70, 0xc2, - 0x39, 0xf8, 0x7e, 0x38, 0x00, 0xc8, 0xc0, 0x81, 0x71, 0xde, 0x0f, 0xfe, - 0x00, 0x00, 0x60, 0x88, 0x00, 0x00, 0x00, 0x70, 0x04, 0x38, 0xe0, 0x0e, - 0x38, 0x00, 0xc4, 0xc0, 0x01, 0x7e, 0xbc, 0x1f, 0xfe, 0x00, 0x00, 0x60, - 0x88, 0x00, 0x00, 0x00, 0x78, 0x04, 0x38, 0xe0, 0x0e, 0x38, 0x00, 0xc4, - 0xc1, 0x01, 0x60, 0x3c, 0x1f, 0xfe, 0x00, 0x00, 0x60, 0x84, 0x0f, 0x00, - 0x00, 0x78, 0x08, 0x38, 0xe0, 0x0f, 0x38, 0x00, 0x82, 0xe1, 0x01, 0x60, - 0x74, 0x3e, 0xfe, 0x00, 0x00, 0x60, 0x44, 0x08, 0x00, 0x00, 0xb8, 0x10, - 0x38, 0xe0, 0x0f, 0x38, 0x00, 0x81, 0xe1, 0x00, 0x60, 0xe4, 0x3e, 0xfe, - 0x00, 0x00, 0x60, 0x44, 0x08, 0x00, 0x00, 0x98, 0x20, 0x38, 0xf8, 0x3f, - 0x38, 0x80, 0x80, 0xe1, 0x01, 0x60, 0xc4, 0x3c, 0xfe, 0x00, 0x00, 0x60, - 0x24, 0x0c, 0x00, 0x00, 0x1c, 0xc1, 0x39, 0x3c, 0x78, 0x38, 0x40, 0x80, - 0x61, 0x01, 0x60, 0xc4, 0x79, 0xfe, 0x00, 0x00, 0x60, 0x22, 0x32, 0x00, - 0x00, 0x1c, 0x01, 0x3e, 0x1c, 0xf0, 0x38, 0xf0, 0x9f, 0x61, 0x01, 0x60, - 0x84, 0x7b, 0xee, 0x00, 0x00, 0x60, 0x12, 0x21, 0x00, 0x00, 0x1c, 0x02, - 0x38, 0x0e, 0xe7, 0xf8, 0x3f, 0xe0, 0x61, 0x00, 0x60, 0x04, 0xf7, 0xce, - 0x00, 0x00, 0x60, 0x92, 0x10, 0x00, 0x00, 0x1c, 0x04, 0x38, 0x06, 0xff, - 0x38, 0x40, 0x80, 0x61, 0x02, 0x60, 0x04, 0xe7, 0xcf, 0x00, 0x00, 0x60, - 0x8a, 0x18, 0x00, 0x00, 0x1c, 0x18, 0x38, 0x07, 0xf0, 0x38, 0x00, 0x81, - 0x61, 0x02, 0x60, 0x04, 0xee, 0xcf, 0xff, 0x03, 0x60, 0x49, 0xe4, 0x00, - 0x00, 0x1c, 0x70, 0x38, 0x07, 0xe7, 0x38, 0x00, 0x82, 0x61, 0x04, 0x60, - 0x04, 0xdc, 0xcf, 0x01, 0x04, 0x60, 0x25, 0x42, 0x00, 0x00, 0x1c, 0xfe, - 0x3f, 0x03, 0xff, 0x38, 0x00, 0x84, 0x61, 0x08, 0x60, 0x04, 0xfc, 0xcf, - 0xf8, 0xff, 0x60, 0x95, 0x31, 0x00, 0x00, 0xfc, 0x01, 0xff, 0x03, 0xf0, - 0xf8, 0x1f, 0x88, 0x61, 0x10, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xe1, - 0x53, 0x0c, 0x00, 0x00, 0x38, 0xf0, 0xff, 0x03, 0xef, 0xf8, 0x7f, 0x90, - 0x61, 0x40, 0xe0, 0xff, 0xff, 0xff, 0x00, 0xff, 0xe3, 0x2b, 0xfe, 0x00, - 0x00, 0x18, 0xf8, 0xff, 0x03, 0xff, 0x7c, 0xf0, 0x90, 0x61, 0x00, 0x3e, - 0x36, 0xe3, 0xe1, 0x00, 0x00, 0xe3, 0x9f, 0x60, 0x00, 0x00, 0x38, 0x3c, - 0x00, 0x03, 0xf0, 0x1f, 0xe0, 0xa0, 0xe1, 0x00, 0x30, 0x22, 0xe2, 0xc0, - 0x00, 0xff, 0xe3, 0x7f, 0x18, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x07, 0xe7, - 0x07, 0xc0, 0xe1, 0xc1, 0x00, 0x18, 0x22, 0xe2, 0xc0, 0x00, 0x00, 0xe1, - 0x1f, 0x07, 0x00, 0x00, 0x38, 0x06, 0x00, 0x07, 0xef, 0x01, 0xc0, 0xc1, - 0xc1, 0x01, 0x16, 0x24, 0xe2, 0xc0, 0x01, 0xff, 0xe1, 0xff, 0x00, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x0e, 0xf8, 0x00, 0x80, 0xc3, 0xc0, 0xf1, 0x11, - 0x24, 0xe4, 0xc0, 0x03, 0xe0, 0xe1, 0x7f, 0x00, 0x00, 0x00, 0x70, 0x07, - 0x00, 0x1e, 0x3c, 0x00, 0x80, 0xe3, 0x80, 0x0f, 0x10, 0x24, 0xe4, 0xc0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x0f, - 0x00, 0x00, 0x63, 0x80, 0x01, 0x08, 0x44, 0xe4, 0xc0, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x73, - 0x80, 0x03, 0x08, 0x44, 0xe4, 0xc0, 0xfc, 0x00, 0x07, 0x0e, 0x00, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x33, 0x00, 0x03, 0x08, - 0x44, 0xe4, 0xe0, 0xcc, 0x00, 0x07, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x03, - 0x00, 0x78, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x07, 0x04, 0x44, 0xe8, 0x70, - 0xcc, 0x01, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3e, 0x00, - 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x04, 0x44, 0xe8, 0x38, 0xcc, 0x81, 0xe7, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x0f, - 0x00, 0x1c, 0x02, 0x44, 0xf8, 0x1e, 0xcc, 0xe1, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xc0, 0x23, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x38, 0x01, - 0x42, 0xfc, 0x0f, 0xcc, 0xf1, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0xf0, 0x39, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x00, 0xc2, 0xff, 0x07, - 0xcc, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x0e, 0x00, - 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0xe2, 0xe7, 0x07, 0xcc, 0x1f, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbf, 0x23, 0xe0, 0xff, 0xff, 0x00, - 0x00, 0xc0, 0x1f, 0xff, 0x64, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0xff, 0x3c, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, - 0x7f, 0x64, 0x06, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, - 0xf8, 0x1f, 0x78, 0x7c, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x64, 0x06, - 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0x33, 0x1c, - 0x38, 0x66, 0x00, 0x00, 0x00, 0x0c, 0x20, 0x6c, 0x06, 0xcc, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x3e, 0x0e, 0x38, 0x76, 0x00, - 0x00, 0x00, 0x0c, 0x20, 0x68, 0x06, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0xf8, 0x87, 0x0f, 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, - 0x20, 0x68, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x78, 0xf8, 0x0f, 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, - 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf8, 0xff, 0x0f, - 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, 0xcc, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf8, 0xff, 0x0e, 0x38, 0x76, 0x00, - 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0xf8, 0xe1, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, - 0x08, 0x68, 0x06, 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x68, 0x06, - 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x0e, - 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x68, 0x06, 0xcc, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, - 0x00, 0x00, 0x1c, 0x04, 0x68, 0x06, 0xcc, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, - 0x02, 0x68, 0x06, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x68, 0x06, - 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xe0, 0x0e, - 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x68, 0x06, 0xcc, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, - 0x00, 0x00, 0x18, 0x01, 0x68, 0x06, 0xcc, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x98, - 0x00, 0x68, 0x06, 0xcc, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, - 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x68, 0x06, - 0xcc, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x38, 0xe0, 0x0e, - 0x38, 0x1e, 0x00, 0x00, 0x00, 0x58, 0x00, 0x6c, 0x0e, 0xcc, 0x18, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xe0, 0x0e, 0x38, 0x1e, 0x00, - 0x00, 0x00, 0x38, 0x00, 0x64, 0x0e, 0xcc, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x01, 0x70, 0xe0, 0x0e, 0x1c, 0x1e, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x64, 0x1e, 0xcc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, - 0xe0, 0xe1, 0x0e, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x64, 0x3e, - 0xcc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0xef, 0xce, - 0x07, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x64, 0x3e, 0xcc, 0x30, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xff, 0xfe, 0x03, 0x1e, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x64, 0x7e, 0xcc, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0xfc, 0xfe, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x64, 0x66, 0xcc, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, - 0x00, 0xe0, 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x66, 0xe6, - 0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x0e, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0xc6, 0xcd, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x1e, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x62, 0xc6, 0xcd, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x62, 0x86, 0xcf, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, - 0xf0, 0xff, 0xff, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x61, 0x86, - 0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xfc, 0x00, 0x00, - 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x61, 0x8e, 0xcf, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x78, 0x00, 0x00, 0x0e, 0x0e, 0x00, - 0x00, 0x00, 0xf8, 0xff, 0x7f, 0xfe, 0xdf, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0xf0, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xf0, - 0xff, 0x3f, 0xff, 0xdf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0xe0, 0x01, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x8f, 0x07, - 0x9e, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x07, 0x00, - 0x0e, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0, 0xff, 0x3f, 0xc0, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x0f, 0x00, - 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xf0, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0x3f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00, - 0x38, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x38, 0x00, 0x38, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, - 0xdc, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, - 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x9c, 0x03, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x18, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x07, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x1c, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x0c, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, - 0x1c, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, - 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, - 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x0e, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, - 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, - 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, - 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x18, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x0e, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, - 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x30, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, - 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x38, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, - 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00, 0x30, 0xe0, 0x01, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x3c, 0x00, 0x30, 0xf0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0x03, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x7e, 0x00, 0x70, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f, - 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xe7, 0x00, - 0x70, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1f, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xe3, 0x00, 0x60, 0x1e, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x01, 0xe0, 0x0f, 0x0f, 0x00, 0x00, 0x00, - 0x80, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0x80, 0x03, 0xe0, 0x03, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xe0, - 0x1b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, 0x07, - 0xe0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xc0, 0x1b, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0f, 0xe0, 0x01, 0x38, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0xc0, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x0e, 0x1e, 0xc0, 0x71, 0xf8, 0x00, 0x00, 0x00, - 0x78, 0x00, 0xdc, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x1f, 0x1e, 0xc0, 0xf9, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/nx-X11/include/bitmaps/menu10 b/nx-X11/include/bitmaps/menu10 deleted file mode 100644 index 6250e8e..0000000 --- a/nx-X11/include/bitmaps/menu10 +++ /dev/null @@ -1,5 +0,0 @@ -#define menu10_width 10 -#define menu10_height 10 -static char menu10_bits[] = { - 0xfe, 0x01, 0x02, 0x01, 0x02, 0x03, 0x32, 0x03, 0x02, 0x03, 0x32, 0x03, - 0x02, 0x03, 0x02, 0x03, 0xfe, 0x03, 0xf8, 0x03}; diff --git a/nx-X11/include/bitmaps/menu12 b/nx-X11/include/bitmaps/menu12 deleted file mode 100644 index e88ca68..0000000 --- a/nx-X11/include/bitmaps/menu12 +++ /dev/null @@ -1,5 +0,0 @@ -#define menu12_width 12 -#define menu12_height 12 -static unsigned char menu12_bits[] = { - 0xfe, 0x03, 0x02, 0x02, 0x02, 0x06, 0x72, 0x06, 0x02, 0x06, 0x72, 0x06, - 0x02, 0x06, 0x72, 0x06, 0x02, 0x06, 0x02, 0x06, 0xfe, 0x07, 0xf8, 0x07}; diff --git a/nx-X11/include/bitmaps/menu16 b/nx-X11/include/bitmaps/menu16 deleted file mode 100644 index 770deee..0000000 --- a/nx-X11/include/bitmaps/menu16 +++ /dev/null @@ -1,6 +0,0 @@ -#define menu16_width 16 -#define menu16_height 16 -static char menu16_bits[] = { - 0xfc, 0x1f, 0x04, 0x10, 0x04, 0x30, 0x04, 0x30, 0xe4, 0x33, 0x04, 0x30, - 0xe4, 0x33, 0x04, 0x30, 0xe4, 0x33, 0x04, 0x30, 0xe4, 0x33, 0x04, 0x30, - 0x04, 0x30, 0x04, 0x30, 0xfc, 0x3f, 0xf0, 0x3f}; diff --git a/nx-X11/include/bitmaps/menu6 b/nx-X11/include/bitmaps/menu6 deleted file mode 100644 index 780b028..0000000 --- a/nx-X11/include/bitmaps/menu6 +++ /dev/null @@ -1,4 +0,0 @@ -#define menu6_width 6 -#define menu6_height 7 -static char menu6_bits[] = { - 0x1f, 0x31, 0x35, 0x35, 0x31, 0x3f, 0x1e}; diff --git a/nx-X11/include/bitmaps/menu8 b/nx-X11/include/bitmaps/menu8 deleted file mode 100644 index 955c1e9..0000000 --- a/nx-X11/include/bitmaps/menu8 +++ /dev/null @@ -1,4 +0,0 @@ -#define menu8_width 8 -#define menu8_height 8 -static char menu8_bits[] = { - 0x7f, 0x41, 0xdd, 0xc1, 0xdd, 0xc1, 0xff, 0xfc}; diff --git a/nx-X11/include/bitmaps/noletters b/nx-X11/include/bitmaps/noletters deleted file mode 100644 index 5774124..0000000 --- a/nx-X11/include/bitmaps/noletters +++ /dev/null @@ -1,27 +0,0 @@ -#define noletters_width 48 -#define noletters_height 48 -static char noletters_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, - 0x00, 0xf0, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x7f, 0x00, - 0x00, 0x3e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x01, - 0x80, 0x07, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07, - 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x78, 0x0e, - 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x1c, - 0x38, 0x00, 0x00, 0x00, 0x0f, 0x38, 0x38, 0x00, 0x00, 0x80, 0x07, 0x38, - 0x3c, 0xfc, 0xff, 0xff, 0x7f, 0x78, 0x1c, 0x04, 0x00, 0xe0, 0x41, 0x70, - 0x1c, 0x04, 0x00, 0xf0, 0x40, 0x70, 0x1c, 0x74, 0x00, 0x78, 0x4e, 0x70, - 0x0e, 0x04, 0x00, 0x3c, 0x4a, 0xe0, 0x0e, 0x74, 0x03, 0x1e, 0x4a, 0xe0, - 0x0e, 0x04, 0x00, 0x0f, 0x4e, 0xe0, 0x0e, 0x04, 0x80, 0x07, 0x40, 0xe0, - 0x0e, 0x04, 0xf8, 0x0f, 0x40, 0xe0, 0x0e, 0x04, 0xe0, 0x01, 0x40, 0xe0, - 0x0e, 0x04, 0xf8, 0x00, 0x40, 0xe0, 0x0e, 0x04, 0x78, 0x00, 0x40, 0xe0, - 0x0e, 0x04, 0xfc, 0xf3, 0x40, 0xe0, 0x1c, 0x04, 0x1e, 0x00, 0x40, 0x70, - 0x1c, 0x04, 0x0f, 0x00, 0x40, 0x70, 0x1c, 0x84, 0x07, 0x00, 0x40, 0x70, - 0x3c, 0xfc, 0xff, 0xff, 0x7f, 0x78, 0x38, 0xe0, 0x01, 0x00, 0x00, 0x38, - 0x38, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x70, 0x78, 0x00, 0x00, 0x00, 0x1c, - 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0xe0, 0x1e, 0x00, 0x00, 0x00, 0x0e, - 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x07, 0x00, 0x00, 0x80, 0x07, - 0x80, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x01, - 0x00, 0x3e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x7f, 0x00, - 0x00, 0xf0, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/opendot b/nx-X11/include/bitmaps/opendot deleted file mode 100644 index a8ec421..0000000 --- a/nx-X11/include/bitmaps/opendot +++ /dev/null @@ -1,8 +0,0 @@ -#define opendot_width 16 -#define opendot_height 16 -#define opendot_x_hot 7 -#define opendot_y_hot 7 -static char opendot_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, - 0x60, 0x03, 0x20, 0x02, 0x60, 0x03, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/opendotMask b/nx-X11/include/bitmaps/opendotMask deleted file mode 100644 index 0f83c64..0000000 --- a/nx-X11/include/bitmaps/opendotMask +++ /dev/null @@ -1,8 +0,0 @@ -#define opendotMask_width 16 -#define opendotMask_height 16 -#define opendotMask_x_hot 7 -#define opendotMask_y_hot 7 -static char opendotMask_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0xf0, 0x07, - 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/plaid b/nx-X11/include/bitmaps/plaid deleted file mode 100644 index 578e464..0000000 --- a/nx-X11/include/bitmaps/plaid +++ /dev/null @@ -1,11 +0,0 @@ -#define plaid_width 22 -#define plaid_height 22 -#define plaid_x_hot -1 -#define plaid_y_hot -1 -static char plaid_bits[] = { - 0x75, 0xfd, 0x3f, 0xaa, 0xfa, 0x3e, 0x75, 0xfd, 0x3f, 0xaa, 0xfa, 0x3e, - 0x75, 0xfd, 0x3f, 0xff, 0x57, 0x15, 0x75, 0xfd, 0x3f, 0xaa, 0xfa, 0x3e, - 0x75, 0xfd, 0x3f, 0xaa, 0xfa, 0x3e, 0x75, 0xfd, 0x3f, 0x20, 0xa8, 0x2b, - 0x20, 0x50, 0x15, 0x20, 0xa8, 0x2b, 0x20, 0x50, 0x15, 0x20, 0xa8, 0x2b, - 0xff, 0xff, 0x3f, 0x20, 0xa8, 0x2b, 0x20, 0x50, 0x15, 0x20, 0xa8, 0x2b, - 0x20, 0x50, 0x15, 0x20, 0xa8, 0x2b}; diff --git a/nx-X11/include/bitmaps/right_ptr b/nx-X11/include/bitmaps/right_ptr deleted file mode 100644 index 3922aa5..0000000 --- a/nx-X11/include/bitmaps/right_ptr +++ /dev/null @@ -1,8 +0,0 @@ -#define right_ptr_width 16 -#define right_ptr_height 16 -#define right_ptr_x_hot 12 -#define right_ptr_y_hot 1 -static char right_ptr_bits[] = { - 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1f, - 0x80, 0x1f, 0xc0, 0x1f, 0xe0, 0x1f, 0x00, 0x1f, 0x00, 0x1b, 0x80, 0x11, - 0x80, 0x01, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/right_ptrmsk b/nx-X11/include/bitmaps/right_ptrmsk deleted file mode 100644 index 96f5324..0000000 --- a/nx-X11/include/bitmaps/right_ptrmsk +++ /dev/null @@ -1,6 +0,0 @@ -#define right_ptrmsk_width 16 -#define right_ptrmsk_height 16 -static char right_ptrmsk_bits[] = { - 0x00, 0x30, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x3f, 0x80, 0x3f, - 0xc0, 0x3f, 0xe0, 0x3f, 0xf0, 0x3f, 0xf0, 0x3f, 0x80, 0x3f, 0xc0, 0x3b, - 0xc0, 0x33, 0xe0, 0x01, 0xe0, 0x01, 0xc0, 0x00}; diff --git a/nx-X11/include/bitmaps/root_weave b/nx-X11/include/bitmaps/root_weave deleted file mode 100644 index ec41e43..0000000 --- a/nx-X11/include/bitmaps/root_weave +++ /dev/null @@ -1,4 +0,0 @@ -#define root_weave_width 4 -#define root_weave_height 4 -static char root_weave_bits[] = { - 0x07, 0x0d, 0x0b, 0x0e}; diff --git a/nx-X11/include/bitmaps/scales b/nx-X11/include/bitmaps/scales deleted file mode 100644 index e5aac6a..0000000 --- a/nx-X11/include/bitmaps/scales +++ /dev/null @@ -1,6 +0,0 @@ -#define scales_width 16 -#define scales_height 16 -static char scales_bits[] = { - 0x10, 0x10, 0x10, 0x10, 0x28, 0x28, 0xc7, 0xc7, 0x01, 0x01, 0x01, 0x01, - 0x82, 0x82, 0x7c, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x28, 0x28, 0xc7, 0xc7, - 0x01, 0x01, 0x01, 0x01, 0x82, 0x82, 0x7c, 0x7c}; diff --git a/nx-X11/include/bitmaps/sipb b/nx-X11/include/bitmaps/sipb deleted file mode 100644 index 7f3b7c1..0000000 --- a/nx-X11/include/bitmaps/sipb +++ /dev/null @@ -1,16 +0,0 @@ -#define sipb_width 32 -#define sipb_height 32 -#define sipb_x_hot 12 -#define sipb_y_hot 16 -static char sipb_bits[] = { - 0xbe, 0xdf, 0x03, 0x00, 0x22, 0x49, 0x04, 0x00, 0x04, 0x49, 0x04, 0x00, - 0x08, 0x49, 0x04, 0x00, 0x10, 0xc9, 0x03, 0x00, 0x08, 0x49, 0x04, 0x00, - 0x04, 0x49, 0x04, 0x00, 0x22, 0x49, 0x04, 0x00, 0x3e, 0xc9, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfd, 0x1e, 0x00, 0x10, 0x49, 0x22, - 0x00, 0x20, 0x48, 0x22, 0x00, 0x40, 0x48, 0x22, 0x00, 0x80, 0x48, 0x1e, - 0x00, 0x40, 0x48, 0x22, 0x00, 0x20, 0x48, 0x22, 0x00, 0x10, 0x49, 0x22, - 0x00, 0xf0, 0x49, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/star b/nx-X11/include/bitmaps/star deleted file mode 100644 index c98f1a4..0000000 --- a/nx-X11/include/bitmaps/star +++ /dev/null @@ -1,8 +0,0 @@ -#define star_width 16 -#define star_height 16 -#define star_x_hot 7 -#define star_y_hot 7 -static char star_bits[] = { - 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x88, 0x08, 0x90, 0x04, 0xa0, 0x02, - 0x40, 0x01, 0x3e, 0x3e, 0x40, 0x01, 0xa0, 0x02, 0x90, 0x04, 0x88, 0x08, - 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/starMask b/nx-X11/include/bitmaps/starMask deleted file mode 100644 index c220bb6..0000000 --- a/nx-X11/include/bitmaps/starMask +++ /dev/null @@ -1,8 +0,0 @@ -#define starMask_width 16 -#define starMask_height 16 -#define starMask_x_hot 7 -#define starMask_y_hot 7 -static char starMask_bits[] = { - 0xc0, 0x01, 0xc0, 0x01, 0xdc, 0x1d, 0xfc, 0x1f, 0xfc, 0x1f, 0xf8, 0x0f, - 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7f, 0xf8, 0x0f, 0xfc, 0x1f, 0xfc, 0x1f, - 0xdc, 0x1d, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/stipple b/nx-X11/include/bitmaps/stipple deleted file mode 100644 index 63558d0..0000000 --- a/nx-X11/include/bitmaps/stipple +++ /dev/null @@ -1,4 +0,0 @@ -#define stipple_width 16 -#define stipple_height 4 -static char stipple_bits[] = { - 0x55, 0x55, 0xee, 0xee, 0x55, 0x55, 0xba, 0xbb}; diff --git a/nx-X11/include/bitmaps/target b/nx-X11/include/bitmaps/target deleted file mode 100644 index 6d23eca..0000000 --- a/nx-X11/include/bitmaps/target +++ /dev/null @@ -1,6 +0,0 @@ -#define target_width 16 -#define target_height 16 -static char target_bits[] = { - 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0xe0, 0x07, 0x90, 0x09, 0x88, 0x11, - 0xc8, 0x13, 0x7e, 0x7e, 0x7e, 0x7e, 0xc8, 0x13, 0x88, 0x11, 0x90, 0x09, - 0xe0, 0x07, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/terminal b/nx-X11/include/bitmaps/terminal deleted file mode 100644 index b8d9204..0000000 --- a/nx-X11/include/bitmaps/terminal +++ /dev/null @@ -1,52 +0,0 @@ -/*****************************************************************************/ -/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ -/** Salt Lake City, Utah **/ -/** **/ -/** All Rights Reserved **/ -/** **/ -/** Permission to use, copy, modify, and distribute this software and **/ -/** its documentation for any purpose and without fee is hereby **/ -/** granted, provided that the above copyright notice appear in all **/ -/** copies and that both that copyright notice and this permis- **/ -/** sion notice appear in supporting documentation, and that the **/ -/** name of Evans & Sutherland not be used in advertising or publi- **/ -/** city pertaining to distribution of the software without specif- **/ -/** ic, written prior permission. **/ -/** **/ -/** EVANS & SUTHERLAND DISCLAIMS ALL WARRANTIES WITH REGARD TO **/ -/** THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILI- **/ -/** TY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND BE LIABLE **/ -/** FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAM- **/ -/** AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, **/ -/** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS **/ -/** ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PER- **/ -/** FORMANCE OF THIS SOFTWARE. **/ -/*****************************************************************************/ - -#define xterm_width 48 -#define xterm_height 48 -static char xterm_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x05, - 0x20, 0x01, 0x00, 0x00, 0x20, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, - 0xa0, 0xfc, 0xff, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0xfc, 0x01, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0xfc, 0xff, 0x3f, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0xfc, 0x03, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0xfc, 0xff, 0x01, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0xfc, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, - 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, - 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09, - 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x05, - 0x20, 0x01, 0x00, 0x00, 0x20, 0x05, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x03, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xa0, 0xaa, 0xaa, 0xaa, 0x2a, 0x03, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, - 0x50, 0x55, 0x55, 0x55, 0x95, 0x02, 0x08, 0x00, 0x00, 0x00, 0x40, 0x02, - 0xa8, 0xaa, 0xaa, 0xaa, 0x4a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x20, 0x01, - 0xb4, 0xff, 0xff, 0xff, 0xad, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, - 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/tie_fighter b/nx-X11/include/bitmaps/tie_fighter deleted file mode 100644 index 0513db6..0000000 --- a/nx-X11/include/bitmaps/tie_fighter +++ /dev/null @@ -1,6 +0,0 @@ -#define tie_fighter_width 16 -#define tie_fighter_height 16 -static char tie_fighter_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x04, 0x20, 0x02, 0x40, 0x02, 0x40, - 0xe2, 0x47, 0x3e, 0x7c, 0x12, 0x48, 0x3e, 0x7c, 0xe2, 0x47, 0x02, 0x40, - 0x42, 0x42, 0x64, 0x26, 0x28, 0x14, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/vlines2 b/nx-X11/include/bitmaps/vlines2 deleted file mode 100644 index f42ae58..0000000 --- a/nx-X11/include/bitmaps/vlines2 +++ /dev/null @@ -1,4 +0,0 @@ -#define vlines2_width 2 -#define vlines2_height 1 -static char vlines2_bits[] = { - 0x01}; diff --git a/nx-X11/include/bitmaps/vlines3 b/nx-X11/include/bitmaps/vlines3 deleted file mode 100644 index 55c2246..0000000 --- a/nx-X11/include/bitmaps/vlines3 +++ /dev/null @@ -1,4 +0,0 @@ -#define vlines3_width 3 -#define vlines3_height 1 -static char vlines3_bits[] = { - 0x02}; diff --git a/nx-X11/include/bitmaps/weird_size b/nx-X11/include/bitmaps/weird_size deleted file mode 100644 index e6f45d5..0000000 --- a/nx-X11/include/bitmaps/weird_size +++ /dev/null @@ -1,5 +0,0 @@ -#define weird_size_width 7 -#define weird_size_height 13 -static char weird_size_bits[] = { - 0x07, 0x05, 0x07, 0x01, 0x75, 0x45, 0x74, 0x44, 0x74, 0x00, 0x10, 0x38, - 0x10}; diff --git a/nx-X11/include/bitmaps/wide_weave b/nx-X11/include/bitmaps/wide_weave deleted file mode 100644 index 27ba639..0000000 --- a/nx-X11/include/bitmaps/wide_weave +++ /dev/null @@ -1,6 +0,0 @@ -#define wide_weave_width 16 -#define wide_weave_height 16 -static char wide_weave_bits[] = { - 0x11, 0x11, 0xb8, 0xb8, 0x7c, 0x7c, 0x3a, 0x3a, 0x11, 0x11, 0xa3, 0xa3, - 0xc7, 0xc7, 0x8b, 0x8b, 0x11, 0x11, 0xb8, 0xb8, 0x7c, 0x7c, 0x3a, 0x3a, - 0x11, 0x11, 0xa3, 0xa3, 0xc7, 0xc7, 0x8b, 0x8b}; diff --git a/nx-X11/include/bitmaps/wingdogs b/nx-X11/include/bitmaps/wingdogs deleted file mode 100644 index 1a4befc..0000000 --- a/nx-X11/include/bitmaps/wingdogs +++ /dev/null @@ -1,14 +0,0 @@ -#define wingdogs_width 32 -#define wingdogs_height 32 -static char wingdogs_bits[] = { - 0x60, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, - 0x20, 0x0f, 0x00, 0x00, 0x40, 0x3e, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x80, - 0x84, 0xff, 0x00, 0xc0, 0x86, 0xff, 0x00, 0xc0, 0x07, 0xff, 0x21, 0xe0, - 0x0f, 0xfe, 0x23, 0xf0, 0x0f, 0xfe, 0x23, 0xfc, 0x1d, 0xfe, 0x13, 0xfe, - 0x39, 0xfc, 0x13, 0xff, 0x3f, 0xfc, 0x83, 0xff, 0x9f, 0xfc, 0xc1, 0xff, - 0x0f, 0xfe, 0xe0, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, - 0xfc, 0xff, 0xff, 0x7f, 0xf6, 0xff, 0xff, 0x1f, 0xfb, 0xff, 0xff, 0x07, - 0xf8, 0xfd, 0xff, 0x03, 0xbc, 0xf9, 0xff, 0x01, 0x3c, 0xf9, 0xff, 0x01, - 0x3e, 0xf0, 0xf7, 0x00, 0x1f, 0xe0, 0x77, 0x00, 0x1f, 0x80, 0x77, 0x00, - 0x8f, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x6e, 0x80, 0x07, 0x00, 0x7c, 0x80, - 0x0d, 0x00, 0xf8, 0x80, 0x1f, 0x00, 0xf0, 0x01}; diff --git a/nx-X11/include/bitmaps/woman b/nx-X11/include/bitmaps/woman deleted file mode 100644 index 92e6041..0000000 --- a/nx-X11/include/bitmaps/woman +++ /dev/null @@ -1,66 +0,0 @@ -#define sorceress_width 75 -#define sorceress_height 75 -static char sorceress_bits[] = { - 0xfc, 0x7e, 0x40, 0x20, 0x90, 0x00, 0x07, 0x80, 0x23, 0x00, 0x00, 0xc6, - 0xc1, 0x41, 0x98, 0xb8, 0x01, 0x07, 0x66, 0x00, 0x15, 0x9f, 0x03, 0x47, - 0x8c, 0xc6, 0xdc, 0x7b, 0xcc, 0x00, 0xb0, 0x71, 0x0e, 0x4d, 0x06, 0x66, - 0x73, 0x8e, 0x8f, 0x01, 0x18, 0xc4, 0x39, 0x4b, 0x02, 0x23, 0x0c, 0x04, - 0x1e, 0x03, 0x0c, 0x08, 0xc7, 0xef, 0x08, 0x30, 0x06, 0x07, 0x1c, 0x02, - 0x06, 0x30, 0x18, 0xae, 0xc8, 0x98, 0x3f, 0x78, 0x20, 0x06, 0x02, 0x20, - 0x60, 0xa0, 0xc4, 0x1d, 0xc0, 0xff, 0x41, 0x04, 0xfa, 0x63, 0x80, 0xa1, - 0xa4, 0x3d, 0x00, 0x84, 0xbf, 0x04, 0x0f, 0x06, 0xfc, 0xa1, 0x34, 0x6b, - 0x01, 0x1c, 0xc9, 0x05, 0x06, 0xc7, 0x06, 0xbe, 0x11, 0x1e, 0x43, 0x30, - 0x91, 0x05, 0xc3, 0x61, 0x02, 0x30, 0x1b, 0x30, 0xcc, 0x20, 0x11, 0x00, - 0xc1, 0x3c, 0x03, 0x20, 0x0a, 0x00, 0xe8, 0x60, 0x21, 0x00, 0x61, 0x1b, - 0xc1, 0x63, 0x08, 0xf0, 0xc6, 0xc7, 0x21, 0x03, 0xf8, 0x08, 0xe1, 0xcf, - 0x0a, 0xfc, 0x4d, 0x99, 0x43, 0x07, 0x3c, 0x0c, 0xf1, 0x9f, 0x0b, 0xfc, - 0x5b, 0x81, 0x47, 0x02, 0x16, 0x04, 0x31, 0x1c, 0x0b, 0x1f, 0x17, 0x89, - 0x4d, 0x06, 0x1a, 0x04, 0x31, 0x38, 0x02, 0x07, 0x56, 0x89, 0x49, 0x04, - 0x0b, 0x04, 0xb1, 0x72, 0x82, 0xa1, 0x54, 0x9a, 0x49, 0x04, 0x1d, 0x66, - 0x50, 0xe7, 0xc2, 0xf0, 0x54, 0x9a, 0x58, 0x04, 0x0d, 0x62, 0xc1, 0x1f, - 0x44, 0xfc, 0x51, 0x90, 0x90, 0x04, 0x86, 0x63, 0xe0, 0x74, 0x04, 0xef, - 0x31, 0x1a, 0x91, 0x00, 0x02, 0xe2, 0xc1, 0xfd, 0x84, 0xf9, 0x30, 0x0a, - 0x91, 0x00, 0x82, 0xa9, 0xc0, 0xb9, 0x84, 0xf9, 0x31, 0x16, 0x81, 0x00, - 0x42, 0xa9, 0xdb, 0x7f, 0x0c, 0xff, 0x1c, 0x16, 0x11, 0x00, 0x02, 0x28, - 0x0b, 0x07, 0x08, 0x60, 0x1c, 0x02, 0x91, 0x00, 0x46, 0x29, 0x0e, 0x00, - 0x00, 0x00, 0x10, 0x16, 0x11, 0x02, 0x06, 0x29, 0x04, 0x00, 0x00, 0x00, - 0x10, 0x16, 0x91, 0x06, 0xa6, 0x2a, 0x04, 0x00, 0x00, 0x00, 0x18, 0x24, - 0x91, 0x04, 0x86, 0x2a, 0x04, 0x00, 0x00, 0x00, 0x18, 0x27, 0x93, 0x04, - 0x96, 0x4a, 0x04, 0x00, 0x00, 0x00, 0x04, 0x02, 0x91, 0x04, 0x86, 0x4a, - 0x0c, 0x00, 0x00, 0x00, 0x1e, 0x23, 0x93, 0x04, 0x56, 0x88, 0x08, 0x00, - 0x00, 0x00, 0x90, 0x21, 0x93, 0x04, 0x52, 0x0a, 0x09, 0x80, 0x01, 0x00, - 0xd0, 0x21, 0x95, 0x04, 0x57, 0x0a, 0x0f, 0x80, 0x27, 0x00, 0xd8, 0x20, - 0x9d, 0x04, 0x5d, 0x08, 0x1c, 0x80, 0x67, 0x00, 0xe4, 0x01, 0x85, 0x04, - 0x79, 0x8a, 0x3f, 0x00, 0x00, 0x00, 0xf4, 0x11, 0x85, 0x06, 0x39, 0x08, - 0x7d, 0x00, 0x00, 0x18, 0xb7, 0x10, 0x81, 0x03, 0x29, 0x12, 0xcb, 0x00, - 0x7e, 0x30, 0x28, 0x00, 0x85, 0x03, 0x29, 0x10, 0xbe, 0x81, 0xff, 0x27, - 0x0c, 0x10, 0x85, 0x03, 0x29, 0x32, 0xfa, 0xc1, 0xff, 0x27, 0x94, 0x11, - 0x85, 0x03, 0x28, 0x20, 0x6c, 0xe1, 0xff, 0x07, 0x0c, 0x01, 0x85, 0x01, - 0x28, 0x62, 0x5c, 0xe3, 0x8f, 0x03, 0x4e, 0x91, 0x80, 0x05, 0x39, 0x40, - 0xf4, 0xc2, 0xff, 0x00, 0x9f, 0x91, 0x84, 0x05, 0x31, 0xc6, 0xe8, 0x07, - 0x7f, 0x80, 0xcd, 0x00, 0xc4, 0x04, 0x31, 0x06, 0xc9, 0x0e, 0x00, 0xc0, - 0x48, 0x88, 0xe0, 0x04, 0x79, 0x04, 0xdb, 0x12, 0x00, 0x30, 0x0c, 0xc8, - 0xe4, 0x04, 0x6d, 0x06, 0xb6, 0x23, 0x00, 0x18, 0x1c, 0xc0, 0x84, 0x04, - 0x25, 0x0c, 0xff, 0xc2, 0x00, 0x4e, 0x06, 0xb0, 0x80, 0x04, 0x3f, 0x8a, - 0xb3, 0x83, 0xff, 0xc3, 0x03, 0x91, 0x84, 0x04, 0x2e, 0xd8, 0x0f, 0x3f, - 0x00, 0x00, 0x5f, 0x83, 0x84, 0x04, 0x2a, 0x70, 0xfd, 0x7f, 0x00, 0x00, - 0xc8, 0xc0, 0x84, 0x04, 0x4b, 0xe2, 0x2f, 0x01, 0x00, 0x08, 0x58, 0x60, - 0x80, 0x04, 0x5b, 0x82, 0xff, 0x01, 0x00, 0x08, 0xd0, 0xa0, 0x84, 0x04, - 0x72, 0x80, 0xe5, 0x00, 0x00, 0x08, 0xd2, 0x20, 0x44, 0x04, 0xca, 0x02, - 0xff, 0x00, 0x00, 0x08, 0xde, 0xa0, 0x44, 0x04, 0x82, 0x02, 0x6d, 0x00, - 0x00, 0x08, 0xf6, 0xb0, 0x40, 0x02, 0x82, 0x07, 0x3f, 0x00, 0x00, 0x08, - 0x44, 0x58, 0x44, 0x02, 0x93, 0x3f, 0x1f, 0x00, 0x00, 0x30, 0x88, 0x4f, - 0x44, 0x03, 0x83, 0x23, 0x3e, 0x00, 0x00, 0x00, 0x18, 0x60, 0xe0, 0x07, - 0xe3, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x70, 0x70, 0xe4, 0x07, 0xc7, 0x1b, - 0xfe, 0x01, 0x00, 0x00, 0xe0, 0x3c, 0xe4, 0x07, 0xc7, 0xe3, 0xfe, 0x1f, - 0x00, 0x00, 0xff, 0x1f, 0xfc, 0x07, 0xc7, 0x03, 0xf8, 0x33, 0x00, 0xc0, - 0xf0, 0x07, 0xff, 0x07, 0x87, 0x02, 0xfc, 0x43, 0x00, 0x60, 0xf0, 0xff, - 0xff, 0x07, 0x8f, 0x06, 0xbe, 0x87, 0x00, 0x30, 0xf8, 0xff, 0xff, 0x07, - 0x8f, 0x14, 0x9c, 0x8f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x07, 0x9f, 0x8d, - 0x8a, 0x0f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x07, 0xbf, 0x0b, 0x80, 0x1f, - 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x7f, 0x3a, 0x80, 0x3f, 0x00, 0x80, - 0xff, 0xff, 0xff, 0x07, 0xff, 0x20, 0xc0, 0x3f, 0x00, 0x80, 0xff, 0xff, - 0xff, 0x07, 0xff, 0x01, 0xe0, 0x7f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0x07, - 0xff, 0x0f, 0xf8, 0xff, 0x40, 0xe0, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, - 0xff, 0xff, 0x40, 0xf0, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, - 0x41, 0xf0, 0xff, 0xff, 0xff, 0x07}; diff --git a/nx-X11/include/bitmaps/xfd_icon b/nx-X11/include/bitmaps/xfd_icon deleted file mode 100644 index 383334c..0000000 --- a/nx-X11/include/bitmaps/xfd_icon +++ /dev/null @@ -1,27 +0,0 @@ -#define xfd_icon_width 48 -#define xfd_icon_height 48 -static char xfd_icon_bits[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x01, 0x81, 0x40, 0x20, 0x10, 0x08, - 0x11, 0x9d, 0x5c, 0xa7, 0xd7, 0x0b, 0x29, 0xa5, 0x42, 0xa9, 0x50, 0x08, - 0x45, 0xa5, 0x42, 0xa9, 0x50, 0x08, 0x7d, 0x9d, 0x42, 0xa9, 0xd7, 0x09, - 0x45, 0xa5, 0x42, 0xa9, 0x50, 0x08, 0x45, 0xa5, 0x42, 0xa9, 0x50, 0x08, - 0x45, 0x9d, 0x5c, 0xa7, 0x57, 0x08, 0x01, 0x81, 0x40, 0x20, 0x10, 0x08, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-X11/include/bitmaps/xlogo11 b/nx-X11/include/bitmaps/xlogo11 deleted file mode 100644 index 5efd2c2..0000000 --- a/nx-X11/include/bitmaps/xlogo11 +++ /dev/null @@ -1,6 +0,0 @@ -#define xlogo11_width 11 -#define xlogo11_height 11 - -static char xlogo11_bits[] = { - 0x0f, 0x04, 0x0f, 0x02, 0x1e, 0x01, 0x3c, 0x01, 0xb8, 0x00, 0x58, 0x00, - 0xe8, 0x00, 0xe4, 0x01, 0xc4, 0x03, 0xc2, 0x03, 0x81, 0x07 }; diff --git a/nx-X11/include/bitmaps/xlogo16 b/nx-X11/include/bitmaps/xlogo16 deleted file mode 100644 index 5c23027..0000000 --- a/nx-X11/include/bitmaps/xlogo16 +++ /dev/null @@ -1,6 +0,0 @@ -#define xlogo16_width 16 -#define xlogo16_height 16 -static unsigned char xlogo16_bits[] = { - 0x0f, 0x80, 0x1e, 0x80, 0x3c, 0x40, 0x78, 0x20, 0x78, 0x10, 0xf0, 0x08, - 0xe0, 0x09, 0xc0, 0x05, 0xc0, 0x02, 0x40, 0x07, 0x20, 0x0f, 0x20, 0x1e, - 0x10, 0x1e, 0x08, 0x3c, 0x04, 0x78, 0x02, 0xf0}; diff --git a/nx-X11/include/bitmaps/xlogo32 b/nx-X11/include/bitmaps/xlogo32 deleted file mode 100644 index 1ecb6ac..0000000 --- a/nx-X11/include/bitmaps/xlogo32 +++ /dev/null @@ -1,14 +0,0 @@ -#define xlogo32_width 32 -#define xlogo32_height 32 -static char xlogo32_bits[] = { - 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60, - 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c, - 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03, - 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00, - 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00, - 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00, - 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00, - 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03, - 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f, - 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f, - 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff}; diff --git a/nx-X11/include/bitmaps/xlogo64 b/nx-X11/include/bitmaps/xlogo64 deleted file mode 100644 index ad3b0db..0000000 --- a/nx-X11/include/bitmaps/xlogo64 +++ /dev/null @@ -1,46 +0,0 @@ -#define xlogo64_width 64 -#define xlogo64_height 64 -static unsigned char xlogo64_bits[] = { - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0xf8, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x7c, - 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xf8, 0xff, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, - 0xe0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xc0, 0xff, 0x3f, 0x00, - 0x00, 0x00, 0xc0, 0x07, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x03, - 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xff, 0xff, 0x00, - 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xf8, 0x00, - 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0xfc, 0xff, 0x03, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x1f, 0x00, - 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x80, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0x0f, - 0x00, 0xc0, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x1f, 0x00, 0xc0, 0x07, 0x00, - 0x00, 0xc0, 0xff, 0x3f, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x80, 0xff, 0x7f, - 0x00, 0xf0, 0x01, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x3e, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0xff, 0x03, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, - 0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xcf, 0x07, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xff, 0xcf, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xe7, 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xf3, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xff, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7e, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, - 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xcf, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe7, - 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe7, 0xff, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xc3, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc1, - 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x80, 0xff, 0x7f, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, - 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xfe, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x1f, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x80, 0x0f, 0x00, - 0xf8, 0xff, 0x07, 0x00, 0x00, 0xc0, 0x07, 0x00, 0xf0, 0xff, 0x0f, 0x00, - 0x00, 0xe0, 0x03, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0xe0, 0x03, 0x00, - 0xe0, 0xff, 0x1f, 0x00, 0x00, 0xf0, 0x01, 0x00, 0xc0, 0xff, 0x3f, 0x00, - 0x00, 0xf8, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x80, 0xff, 0x7f, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, - 0x00, 0x3e, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x1f, 0x00, 0x00, - 0x00, 0xfc, 0xff, 0x03, 0x80, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, - 0xc0, 0x07, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x07, 0xe0, 0x03, 0x00, 0x00, - 0x00, 0xf0, 0xff, 0x0f, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, - 0xf0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0xff, 0x3f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, - 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff}; diff --git a/nx-X11/include/bitmaps/xsnow b/nx-X11/include/bitmaps/xsnow deleted file mode 100644 index 2c1bd8b..0000000 --- a/nx-X11/include/bitmaps/xsnow +++ /dev/null @@ -1,1112 +0,0 @@ -#define xsnow_width 300 -#define xsnow_height 350 -static char xsnow_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x01, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x99, 0x39, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x98, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x09, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x0f, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x80, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xfe, 0x03, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x47, 0x00, - 0x00, 0x90, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xce, - 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x6c, 0x0f, 0xef, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6a, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0xcf, 0x07, 0x7c, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xf0, 0xf7, 0x03, 0x1e, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x70, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0x07, 0x7e, 0x5b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x60, 0x30, 0xf0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0xef, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x71, - 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xfe, - 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0x77, 0xf0, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xb0, 0x33, 0xf0, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0xf0, 0xe1, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0xe0, 0xe1, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x19, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0xe0, 0x81, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x9c, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x30, - 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, - 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x19, 0xe0, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x99, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x1f, 0xe0, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x01, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xf0, 0x7b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xfc, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x01, 0x68, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0xdf, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x33, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x00, 0xf6, 0xff, 0x03, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0xfe, 0xff, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x66, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0x1e, 0xce, 0x03, 0x78, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x1f, 0x80, 0x07, 0x7c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, - 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x90, 0xc3, 0x1f, 0x80, 0x1f, - 0x7e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1c, 0xef, 0x0f, - 0x80, 0xbf, 0xff, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x1e, - 0xfc, 0x07, 0x80, 0xff, 0x8f, 0x7b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0xf8, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x40, - 0xdb, 0x0f, 0xf8, 0x03, 0x00, 0xf7, 0x07, 0xff, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xb8, 0x0f, 0x03, 0x00, 0x00, - 0x00, 0xe0, 0x8d, 0x07, 0xfe, 0x01, 0x00, 0xfc, 0x03, 0x8e, 0x3d, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x3d, 0xdc, 0x23, - 0x00, 0x00, 0x00, 0x60, 0xef, 0x03, 0x7f, 0x07, 0x00, 0xfe, 0x80, 0xcf, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3e, 0x1f, - 0xfc, 0xbd, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x8e, 0x7f, 0x0f, 0x00, 0xff, - 0xc1, 0xfb, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0x1d, 0x0f, 0x58, 0xdc, 0x03, 0x00, 0x00, 0x00, 0x30, 0xfc, 0xef, 0x0f, - 0x80, 0xbf, 0xc3, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xde, 0x1f, 0x7c, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x10, 0xf0, - 0xc3, 0x0f, 0xc0, 0x1f, 0x46, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe2, 0x1d, 0xde, 0x27, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x01, 0x0f, 0xc0, 0x07, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x78, 0x0e, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0x9e, 0xc3, 0x03, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf8, 0x0f, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xfe, 0xdf, 0x03, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xfe, 0x7f, 0x03, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, - 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x39, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0xff, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x6a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x7e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x1e, 0xe0, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x33, - 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1e, 0xe0, 0xfe, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x02, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1e, - 0x60, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x1c, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x1c, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3c, 0x70, 0x62, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x70, 0x6f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x39, - 0x70, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7e, 0x20, 0x30, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x33, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x50, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xf0, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0b, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x67, 0x00, - 0x00, 0x90, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xcf, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xdc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xd8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x98, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf0, 0x1f, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x3e, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x7b, 0x78, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7d, - 0x3e, 0xf8, 0xd3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x33, 0x1a, 0xf0, 0xb0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xad, 0x3f, 0xf0, 0xf9, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x3b, 0x78, 0x9f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x39, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf0, 0x1f, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x73, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x88, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xac, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xcf, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x02, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x03, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x33, 0x60, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xe0, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xe0, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x1f, 0xc0, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xcf, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xc1, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x86, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xb6, 0x07, 0x00, 0xec, 0x13, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe7, 0x03, 0x00, - 0xf8, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf3, - 0x00, 0x00, 0x3c, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd0, 0xfe, 0x01, 0x00, 0x7e, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0xbc, 0x03, 0x00, 0xef, 0x11, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x07, 0x00, 0x87, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x80, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xe0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x19, 0x40, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x11, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x1f, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3b, 0x60, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x1a, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x3f, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x08, 0x00, 0x00, 0x4c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x33, 0x20, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0b, 0x00, 0x00, 0xcc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x08, - 0x04, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x03, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x0c, 0x9c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x0d, 0xfc, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x23, 0x60, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe6, 0x0c, 0x7c, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0xe0, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x3c, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xe0, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x38, 0x1c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x17, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x1f, 0x06, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x7f, 0x06, 0x78, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x78, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xdf, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x7c, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xc5, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0xff, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0xc0, 0xfd, 0x7f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x07, 0x00, 0x87, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0xc0, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xbc, 0x07, 0x00, 0xee, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x87, 0xf9, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf6, 0x03, 0x00, - 0xfc, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xe0, 0x07, 0xf0, 0x80, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xe3, - 0x01, 0x00, 0x78, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf4, 0xf0, 0x07, - 0xf0, 0xc3, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd8, 0xfb, 0x00, 0x00, 0x3e, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc7, - 0xfb, 0x03, 0xf0, 0xf7, 0x3f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0xbe, 0x03, 0x00, 0xef, 0x13, 0x00, 0x00, 0x00, 0x40, - 0xbc, 0x87, 0xff, 0x00, 0xf0, 0xff, 0x73, 0x8f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x07, 0x00, 0x87, 0x01, 0x00, 0x00, - 0x00, 0xd0, 0xf6, 0x03, 0xff, 0x00, 0xc0, 0xff, 0xe0, 0xdf, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x00, 0xf8, 0xe3, 0x81, 0x3f, 0x00, 0x00, 0x7f, 0xc0, 0x33, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x80, - 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xfb, 0xc0, 0xef, 0x00, 0xc0, 0x3f, - 0xf0, 0xf9, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xbe, 0xf3, 0xff, 0x03, - 0xe0, 0x3f, 0x78, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, - 0xfb, 0x03, 0xf0, 0x77, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x98, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0xfc, 0xf0, 0x03, 0xf8, 0xc3, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7c, 0xe0, 0x03, 0xf8, 0x80, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x05, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x67, 0xf8, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x67, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x19, 0xc0, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0xff, 0xff, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc0, 0xff, - 0x6f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3b, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xf7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0xcc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x33, 0x60, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0xfc, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x07, 0xf8, 0x7f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0xf8, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x02, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x87, 0x07, - 0x98, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x38, 0x1f, 0x06, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x81, 0x07, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x3d, 0xbc, 0x47, 0x00, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x07, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3e, 0x1f, 0xfc, - 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x19, - 0x0d, 0x78, 0xd8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0c, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xd6, 0x1f, 0xf8, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0xcc, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe2, 0x1d, 0xbc, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x0f, - 0xec, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf8, 0x1c, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x0e, 0x8c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf8, 0x0f, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x1f, 0x08, 0x04, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x0e, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x44, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x39, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1c, 0x00, 0x00, 0x56, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1e, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x56, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x19, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x67, 0xe6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x07, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x80, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x09, - 0x98, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x0e, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x08, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x09, 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0xf0, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0xf8, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf6, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x40, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x03, - 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0xdb, 0x03, 0x00, 0xfb, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0xf3, 0x01, 0x00, 0xbc, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xfe, 0x79, 0x00, 0x00, 0x8f, 0x7f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x23, 0x00, 0x00, - 0x00, 0x30, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xff, 0x00, 0x80, 0xdf, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, - 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xde, 0x01, 0xc0, 0x7b, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x35, 0x00, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x03, - 0xc0, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x60, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x10, 0x00, 0x20, 0xf0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x18, 0x00, - 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x67, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x1b, 0x00, 0xe0, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x7f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xd8, 0x19, 0x00, 0xe0, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x18, 0x00, 0xe0, 0xe1, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x0f, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x00, 0xc0, 0xe1, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x0e, 0xd0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x00, 0xc0, 0x81, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x08, 0x00, - 0xc0, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x58, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, - 0x0c, 0x00, 0xc0, 0xc3, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0xf8, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0x0f, 0x00, 0xc0, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x09, - 0x88, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0xf8, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x01, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0xfe, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x87, - 0xcf, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf3, 0xff, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc3, 0xcf, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x80, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x01, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x3c, - 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, - 0x00, 0x78, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x1e, 0xfe, - 0x00, 0x00, 0x00, 0xe0, 0xe1, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe1, - 0x78, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xfb, 0x1f, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0xf7, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xb9, 0x47, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xda, 0x7e, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xf0, - 0x6f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0x3c, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x80, - 0x3f, 0xe0, 0xb9, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x1f, 0xf8, 0x01, 0x00, 0x00, - 0x00, 0xc0, 0x1f, 0xf8, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x77, 0xfe, 0x03, - 0x00, 0x00, 0x00, 0xe0, 0x1f, 0xbc, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe1, - 0x7f, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x7b, 0x1c, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x1f, 0x0e, 0x00, 0x00, 0x00, 0xfc, 0xe1, 0x04, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x0f, 0x38, 0x00, 0x00, 0x00, 0x7c, 0xc0, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x70, 0x00, 0x00, 0x00, 0x3c, - 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x80, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xec, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, - 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x3f, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x23, - 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xc7, 0xff, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x3f, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0xff, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x35, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, - 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x1f, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x17, 0x00, 0x00, 0x98, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3e, 0x0f, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x10, 0x08, - 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x0f, 0x0f, 0x00, 0xc0, 0xfc, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x18, 0x38, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x00, 0x60, 0xf0, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x1b, 0xf8, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x00, 0x60, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xcc, 0x19, 0xf8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x00, - 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x78, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x1e, 0x00, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x70, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x1e, 0x00, 0x60, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x70, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x98, 0x1f, 0x00, 0x70, 0x7f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1c, 0x00, 0x70, 0xfc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0x0c, 0xf0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x10, 0x00, 0x30, 0xf0, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x0f, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x19, 0x00, 0x00, - 0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xf8, 0x3e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, - 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0xfe, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3b, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xff, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x33, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x80, 0xfb, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x80, 0xff, 0xff, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, 0x0f, 0xf3, 0x01, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x0f, 0xe0, 0x01, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe8, 0xe1, 0x0f, 0xe0, - 0x87, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x8e, 0xf7, - 0x07, 0xe0, 0xef, 0x7f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x78, - 0x0f, 0xff, 0x01, 0xe0, 0xff, 0xe7, 0x1e, 0x01, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0xed, 0x07, 0xfe, 0x01, 0x80, 0xff, 0xc1, 0xbf, 0x05, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0xc7, 0x03, 0x7f, 0x00, 0x00, 0xfe, 0x80, 0x67, 0x0e, - 0x00, 0x00, 0x00, 0xe0, 0x06, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb0, 0xf7, 0x81, 0xdf, 0x01, 0x80, 0x7f, 0xe0, - 0xf3, 0x0d, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x1f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7c, 0xe7, 0xff, 0x07, 0xc0, - 0x7f, 0xf0, 0x3e, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x1b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfe, 0xf7, - 0x07, 0xe0, 0xef, 0x70, 0x18, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0xf8, 0xe1, 0x07, 0xf0, 0x87, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x8f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf8, 0xc0, 0x07, 0xf0, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, 0xcf, 0xf0, 0x01, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0xff, 0xff, 0x01, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0xff, 0xdf, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x04, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xef, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x01, 0xdc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, - 0x01, 0xf8, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xf0, 0x7f, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0x73, 0x00, 0x60, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xf8, 0x3f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa0, 0x7f, 0x00, 0x78, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x0f, 0xf0, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xde, 0x00, 0xdc, 0x0b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x0f, 0x30, - 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x04, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x0f, 0x30, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x0e, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x0e, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf3, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x18, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1e, 0x98, 0x31, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x1f, 0xd8, - 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x1b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x1c, 0x18, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x41, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x3f, 0x10, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x07, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x1c, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xc1, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x19, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xc1, 0x0d, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x39, 0x00, 0x00, 0xac, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3d, 0x00, 0x00, - 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x33, - 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x9e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x03, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x41, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x77, - 0x00, 0xf6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0x3d, 0x00, 0xbc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x1e, 0x00, 0xde, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x37, 0x00, 0xf7, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x41, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xe3, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xc1, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xc1, 0x04, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0xc1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0xc1, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/nx-libs.spec b/nx-libs.spec index 6774a7e..a56a155 100644 --- a/nx-libs.spec +++ b/nx-libs.spec @@ -638,7 +638,6 @@ chmod 755 %{buildroot}%{_libdir}/lib*.so* #Remove extras, GL, and other unneeded headers rm -r %{buildroot}%{_includedir}/nx/GL -rm -r %{buildroot}%{_includedir}/nx/X11/bitmaps rm -r %{buildroot}%{_includedir}/nx/X11/extensions/XInput.h rm -r %{buildroot}%{_includedir}/nx/X11/extensions/XK*.h rm -r %{buildroot}%{_includedir}/nx/X11/extensions/*Xv*.h -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 2b159e18dda7475db1867d3981ad0905f7531dbe Merge: 825af18 e69b7d1 Author: Mihai Moldovan <ionic@ionic.de> Date: Thu Apr 23 13:29:10 2015 +0200 Merge branch 'sunweaver-pr/xbitmaps-cleanup' into arctica-3.6.x Attributes GH PR #16: https://github.com/ArcticaProject/nx-libs/pull/16 Makefile | 6 +- debian/rules | 1 - nx-X11/include/Imakefile | 2 +- nx-X11/include/bitmaps/1x1 | 6 - nx-X11/include/bitmaps/2x2 | 6 - nx-X11/include/bitmaps/Imakefile | 86 --- nx-X11/include/bitmaps/black | 6 - nx-X11/include/bitmaps/boxes | 6 - nx-X11/include/bitmaps/calculator | 19 - nx-X11/include/bitmaps/cntr_ptr | 8 - nx-X11/include/bitmaps/cntr_ptrmsk | 6 - nx-X11/include/bitmaps/cross_weave | 6 - nx-X11/include/bitmaps/dimple1 | 6 - nx-X11/include/bitmaps/dimple3 | 6 - nx-X11/include/bitmaps/dot | 6 - nx-X11/include/bitmaps/dropbar7 | 4 - nx-X11/include/bitmaps/dropbar8 | 4 - nx-X11/include/bitmaps/escherknot | 473 --------------- nx-X11/include/bitmaps/flagdown | 27 - nx-X11/include/bitmaps/flagup | 27 - nx-X11/include/bitmaps/flipped_gray | 4 - nx-X11/include/bitmaps/gray | 4 - nx-X11/include/bitmaps/gray1 | 4 - nx-X11/include/bitmaps/gray3 | 4 - nx-X11/include/bitmaps/grid16 | 6 - nx-X11/include/bitmaps/grid2 | 4 - nx-X11/include/bitmaps/grid4 | 4 - nx-X11/include/bitmaps/grid8 | 4 - nx-X11/include/bitmaps/hlines2 | 4 - nx-X11/include/bitmaps/hlines3 | 4 - nx-X11/include/bitmaps/icon | 6 - nx-X11/include/bitmaps/keyboard16 | 6 - nx-X11/include/bitmaps/left_ptr | 8 - nx-X11/include/bitmaps/left_ptrmsk | 6 - nx-X11/include/bitmaps/letters | 27 - nx-X11/include/bitmaps/light_gray | 4 - nx-X11/include/bitmaps/mailempty | 27 - nx-X11/include/bitmaps/mailemptymsk | 27 - nx-X11/include/bitmaps/mailfull | 27 - nx-X11/include/bitmaps/mailfullmsk | 27 - nx-X11/include/bitmaps/mensetmanus | 258 -------- nx-X11/include/bitmaps/menu10 | 5 - nx-X11/include/bitmaps/menu12 | 5 - nx-X11/include/bitmaps/menu16 | 6 - nx-X11/include/bitmaps/menu6 | 4 - nx-X11/include/bitmaps/menu8 | 4 - nx-X11/include/bitmaps/noletters | 27 - nx-X11/include/bitmaps/opendot | 8 - nx-X11/include/bitmaps/opendotMask | 8 - nx-X11/include/bitmaps/plaid | 11 - nx-X11/include/bitmaps/right_ptr | 8 - nx-X11/include/bitmaps/right_ptrmsk | 6 - nx-X11/include/bitmaps/root_weave | 4 - nx-X11/include/bitmaps/scales | 6 - nx-X11/include/bitmaps/sipb | 16 - nx-X11/include/bitmaps/star | 8 - nx-X11/include/bitmaps/starMask | 8 - nx-X11/include/bitmaps/stipple | 4 - nx-X11/include/bitmaps/target | 6 - nx-X11/include/bitmaps/terminal | 52 -- nx-X11/include/bitmaps/tie_fighter | 6 - nx-X11/include/bitmaps/vlines2 | 4 - nx-X11/include/bitmaps/vlines3 | 4 - nx-X11/include/bitmaps/weird_size | 5 - nx-X11/include/bitmaps/wide_weave | 6 - nx-X11/include/bitmaps/wingdogs | 14 - nx-X11/include/bitmaps/woman | 66 --- nx-X11/include/bitmaps/xfd_icon | 27 - nx-X11/include/bitmaps/xlogo11 | 6 - nx-X11/include/bitmaps/xlogo16 | 6 - nx-X11/include/bitmaps/xlogo32 | 14 - nx-X11/include/bitmaps/xlogo64 | 46 -- nx-X11/include/bitmaps/xsnow | 1112 ----------------------------------- nx-libs.spec | 1 - 74 files changed, 2 insertions(+), 2687 deletions(-) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit f46b43261c5b2e979d6ec2d9da7b00c6ee1c69e2 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Apr 26 15:12:39 2015 +0200 libX11 underlinking problem: Fix undefined reference to 'dlopen' and 'dlsym'. (Fixes: X2GoBTS#853). --- nx-X11/config/cf/lnxLib.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nx-X11/config/cf/lnxLib.tmpl b/nx-X11/config/cf/lnxLib.tmpl index 788733c..be1fa14 100644 --- a/nx-X11/config/cf/lnxLib.tmpl +++ b/nx-X11/config/cf/lnxLib.tmpl @@ -17,7 +17,7 @@ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB) #define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB) #endif -#define SharedX11Reqs +#define SharedX11Reqs $(LDPRELIB) -ldl #define SharedXlibi18nReqs $(LDPRELIB) $(XONLYLIB) #define SharedOldXReqs $(LDPRELIB) $(XONLYLIB) #define SharedXtReqs $(LDPRELIB) $(XONLYLIB) $(SMLIB) $(ICELIB) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 305ac78893f84f49137b765bfd9a57eb03fc32d0 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Apr 26 15:41:46 2015 +0200 libX11 underlinking problem: Fix undefined reference to 'XdmcpWrap' (by linking against X.Org'x libXdmcp). --- nx-X11/config/cf/lnxLib.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nx-X11/config/cf/lnxLib.tmpl b/nx-X11/config/cf/lnxLib.tmpl index be1fa14..8fbf322 100644 --- a/nx-X11/config/cf/lnxLib.tmpl +++ b/nx-X11/config/cf/lnxLib.tmpl @@ -17,7 +17,7 @@ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB) #define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB) #endif -#define SharedX11Reqs $(LDPRELIB) -ldl +#define SharedX11Reqs $(LDPRELIB) -ldl -lXdmcp #define SharedXlibi18nReqs $(LDPRELIB) $(XONLYLIB) #define SharedOldXReqs $(LDPRELIB) $(XONLYLIB) #define SharedXtReqs $(LDPRELIB) $(XONLYLIB) $(SMLIB) $(ICELIB) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 4a3a4737f939c605378eae86ba583f25acec6ee0 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Apr 26 16:11:57 2015 +0200 Fix underlinking issues for libNX_X{composite,damage,fixes}. --- nx-X11/config/cf/lnxLib.tmpl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nx-X11/config/cf/lnxLib.tmpl b/nx-X11/config/cf/lnxLib.tmpl index 8fbf322..f471fcb 100644 --- a/nx-X11/config/cf/lnxLib.tmpl +++ b/nx-X11/config/cf/lnxLib.tmpl @@ -61,6 +61,9 @@ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB) #define SharedXxf86vmReqs $(LDPRELIB) $(XLIB) #define SharedxkbfileReqs $(LDPRELIB) $(XONLYLIB) #define SharedxkbuiReqs $(LDPRELIB) $(XKBFILELIB) $(XONLYLIB) +#define SharedXfixesReqs $(LDPRELIB) $(XLIB) +#define SharedXdamageReqs $(LDPRELIB) $(XLIB) +#define SharedXcompositeReqs $(LDPRELIB) $(XDAMAGELIB) $(XFIXESLIB) $(XLIB) #else /* UseElfFormat */ -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit f2fd794161fbb87b8b2e4ddc49e2777d82bbdd10 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sun Apr 26 16:35:14 2015 +0200 libXcompshad underlinking problem: Fix undefined reference to 'XShmQueryVersion', 'XShmDetach', 'XShmCreateImage', 'XShmAttach', and 'XShmGetImage'. --- nxcompshad/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nxcompshad/Makefile.in b/nxcompshad/Makefile.in index 41d644f..e4ddd7b 100644 --- a/nxcompshad/Makefile.in +++ b/nxcompshad/Makefile.in @@ -148,7 +148,7 @@ all: depend $(LIBARCHIVE) $(LIBDLL) else -EXTRALIBS = -lNX_Xtst -lNX_Xrandr -lNX_Xdamage +EXTRALIBS = -lNX_Xext -lNX_Xtst -lNX_Xrandr -lNX_Xdamage all: depend $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE) -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit e68c36625d9d76d96ebe0d94ba02803bee574783 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Apr 26 23:45:42 2015 +0200 debian/roll-tarballs.sh: use more quotes. Fixes potential bugs, including one triggered by an unquoted hash within the command line. BASH accepts this. Other shells do not (i.e., treat everything following the hash character as a comment.) --- debian/roll-tarballs.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/debian/roll-tarballs.sh b/debian/roll-tarballs.sh index c7cac5f..c2819cf 100755 --- a/debian/roll-tarballs.sh +++ b/debian/roll-tarballs.sh @@ -33,7 +33,7 @@ usage() { PROJECT="nx-libs" NULL="" -test -d .git || usage +test -d ".git" || usage RELEASE="$1" test -n "${RELEASE}" || usage CHECKOUT="$2" @@ -52,14 +52,14 @@ else fi if [ x"$RELEASE" == "xHEAD" ]; then - CHECKOUT=HEAD + CHECKOUT="HEAD" fi if ! git rev-parse --verify -q "$CHECKOUT" >/dev/null; then echo " '${RELEASE}' is not a valid release number because there is no git tag named $CHECKOUT." echo " Please specify one of the following releases:" echo "HEAD" - git tag -l | grep ^redist | cut -f2 -d/ | sort -u + git tag -l | grep "^redist" | cut -f2 -d"/" | sort -u exit 1 fi @@ -71,42 +71,42 @@ TEMP_DIR="$(mktemp -d)" trap "rm -f \"${MANIFEST}\"; rm -rf \"${TEMP_DIR}\"" 0 # create local copy of Git project at temp location -git archive --format=tar ${CHECKOUT} --prefix=${PROJECT}-${RELEASE}/ | ( cd $TEMP_DIR; tar xf - ) +git archive --format=tar "${CHECKOUT}" --prefix="${PROJECT}-${RELEASE}/" | ( cd "$TEMP_DIR"; tar xf - ) echo "Created tarball for $CHECKOUT" cd "$TEMP_DIR/${PROJECT}-${RELEASE}/" -mkdir -p doc/applied-patches +mkdir -p "doc/applied-patches" # prepare patches for lite and full tarball if [ "x$MODE" = "xfull" ]; then - cat debian/patches/series | sort | grep -v ^# | egrep "([0-9]+_.*\.(full|full\+lite)\.patch)" | while read file + cat "debian/patches/series" | sort | grep -v '^#' | egrep "([0-9]+_.*\.(full|full\+lite)\.patch)" | while read file do - cp -v debian/patches/$file doc/applied-patches - echo ${file##*/} >> doc/applied-patches/series + cp -v "debian/patches/$file" "doc/applied-patches/" + echo "${file##*/}" >> "doc/applied-patches/series" done else rm -Rf "nxcompshad"* rm -Rf "nxcompext"* rm -Rf "nx-X11"* - cat debian/patches/series | sort | grep -v ^# | egrep "([0-9]+_.*\.full\+lite\.patch)" | while read file + cat "debian/patches/series" | sort | grep -v '^#' | egrep "([0-9]+_.*\.full\+lite\.patch)" | while read file do - cp -v debian/patches/$file doc/applied-patches - echo ${file##*/} >> doc/applied-patches/series + cp -v "debian/patches/$file" "doc/applied-patches/" + echo "${file##*/}" >> "doc/applied-patches/series" done fi # apply all patches shipped in debian/patches and create a copy of them that we ship with the tarball if [ -s "doc/applied-patches/series" ]; then - QUILT_PATCHES=doc/applied-patches quilt --quiltrc /dev/null push -a -q + QUILT_PATCHES="doc/applied-patches" quilt --quiltrc /dev/null push -a -q else echo "No patches applied at all. Very old release?" fi # very old release did not add any README for f in $(ls README* 2>/dev/null); do - mv -v $f doc/; + mv -v "$f" "doc/"; done # remove folders that we do not want to roll into the tarball @@ -116,7 +116,7 @@ rm -Rf "debian/" # remove files, that we do not want in the tarballs (build cruft) rm -Rf nx*/configure nx*/autom4te.cache* -cd $OLDPWD +cd "$OLDPWD" # create target location for tarball mkdir -p "$TARGETDIR/_releases_/source/${PROJECT}/" @@ -124,7 +124,7 @@ mkdir -p "$TARGETDIR/_releases_/source/${PROJECT}/" # roll the ball... cd "$TEMP_DIR" find "${PROJECT}-${RELEASE}" -type f | sort > "$MANIFEST" -cd $OLDPWD +cd "$OLDPWD" tar c -C "$TEMP_DIR" \ --owner 0 \ -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit cf9181918ac8f3b884f7a975c108611d613e1d0f Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Apr 26 23:47:33 2015 +0200 debian/roll-tarballs.sh: convert tabs to spaces. --- debian/roll-tarballs.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/debian/roll-tarballs.sh b/debian/roll-tarballs.sh index c2819cf..f692c29 100755 --- a/debian/roll-tarballs.sh +++ b/debian/roll-tarballs.sh @@ -39,16 +39,16 @@ test -n "${RELEASE}" || usage CHECKOUT="$2" test -n "$CHECKOUT" || usage -if [ "x$CHECKOUT" = "xserver" ] || [ "x$CHECKOUT" = "xfull" ]; then - MODE="full" - CHECKOUT="redist-server/${RELEASE}" - RELEASE_SUFFIX='-full' -elif [ "x$CHECKOUT" = "xclient" ] || [ "x$CHECKOUT" = "xlite" ]; then - MODE="lite" - CHECKOUT="redist-client/${RELEASE}" - RELEASE_SUFFIX='-lite' +if [ "x$CHECKOUT" = "xserver" ] || [ "x${CHECKOUT}" = "xfull" ]; then + MODE="full" + CHECKOUT="redist-server/${RELEASE}" + RELEASE_SUFFIX='-full' +elif [ "x$CHECKOUT" = "xclient" ] || [ "x${CHECKOUT}" = "xlite" ]; then + MODE="lite" + CHECKOUT="redist-client/${RELEASE}" + RELEASE_SUFFIX='-lite' else - usage + usage fi if [ x"$RELEASE" == "xHEAD" ]; then -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 21a556b37f9bacb2a0e0f3246c6bd06359f97bd8 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Apr 26 23:48:02 2015 +0200 debian/roll-tarballs.sh: use more curly braces. Prevents random characters as being treated as part of a variable name. --- debian/roll-tarballs.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debian/roll-tarballs.sh b/debian/roll-tarballs.sh index f692c29..8bf2d51 100755 --- a/debian/roll-tarballs.sh +++ b/debian/roll-tarballs.sh @@ -56,7 +56,7 @@ if [ x"$RELEASE" == "xHEAD" ]; then fi if ! git rev-parse --verify -q "$CHECKOUT" >/dev/null; then - echo " '${RELEASE}' is not a valid release number because there is no git tag named $CHECKOUT." + echo " '${RELEASE}' is not a valid release number because there is no git tag named ${CHECKOUT}." echo " Please specify one of the following releases:" echo "HEAD" git tag -l | grep "^redist" | cut -f2 -d"/" | sort -u @@ -75,7 +75,7 @@ git archive --format=tar "${CHECKOUT}" --prefix="${PROJECT}-${RELEASE}/" | ( cd echo "Created tarball for $CHECKOUT" -cd "$TEMP_DIR/${PROJECT}-${RELEASE}/" +cd "${TEMP_DIR}/${PROJECT}-${RELEASE}/" mkdir -p "doc/applied-patches" @@ -119,7 +119,7 @@ rm -Rf nx*/configure nx*/autom4te.cache* cd "$OLDPWD" # create target location for tarball -mkdir -p "$TARGETDIR/_releases_/source/${PROJECT}/" +mkdir -p "${TARGETDIR}/_releases_/source/${PROJECT}/" # roll the ball... cd "$TEMP_DIR" -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 347e973353e64c7f004950cd846360254effd324 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Apr 26 23:49:06 2015 +0200 debian/roll-tarballs.sh: don't escape last newline of a multiline command. Worked out fine so far, because the next line was empty, but this can easily change... --- debian/roll-tarballs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/roll-tarballs.sh b/debian/roll-tarballs.sh index 8bf2d51..954986b 100755 --- a/debian/roll-tarballs.sh +++ b/debian/roll-tarballs.sh @@ -133,6 +133,6 @@ tar c -C "$TEMP_DIR" \ --no-recursion \ --files-from "$MANIFEST" \ --gzip \ - > "$TARGETDIR/_releases_/source/${PROJECT}/${PROJECT}-${RELEASE}${RELEASE_SUFFIX}.tar.gz" \ + > "$TARGETDIR/_releases_/source/${PROJECT}/${PROJECT}-${RELEASE}${RELEASE_SUFFIX}.tar.gz" echo "$TARGETDIR/_releases_/source/${PROJECT}/${PROJECT}-${RELEASE}${RELEASE_SUFFIX}.tar.gz is ready" -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit a430b4a87a7660ff6b04e187bfa01583e6372cad Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Apr 27 02:00:43 2015 +0200 README.keystrokes: add documentation for branding behavior. --- README.keystrokes | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.keystrokes b/README.keystrokes index bba4053..b06a82f 100644 --- a/README.keystrokes +++ b/README.keystrokes @@ -6,13 +6,21 @@ by the user. This is done via a configuration file. File location ------------- -nxagent searches for the configuration file in the following order: +nxagent parses the first available configuration file and ignores all others. + +If nxagent is called without branding, it searches: - in the location given by the '-keystrokefile' command line parameter - in the location given by the NXAGENT_KEYSTROKEFILE environment variable - in ~/.nx/config/keystrokes.cfg - in /etc/nxagent/keystrokes.cfg -If none of those files is accessible, the default configuration is used which +If nxagent is called **with X2Go branding** (i.e., as x2goagent), it searches: +- in the location given by the '-keystrokefile' command line parameter +- in the location given by the NXAGENT_KEYSTROKEFILE environment variable +- in ~/.x2go/config/keystrokes.cfg +- in /etc/x2go/keystrokes.cfg + +If none of these files are accessible, the default configuration is used which is the same as the old, traditional nxagent keybindings. File format -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 1c0f42d30e3720b52667f56a59e20cfb6d264363 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Apr 27 01:59:53 2015 +0200 README.keystrokes: copy actions documentation from the wiki. --- README.keystrokes | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.keystrokes b/README.keystrokes index 26782aa..bba4053 100644 --- a/README.keystrokes +++ b/README.keystrokes @@ -60,23 +60,34 @@ List of possible 'action' attributes: ------------------------------------- close_session + This terminates the session. switch_all_screens minimize + This will minimize the client window (even for fullscreen sessions.) left up right down resize + This action switches between the auto-resize and viewport mode (static size). The default is auto-resize. In viewport mode one can use the 'viewport_move_up', 'viewport_move_down', 'viewport_move_left' and 'viewport_move_right' actions to move within the image. defer + Works like 'ignore' to make some keys be ignored/defunct inside the session. ignore + Makes it possible to add 'ignore', as in nothing happens when certain keys are pressed. fullscreen + Switches the client window into or out of fullscreen mode. viewport_move_left + Moves the image viewport to the left. viewport_move_up + Moves the image viewport up. viewport_move_right + Moves the image viewport to the right. viewport_move_down + Moves the image viewport down. Only in builds with certain debugging options enabled, ignored otherwise: force_synchronization + Forces the drawing of elements to be synchronized which can fix some visual bugs. debug_tree regions_on_screen test_input -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 380a4df0fa9adadabf06e719280dee1f2794d082 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Apr 27 02:02:15 2015 +0200 etc/keystrokes.cfg: fix whitespace errors. --- etc/keystrokes.cfg | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/etc/keystrokes.cfg b/etc/keystrokes.cfg index a5e5210..007a182 100644 --- a/etc/keystrokes.cfg +++ b/etc/keystrokes.cfg @@ -1,19 +1,19 @@ <!DOCTYPE NXKeystroke> <keystrokes> -<keystroke action="close_session" Control="1" AltMeta= "1" key="t" /> -<keystroke action="switch_all_screens" Control="1" AltMeta= "1" key="f" /> -<keystroke action="minimize" Control="1" AltMeta= "1" key="m" /> -<keystroke action="resize" Control="1" AltMeta= "1" key="r" /> -<keystroke action="defer" Control="1" AltMeta= "1" key="e" /> -<keystroke action="ignore" Control="1" AltMeta= "1" key="BackSpace" /> -<keystroke action="force_synchronization" Control="1" AltMeta= "1" key="j" /> -<keystroke action="debug_tree" Control="1" AltMeta= "1" key="q" /> -<keystroke action="regions_on_screen" Control="1" AltMeta= "1" key="a" /> -<keystroke action="test_input" Control="1" AltMeta= "1" key="x" /> -<keystroke action="deactivate_input_devices_grab" Control="1" AltMeta= "1" key="y" /> -<keystroke action="fullscreen" Control="1" Shift="1" AltMeta= "1" key="f" /> -<keystroke action="viewport_move_left" Control="1" Shift="1" AltMeta= "1" key="Left" /> -<keystroke action="viewport_move_up" Control="1" AltMeta= "1" key="Up" /> -<keystroke action="viewport_move_right" Control="1" AltMeta= "1" key="Right" /> -<keystroke action="viewport_move_down" Control="1" AltMeta= "1" key="Down" /> +<keystroke action="close_session" Control="1" AltMeta="1" key="t" /> +<keystroke action="switch_all_screens" Control="1" AltMeta="1" key="f" /> +<keystroke action="minimize" Control="1" AltMeta="1" key="m" /> +<keystroke action="resize" Control="1" AltMeta="1" key="r" /> +<keystroke action="defer" Control="1" AltMeta="1" key="e" /> +<keystroke action="ignore" Control="1" AltMeta="1" key="BackSpace" /> +<keystroke action="force_synchronization" Control="1" AltMeta="1" key="j" /> +<keystroke action="debug_tree" Control="1" AltMeta="1" key="q" /> +<keystroke action="regions_on_screen" Control="1" AltMeta="1" key="a" /> +<keystroke action="test_input" Control="1" AltMeta="1" key="x" /> +<keystroke action="deactivate_input_devices_grab" Control="1" AltMeta="1" key="y" /> +<keystroke action="fullscreen" Control="1" Shift="1" AltMeta="1" key="f" /> +<keystroke action="viewport_move_left" Control="1" Shift="1" AltMeta="1" key="Left" /> +<keystroke action="viewport_move_up" Control="1" AltMeta="1" key="Up" /> +<keystroke action="viewport_move_right" Control="1" AltMeta="1" key="Right" /> +<keystroke action="viewport_move_down" Control="1" AltMeta="1" key="Down" /> </keystrokes> -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit f717a7e81dc7bbee673de1b84ffa988432f390e8 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Apr 27 02:45:10 2015 +0200 README.keystrokes: remove accidentally copied Dokuwiki syntax. --- README.keystrokes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.keystrokes b/README.keystrokes index b06a82f..08cdafb 100644 --- a/README.keystrokes +++ b/README.keystrokes @@ -14,7 +14,7 @@ If nxagent is called without branding, it searches: - in ~/.nx/config/keystrokes.cfg - in /etc/nxagent/keystrokes.cfg -If nxagent is called **with X2Go branding** (i.e., as x2goagent), it searches: +If nxagent is called with X2Go branding (i.e., as x2goagent), it searches: - in the location given by the '-keystrokefile' command line parameter - in the location given by the NXAGENT_KEYSTROKEFILE environment variable - in ~/.x2go/config/keystrokes.cfg -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch 3.6.x in repository nx-libs. commit 99ef17f907e0c1b21122a7e273885a18f86235a1 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Apr 27 02:56:07 2015 +0200 debian/changelog: merge with 3.5.0.x branch. --- debian/changelog | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) diff --git a/debian/changelog b/debian/changelog index 4bbe402..dda68a4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -79,6 +79,140 @@ nx-libs (2:3.5.0.31-0x2go1) unstable; urgency=low - Add overlooked Obsolete: statement to libNX_Xfixes3. * Mid-release fixup: - Rename *nxcomp{ext,shad}*.full+lite* to *nxcomp{ext,shad}*.full. + * CVE patches were previously not included in release tarballs. + Rename: + - 1001-LZW-decompress-fix-for-CVE-2011-2895-From-xorg-lib-X.patch => + 1001-LZW-decompress-fix-for-CVE-2011-2895-From-xorg-.full.patch + - 1002-Fix-CVE-2011-4028-File-disclosure-vulnerability.-ups.patch => + 1002-Fix-CVE-2011-4028-File-disclosure-vulnerability.full.patch + - 1003-Avoid-use-after-free-in-dix-dixfonts.c-doImageText-C.patch => + 1003-Avoid-use-after-free-in-dix-dixfonts.c-doImageT.full.patch + - 1004-CVE-2013-6462-unlimited-sscanf-overflows-stack-buffe.patch => + 1004-CVE-2013-6462-unlimited-sscanf-overflows-stack-.full.patch + - 1005-CVE-2014-0209-integer-overflow-of-realloc-size-in-Fo.patch => + 1005-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch + - 1006-CVE-2014-0209-integer-overflow-of-realloc-size-in-le.patch => + 1006-CVE-2014-0209-integer-overflow-of-realloc-size-.full.patch + - 1007-CVE-2014-0210-unvalidated-length-in-_fs_recv_conn_se.patch => + 1007-CVE-2014-0210-unvalidated-length-in-_fs_recv_co.full.patch + - 1008-Don-t-crash-when-we-receive-an-FS_Error-from-the-fon.patch => + 1008-Don-t-crash-when-we-receive-an-FS_Error-from-th.full.patch + - 1009-CVE-2014-0210-unvalidated-lengths-when-reading-repli.patch => + 1009-CVE-2014-0210-unvalidated-lengths-when-reading-.full.patch + - 1010-CVE-2014-0211-Integer-overflow-in-fs_get_reply-_fs_s.patch => + 1010-CVE-2014-0211-Integer-overflow-in-fs_get_reply-.full.patch + - 1011-CVE-2014-0210-unvalidated-length-fields-in-fs_read_q.patch => + 1011-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch + - 1012-CVE-2014-0211-integer-overflow-in-fs_read_extent_inf.patch => + 1012-CVE-2014-0211-integer-overflow-in-fs_read_exten.full.patch + - 1013-CVE-2014-0211-integer-overflow-in-fs_alloc_glyphs-fr.patch => + 1013-CVE-2014-0211-integer-overflow-in-fs_alloc_glyp.full.patch + - 1014-CVE-2014-0210-unvalidated-length-fields-in-fs_read_e.patch => + 1014-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch + - 1015-CVE-2014-0210-unvalidated-length-fields-in-fs_read_g.patch => + 1015-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch + - 1016-CVE-2014-0210-unvalidated-length-fields-in-fs_read_l.patch => + 1016-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch + - 1017-CVE-2014-0210-unvalidated-length-fields-in-fs_read_l.patch => + 1017-CVE-2014-0210-unvalidated-length-fields-in-fs_r.full.patch + - 1018-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch => + 1018-unchecked-malloc-may-allow-unauthed-client-to-c.full.patch + - 1019-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch => + 1019-dix-integer-overflow-in-ProcPutImage-CVE-2014-8.full.patch + - 1020-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch => + 1020-dix-integer-overflow-in-GetHosts-CVE-2014-8092-.full.patch + - 1021-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch => + 1021-dix-integer-overflow-in-RegionSizeof-CVE-2014-8.full.patch + - 1022-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch => + 1022-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-.full.patch + - 1023-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch => + 1023-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls.full.patch + - 1024-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch => + 1024-Xi-unvalidated-lengths-in-Xinput-extension-CVE-.full.patch + - 1025-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch => + 1025-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDL.full.patch + - 1026-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch => + 1026-Xv-unvalidated-lengths-in-XVideo-extension-swap.full.patch + - 1027-render-check-request-size-before-reading-it-CVE-2014.patch => + 1027-render-check-request-size-before-reading-it-CVE.full.patch + - 1028-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch => + 1028-render-unvalidated-lengths-in-Render-extn.-swap.full.patch + - 1029-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch => + 1029-xfixes-unvalidated-length-in-SProcXFixesSelectS.full.patch + - 1030-randr-unvalidated-lengths-in-RandR-extension-swapped.patch => + 1030-randr-unvalidated-lengths-in-RandR-extension-sw.full.patch + - 1031-glx-Be-more-paranoid-about-variable-length-requests-.patch => + 1031-glx-Be-more-paranoid-about-variable-length-requ.full.patch + - 1032-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch => + 1032-glx-Be-more-strict-about-rejecting-invalid-imag.full.patch + - 1033-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch => + 1033-glx-Additional-paranoia-in-__glXGetAnswerBuffer.full.patch + - 1034-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6-v4.patch => + 1034-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6-.full.patch + - 1035-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch => + 1035-glx-Length-checking-for-GLXRender-requests-v2-C.full.patch + - 1036-glx-Integer-overflow-protection-for-non-generated-re.patch => + 1036-glx-Integer-overflow-protection-for-non-generat.full.patch + - 1037-glx-Top-level-length-checking-for-swapped-VendorPriv.patch => + 1037-glx-Top-level-length-checking-for-swapped-Vendo.full.patch + - 1038-glx-Length-checking-for-non-generated-single-request.patch => + 1038-glx-Length-checking-for-non-generated-single-re.full.patch + - 1039-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch => + 1039-glx-Length-checking-for-RenderLarge-requests-v2.full.patch + - 1040-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch => + 1040-glx-Pass-remaining-request-length-into-varsize-.full.patch + - 1041-nx-X11-lib-font-fc-fserve.c-initialize-remaining-buf.patch => + 1041-nx-X11-lib-font-fc-fserve.c-initialize-remainin.full.patch + - 1042-Do-proper-input-validation-to-fix-for-CVE-2011-2895.patch => + 1042-Do-proper-input-validation-to-fix-for-CVE-2011-.full.patch + - 1101-Coverity-844-845-846-Fix-memory-leaks.patch => + 1101-Coverity-844-845-846-Fix-memory-leaks.full.patch + - 1102-include-introduce-byte-counting-functions.patch => + 1102-include-introduce-byte-counting-functions.full.patch + - 1103-xkb-Don-t-swap-XkbSetGeometry-data-in-the-input-buff.patch => + 1103-xkb-Don-t-swap-XkbSetGeometry-data-in-the-input.full.patch + - 1104-xkb-Check-strings-length-against-request-size.patch => + 1104-xkb-Check-strings-length-against-request-size.full.patch + * debian/rolltarball.sh: + Cherry-picked from Arctica GH 3.6.x branch. + + - Use more quotes. Fixes potential bugs, including one triggered by an + unquoted hash within the command line. BASH accepts this. Other shells + do not (i.e., treat everything following the hash character as a + comment.) + - Convert tabs to spaces for consistency. + - Use more curly braces. Prevents random characters as being treated as + part of a variable name. + - Don't escape last newline of a multiline command. Worked out fine so + far, because the next line was empty, but this can easily change... + * README.keystrokes: + Backported from Arctica GH 3.6.x branch. + Affects: + + 0320_nxagent_configurable-keystrokes.full.patch + + - Copy actions documentation from the wiki. + - Add documentation for branding behavior. + - Remove accidentally copied Dokuwiki syntax. + * debian/keystrokes.cfg: fix whitespace errors. + Backported from Arctica GH 3.6.x branch. + + [ Bernard Cafarelli ] + * nx-X11: link to libdl to fix undefined references to 'dlopen' and 'dlsym'. + Fixes: #853. + v2: generally link to libdl in all of nx-X11. (Mike Gabriel) + Adds: + - 0630_nx-X11_fix-underlinking-dlopen-dlsym.full.patch + + [ Mike Gabriel ] + * Security fixes: + - X.Org CVE-2013-7439: + 1200-CVE-2013-7439-MakeBigReq-don-t-move-the-last-wo.full.patch + * nx-X11: Prevent underlinking by linking to libNX_X{11,damage,fixes). + Adds: + - 0640_nx-X11_fix-underlinking-libNX_Xcomposite_damage_fixes.full.patch + * nxcompshad: Prevent underlinking by linking to libNX_Xext. + Adds: + - 0650_nxcompshad_link-to-NX_Xext.full.patch -- X2Go Release Manager <git-admin@x2go.org> Tue, 17 Mar 2015 18:48:06 +0100 -- Alioth's /srv/git/code.x2go.org/nx-libs.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/nx-libs.git