aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--COPYING1
-rw-r--r--Makefile15
-rw-r--r--README.keystrokes23
-rw-r--r--README.md44
-rw-r--r--debian/changelog146
-rw-r--r--debian/control100
-rw-r--r--debian/libnx-x11-6.symbols8
-rw-r--r--debian/libnx-xdamage-dev.install.in2
-rw-r--r--debian/libnx-xdamage1.install.in1
-rw-r--r--debian/libnx-xdamage1.symbols9
-rw-r--r--debian/libnx-xdmcp-dev.install.in2
-rw-r--r--debian/libnx-xdmcp6.install.in1
-rw-r--r--debian/libnx-xdmcp6.symbols46
-rwxr-xr-xdebian/libnx-xinerama1.postinst.in11
-rwxr-xr-xdebian/libnx-xinerama1.prerm53
-rw-r--r--debian/nx-x11proto-damage-dev.install.in2
-rwxr-xr-xdebian/roll-tarballs.sh56
-rwxr-xr-xdebian/rules8
-rwxr-xr-xdoc/examples/run-nxproxy2nxproxy-test140
-rw-r--r--doc/nx-X11_vs_XOrg69_patches/host.def.NX.patch2
-rw-r--r--etc/keystrokes.cfg32
-rw-r--r--nx-X11/Imakefile3
-rw-r--r--nx-X11/config/Imakefile13
-rw-r--r--nx-X11/config/cf/Imake.cf11
-rw-r--r--nx-X11/config/cf/Imake.rules21
-rw-r--r--nx-X11/config/cf/Imake.tmpl23
-rw-r--r--nx-X11/config/cf/README109
-rw-r--r--nx-X11/config/cf/X11.tmpl2453
-rw-r--r--nx-X11/config/cf/host.def389
-rw-r--r--nx-X11/config/cf/linux.cf38
-rw-r--r--nx-X11/config/cf/lnxLib.rules72
-rw-r--r--nx-X11/config/cf/lnxLib.tmpl60
-rw-r--r--nx-X11/config/cf/site.def19
-rw-r--r--nx-X11/config/cf/xf86site.def216
-rw-r--r--nx-X11/config/cf/xfree86.cf131
-rw-r--r--nx-X11/config/cf/xorg.cf128
-rw-r--r--nx-X11/config/cf/xorgsite.def280
-rw-r--r--nx-X11/config/imake/imakemdep.h20
-rw-r--r--nx-X11/config/makedepend/main.c2
-rw-r--r--nx-X11/config/util/Imakefile168
-rw-r--r--nx-X11/config/util/aminstall.sh74
-rw-r--r--nx-X11/config/util/bsdinst.sh168
-rw-r--r--nx-X11/config/util/buildos2.cmd1
-rw-r--r--nx-X11/config/util/ccmakedep.man142
-rw-r--r--nx-X11/config/util/checktree.c339
-rw-r--r--nx-X11/config/util/chownxterm.c79
-rw-r--r--nx-X11/config/util/cleanlinks.man29
-rw-r--r--nx-X11/config/util/cleanlinks.sh27
-rw-r--r--nx-X11/config/util/crayar.sh9
-rw-r--r--nx-X11/config/util/elistgen.hp202
-rw-r--r--nx-X11/config/util/elistgen.ibm220
-rw-r--r--nx-X11/config/util/elistgen.sun267
-rw-r--r--nx-X11/config/util/elistgen.usl221
-rw-r--r--nx-X11/config/util/gccmakedep.man126
-rw-r--r--nx-X11/config/util/gccmdep.cpp126
-rw-r--r--nx-X11/config/util/indir.cmd28
-rw-r--r--nx-X11/config/util/install.sh108
-rw-r--r--nx-X11/config/util/lndir.c391
-rw-r--r--nx-X11/config/util/lndir.man119
-rw-r--r--nx-X11/config/util/makedef.cmd620
-rw-r--r--nx-X11/config/util/makeg.man64
-rw-r--r--nx-X11/config/util/makeg.sh13
-rw-r--r--nx-X11/config/util/makestrs.c752
-rw-r--r--nx-X11/config/util/makestrs.man219
-rw-r--r--nx-X11/config/util/mdepend.cpp286
-rw-r--r--nx-X11/config/util/mergelib.cpp105
-rw-r--r--nx-X11/config/util/mergelib.man28
-rw-r--r--nx-X11/config/util/mkdirhier.c80
-rw-r--r--nx-X11/config/util/mkdirhier.cmd54
-rw-r--r--nx-X11/config/util/mkdirhier.man42
-rw-r--r--nx-X11/config/util/mkdirhier.sh67
-rw-r--r--nx-X11/config/util/mkhtmlindex.man32
-rw-r--r--nx-X11/config/util/mkhtmlindex.pl103
-rw-r--r--nx-X11/config/util/mkhtmlindex.sh60
-rw-r--r--nx-X11/config/util/mkshadow/Imakefile5
-rw-r--r--nx-X11/config/util/mkshadow/README38
-rw-r--r--nx-X11/config/util/mkshadow/mkshadow.c378
-rw-r--r--nx-X11/config/util/mkshadow/savedir.c119
-rw-r--r--nx-X11/config/util/mkshadow/wildmat.c167
-rw-r--r--nx-X11/config/util/printver.c29
-rw-r--r--nx-X11/config/util/revpath.c47
-rw-r--r--nx-X11/config/util/revpath.man45
-rw-r--r--nx-X11/config/util/syminst.sh90
-rw-r--r--nx-X11/config/util/x11mf.sh28
-rw-r--r--nx-X11/config/util/xmake.cmd5
-rw-r--r--nx-X11/config/util/xmkmf.cpp70
-rw-r--r--nx-X11/config/util/xmkmf.man89
-rw-r--r--nx-X11/include/Imakefile15
-rw-r--r--nx-X11/include/Xmd.h53
-rw-r--r--nx-X11/include/Xos.h10
-rw-r--r--nx-X11/include/Xpoll.h.in4
-rw-r--r--nx-X11/include/Xproto.h13
-rw-r--r--nx-X11/include/bitmaps/1x16
-rw-r--r--nx-X11/include/bitmaps/2x26
-rw-r--r--nx-X11/include/bitmaps/Imakefile86
-rw-r--r--nx-X11/include/bitmaps/black6
-rw-r--r--nx-X11/include/bitmaps/boxes6
-rw-r--r--nx-X11/include/bitmaps/calculator19
-rw-r--r--nx-X11/include/bitmaps/cntr_ptr8
-rw-r--r--nx-X11/include/bitmaps/cntr_ptrmsk6
-rw-r--r--nx-X11/include/bitmaps/cross_weave6
-rw-r--r--nx-X11/include/bitmaps/dimple16
-rw-r--r--nx-X11/include/bitmaps/dimple36
-rw-r--r--nx-X11/include/bitmaps/dot6
-rw-r--r--nx-X11/include/bitmaps/dropbar74
-rw-r--r--nx-X11/include/bitmaps/dropbar84
-rw-r--r--nx-X11/include/bitmaps/escherknot473
-rw-r--r--nx-X11/include/bitmaps/flagdown27
-rw-r--r--nx-X11/include/bitmaps/flagup27
-rw-r--r--nx-X11/include/bitmaps/flipped_gray4
-rw-r--r--nx-X11/include/bitmaps/gray4
-rw-r--r--nx-X11/include/bitmaps/gray14
-rw-r--r--nx-X11/include/bitmaps/gray34
-rw-r--r--nx-X11/include/bitmaps/grid166
-rw-r--r--nx-X11/include/bitmaps/grid24
-rw-r--r--nx-X11/include/bitmaps/grid44
-rw-r--r--nx-X11/include/bitmaps/grid84
-rw-r--r--nx-X11/include/bitmaps/hlines24
-rw-r--r--nx-X11/include/bitmaps/hlines34
-rw-r--r--nx-X11/include/bitmaps/icon6
-rw-r--r--nx-X11/include/bitmaps/keyboard166
-rw-r--r--nx-X11/include/bitmaps/left_ptr8
-rw-r--r--nx-X11/include/bitmaps/left_ptrmsk6
-rw-r--r--nx-X11/include/bitmaps/letters27
-rw-r--r--nx-X11/include/bitmaps/light_gray4
-rw-r--r--nx-X11/include/bitmaps/mailempty27
-rw-r--r--nx-X11/include/bitmaps/mailemptymsk27
-rw-r--r--nx-X11/include/bitmaps/mailfull27
-rw-r--r--nx-X11/include/bitmaps/mailfullmsk27
-rw-r--r--nx-X11/include/bitmaps/mensetmanus258
-rw-r--r--nx-X11/include/bitmaps/menu105
-rw-r--r--nx-X11/include/bitmaps/menu125
-rw-r--r--nx-X11/include/bitmaps/menu166
-rw-r--r--nx-X11/include/bitmaps/menu64
-rw-r--r--nx-X11/include/bitmaps/menu84
-rw-r--r--nx-X11/include/bitmaps/noletters27
-rw-r--r--nx-X11/include/bitmaps/opendot8
-rw-r--r--nx-X11/include/bitmaps/opendotMask8
-rw-r--r--nx-X11/include/bitmaps/plaid11
-rw-r--r--nx-X11/include/bitmaps/right_ptr8
-rw-r--r--nx-X11/include/bitmaps/right_ptrmsk6
-rw-r--r--nx-X11/include/bitmaps/root_weave4
-rw-r--r--nx-X11/include/bitmaps/scales6
-rw-r--r--nx-X11/include/bitmaps/sipb16
-rw-r--r--nx-X11/include/bitmaps/star8
-rw-r--r--nx-X11/include/bitmaps/starMask8
-rw-r--r--nx-X11/include/bitmaps/stipple4
-rw-r--r--nx-X11/include/bitmaps/target6
-rw-r--r--nx-X11/include/bitmaps/terminal52
-rw-r--r--nx-X11/include/bitmaps/tie_fighter6
-rw-r--r--nx-X11/include/bitmaps/vlines24
-rw-r--r--nx-X11/include/bitmaps/vlines34
-rw-r--r--nx-X11/include/bitmaps/weird_size5
-rw-r--r--nx-X11/include/bitmaps/wide_weave6
-rw-r--r--nx-X11/include/bitmaps/wingdogs14
-rw-r--r--nx-X11/include/bitmaps/woman66
-rw-r--r--nx-X11/include/bitmaps/xfd_icon27
-rw-r--r--nx-X11/include/bitmaps/xlogo116
-rw-r--r--nx-X11/include/bitmaps/xlogo166
-rw-r--r--nx-X11/include/bitmaps/xlogo3214
-rw-r--r--nx-X11/include/bitmaps/xlogo6446
-rw-r--r--nx-X11/include/bitmaps/xsnow1112
-rw-r--r--nx-X11/include/extensions/Imakefile53
-rw-r--r--nx-X11/include/extensions/Print.h552
-rw-r--r--nx-X11/include/extensions/Printstr.h783
-rw-r--r--nx-X11/include/extensions/XKBstr.h5
-rw-r--r--nx-X11/include/extensions/damageproto.h149
-rw-r--r--nx-X11/include/extensions/damagewire.h57
-rw-r--r--nx-X11/include/extensions/dmxext.h190
-rw-r--r--nx-X11/include/extensions/dmxproto.h446
-rw-r--r--nx-X11/include/extensions/lbxopts.h2
-rw-r--r--nx-X11/include/extensions/lbxstr.h4
-rw-r--r--nx-X11/include/extensions/xf86bigfstr.h4
-rw-r--r--nx-X11/include/fonts/FS.h132
-rw-r--r--nx-X11/include/fonts/FSproto.h816
-rw-r--r--nx-X11/include/fonts/Imakefile22
-rw-r--r--nx-X11/include/fonts/font.h169
-rw-r--r--nx-X11/include/fonts/fontproto.h93
-rw-r--r--nx-X11/include/fonts/fontstruct.h295
-rw-r--r--nx-X11/include/fonts/fsmasks.h98
-rw-r--r--nx-X11/lib/GL/GL/Imakefile2
-rw-r--r--nx-X11/lib/GL/Imakefile20
-rw-r--r--nx-X11/lib/GL/mesa/Imakefile15
-rw-r--r--nx-X11/lib/GL/mesa/drivers/dri/common/Imakefile2
-rw-r--r--nx-X11/lib/Imakefile184
-rw-r--r--nx-X11/lib/X11/ChWindow.c9
-rw-r--r--nx-X11/lib/X11/ConfWind.c13
-rw-r--r--nx-X11/lib/X11/CrWindow.c9
-rw-r--r--nx-X11/lib/X11/DrArc.c13
-rw-r--r--nx-X11/lib/X11/DrLine.c16
-rw-r--r--nx-X11/lib/X11/DrPoint.c15
-rw-r--r--nx-X11/lib/X11/DrRect.c16
-rw-r--r--nx-X11/lib/X11/FillArc.c16
-rw-r--r--nx-X11/lib/X11/FillRct.c15
-rw-r--r--nx-X11/lib/X11/Font.c45
-rw-r--r--nx-X11/lib/X11/FontInfo.c24
-rw-r--r--nx-X11/lib/X11/ImUtil.c8
-rw-r--r--nx-X11/lib/X11/Imakefile13
-rw-r--r--nx-X11/lib/X11/LiHosts.c7
-rw-r--r--nx-X11/lib/X11/Macros.c5
-rw-r--r--nx-X11/lib/X11/MoveWin.c9
-rw-r--r--nx-X11/lib/X11/PolyTxt16.c26
-rw-r--r--nx-X11/lib/X11/Quarks.c4
-rw-r--r--nx-X11/lib/X11/RestackWs.c11
-rw-r--r--nx-X11/lib/X11/SendEvent.c5
-rw-r--r--nx-X11/lib/X11/StColor.c13
-rw-r--r--nx-X11/lib/X11/Text16.c23
-rw-r--r--nx-X11/lib/X11/XKBNames.c56
-rw-r--r--nx-X11/lib/X11/XKBRdBuf.c27
-rw-r--r--nx-X11/lib/X11/XKBlibint.h2
-rw-r--r--nx-X11/lib/X11/Xlib.h4
-rw-r--r--nx-X11/lib/X11/XlibAsync.c5
-rw-r--r--nx-X11/lib/X11/XlibInt.c252
-rw-r--r--nx-X11/lib/X11/Xlibint.h82
-rw-r--r--nx-X11/lib/X11/cmsTrig.c4
-rw-r--r--nx-X11/lib/X11/omXChar.c71
-rw-r--r--nx-X11/lib/Xcomposite/Imakefile2
-rw-r--r--nx-X11/lib/Xcursor/AUTHORS2
-rw-r--r--nx-X11/lib/Xcursor/COPYING19
-rw-r--r--nx-X11/lib/Xcursor/ChangeLog202
-rw-r--r--nx-X11/lib/Xcursor/INSTALL0
-rw-r--r--nx-X11/lib/Xcursor/Imakefile100
-rw-r--r--nx-X11/lib/Xcursor/NEWS0
-rw-r--r--nx-X11/lib/Xcursor/README0
-rw-r--r--nx-X11/lib/Xcursor/Xcursor-def.cpp54
-rw-r--r--nx-X11/lib/Xcursor/Xcursor.h501
-rw-r--r--nx-X11/lib/Xcursor/Xcursor.man379
-rwxr-xr-xnx-X11/lib/Xcursor/autogen.sh12
-rw-r--r--nx-X11/lib/Xcursor/config.h0
-rw-r--r--nx-X11/lib/Xcursor/configure.ac143
-rw-r--r--nx-X11/lib/Xcursor/cursor.c815
-rw-r--r--nx-X11/lib/Xcursor/display.c382
-rw-r--r--nx-X11/lib/Xcursor/file.c1101
-rw-r--r--nx-X11/lib/Xcursor/library.c495
-rw-r--r--nx-X11/lib/Xcursor/xcursor-config.in95
-rw-r--r--nx-X11/lib/Xcursor/xcursor.pc.in15
-rw-r--r--nx-X11/lib/Xcursor/xcursorint.h109
-rw-r--r--nx-X11/lib/Xcursor/xlib.c422
-rw-r--r--nx-X11/lib/Xdamage/AUTHORS2
-rw-r--r--nx-X11/lib/Xdamage/COPYING22
-rw-r--r--nx-X11/lib/Xdamage/ChangeLog13
-rw-r--r--nx-X11/lib/Xdamage/INSTALL8
-rw-r--r--nx-X11/lib/Xdamage/Imakefile68
-rw-r--r--nx-X11/lib/Xdamage/NEWS0
-rw-r--r--nx-X11/lib/Xdamage/README10
-rw-r--r--nx-X11/lib/Xdamage/Xdamage.c365
-rw-r--r--nx-X11/lib/Xdamage/Xdamage.h68
-rwxr-xr-xnx-X11/lib/Xdamage/autogen.sh3
-rw-r--r--nx-X11/lib/Xdamage/configure.ac93
-rw-r--r--nx-X11/lib/Xdamage/xdamage.pc.in10
-rw-r--r--nx-X11/lib/Xdamage/xdamageint.h66
-rw-r--r--nx-X11/lib/Xdmcp/A8Eq.c50
-rw-r--r--nx-X11/lib/Xdmcp/AA16.c51
-rw-r--r--nx-X11/lib/Xdmcp/AA32.c51
-rw-r--r--nx-X11/lib/Xdmcp/AA8.c51
-rw-r--r--nx-X11/lib/Xdmcp/Alloc.c66
-rw-r--r--nx-X11/lib/Xdmcp/AofA8.c51
-rw-r--r--nx-X11/lib/Xdmcp/CA8.c49
-rw-r--r--nx-X11/lib/Xdmcp/CmpKey.c49
-rw-r--r--nx-X11/lib/Xdmcp/DA16.c46
-rw-r--r--nx-X11/lib/Xdmcp/DA32.c45
-rw-r--r--nx-X11/lib/Xdmcp/DA8.c45
-rw-r--r--nx-X11/lib/Xdmcp/DAofA8.c51
-rw-r--r--nx-X11/lib/Xdmcp/DecKey.c49
-rw-r--r--nx-X11/lib/Xdmcp/Fill.c102
-rw-r--r--nx-X11/lib/Xdmcp/Flush.c83
-rw-r--r--nx-X11/lib/Xdmcp/GenKey.c74
-rw-r--r--nx-X11/lib/Xdmcp/Imakefile121
-rw-r--r--nx-X11/lib/Xdmcp/IncKey.c49
-rw-r--r--nx-X11/lib/Xdmcp/RA16.c72
-rw-r--r--nx-X11/lib/Xdmcp/RA32.c72
-rw-r--r--nx-X11/lib/Xdmcp/RA8.c72
-rw-r--r--nx-X11/lib/Xdmcp/RAofA8.c75
-rw-r--r--nx-X11/lib/Xdmcp/RC16.c52
-rw-r--r--nx-X11/lib/Xdmcp/RC32.c56
-rw-r--r--nx-X11/lib/Xdmcp/RC8.c47
-rw-r--r--nx-X11/lib/Xdmcp/RHead.c48
-rw-r--r--nx-X11/lib/Xdmcp/RR.c43
-rw-r--r--nx-X11/lib/Xdmcp/RaA16.c51
-rw-r--r--nx-X11/lib/Xdmcp/RaA32.c51
-rw-r--r--nx-X11/lib/Xdmcp/RaA8.c51
-rw-r--r--nx-X11/lib/Xdmcp/RaAoA8.c51
-rw-r--r--nx-X11/lib/Xdmcp/Unwrap.c95
-rw-r--r--nx-X11/lib/Xdmcp/WA16.c51
-rw-r--r--nx-X11/lib/Xdmcp/WA32.c51
-rw-r--r--nx-X11/lib/Xdmcp/WA8.c51
-rw-r--r--nx-X11/lib/Xdmcp/WAofA8.c51
-rw-r--r--nx-X11/lib/Xdmcp/WC16.c50
-rw-r--r--nx-X11/lib/Xdmcp/WC32.c53
-rw-r--r--nx-X11/lib/Xdmcp/WC8.c49
-rw-r--r--nx-X11/lib/Xdmcp/Whead.c64
-rw-r--r--nx-X11/lib/Xdmcp/Wrap.c133
-rw-r--r--nx-X11/lib/Xdmcp/Wrap.h19
-rw-r--r--nx-X11/lib/Xdmcp/Wraphelp.README.crypto64
-rw-r--r--nx-X11/lib/Xdmcp/Wraphelp.c500
-rw-r--r--nx-X11/lib/Xdmcp/Xdmcp.h190
-rw-r--r--nx-X11/lib/Xfixes/Imakefile2
-rw-r--r--nx-X11/lib/Xrender/FillRect.c15
-rw-r--r--nx-X11/lib/Xrender/Imakefile9
-rw-r--r--nx-X11/lib/Xrender/Xrenderint.h7
-rw-r--r--nx-X11/lib/Xrender/config-subst (renamed from nx-X11/lib/Xcursor/config-subst)0
-rw-r--r--nx-X11/lib/Xtst/XRecord.c28
-rw-r--r--nx-X11/lib/Xxf86vm/XF86VMode.c2
-rw-r--r--nx-X11/lib/font/Imakefile178
-rw-r--r--nx-X11/lib/font/Speedo/Imakefile46
-rw-r--r--nx-X11/lib/font/Speedo/adobe-iso.h200
-rw-r--r--nx-X11/lib/font/Speedo/bics-iso.h224
-rw-r--r--nx-X11/lib/font/Speedo/bics-unicode.c138
-rw-r--r--nx-X11/lib/font/Speedo/bics-unicode.h3
-rw-r--r--nx-X11/lib/font/Speedo/do_char.c1016
-rw-r--r--nx-X11/lib/font/Speedo/do_trns.c512
-rw-r--r--nx-X11/lib/font/Speedo/htest.c361
-rw-r--r--nx-X11/lib/font/Speedo/iface.c650
-rw-r--r--nx-X11/lib/font/Speedo/keys.h56
-rw-r--r--nx-X11/lib/font/Speedo/module/Imakefile47
-rw-r--r--nx-X11/lib/font/Speedo/module/speedomod.c72
-rw-r--r--nx-X11/lib/font/Speedo/nsample.c745
-rw-r--r--nx-X11/lib/font/Speedo/out_bl2d.c772
-rw-r--r--nx-X11/lib/font/Speedo/out_blk.c706
-rw-r--r--nx-X11/lib/font/Speedo/out_outl.c290
-rw-r--r--nx-X11/lib/font/Speedo/out_scrn.c1090
-rw-r--r--nx-X11/lib/font/Speedo/out_util.c341
-rw-r--r--nx-X11/lib/font/Speedo/reset.c131
-rw-r--r--nx-X11/lib/font/Speedo/set_spcs.c773
-rw-r--r--nx-X11/lib/font/Speedo/set_trns.c1324
-rw-r--r--nx-X11/lib/font/Speedo/spdo_prv.h421
-rw-r--r--nx-X11/lib/font/Speedo/speedo.h890
-rw-r--r--nx-X11/lib/font/Speedo/spencode.c67
-rw-r--r--nx-X11/lib/font/Speedo/sperr.c127
-rw-r--r--nx-X11/lib/font/Speedo/spfile.c460
-rw-r--r--nx-X11/lib/font/Speedo/spfont.c453
-rw-r--r--nx-X11/lib/font/Speedo/spfuncs.c167
-rw-r--r--nx-X11/lib/font/Speedo/spglyph.c399
-rw-r--r--nx-X11/lib/font/Speedo/spinfo.c462
-rw-r--r--nx-X11/lib/font/Speedo/spint.h180
-rw-r--r--nx-X11/lib/font/Speedo/sptobdf.c678
-rw-r--r--nx-X11/lib/font/Speedo/useropt.h41
-rw-r--r--nx-X11/lib/font/Type1/AFM.h62
-rw-r--r--nx-X11/lib/font/Type1/Imakefile91
-rw-r--r--nx-X11/lib/font/Type1/afm.c200
-rw-r--r--nx-X11/lib/font/Type1/arith.c486
-rw-r--r--nx-X11/lib/font/Type1/arith.h77
-rw-r--r--nx-X11/lib/font/Type1/blues.h95
-rw-r--r--nx-X11/lib/font/Type1/cidchar.c621
-rw-r--r--nx-X11/lib/font/Type1/cluts.h35
-rw-r--r--nx-X11/lib/font/Type1/curves.c228
-rw-r--r--nx-X11/lib/font/Type1/curves.h44
-rw-r--r--nx-X11/lib/font/Type1/digit.h64
-rw-r--r--nx-X11/lib/font/Type1/fontfcn.c709
-rw-r--r--nx-X11/lib/font/Type1/fontfcn.h250
-rw-r--r--nx-X11/lib/font/Type1/fonts.h49
-rw-r--r--nx-X11/lib/font/Type1/hdigit.h94
-rw-r--r--nx-X11/lib/font/Type1/hints.c890
-rw-r--r--nx-X11/lib/font/Type1/hints.h48
-rw-r--r--nx-X11/lib/font/Type1/lines.c189
-rw-r--r--nx-X11/lib/font/Type1/lines.h39
-rw-r--r--nx-X11/lib/font/Type1/minimain.c48
-rw-r--r--nx-X11/lib/font/Type1/module/Imakefile99
-rw-r--r--nx-X11/lib/font/Type1/module/type1mod.c91
-rw-r--r--nx-X11/lib/font/Type1/objects.c1101
-rw-r--r--nx-X11/lib/font/Type1/objects.h354
-rw-r--r--nx-X11/lib/font/Type1/paths.c1406
-rw-r--r--nx-X11/lib/font/Type1/paths.h239
-rw-r--r--nx-X11/lib/font/Type1/pictures.h50
-rw-r--r--nx-X11/lib/font/Type1/range.h48
-rw-r--r--nx-X11/lib/font/Type1/regions.c1651
-rw-r--r--nx-X11/lib/font/Type1/regions.h250
-rw-r--r--nx-X11/lib/font/Type1/scanfont.c2370
-rw-r--r--nx-X11/lib/font/Type1/spaces.c998
-rw-r--r--nx-X11/lib/font/Type1/spaces.h172
-rw-r--r--nx-X11/lib/font/Type1/strokes.h38
-rw-r--r--nx-X11/lib/font/Type1/t1funcs.c1668
-rw-r--r--nx-X11/lib/font/Type1/t1hdigit.h40
-rw-r--r--nx-X11/lib/font/Type1/t1imager.h84
-rw-r--r--nx-X11/lib/font/Type1/t1info.c1096
-rw-r--r--nx-X11/lib/font/Type1/t1intf.h143
-rw-r--r--nx-X11/lib/font/Type1/t1io.c388
-rw-r--r--nx-X11/lib/font/Type1/t1malloc.c759
-rw-r--r--nx-X11/lib/font/Type1/t1snap.c85
-rw-r--r--nx-X11/lib/font/Type1/t1stdio.h101
-rw-r--r--nx-X11/lib/font/Type1/t1stub.c56
-rw-r--r--nx-X11/lib/font/Type1/t1test.c246
-rw-r--r--nx-X11/lib/font/Type1/t1unicode.c251
-rw-r--r--nx-X11/lib/font/Type1/t1unicode.h25
-rw-r--r--nx-X11/lib/font/Type1/token.c1208
-rw-r--r--nx-X11/lib/font/Type1/token.h79
-rw-r--r--nx-X11/lib/font/Type1/tokst.h510
-rw-r--r--nx-X11/lib/font/Type1/trig.h41
-rw-r--r--nx-X11/lib/font/Type1/type1.c1892
-rw-r--r--nx-X11/lib/font/Type1/util.c222
-rw-r--r--nx-X11/lib/font/Type1/util.h217
-rw-r--r--nx-X11/lib/font/bitmap/Imakefile71
-rw-r--r--nx-X11/lib/font/bitmap/bdfint.h90
-rw-r--r--nx-X11/lib/font/bitmap/bdfread.c967
-rw-r--r--nx-X11/lib/font/bitmap/bdfutils.c340
-rw-r--r--nx-X11/lib/font/bitmap/bitmap.c160
-rw-r--r--nx-X11/lib/font/bitmap/bitmapfunc.c240
-rw-r--r--nx-X11/lib/font/bitmap/bitmaputil.c232
-rw-r--r--nx-X11/lib/font/bitmap/bitscale.c1978
-rw-r--r--nx-X11/lib/font/bitmap/fontink.c219
-rw-r--r--nx-X11/lib/font/bitmap/module/Imakefile45
-rw-r--r--nx-X11/lib/font/bitmap/module/bitmapmod.c76
-rw-r--r--nx-X11/lib/font/bitmap/pcf.h100
-rw-r--r--nx-X11/lib/font/bitmap/pcfread.c997
-rw-r--r--nx-X11/lib/font/bitmap/pcfwrite.c468
-rw-r--r--nx-X11/lib/font/bitmap/snfread.c514
-rw-r--r--nx-X11/lib/font/bitmap/snfstr.h185
-rw-r--r--nx-X11/lib/font/builtins/Imakefile17
-rw-r--r--nx-X11/lib/font/builtins/buildfont14
-rw-r--r--nx-X11/lib/font/builtins/builtin.h60
-rw-r--r--nx-X11/lib/font/builtins/dir.c64
-rw-r--r--nx-X11/lib/font/builtins/file.c139
-rw-r--r--nx-X11/lib/font/builtins/fonts.c2438
-rw-r--r--nx-X11/lib/font/builtins/fpe.c98
-rw-r--r--nx-X11/lib/font/builtins/render.c114
-rw-r--r--nx-X11/lib/font/fc/Imakefile31
-rw-r--r--nx-X11/lib/font/fc/fsconvert.c774
-rw-r--r--nx-X11/lib/font/fc/fserve.c3480
-rw-r--r--nx-X11/lib/font/fc/fserve.h96
-rw-r--r--nx-X11/lib/font/fc/fservestr.h211
-rw-r--r--nx-X11/lib/font/fc/fsio.c516
-rw-r--r--nx-X11/lib/font/fc/fsio.h187
-rw-r--r--nx-X11/lib/font/fc/fsio.h.NX.reference191
-rw-r--r--nx-X11/lib/font/fc/fsio.h.XF86.reference187
-rw-r--r--nx-X11/lib/font/fc/fslibos.h220
-rw-r--r--nx-X11/lib/font/fontcache/Imakefile29
-rw-r--r--nx-X11/lib/font/fontcache/fcqueue.h133
-rw-r--r--nx-X11/lib/font/fontcache/fontcache.c1022
-rw-r--r--nx-X11/lib/font/fontcache/fontcache.h121
-rw-r--r--nx-X11/lib/font/fontfile/Imakefile81
-rw-r--r--nx-X11/lib/font/fontfile/bitsource.c174
-rw-r--r--nx-X11/lib/font/fontfile/bufio.c212
-rw-r--r--nx-X11/lib/font/fontfile/decompress.c415
-rw-r--r--nx-X11/lib/font/fontfile/defaults.c77
-rw-r--r--nx-X11/lib/font/fontfile/dirfile.c495
-rw-r--r--nx-X11/lib/font/fontfile/encparse.c966
-rw-r--r--nx-X11/lib/font/fontfile/ffcheck.c173
-rw-r--r--nx-X11/lib/font/fontfile/fileio.c90
-rw-r--r--nx-X11/lib/font/fontfile/filewr.c65
-rw-r--r--nx-X11/lib/font/fontfile/fontdir.c832
-rw-r--r--nx-X11/lib/font/fontfile/fontenc.c952
-rw-r--r--nx-X11/lib/font/fontfile/fontencI.h46
-rw-r--r--nx-X11/lib/font/fontfile/fontencc.c77
-rw-r--r--nx-X11/lib/font/fontfile/fontfile.c1147
-rw-r--r--nx-X11/lib/font/fontfile/fontscale.c447
-rw-r--r--nx-X11/lib/font/fontfile/gunzip.c227
-rw-r--r--nx-X11/lib/font/fontfile/module/Imakefile21
-rw-r--r--nx-X11/lib/font/fontfile/printerfont.c178
-rw-r--r--nx-X11/lib/font/fontfile/register.c109
-rw-r--r--nx-X11/lib/font/fontfile/renderers.c117
-rw-r--r--nx-X11/lib/font/include/Imakefile11
-rw-r--r--nx-X11/lib/font/include/bitmap.h116
-rw-r--r--nx-X11/lib/font/include/bufio.h92
-rw-r--r--nx-X11/lib/font/include/fntfil.h178
-rw-r--r--nx-X11/lib/font/include/fntfilio.h56
-rw-r--r--nx-X11/lib/font/include/fntfilst.h198
-rw-r--r--nx-X11/lib/font/include/fontencc.h36
-rw-r--r--nx-X11/lib/font/include/fontmisc.h133
-rw-r--r--nx-X11/lib/font/include/fontmod.h16
-rw-r--r--nx-X11/lib/font/include/fontshow.h37
-rw-r--r--nx-X11/lib/font/include/fontutil.h26
-rw-r--r--nx-X11/lib/font/include/fontxlfd.h100
-rw-r--r--nx-X11/lib/font/stubs/Imakefile25
-rw-r--r--nx-X11/lib/font/stubs/cauthgen.c14
-rw-r--r--nx-X11/lib/font/stubs/csignal.c14
-rw-r--r--nx-X11/lib/font/stubs/delfntcid.c13
-rw-r--r--nx-X11/lib/font/stubs/errorf.c13
-rw-r--r--nx-X11/lib/font/stubs/fatalerror.c13
-rw-r--r--nx-X11/lib/font/stubs/findoldfnt.c14
-rw-r--r--nx-X11/lib/font/stubs/getcres.c14
-rw-r--r--nx-X11/lib/font/stubs/getdefptsize.c14
-rw-r--r--nx-X11/lib/font/stubs/getnewfntcid.c14
-rw-r--r--nx-X11/lib/font/stubs/gettime.c14
-rw-r--r--nx-X11/lib/font/stubs/initfshdl.c15
-rw-r--r--nx-X11/lib/font/stubs/regfpefunc.c28
-rw-r--r--nx-X11/lib/font/stubs/rmfshdl.c15
-rw-r--r--nx-X11/lib/font/stubs/servclient.c3
-rw-r--r--nx-X11/lib/font/stubs/setfntauth.c14
-rw-r--r--nx-X11/lib/font/stubs/stfntcfnt.c14
-rw-r--r--nx-X11/lib/font/stubs/stubs.h27
-rw-r--r--nx-X11/lib/font/stubs/xpstubs.c24
-rw-r--r--nx-X11/lib/font/util/Imakefile43
-rw-r--r--nx-X11/lib/font/util/atom.c233
-rw-r--r--nx-X11/lib/font/util/fontaccel.c107
-rw-r--r--nx-X11/lib/font/util/fontnames.c123
-rw-r--r--nx-X11/lib/font/util/fontutil.c443
-rw-r--r--nx-X11/lib/font/util/fontxlfd.c637
-rw-r--r--nx-X11/lib/font/util/format.c126
-rw-r--r--nx-X11/lib/font/util/miscutil.c99
-rw-r--r--nx-X11/lib/font/util/patcache.c221
-rw-r--r--nx-X11/lib/font/util/private.c107
-rw-r--r--nx-X11/lib/font/util/utilbitmap.c188
-rw-r--r--nx-X11/lib/xtrans/Xtrans.c38
-rw-r--r--nx-X11/lib/xtrans/Xtrans.h2
-rw-r--r--nx-X11/lib/xtrans/Xtransint.h8
-rw-r--r--nx-X11/lib/xtrans/Xtranssock.c16
-rw-r--r--nx-X11/lib/xtrans/Xtransutil.c9
-rw-r--r--nx-X11/programs/Imakefile146
-rw-r--r--nx-X11/programs/Xserver/GL/glx/Imakefile2
-rw-r--r--nx-X11/programs/Xserver/Imakefile929
-rw-r--r--nx-X11/programs/Xserver/Xext/Imakefile20
-rw-r--r--nx-X11/programs/Xserver/Xext/dmx.c1133
-rw-r--r--nx-X11/programs/Xserver/Xext/extmod/Imakefile2
-rw-r--r--nx-X11/programs/Xserver/Xext/xprint.c2760
-rw-r--r--nx-X11/programs/Xserver/composite/Imakefile2
-rw-r--r--nx-X11/programs/Xserver/dix/Imakefile8
-rw-r--r--nx-X11/programs/Xserver/dix/dispatch.c2
-rw-r--r--nx-X11/programs/Xserver/dix/dixfonts.c17
-rw-r--r--nx-X11/programs/Xserver/dix/main.c9
-rw-r--r--nx-X11/programs/Xserver/dix/xpstubs.c27
-rw-r--r--nx-X11/programs/Xserver/fb/Imakefile2
-rw-r--r--nx-X11/programs/Xserver/hw/Imakefile26
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Composite.c10
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Font.c4
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Font.h2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/GC.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Imakefile24
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Init.c10
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXcomposite.c359
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXcomposite.h4
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXcompositeext.h4
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXcompositeint.h76
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXcompositeproto.h148
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXdamage.c2072
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXdispatch.c541
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c294
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXevents.c1049
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXextension.c54
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXglxext.c63
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXglyph.c94
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXglyphcurs.c25
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXglyphstr.h35
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXmiexpose.c71
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXmiglyph.c16
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXmitrap.c129
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXmiwindow.c49
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXpicture.c944
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXpicturestr.h206
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXproperty.c157
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXrender.c909
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXresource.c319
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXshm.c161
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXwindow.c566
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXxvdisp.c94
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Render.c60
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXdamage.c2073
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXdispatch.c4682
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXdixfonts.c2805
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c5044
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXextension.c508
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXglxext.c575
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c581
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXglyphcurs.c241
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXglyphstr.h174
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXmiexpose.c979
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXmiglyph.c318
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXmitrap.c233
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXmiwindow.c1222
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXpicture.c2274
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXpicturestr.h679
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXproperty.c992
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c3861
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c1250
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c1498
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXwindow.c4167
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/X/NXxvdisp.c2292
-rw-r--r--nx-X11/programs/Xserver/mi/Imakefile4
-rw-r--r--nx-X11/programs/Xserver/mi/miinitext.c45
-rwxr-xr-xnx-X11/programs/Xserver/miext/damage/Imakefile2
-rw-r--r--nx-X11/programs/Xserver/os/Imakefile19
-rw-r--r--nx-X11/programs/Xserver/os/lbxio.c555
-rw-r--r--nx-X11/programs/Xserver/os/utils.c13
-rw-r--r--nx-X11/programs/Xserver/randr/Imakefile4
-rw-r--r--nx-X11/programs/Xserver/render/Imakefile4
-rw-r--r--nx-libs.spec155
-rw-r--r--nxcompshad/Makefile.in2
576 files changed, 6806 insertions, 135562 deletions
diff --git a/COPYING b/COPYING
index a2b32ef06..78988720e 100644
--- a/COPYING
+++ b/COPYING
@@ -3,6 +3,7 @@ The software components were originally downloaded from http://www.nomachine.com
The software has been improved via various patches by the X2Go project.
The patches reside in the subfolder doc/applied-patches/ of this source tree.
+Copyright (c) 2015 Arctica Project, https://github.com/ArcticaProject/.
Copyright (c) 2011-2014 X2Go Project, http://www.x2go.org/.
Copyright (c) 2001-2011 NoMachine, http://www.nomachine.com/.
diff --git a/Makefile b/Makefile
index 6400f21dd..c218d8604 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 \
@@ -155,15 +155,12 @@ install-full:
done; \
# Provide means for Xinerama support in NX/X2Go sessions. This
- # This also requires two post-install symlinks:
- # (DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_X11.so.6 -> /usr/<libdir>/libX11.so.6
- # (DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_Xext.so.6 -> /usr/<libdir>/libXext.so.6
+ # This also requires three post-install symlinks created by libnx-xinerama1:
+ # $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_X11.so.6 -> /usr/<libdir>/libX11.so.6
+ # $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libNX_Xext.so.6 -> /usr/<libdir>/libXext.so.6
+ # $(DESTDIR)$(NXLIBDIR)/X11/Xinerama/libXinerama.so.1 -> /usr/<libdir>/libNX_Xinerama.so.1
+ # Only create the owned directory here for nx-x11-common.
$(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)
diff --git a/README.keystrokes b/README.keystrokes
index 26782aa18..08cdafb46 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
@@ -60,23 +68,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
diff --git a/README.md b/README.md
index affcf1ce8..31d603c8d 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
-NX development by ArticaProject, X2Go and TheQVD
-------------------------------------------------
+# NX development by ArticaProject, X2Go and TheQVD
This source tree started as a re-distribution of those NX packages needed
to setup FreeNX and/or X2Go on a Linux server.
@@ -11,12 +10,12 @@ In 2014, TheQVD project run by the Spanish company "The Quindel Group"
joined the group of people being interested in NX maintenance and
improvement.
-Since 2015, the Arctica Project has joined in the NX development. The
-core devs of X2Go and Arctica have agreed on stopping to redistribute
-NX and instead of that: continue the development of NX 3.x as new
-upstream (starting with NX 3.5.99).
+Since 2015, the Arctica Project has joined in the NX development. The core devs
+of X2Go, Arctica and TheQVD have agreed on stopping to redistribute NX and to
+continue the development of NX 3.x as the new upstream instead. The package
+will see a slight name change to **nx-libs** starting with version 3.5.99.0.
-Our goal is:
+Our intentions for nx-libs are:
* provide _one_ tarball that builds NX projects via a common Makefile
* provide _one_ tarball for distribution packagers
@@ -28,22 +27,41 @@ This source tree is maintained on Github:
https://github.com/ArcticaProject/nx-libs (3.6.x branch)
-Release goals for the post-NoMachine nx-libs release series 3.6.x:
+For the the post-NoMachine era of nx-libs, we will focus on two release
+phases for the upcoming year (06/2015 - 06/2016).
+
+## Release series 3.6.0.x
+
+Scheduled for Q3/2015.
+
+Release goals (phase 1) for nx-libs release series 3.6.0.x:
* CVE security audit (complete)
* remove unused code (+/- complete)
-* no bundled libraries anymore (work in progress)
+* no bundled non-X11 libraries anymore (done)
+* no bundled Mesa library anymore (todo)
* complete imake cleanup (work in progress)
* replace as many liNX_X* libraries by X.org's libX* libraries
(work in progress)
+* support for iOS (nxproxy)
+
+## Release series 3.7.0.x
+
+Scheduled for Q1/2016.
+
+Release goals (phase 2) for nx-libs release series 3.7.0.x (not branched-off, yet):
+
+* provide support for latest X11 extensions
* socket communication for nxproxy -C <-> nxproxy -S connections
(todo)
* event FIFO sockets for attaching external applications
(todo)
+* allow embedding of nxproxy into other windows
+* support for multimedia
-If you have any questions about this NX development or want to file a
-bug, then please contact the Arctica or the X2Go developers via the
-Github issue tracker.
+If you have any questions about this NX development or want to file a bug
+report, please contact the Arctica developers, the X2Go developers or the
+TheQVD developers via the project's Github issue tracker.
-thanks+light+love, 20150313
+thanks+light+love, 20150515
Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
diff --git a/debian/changelog b/debian/changelog
index 4bbe4028f..e664e5b0f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -29,6 +29,152 @@ nx-libs (2:3.5.0.32-0x2go1) UNRELEASED; urgency=low
* nx-X11: add more NULL guards to TEST and DEBUG sections of Render.c.
Affects:
- 0990_fix-DEBUG-and-TEST-builds.full.patch
+ * 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.
+ * debian/libnx-xinerama1.*: also create libXinerama symlink in
+ libnx-xinerama1.postinst.postinst (and remove in
+ libnx-xinerama1.postinst.prerm.)
+ Backported from Arctica GH 3.6.x branch.
+ * debian/libnx-xinerama1.*: move Xinerama dir back to nx-x11-common. Only
+ delete known files. Fixes RPM build failures.
+ Backported from Arctica GH 3.6.x branch.
+ * nx-libs.spec: actually create libXinerama.so.1 symlink during build phase.
+ Backported from Arctica GH 3.6.x branch.
+ * debian/control: workaround missing dependencies of nxagent on Ubuntu for
+ now.
+ * debian/libnx-xinerama1.*: fix faulty logic when creating symlinks.
+
+ [ 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 19:19:32 +0100
diff --git a/debian/control b/debian/control
index 65a8f9433..0f575421f 100644
--- a/debian/control
+++ b/debian/control
@@ -12,12 +12,12 @@ Build-Depends:
libjpeg-dev,
zlib1g-dev,
quilt (>= 0.46-7~),
- libfontconfig1-dev,
- libfontenc-dev,
- libfreetype6-dev,
libxmltok1-dev,
libxml2-dev,
libxpm-dev,
+ libxfont-dev,
+ libxdmcp-dev,
+ libxdamage-dev,
autoconf,
pkg-config,
x11proto-core-dev,
@@ -284,20 +284,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 damaged region extension library
+Description: nx-X11 damaged region extension 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.
.
- libNX_Xdamage provides an X Window System client interface to the DAMAGE
- extension to the X protocol.
+ This package removes the obsoleted libNX_Xdamage.so.1 library. With
+ recent versions of NX, the system-wide installed libXdamage gets used.
.
- The Damage extension provides for notification of when on-screen regions have
- been 'damaged' (altered)
+ This package can be safely removed.
Package: libnx-xdamage-dev
Provides: libnx-xdamage1-dev
@@ -305,23 +301,17 @@ Section: libdevel
Architecture: any
Multi-Arch: same
Depends:
- libnx-xdamage1 (= ${binary:Version}),
- nx-x11proto-damage-dev (= ${binary:Version}),
${misc:Depends},
-Breaks: nxlibs (<= 3.5.1),
- libnx-x11-dev (<< 2:3.5.0.29-0x2go2~),
-Description: nx-X11 damaged region extension library (development headers)
+Description: nx-X11 damaged region extension 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.
.
- libNX_Xdamage provides an X Window System client interface to the DAMAGE
- extension to the X protocol.
- .
- The Damage extension provides for notification of when on-screen regions have
- been 'damaged' (altered)
+ This package removes the obsoleted headers for the libNX_Xdamage.so.1
+ library. With recent versions of NX, the system-wide installed libXdamage
+ gets used.
.
- This package contains the development headers for this library.
+ This package can be safely removed.
Package: nx-x11proto-damage-dev
Section: libdevel
@@ -329,16 +319,16 @@ Architecture: any
Multi-Arch: same
Depends:
${misc:Depends},
-Breaks: nxlibs (<= 3.5.1),
- libnx-x11-dev (<< 2:3.5.0.29-0x2go2~),
-Description: nx-X11 Damage extension wire protocol
+Description: nx-X11 Damage extension wire protocol (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.
.
- This package provides development headers describing the wire protocol
- for the Damage extension in nx-X11, used to notify clients of changes
- made to particular areas.
+ This package removes the obsoleted wire protocol headers for the
+ libNX_Xdamage.so.1 library. With recent versions of NX, the system-wide
+ installed libXdamage gets used.
+ .
+ This package can be safely removed.
Package: libnx-xdamage1-dbg
Architecture: any
@@ -346,22 +336,18 @@ Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
- libnx-xdamage1 (= ${binary:Version}),
${misc:Depends},
Section: debug
-Breaks: nx-x11-dbg (<< 2:3.5.0.29-0x2go2~),
-Description: nx-X11 damaged region extension library (debug package)
+Description: nx-X11 damaged region extension 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.
.
- libNX_Xdamage provides an X Window System client interface to the DAMAGE
- extension to the X protocol.
+ This package removes the obsoleted debug symbols for the
+ libNX_Xdamage.so.1 library. With recent versions of NX, the system-wide
+ installed libXdamage gets used.
.
- The Damage extension provides for notification of when on-screen regions have
- been 'damaged' (altered)
- .
- This package contains debug symbols for this library.
+ This package can be safely removed.
Package: libnx-xdmcp6
Architecture: any
@@ -369,19 +355,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
@@ -389,21 +372,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
@@ -411,21 +390,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
@@ -979,7 +955,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.
diff --git a/debian/libnx-x11-6.symbols b/debian/libnx-x11-6.symbols
index 4b7ceacbe..b9ab97120 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-xdamage-dev.install.in b/debian/libnx-xdamage-dev.install.in
deleted file mode 100644
index 068f3badd..000000000
--- a/debian/libnx-xdamage-dev.install.in
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib/*/libNX_Xdamage.so
-usr/include/*/nx/X11/extensions/Xdamage.h
diff --git a/debian/libnx-xdamage1.install.in b/debian/libnx-xdamage1.install.in
deleted file mode 100644
index 42bd90874..000000000
--- a/debian/libnx-xdamage1.install.in
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/*/libNX_Xdamage.so.*
diff --git a/debian/libnx-xdamage1.symbols b/debian/libnx-xdamage1.symbols
deleted file mode 100644
index 09310e69a..000000000
--- a/debian/libnx-xdamage1.symbols
+++ /dev/null
@@ -1,9 +0,0 @@
-libNX_Xdamage.so.1 libnx-xdamage1 #MINVER#
- XDamageCreate@Base 3.5.0.29
- XDamageDestroy@Base 3.5.0.29
- XDamageExtensionInfo@Base 3.5.0.29
- XDamageExtensionName@Base 3.5.0.29
- XDamageFindDisplay@Base 3.5.0.29
- XDamageQueryExtension@Base 3.5.0.29
- XDamageQueryVersion@Base 3.5.0.29
- XDamageSubtract@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 2c2457b10..000000000
--- 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 69100139e..000000000
--- 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 49645d63a..000000000
--- 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/libnx-xinerama1.postinst.in b/debian/libnx-xinerama1.postinst.in
index c690be387..6d9ba36ef 100755
--- a/debian/libnx-xinerama1.postinst.in
+++ b/debian/libnx-xinerama1.postinst.in
@@ -26,14 +26,17 @@ case "$1" in
libdir=/usr/lib/#DEB_BUILD_MULTIARCH#
- rm -f /usr/lib/nx/X11/Xinerama/libNX_X11.so.6
- rm -f /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6
- if test -e $libdir/libX11.so.6; then
+ # Already existent files are not removed.
+ # Users will need to explicitly remove them and (re-) configure this package.
+ if ! test -e $libdir/libX11.so.6; then
ln -s $libdir/libX11.so.6 /usr/lib/nx/X11/Xinerama/libNX_X11.so.6
fi
- if test -e $libdir/libXext.so.6; then
+ if ! test -e $libdir/libXext.so.6; then
ln -s $libdir/libXext.so.6 /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6
fi
+ if ! test -e $libdir/libNX_Xinerama.so.1; then
+ ln -s $libdir/libNX_Xinerama.so.1 /usr/lib/nx/X11/Xinerama/libXinerama.so.1
+ fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/debian/libnx-xinerama1.prerm b/debian/libnx-xinerama1.prerm
index 3fcd330e6..8cca06c85 100755
--- a/debian/libnx-xinerama1.prerm
+++ b/debian/libnx-xinerama1.prerm
@@ -1,37 +1,46 @@
#!/bin/sh
-# postrm script for x2goserver-fmbindings
+# prerm script for libnx-xinerama1
#
# see: dh_installdeb(1)
-
-set -e
-
# summary of how this script can be called:
-# * <postrm> `remove'
-# * <postrm> `purge'
-# * <old-postrm> `upgrade' <new-version>
-# * <new-postrm> `failed-upgrade' <old-version>
-# * <new-postrm> `abort-install'
-# * <new-postrm> `abort-install' <old-version>
-# * <new-postrm> `abort-upgrade' <old-version>
-# * <disappearer's-postrm> `disappear' <overwriter>
-# <overwriter-version>
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
+set -e
+
+
case "$1" in
- purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
- if test -e /usr/lib/nx/X11/Xinerama/libNX_X11.so.6; then
- rm -f /usr/lib/nx/X11/Xinerama/libNX_X11.so.6
- fi
- if test -e /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6; then
- rm -f /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6
+ remove)
+ if test -d /usr/lib/nx/X11/Xinerama; then
+ if test -e /usr/lib/nx/X11/Xinerama/libNX_X11.so.6; then
+ rm -f /usr/lib/nx/X11/Xinerama/libNX_X11.so.6
+ fi
+
+ if test -e /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6; then
+ rm -f /usr/lib/nx/X11/Xinerama/libNX_Xext.so.6
+ fi
+
+
+ if test -e /usr/lib/nx/X11/Xinerama/libXinerama.so.1; then
+ rm -f /usr/lib/nx/X11/Xinerama/libXinerama.so.1
+ fi
fi
- ;;
+ ;;
+ deconfigure|upgrade|failed-upgrade)
+ :
+ ;;
*)
- echo "postrm called with unknown argument \`$1'" >&2
+ echo "prerm called with unknown argument \`$1'" >&2
exit 1
- ;;
+ ;;
esac
# dh_installdeb will replace this with shell code automatically
diff --git a/debian/nx-x11proto-damage-dev.install.in b/debian/nx-x11proto-damage-dev.install.in
deleted file mode 100644
index 949549f17..000000000
--- a/debian/nx-x11proto-damage-dev.install.in
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/include/*/nx/X11/extensions/damageproto.h
-usr/include/*/nx/X11/extensions/damagewire.h \ No newline at end of file
diff --git a/debian/roll-tarballs.sh b/debian/roll-tarballs.sh
index c7cac5f08..954986b5f 100755
--- a/debian/roll-tarballs.sh
+++ b/debian/roll-tarballs.sh
@@ -33,33 +33,33 @@ usage() {
PROJECT="nx-libs"
NULL=""
-test -d .git || usage
+test -d ".git" || usage
RELEASE="$1"
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
- 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 " '${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}/"
+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,15 +116,15 @@ 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}/"
+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 \
@@ -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"
diff --git a/debian/rules b/debian/rules
index 2375b46ac..16a09fb3f 100755
--- a/debian/rules
+++ b/debian/rules
@@ -43,12 +43,10 @@ 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
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
@@ -59,15 +57,12 @@ 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
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
@@ -86,12 +81,9 @@ override_dh_strip:
dh_strip -plibnx-x11-6 --dbg-package=libnx-x11-6-dbg
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
- 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
diff --git a/doc/examples/run-nxproxy2nxproxy-test b/doc/examples/run-nxproxy2nxproxy-test
new file mode 100755
index 000000000..b7bf64d0f
--- /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"
+
diff --git a/doc/nx-X11_vs_XOrg69_patches/host.def.NX.patch b/doc/nx-X11_vs_XOrg69_patches/host.def.NX.patch
index f3454e760..cd1b1fbf6 100644
--- a/doc/nx-X11_vs_XOrg69_patches/host.def.NX.patch
+++ b/doc/nx-X11_vs_XOrg69_patches/host.def.NX.patch
@@ -787,7 +787,7 @@
+/*
+ * To build static and shared libraries with debugging information, uncomment
+ * this. Assumes you have Gcc2.
-+ * (If you don't have Gcc2, you can use the DebugLib{X11,Xt,Xaw,...} variables
++ * (If you don't have Gcc2, you can use the DebugLib{X11,...} variables
+ * to build debugging versions of the libraries separately.)
+ *
+#define DebuggableLibraries YES
diff --git a/etc/keystrokes.cfg b/etc/keystrokes.cfg
index a5e521071..007a18288 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>
diff --git a/nx-X11/Imakefile b/nx-X11/Imakefile
index 3cb1e1bc3..46ca9e70c 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/Imakefile b/nx-X11/config/Imakefile
index f589e9636..5c95a5d80 100644
--- a/nx-X11/config/Imakefile
+++ b/nx-X11/config/Imakefile
@@ -6,11 +6,14 @@ XCOMM $XFree86: xc/config/Imakefile,v 1.3 2001/01/17 16:22:29 dawes Exp $
#undef BootstrapCleanSubdirs
#define BootstrapCleanSubdirs BOOTSTRAPSUBDIRS="$(BOOTSTRAPSUBDIRS)"
-BOOTSTRAPSUBDIRS = imake makedepend
-#if BuildDPSLibrary
-PSWRAPDIR = pswrap
-#endif
-SUBDIRS = cf $(BOOTSTRAPSUBDIRS) util $(PSWRAPDIR)
+NULL =
+
+BOOTSTRAPSUBDIRS = \
+ imake \
+ makedepend \
+ $(NULL)
+
+SUBDIRS = cf $(BOOTSTRAPSUBDIRS)
#if (defined(XFree86VersionString) || defined(XorgVersionString)) \
&& defined(ProjectRoot) && \
diff --git a/nx-X11/config/cf/Imake.cf b/nx-X11/config/cf/Imake.cf
index 16b79c834..76e4664aa 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/cf/Imake.rules b/nx-X11/config/cf/Imake.rules
index 3923e4a10..e023b6d26 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 595617267..dbc38b54c 100644
--- a/nx-X11/config/cf/Imake.tmpl
+++ b/nx-X11/config/cf/Imake.tmpl
@@ -588,32 +588,9 @@ X_BYTE_ORDER = ByteOrder
#ifndef HasFfs
#define HasFfs YES
#endif
-#ifndef HasZlib
-#define HasZlib YES
-#endif
-#ifndef OsNeedZlibHeaders
-#define OsNeedZlibHeaders !HasZlib
-#endif
-#if !HasZlib /* if OS doesn't have it, we'll build it */
-XCOMM Building your own zlib can be a harmful security risk and is
-XCOMM deprecated; please strongly consider using vendor-supplied packages.
-#undef GzipLibrary /* GzipLibrary was valid only if HasZlib */
-#endif
#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
-#endif
#if HasKrbIV
#ifndef KrbIVIncludes
#define KrbIVIncludes /**/
diff --git a/nx-X11/config/cf/README b/nx-X11/config/cf/README
index c4c5f59ab..66d9639f9 100644
--- a/nx-X11/config/cf/README
+++ b/nx-X11/config/cf/README
@@ -93,7 +93,6 @@ Imake.tmpl provides defaults for the following variables:
HasVarDirectory boolean for system has /var
HasVFork boolean for system has vfork()
HasVoidSignalReturn boolean for POSIX signal() procs
- HasZlib boolean for system has libz
IncludeSharedObjectInNormalLib define for static libs to include
-fPIC objects on relevant archs
IncRoot parent of X11 include directory
@@ -178,44 +177,28 @@ 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
BuildEVI build EVI server extension
- BuildLBX build LBX (aka X.fast) server extension
BuildMultibuffer build Multibuffer extension (obsolete)
BuildPlugin build xrx plug-in for web browsers
BuildRECORD Build RECORD extension
BuildServer build X server
- BuildXAudio build Audio
- BuildXAServer build Audio server
BuildXCSecurity Build Security Extension
BuildXInputExt build X Input extension (requires ddx support,
which exists only in Xhp and XFree86)
- BuildXInputLib build X Input library
BuildXKB build X Keyboard Extension?
BuildXKBlib build X Keyboard Extension into Xlib?
UseXKBInClients Use XKB functions in normal clients?
ConfigDir install directory for config files
ConnectionFlags -D's for supported transports
ContribDir location of user-contributed sources
- DebugLibFS build libFS_d.a
- DebugLibICE build libICE_d.a
- DebugLibSM build libSM_d.a
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
- DebugLibXt build libXt_d.a
DebugLibXtst build libXtst_d.a
- 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
@@ -227,21 +210,11 @@ 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?
- InstallFSConfig install fs config file over old?
InstallLibManPages boolean for installing library man pages
InstallSecurityConfig install server security policy file over old?
- InstallXdmConfig install xdm config files over old?
- InstallXinitConfig install xinit config files over old?
KrbIVDefines defines for use with KerberosIV
LibDir directory in which to install X11 support files
LibManSuffix man suffix for library pages
@@ -256,35 +229,17 @@ X11.tmpl provides defaults for the following variables:
MiscManDir directory in which to install misc man pages
NeedDefaultDepLibs boolean for enabling default DEPLIBS
NlsDir directory in which to install nls files
- NormalLibFS build libFS.a
- NormalLibICE build libICE.a
- NormalLibSM build libSM.a
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
- NormalLibXt build libXt.a
NormalLibXtst build libXtst.a
- NormalLibXag build libXag.a
NormalOldX build liboldX.a
OsNameDefines If uname(2) unavailable, set to -DOS_NAME=OSName
PrimaryScreenResolution resolution of default server screen
- ProfileLibFS build libFS_p.a
- ProfileLibICE build libICE_p.a
- ProfileLibSM build libSM_p.a
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
- ProfileLibXt build libXt_p.a
ProfileLibXtst build libXtst_p.a
- ProfileLibXag build libXag_p.a
ProfileOldX build liboldX_p.a
ProjectX version indicating this is the X Window System
RemoveTargetProgramByMoving boolean for rm -f that doesn't
@@ -294,19 +249,10 @@ X11.tmpl provides defaults for the following variables:
ServerExtraDefines special -D's for server
ServerOSDefines OS -D's for server
ServerAssertDefines -DNDEBUG for no assertions, /**/ for assertions
- SharedLibFS boolean for making sharable libFS.so
- SharedLibICE boolean for making sharable libICE.so
- SharedLibSM boolean for making sharable libSM.so
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
- SharedLibXt boolean for making sharable libXt.so
SharedLibXtst boolean for making sharable libXtst.so
- SharedLibXag boolean for making sharable libXag.so
SharedOldX boolean for making sharable liboldX.so
ShmDefines MIT-SHM define
TwmDir directory in which to install twm config files
@@ -319,20 +265,9 @@ X11.tmpl provides defaults for the following variables:
XFileSearchPathDefault default path to search for app defaults files
XInputDefines XINPUT define
XMalloc0ReturnsNullDefines -D's specifically for libX11
- XawClientDepLibs DEPLIBS for clients that use Xaw
- XawClientLibs LOCAL_LIBRARIES for clients that use Xaw
XdmConfigurationSubdirectory name of default xdm configuration
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
@@ -387,56 +322,16 @@ An <os>Lib.rules file provides defaults for the following variables:
An <os>Lib.tmpl file provides defaults for the following variables:
- SharedFSReqs required libs for libFS.so
- SharedFSRev version number for libFS.so
- SharedICEReqs required libs for libICE.so
- SharedICERev version number for libICE.so
SharedOldXReqs required libs for liboldX.so
SharedOldXRev version number for liboldX.so
- SharedSMReqs required libs for libSM.so
- SharedSMRev version number for libSM.so
SharedX11Reqs required libs for libX11.so
SharedX11Rev version number for libX11.so
SharedXauReqs required libs for libXau.so
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
- SharedXiRev version number for libXi.so
- SharedXmuReqs required libs for libXmu.so
- SharedXmuRev version number for libXmu.so
- SharedXtReqs required libs for libXt.so
- SharedXtRev version number for libXt.so
SharedXtstReqs required libs for libXtst.so
SharedXtstRev version number for libXtst.so
- SharedXmReqs required libs for libXm.so
- SharedXmRev version number for libXm.so
- SharedMrmReqs required libs for libMrm.so
- SharedMrmRev version number for libMrm.so
- SharedUilReqs required libs for libUil.so
- SharedUilRev version number for libUil.so
- SharedTtReqs required libs for libtt.so
- SharedTtRev version number for libtt.so
- SharedPamReqs required libs for libpam.so
- SharedPamRev version number for libpam.so
- SharedDtSvcReqs required libs for libDtSvc.so
- SharedDtSvcRev version number for libDtSvc.so
- SharedDtSearchReqs required libs for libDtSearch.so
- SharedDtSearchRev version number for libDtSearch.so
- SharedDtWidgetReqs required libs for libDtWidget.so
- SharedDtWidgetRev version number for libDtWidget.so
- SharedDtHelpReqs required libs for libDtHelp.so
- SharedDtHelpRev version number for libDtHelp.so
- SharedDtPrintReqs required libs for libDtPrint.so
- SharedDtPrintRev version number for libDtPrint.so
- SharedDtTermReqs required libs for libDtTerm.so
- SharedDtTermRev version number for libDtTerm.so
- SharedDtMrmReqs required libs for libDtMrm.so
- SharedDtMrmRev version number for libDtMrm.so
Vendor.cf files and/or site/host specific .def files may define the
following variables:
@@ -457,17 +352,13 @@ The following variables are used by some part of the tree:
DvipsCmd command to turn .dvi file into PostScript
MotifBC using Motif 1.1.1, 1.1.2, or 1.1.3?
GetValuesBC compat GetValues behavior for broken apps?
- NeedBerklib application needs libXbsd?
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
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 4600f1824..de60cecaa 100644
--- a/nx-X11/config/cf/X11.tmpl
+++ b/nx-X11/config/cf/X11.tmpl
@@ -22,22 +22,6 @@ XCOMM $XFree86: xc/config/cf/X11.tmpl,v 1.248 2004/02/16 04:07:37 dawes Exp $
/* The following project-specific rules are defined at the end of this file:
*
* 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)
*/
/* X.Org release string */
@@ -138,175 +122,12 @@ 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
#endif
-#ifndef BuildFontServer
-#define BuildFontServer YES
-#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 | BuildFontServer)
-#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
-#ifndef BuildXAudio
-#define BuildXAudio (HasXAudio & HasCplusplus)
-#endif
-#ifndef HasXAServer
-#define HasXAServer NO
-#endif
-#ifndef BuildXAServer
-#define BuildXAServer (HasXAServer & HasCplusplus)
-#endif
#ifndef BuildX11Lib
#define BuildX11Lib BuildLibraries
#endif
@@ -336,10 +157,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
@@ -361,81 +178,36 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildXInputExt
#define BuildXInputExt NO
#endif
-#ifndef BuildXInputLib
-#define BuildXInputLib (BuildXInputExt && \
- (!BuildServersOnly || BuildLibrariesForDmx))
-#endif
#ifndef BuildEVI
#define BuildEVI YES
#endif
#ifndef BuildDBE
#define BuildDBE YES
#endif
-#ifndef BuildDBElib
-#define BuildDBElib BuildDBE
-#endif
#ifndef BuildDIS
#define BuildDIS NO
#endif
#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) || \
- XnestServer || XVirtualFramebufferServer || \
- XprtServer || XdmxServer)
-#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
#ifndef BuildXKB
#define BuildXKB YES
#endif
#ifndef BuildXKBlib
-#define BuildXKBlib (BuildXKB && (!BuildServersOnly || \
- XnestServer || XdmxServer || \
- BuildXkbcomp ))
+#define BuildXKBlib (BuildXKB && !BuildServersOnly)
#endif
#ifndef BuildXKBuilib
#define BuildXKBuilib (BuildXKB && !BuildServersOnly)
#endif
#ifndef BuildXKBfilelib
-#define BuildXKBfilelib (BuildXKB && (!BuildServersOnly || \
- BuildXkbcomp ))
+#define BuildXKBfilelib (BuildXKB && !BuildServersOnly)
#endif
#ifndef BuildXTrap
#define BuildXTrap YES
#endif
-#ifndef BuildXTrapLibrary
-#define BuildXTrapLibrary (BuildXTrap && !BuildServersOnly)
-#endif
/*
* WARNING: Setting UseXKBInClients to YES cause incompatibilities
@@ -460,13 +232,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
@@ -488,44 +253,10 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildPlugin
#define BuildPlugin HasPlugin
#endif
-#ifndef XpRasterDDX
-#define XpRasterDDX YES
-#endif
-#ifndef XpColorPclDDX
-#define XpColorPclDDX YES
-#endif
-#ifndef XpMonoPclDDX
-#define XpMonoPclDDX YES
-#endif
-#ifndef XpPostScriptDDX
-#define XpPostScriptDDX YES
-#endif
-#ifndef XpPdfDDX
-#define XpPdfDDX YES
-#endif
-#ifndef XpSvgDDX
-#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
-#ifndef BuildScreenSaverLibrary
-#define BuildScreenSaverLibrary (BuildScreenSaverExt && !BuildServersOnly)
-#endif
#ifndef BuildXF86VidModeExt
#define BuildXF86VidModeExt NO
#endif
@@ -551,21 +282,14 @@ XORGRELSTRING = XorgManVersionString
#define BuildXResExt NO
#endif
#ifndef BuildXResLibrary
-#define BuildXResLibrary (BuildXResExt && \
- (!BuildServersOnly || BuildDmxDevelTools))
+#define BuildXResLibrary (BuildXResExt && !BuildServersOnly)
#endif
#ifndef BuildXvExt
#define BuildXvExt NO
#endif
-#ifndef BuildXvLibrary
-#define BuildXvLibrary (BuildXvExt && !BuildServersOnly)
-#endif
#ifndef BuildXvMCExt
#define BuildXvMCExt NO
#endif
-#ifndef BuildXvMCLibrary
-#define BuildXvMCLibrary (BuildXvMCExt && !BuildServersOnly)
-#endif
#ifndef BuildGlxExt
#define BuildGlxExt NO
#else
@@ -582,13 +306,6 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildOSMesaLib
#define BuildOSMesaLib BuildGlxExt
#endif
-#ifndef BuildGLULibrary
-#define BuildGLULibrary (BuildGLXLibrary && BuildLibraries && \
- HasCplusplus)
-#endif
-#ifndef BuildGLwLibrary
-#define BuildGLwLibrary (BuildGLXLibrary && BuildLibraries)
-#endif
#ifndef BuildXDriInfo
#define BuildXDriInfo (BuildGLXLibrary && !BuildServersOnly)
#endif
@@ -598,60 +315,11 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildXF86RushLibrary
#define BuildXF86RushLibrary (BuildXF86RushExt && !BuildServersOnly)
#endif
-#ifndef BuildDPSLibraries
-#define BuildDPSLibraries NO
-#endif
-#ifndef BuildDPSLibrary
-#define BuildDPSLibrary BuildDPSLibraries
-#endif
-#ifndef BuildDPSTkLibrary
-#define BuildDPSTkLibrary BuildDPSLibraries
-#endif
-#ifndef BuildPSResLibrary
-#define BuildPSResLibrary BuildDPSLibraries
-#endif
-#ifndef BuildDPSClients
-#define BuildDPSClients BuildDPSLibraries
-#endif
#ifndef BuildRender
#define BuildRender YES
#endif
#ifndef BuildRenderLibrary
-#define BuildRenderLibrary (XdmxServer || !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)
-#endif
-#ifndef BuildExpatLibrary
-#define BuildExpatLibrary (UseExpat && !HasExpat)
-#endif
-#ifndef BuildFreetype2Library
-#define BuildFreetype2Library (UseFreetype2 && !HasFreetype2)
-#endif
-#ifndef Freetype2BuildDefines
-#define Freetype2BuildDefines /**/
+#define BuildRenderLibrary !BuildServersOnly
#endif
#ifndef BuildRandR
@@ -671,57 +339,26 @@ XORGRELSTRING = XorgManVersionString
#ifndef BuildDamage
#define BuildDamage BuildXfixes
#endif
-#ifndef BuildDamageLibrary
-#define BuildDamageLibrary !BuildServersOnly
-#endif
#ifndef BuildComposite
#define BuildComposite (BuildXfixes && BuildDamage)
#endif
#ifndef BuildCompositeLibrary
-#define BuildCompositeLibrary !BuildServersOnly && (BuildXfixesLibrary && \
- BuildDamageLibrary)
+#define BuildCompositeLibrary !BuildServersOnly && BuildXfixesLibrary
#endif
#ifndef BuildXevie
#define BuildXevie YES
#endif
-#ifndef BuildXevieLibrary
-#define BuildXevieLibrary !BuildServersOnly
-#endif
#ifndef BuildRootless
#define BuildRootless NO
#endif
-#ifndef BuildXterm
-#define BuildXterm NO
-#endif
-
-#ifndef BuildXkbcomp
-#define BuildXkbcomp BuildClients
-#endif
-
-#ifndef BuildXcursorLibrary
-#define BuildXcursorLibrary BuildRenderLibrary
-#endif
-
-#ifndef BuildXcursorgen
-#define BuildXcursorgen HasLibpng
-#endif
-
#ifndef DefaultCursorTheme
#define DefaultCursorTheme core
#endif
-#ifndef BuildAppleWMLibrary
-#define BuildAppleWMLibrary NO
-#endif
-
-#ifndef BuildWindowsWMLibrary
-#define BuildWindowsWMLibrary NO
-#endif
-
#ifndef BuildMiscDocs
#define BuildMiscDocs NO
#endif
@@ -747,40 +384,10 @@ XORGRELSTRING = XorgManVersionString
#ifndef InstallLibManPages
#define InstallLibManPages YES
#endif
-#ifndef InstallXtermSetUID
-#define InstallXtermSetUID YES /* xterm needs to be set uid */
-#endif
-#ifndef InstallXloadSetGID
-#define InstallXloadSetGID YES /* xload often needs set gid kmem */
-#endif
-#ifndef InstallXinitConfig
-#define InstallXinitConfig NO /* install sample xinit config */
-#endif
-#ifndef InstallXdmConfig
-#define InstallXdmConfig NO /* install sample xdm config */
-#endif
-#ifndef XdmServersType /* what Xservers files to use */
-#if BuildServer
-#define XdmServersType ws
-#else
-#define XdmServersType fs
-#endif
-#endif
-#ifndef InstallFSConfig
-#define InstallFSConfig NO /* install sample fs config */
-#endif
-#ifndef InstallAppDefFiles
-#define InstallAppDefFiles YES /* install application defaults */
-#endif
-#ifndef UseConfDirForAppDefaults
-#define UseConfDirForAppDefaults YES
-#endif
+
#ifndef UseConfDirForXkb
#define UseConfDirForXkb YES
#endif
-#ifndef CompressAllFonts
-#define CompressAllFonts NO
-#endif
#ifndef ThreadedX
#if HasPosixThreads || HasCThreads
#define ThreadedX YES /* multi-threaded libraries */
@@ -834,9 +441,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
@@ -888,19 +492,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
-#else
-#define XawI18nDefines -DUSE_XWCHAR_STRING
-#endif
-#endif
#if Malloc0ReturnsNull
#ifndef XMalloc0ReturnsNullDefines
#define XMalloc0ReturnsNullDefines Malloc0ReturnsNullDefines
@@ -997,20 +588,6 @@ FCHOWN_DEFINES = -DHAS_FCHOWN
#define XineramaDefines /**/
#endif
#endif
-#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
@@ -1034,13 +611,6 @@ FCHOWN_DEFINES = -DHAS_FCHOWN
# ifndef XkbDefaultRulesFile
# define XkbDefaultRulesFile XVendorStdFilePrefix
#endif
-#ifndef LbxDefines
-#if BuildLBX
-#define LbxDefines -DLBX
-#else
-#define LbxDefines /**/
-#endif
-#endif
#ifndef BigReqDefines
#if BuildBigReqsExt
#define BigReqDefines -DBIGREQS
@@ -1240,10 +810,10 @@ FCHOWN_DEFINES = -DHAS_FCHOWN
#endif
#ifndef PervasiveExtensionDefines
#define PervasiveExtensionDefines \
- ShapeDefines XInputDefines XkbDefines LbxDefines AppgroupDefines \
+ ShapeDefines XInputDefines XkbDefines AppgroupDefines \
XCSecurityDefines CupDefines PervasiveDBEDefines \
XF86BigfontExtensionDefines DPMSDefines \
- XprintDefines XineramaDefines \
+ XineramaDefines \
SitePervasiveExtensionDefines RenderDefines RandRDefines \
XfixesDefines XDamageDefines CompositeDefines XevieDefines \
RootlessDefines
@@ -1532,21 +1102,12 @@ FCHOWN_DEFINES = -DHAS_FCHOWN
#ifndef XLocaleDir
#define XLocaleDir $(LIBDIR)/locale
#endif
-#ifndef LbxproxyDir
-#define LbxproxyDir $(LIBDIR)/lbxproxy
-#endif
-#ifndef LbxproxyConfigSubdir /* under lbxproxy sources */
-#define LbxproxyConfigSubdir config
-#endif
#ifndef ProxyManagerDir
#define ProxyManagerDir $(LIBDIR)/proxymngr
#endif
#ifndef ServerConfigDir
#define ServerConfigDir $(LIBDIR)/xserver
#endif
-#ifndef XPrintDir
-#define XPrintDir ServerConfigDir
-#endif
#ifndef EtcX11Directory
#define EtcX11Directory /etc/X11
#endif
@@ -1603,10 +1164,6 @@ FCHOWN_DEFINES = -DHAS_FCHOWN
#define ForceNormalLib (HasGcc && !HasGcc2)
#endif
-#ifndef XkbComp
-#define XkbComp xkbcomp
-#endif
-
#ifndef PsWrap
# ifndef UseInstalled
# define PsWrap $(PSWRAPSRC)/pswrap
@@ -1677,48 +1234,22 @@ XCOMM X Window System make variables; these need to be coordinated with rules
XSMDIR = XsmDir /* xsm config files */
NLSDIR = NlsDir /* nls files */
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
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
@@ -1728,8 +1259,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
@@ -1737,12 +1266,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
- FONTSERVERSRC = $(PROGRAMSRC)/xfs
- FONTINCSRC = $(XTOP)/include/fonts
EXTINCSRC = $(XTOP)/include/extensions
- FTSOURCEDIR = FreeTypeSrcDir
DRMSRCDIR = DRMSrcDir
MESASRCDIR = MesaSrcDir
OGLSAMPLESRCDIR = OglSampleSrcDir
@@ -1795,15 +1319,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 */
@@ -1846,30 +1361,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
XLIBONLY = $(XONLYLIB)
LINTXONLYLIB = $(LINTXONLY)
-#if BuildScreenSaverLibrary
-#ifndef SharedLibXss
-#define SharedLibXss HasSharedLibraries
-#endif
-#ifndef NormalLibXss
-#define NormalLibXss (!SharedLibXss || ForceNormalLib)
-#endif
-#ifndef DebugLibXss
-#define DebugLibXss NO
-#endif
-#ifndef ProfileLibXss
-#define ProfileLibXss NO
-#endif
-#else
-#undef SharedLibXss
-#define SharedLibXss NO
-#undef NormalLibXss
-#define NormalLibXss NO
-#undef DebugLibXss
-#define DebugLibXss NO
-#undef ProfileLibXss
-#define ProfileLibXss NO
-#endif
-
#if BuildXF86MiscLibrary
#ifndef SharedLibXxf86misc
#define SharedLibXxf86misc HasSharedLibraries
@@ -1966,54 +1457,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
#define ProfileLibXxf86rush NO
#endif
-#if BuildXvLibrary
-#ifndef SharedLibXv
-#define SharedLibXv HasSharedLibraries
-#endif
-#ifndef NormalLibXv
-#define NormalLibXv (!SharedLibXv || ForceNormalLib)
-#endif
-#ifndef DebugLibXv
-#define DebugLibXv NO
-#endif
-#ifndef ProfileLibXv
-#define ProfileLibXv NO
-#endif
-#else
-#undef SharedLibXv
-#define SharedLibXv NO
-#undef NormalLibXv
-#define NormalLibXv NO
-#undef DebugLibXv
-#define DebugLibXv NO
-#undef ProfileLibXv
-#define ProfileLibXv NO
-#endif
-
-#if BuildXvMCLibrary
-#ifndef SharedLibXvMC
-#define SharedLibXvMC HasSharedLibraries
-#endif
-#ifndef NormalLibXvMC
-#define NormalLibXvMC (!SharedLibXvMC || ForceNormalLib)
-#endif
-#ifndef DebugLibXvMC
-#define DebugLibXvMC NO
-#endif
-#ifndef ProfileLibXvMC
-#define ProfileLibXvMC NO
-#endif
-#else
-#undef SharedLibXvMC
-#define SharedLibXvMC NO
-#undef NormalLibXvMC
-#define NormalLibXvMC NO
-#undef DebugLibXvMC
-#define DebugLibXvMC NO
-#undef ProfileLibXvMC
-#define ProfileLibXvMC NO
-#endif
-
#if BuildXineramaLibrary
#ifndef SharedLibXinerama
#define SharedLibXinerama HasSharedLibraries
@@ -2062,78 +1505,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
#define ProfileLibXRes NO
#endif
-#if BuildDPSLibrary
-#ifndef SharedLibDps
-#define SharedLibDps HasSharedLibraries
-#endif
-#ifndef NormalLibDps
-#define NormalLibDps (!SharedLibDps || ForceNormalLib)
-#endif
-#ifndef DebugLibDps
-#define DebugLibDps NO
-#endif
-#ifndef ProfileLibDps
-#define ProfileLibDps NO
-#endif
-#else
-#undef SharedLibDps
-#define SharedLibDps NO
-#undef NormalLibDps
-#define NormalLibDps NO
-#undef DebugLibDps
-#define DebugLibDps NO
-#undef ProfileLibDps
-#define ProfileLibDps NO
-#endif
-
-#if BuildDPSTkLibrary
-#ifndef SharedLibDpsTk
-#define SharedLibDpsTk HasSharedLibraries
-#endif
-#ifndef NormalLibDpsTk
-#define NormalLibDpsTk (!SharedLibDpsTk || ForceNormalLib)
-#endif
-#ifndef DebugLibDpsTk
-#define DebugLibDpsTk NO
-#endif
-#ifndef ProfileLibDpsTk
-#define ProfileLibDpsTk NO
-#endif
-#else
-#undef SharedLibDpsTk
-#define SharedLibDpsTk NO
-#undef NormalLibDpsTk
-#define NormalLibDpsTk NO
-#undef DebugLibDpsTk
-#define DebugLibDpsTk NO
-#undef ProfileLibDpsTk
-#define ProfileLibDpsTk NO
-#endif
-
-#if BuildPSResLibrary
-#ifndef SharedLibPSRes
-#define SharedLibPSRes HasSharedLibraries
-#endif
-#ifndef NormalLibPSRes
-#define NormalLibPSRes (!SharedLibPSRes || ForceNormalLib)
-#endif
-#ifndef DebugLibPSRes
-#define DebugLibPSRes NO
-#endif
-#ifndef ProfileLibPSRes
-#define ProfileLibPSRes NO
-#endif
-#else
-#undef SharedLibPSRes
-#define SharedLibPSRes NO
-#undef NormalLibPSRes
-#define NormalLibPSRes NO
-#undef DebugLibPSRes
-#define DebugLibPSRes NO
-#undef ProfileLibPSRes
-#define ProfileLibPSRes NO
-#endif
-
#if BuildRenderLibrary
#ifndef SharedLibXrender
#define SharedLibXrender HasSharedLibraries
@@ -2206,30 +1577,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
#define ProfileLibXfixes NO
#endif
-#if BuildDamageLibrary
-#ifndef SharedLibXdamage
-#define SharedLibXdamage HasSharedLibraries
-#endif
-#ifndef NormalLibXdamage
-#define NormalLibXdamage (!SharedLibXdamage || ForceNormalLib)
-#endif
-#ifndef DebugLibXdamage
-#define DebugLibXdamage NO
-#endif
-#ifndef ProfileLibXdamage
-#define ProfileLibXdamage NO
-#endif
-#else
-#undef SharedLibXdamage
-#define SharedLibXdamage NO
-#undef NormalLibXdamage
-#define NormalLibXdamage NO
-#undef DebugLibXdamage
-#define DebugLibXdamage NO
-#undef ProfileLibXdamage
-#define ProfileLibXdamage NO
-#endif
-
#if BuildCompositeLibrary
#ifndef SharedLibXcomposite
#define SharedLibXcomposite HasSharedLibraries
@@ -2254,126 +1601,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
#define ProfileLibXcomposite NO
#endif
-#if BuildXevieLibrary
-#ifndef SharedLibXevie
-#define SharedLibXevie HasSharedLibraries
-#endif
-#ifndef NormalLibXevie
-#define NormalLibXevie (!SharedLibXevie || ForceNormalLib)
-#endif
-#ifndef DebugLibXevie
-#define DebugLibXevie NO
-#endif
-#ifndef ProfileLibXevie
-#define ProfileLibXevie NO
-#endif
-#else
-#undef SharedLibXevie
-#define SharedLibXevie NO
-#undef NormalLibXevie
-#define NormalLibXevie NO
-#undef DebugLibXevie
-#define DebugLibXevie NO
-#undef ProfileLibXevie
-#define ProfileLibXevie NO
-#endif
-
-#if BuildXcursorLibrary
-#ifndef SharedLibXcursor
-#define SharedLibXcursor HasSharedLibraries
-#endif
-#ifndef NormalLibXcursor
-#define NormalLibXcursor (!SharedLibXcursor || ForceNormalLib)
-#endif
-#ifndef DebugLibXcursor
-#define DebugLibXcursor NO
-#endif
-#ifndef ProfileLibXcursor
-#define ProfileLibXcursor NO
-#endif
-#else
-#undef SharedLibXcursor
-#define SharedLibXcursor NO
-#undef NormalLibXcursor
-#define NormalLibXcursor NO
-#undef DebugLibXcursor
-#define DebugLibXcursor NO
-#undef ProfileLibXcursor
-#define ProfileLibXcursor NO
-#endif
-
-#if BuildAppleWMLibrary
-#ifndef SharedLibAppleWM
-#define SharedLibAppleWM HasSharedLibraries
-#endif
-#ifndef NormalLibAppleWM
-#define NormalLibAppleWM (!SharedLibAppleWM || ForceNormalLib)
-#endif
-#ifndef DebugLibAppleWM
-#define DebugLibAppleWM NO
-#endif
-#ifndef ProfileLibAppleWM
-#define ProfileLibAppleWM NO
-#endif
-#else
-#undef SharedLibAppleWM
-#define SharedLibAppleWM NO
-#undef NormalLibAppleWM
-#define NormalLibAppleWM NO
-#undef DebugLibAppleWM
-#define DebugLibAppleWM NO
-#undef ProfileLibAppleWM
-#define ProfileLibAppleWM NO
-#endif
-
-#if BuildWindowsWMLibrary
-#ifndef SharedLibWindowsWM
-#define SharedLibWindowsWM HasSharedLibraries
-#endif
-#ifndef NormalLibWindowsWM
-#define NormalLibWindowsWM (!SharedLibWindowsWM || ForceNormalLib)
-#endif
-#ifndef DebugLibWindowsWM
-#define DebugLibWindowsWM NO
-#endif
-#ifndef ProfileLibWindowsWM
-#define ProfileLibWindowsWM NO
-#endif
-#else
-#undef SharedLibWindowsWM
-#define SharedLibWindowsWM NO
-#undef NormalLibWindowsWM
-#define NormalLibWindowsWM NO
-#undef DebugLibWindowsWM
-#define DebugLibWindowsWM NO
-#undef ProfileLibWindowsWM
-#define ProfileLibWindowsWM NO
-#endif
-
-#if BuildGLULibrary
-#ifndef SharedLibGlu
-#define SharedLibGlu HasSharedLibraries
-#endif
-#ifndef NormalLibGlu
-#define NormalLibGlu (!SharedLibX11 | ForceNormalLib)
-#endif
-#ifndef DebugLibGlu
-#define DebugLibGlu NO
-#endif
-#ifndef ProfileLibGlu
-#define ProfileLibGlu NO
-#endif
-#else
-#undef SharedLibGlu
-#define SharedLibGlu NO
-#undef NormalLibGlu
-#define NormalLibGlu NO
-#undef DebugLibGlu
-#define DebugLibGlu NO
-#undef ProfileLibGlu
-#define ProfileLibGlu NO
-#endif
-
#if BuildGLXLibrary
#ifndef SharedLibGlx
#define SharedLibGlx HasSharedLibraries
@@ -2419,37 +1646,6 @@ ProjectUnsharedLibReferences(XONLY,NX_X11,$(XLIBSRC),XBuildLibDir)
#undef ProfileLibGlx
#define ProfileLibGlx NO
#endif
-/*
- * Only make a shared GLw library on systems with Weak symbols
- * because it depends on Motif. See xc/lib/GLw/README.txt for details
- */
-#if BuildGLwLibrary
-#ifndef SharedLibGLw
-#define SharedLibGLw HasSharedLibraries && HasWeakSymbols
-#endif
-#ifndef NormalLibGLw
-#define NormalLibGLw (!SharedLibGLw || ForceNormalLib)
-#endif
-#ifndef DebugLibGLw
-#define DebugLibGLw NO /* debugged widget library */
-#endif
-#ifndef ProfileLibGLw
-#define ProfileLibGLw NO /* profiled widget library */
-#endif
-#ifndef GLwUseXmStubs
- /* create stub (weak) Motif symbols */
-#define GLwUseXmStubs SharedLibGLw && HasWeakSymbols
-#endif
-#else
-#undef SharedLibGLw
-#define SharedLibGLw NO
-#undef NormalLibGLw
-#define NormalLibGLw NO
-#undef DebugLibGLw
-#define DebugLibGLw NO
-#undef ProfileLibGLw
-#define ProfileLibGLw NO
-#endif
#ifndef SharedLibXext
#define SharedLibXext HasSharedLibraries
@@ -2477,16 +1673,6 @@ LINTEXTENSIONLIB = $(LINTEXTENSION)
XLIB = $(EXTENSIONLIB) $(XONLYLIB)
LINTXLIB = $(LINTXONLYLIB)
- XSSLIBSRC = $(LIBSRC)/Xss
-#if SharedLibXss
-#ifndef SharedXssRev
-#define SharedXssRev 1.0
-#endif
-SharedLibReferences(XSS,NX_Xss,$(XSSLIBSRC),SOXSSREV,SharedXssRev)
-#else
-ProjectUnsharedLibReferences(XSS,NX_Xss,$(XSSLIBSRC),XBuildLibDir)
-#endif
-
XXF86MISCLIBSRC = $(LIBSRC)/Xxf86misc
#if SharedLibXxf86misc
#ifndef SharedXxf86miscRev
@@ -2517,30 +1703,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
@@ -2551,28 +1713,6 @@ SharedLibReferences(XXF86RUSH,NX_Xxf86rush,$(XXF86RUSHLIBSRC),SOXXF86RUSHREV,Sha
ProjectUnsharedLibReferences(XXF86RUSH,NX_Xxf86rush,$(XXF86RUSHLIBSRC),XBuildLibDir)
#endif
-
- XVLIBSRC = $(LIBSRC)/Xv
-#if SharedLibXv
-#ifndef SharedXvRev
-#define SharedXvRev 1.0
-#endif
-SharedLibReferences(XV,NX_Xv,$(XVLIBSRC),SOXVREV,SharedXvRev)
-#else
-ProjectUnsharedLibReferences(XV,NX_Xv,$(XVLIBSRC),XBuildLibDir)
-#endif
-
-
- XVMCLIBSRC = $(LIBSRC)/XvMC
-#if SharedLibXvMC
-#ifndef SharedXvMCRev
-#define SharedXvMCRev 1.0
-#endif
-SharedLibReferences(XVMC,NX_XvMC,$(XVMCLIBSRC),SOXVMCREV,SharedXvMCRev)
-#else
-ProjectUnsharedLibReferences(XVMC,NX_XvMC,$(XVMCLIBSRC),XBuildLibDir)
-#endif
-
XINERAMALIBSRC = $(LIBSRC)/Xinerama
#if SharedLibXinerama
#ifndef SharedXineramaRev
@@ -2593,56 +1733,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
-#define SharedDpsRev 1.0
-#endif
-SharedLibReferences(DPS,NX_dps,$(DPSLIBSRC),SODPSREV,SharedDpsRev)
-#else
-ProjectUnsharedLibReferences(DPS,NX_dps,$(DPSLIBSRC),XBuildLibDir)
-#endif
-
- DPSTKLIBSRC = $(LIBSRC)/dpstk
-#if SharedLibDpsTk
-#ifndef SharedDpsTkRev
-#define SharedDpsTkRev 1.0
-#endif
-SharedLibReferences(DPSTK,NX_dpstk,$(DPSTKLIBSRC),SODPSTKREV,SharedDpsTkRev)
-#else
-ProjectUnsharedLibReferences(DPSTK,NX_dpstk,$(DPSTKLIBSRC),XBuildLibDir)
-#endif
-
- PSRESLIBSRC = $(LIBSRC)/psres
-#if SharedLibPSRes
-#ifndef SharedPSResRev
-#define SharedPSResRev 1.0
-#endif
-SharedLibReferences(PSRES,NX_psres,$(PSRESLIBSRC),SOPSRESREV,SharedPSResRev)
-#else
-ProjectUnsharedLibReferences(PSRES,NX_psres,$(PSRESLIBSRC),XBuildLibDir)
-#endif
-
- GLULIBSRC = $(LIBSRC)/GLU
-#if SharedLibGlu
-#ifndef SharedGluRev
-#define SharedGluRev 1.3
-#endif
-SharedLibReferences(GLU,NX_GLU,$(GLULIBSRC),SOGLUREV,SharedGluRev)
-#else
-ProjectUnsharedLibReferences(GLU,NX_GLU,$(GLULIBSRC),XBuildLibDir)
-#endif
-
GLXLIBSRC = $(LIBSRC)/GL
#if SharedLibGlx
#ifndef SharedGlxRev
@@ -2652,15 +1742,6 @@ SharedLibReferences(GLX,NX_GL,$(GLXLIBSRC),SOGLREV,SharedGlxRev)
#else
ProjectUnsharedLibReferences(GLX,NX_GL,$(GLXLIBSRC),XBuildLibDir)
#endif
- GLWIDGETSRC = $(LIBSRC)/GLw
-#if SharedLibGLw
-#ifndef SharedGLwRev
-#define SharedGLwRev 1.0 /* used to name the shared library */
-#endif
-SharedDSLibReferences(GLW,NX_GLw,$(GLWIDGETSRC),SOGLWREV,SharedGLwRev)
-#else
-ProjectUnsharedLibReferences(GLW,NX_GLw,$(GLWIDGETSRC),XBuildLibDir)
-#endif
XRENDERLIBSRC = $(LIBSRC)/Xrender
#if SharedLibXrender
@@ -2692,16 +1773,6 @@ SharedLibReferences(XFIXES,NX_Xfixes,$(XFIXESLIBSRC),SOXFIXESREV,SharedXfixesRev
ProjectUnsharedLibReferences(XFIXES,NX_Xfixes,$(XFIXESLIBSRC),XBuildLibDir)
#endif
- XDAMAGELIBSRC = $(LIBSRC)/Xdamage
-#if SharedLibXdamage
-#ifndef SharedXdamageRev
-#define SharedXdamageRev 1.0
-#endif
-SharedLibReferences(XDAMAGE,NX_Xdamage,$(XDAMAGELIBSRC),SOXDAMAGEREV,SharedXdamageRev)
-#else
-ProjectUnsharedLibReferences(XDAMAGE,NX_Xdamage,$(XDAMAGELIBSRC),XBuildLibDir)
-#endif
-
XCOMPOSITELIBSRC = $(LIBSRC)/Xcomposite
#if SharedLibXcomposite
#ifndef SharedXcompositeRev
@@ -2712,69 +1783,6 @@ SharedLibReferences(XCOMPOSITE,NX_Xcomposite,$(XCOMPOSITELIBSRC),SOXCOMPOSITEREV
ProjectUnsharedLibReferences(XCOMPOSITE,NX_Xcomposite,$(XCOMPOSITELIBSRC),XBuildLibDir)
#endif
-XEVIELIBSRC = $(LIBSRC)/Xevie
-#if SharedLibXevie
-#ifndef SharedXevieRev
-#define SharedXevieRev 1.0
-#endif
-SharedLibReferences(XEVIE,NX_Xevie,$(XEVIELIBSRC),SOXEVIEREV,SharedXevieRev)
-#else
-ProjectUnsharedLibReferences(XEVIE,NX_Xevie,$(XEVIELIBSRC),XBuildLibDir)
-#endif
-
- XCURSORLIBSRC = $(LIBSRC)/Xcursor
-#if SharedLibXcursor
-#ifndef SharedXcursorRev
-#define SharedXcursorRev 1.0.2
-#endif
-SharedLibReferences(XCURSOR,NX_Xcursor,$(XCURSORLIBSRC),SOXCURSORREV,SharedXcursorRev)
-#else
-ProjectUnsharedLibReferences(XCURSOR,NX_Xcursor,$(XCURSORLIBSRC),XBuildLibDir)
-#endif
-
- APPLEWMLIBSRC = $(LIBSRC)/apple
-#if SharedLibAppleWM
-#ifndef SharedAppleWMRev
-#define SharedAppleWMRev 1.0
-#endif
-SharedLibReferences(APPLEWM,NX_AppleWM,$(APPLEWMLIBSRC),SOAPPLEWMREV,SharedAppleWMRev)
-#else
-ProjectUnsharedLibReferences(APPLEWM,NX_AppleWM,$(APPLEWMLIBSRC),XBuildLibDir)
-#endif
-
- WINDOWSWMLIBSRC = $(LIBSRC)/windows
-#if SharedLibWindowsWM
-#ifndef SharedWindowsWMRev
-#define SharedWindowsWMRev 1.0
-#endif
-SharedLibReferences(WINDOWSWM,NX_WindowsWM,$(WINDOWSWMLIBSRC),SOWINDOWSWMREV,SharedWindowsWMRev)
-#else
-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
@@ -2801,76 +1809,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
-#ifndef NormalLibXmu
-#define NormalLibXmu (!SharedLibXmu | ForceNormalLib)
-#endif
-#ifndef DebugLibXmu
-#define DebugLibXmu NO /* debugged Xmu library */
-#endif
-#ifndef ProfileLibXmu
-#define ProfileLibXmu NO /* profiled Xmu library */
-#endif
- XMUSRC = $(LIBSRC)/Xmu
-#if SharedLibXmu
-#ifndef SharedXmuRev
-#define SharedXmuRev 6.2
-#endif
-SharedDSLibReferences(XMU,NX_Xmu,$(XMUSRC),SOXMUREV,SharedXmuRev)
-#else
-ProjectUnsharedLibReferences(XMU,NX_Xmu,$(XMUSRC),XBuildLibDir)
-#endif
-
-#ifndef SharedLibXmuu
-#define SharedLibXmuu HasSharedLibraries
-#endif
-#ifndef NormalLibXmuu
-#define NormalLibXmuu (!SharedLibXmuu | ForceNormalLib)
-#endif
-#ifndef DebugLibXmuu
-#define DebugLibXmuu NO /* debugged Xmuu library */
-#endif
-#ifndef ProfileLibXmuu
-#define ProfileLibXmuu NO /* profiled Xmuu library */
-#endif
- XMUUSRC = $(LIBSRC)/Xmuu
-#if SharedLibXmuu
-#ifndef SharedXmuuRev
-#define SharedXmuuRev 1.0
-#endif
-SharedLibReferences(XMUU,NX_Xmuu,$(XMUUSRC),SOXMUUREV,SharedXmuuRev)
-#else
-ProjectUnsharedLibReferences(XMUU,NX_Xmuu,$(XMUUSRC),XBuildLibDir)
-#endif
-
#ifndef SharedOldX
#define SharedOldX HasSharedLibraries
#endif
@@ -2893,197 +1831,6 @@ SharedLibReferences(OLDX,NX_oldX,$(OLDXLIBSRC),SOOLDXREV,SharedOldXRev)
ProjectUnsharedLibReferences(OLDX,NX_oldX,$(OLDXLIBSRC),XBuildLibDir)
#endif
-#ifndef SharedLibXp
-#define SharedLibXp HasSharedLibraries
-#endif
-#ifndef NormalLibXp
-#define NormalLibXp (!SharedLibXp | ForceNormalLib)
-#endif
-#ifndef DebugLibXp
-#define DebugLibXp NO /* debugged Xp library */
-#endif
-#ifndef ProfileLibXp
-#define ProfileLibXp NO /* profiled Xp library */
-#endif
- XPLIBSRC = $(LIBSRC)/Xp
-#if SharedLibXp
-#ifndef SharedXpRev
-#define SharedXpRev 6.2
-#endif
-SharedLibReferences(XP,NX_Xp,$(XPLIBSRC),SOXPREV,SharedXpRev)
-#else
-ProjectUnsharedLibReferences(XP,NX_Xp,$(XPLIBSRC),XBuildLibDir)
-#endif
-
-#ifndef SharedLibXt
-#define SharedLibXt HasSharedLibraries
-#endif
-#ifndef NormalLibXt
-#define NormalLibXt (!SharedLibXt | ForceNormalLib)
-#endif
-#ifndef DebugLibXt
-#define DebugLibXt NO /* debugged toolkit library */
-#endif
-#ifndef ProfileLibXt
-#define ProfileLibXt NO /* profiled toolkit library */
-#endif
- TOOLKITSRC = $(LIBSRC)/Xt
-#if SharedLibXt
-#ifndef SharedXtRev
-#define SharedXtRev 6.0
-#endif
-SharedDSLibReferences(XTOOLONLY,NX_Xt,$(TOOLKITSRC),SOXTREV,SharedXtRev)
-#else
-ProjectUnsharedLibReferences(XTOOLONLY,NX_Xt,$(TOOLKITSRC),XBuildLibDir)
-#endif
- DEPXTOOLLIB = $(DEPXTOOLONLYLIB) $(DEPSMLIB) $(DEPICELIB)
- XTOOLLIB = $(XTOOLONLYLIB) $(SMLIB) $(ICELIB)
- LINTXTOOLLIB = $(LINTXTOOLONLYLIB)
-
-#ifndef SharedLibXa
-#define SharedLibXa (HasSharedLibraries & HasCplusplus)
-#endif
-#ifndef NormalLibXa
-/* #define NormalLibXa ((!SharedLibXa | ForceNormalLib) & HasCplusplus) */
-#define NormalLibXa YES /* needed for current tests, will correct later */
-#endif
-#ifndef DebugLibXa
-#define DebugLibXa NO /* debugged audio library */
-#endif
-#ifndef ProfileLibXa
-#define ProfileLibXa NO /* profiled audio library */
-#endif
- XALIBSRC = $(LIBSRC)/Xa
-#if SharedLibXa
-#ifndef SharedXaRev
-#define SharedXaRev 1.0
-#endif
-SharedLibReferences(XA,NX_Xa,$(XALIBSRC),SOXAREV,SharedXaRev)
-#else
-UnsharedLibReferences(XA,NX_Xa,$(XALIBSRC))
-#endif
-
-#ifndef BuildXaw
-#define BuildXaw (BuildXprintLib && !BuildServersOnly)
-#endif
-
- /* AWIDGETSRC is needed by libXaw6 and libXaw7 */
- AWIDGETSRC = $(LIBSRC)/Xaw
-
-#if BuildXaw
-#ifndef SharedLibXaw
-#define SharedLibXaw HasSharedLibraries
-#endif
-#ifndef NormalLibXaw
-#define NormalLibXaw (!SharedLibXaw | ForceNormalLib)
-#endif
-#ifndef DebugLibXaw
-#define DebugLibXaw NO /* debugged widget library */
-#endif
-#ifndef ProfileLibXaw
-#define ProfileLibXaw NO /* profiled widget library */
-#endif
-#if SharedLibXaw
-#ifndef SharedXawRev
-#define SharedXawRev 8.0
-#endif
-SharedDSLibReferences(XAW,NX_Xaw,$(AWIDGETSRC),SOXAWREV,SharedXawRev)
-#else
-ProjectUnsharedLibReferences(XAW,NX_Xaw,$(AWIDGETSRC),XBuildLibDir)
-#endif
-#endif
-
-#ifndef BuildXaw7
-#define BuildXaw7 (HasSharedLibraries && !BuildServersOnly)
-#endif
-
-#if BuildXaw7
-#ifndef SharedLibXaw7
-#define SharedLibXaw7 HasSharedLibraries
-#endif
-#ifndef NormalLibXaw7
-#define NormalLibXaw7 NO
-#endif
-#ifndef DebugLibXaw7
-#define DebugLibXaw7 NO /* debugged widget library */
-#endif
-#ifndef ProfileLibXaw7
-#define ProfileLibXaw7 NO /* profiled widget library */
-#endif
- AWIDGET7SRC = $(LIBSRC)/Xaw7
-#if SharedLibXaw7
-#ifndef SharedXaw7Rev
-#define SharedXaw7Rev 7.0
-#endif
-SharedDSLibReferences(XAW7,NX_Xaw,$(AWIDGET7SRC),SOXAW7REV,SharedXaw7Rev)
-#if !BuildXaw
-SharedDSLibReferences(XAW,NX_Xaw,$(AWIDGET7SRC),SOXAWREV,SharedXawRev)
-#endif
-#else
-ProjectUnsharedLibReferences(XAW7,NX_Xaw,$(AWIDGET7SRC),XBuildLibDir)
-#if !BuildXaw
-ProjectUnsharedLibReferences(XAW,NX_Xaw,$(AWIDGET7SRC),XBuildLibDir)
-#endif
-#endif
-#endif
-
-
-#ifndef BuildXaw6
-#define BuildXaw6 (HasSharedLibraries && !BuildServersOnly)
-#endif
-
-#if BuildXaw6
-#ifndef SharedLibXaw6
-#define SharedLibXaw6 HasSharedLibraries
-#endif
-#ifndef NormalLibXaw6
-#define NormalLibXaw6 NO
-#endif
-#ifndef DebugLibXaw6
-#define DebugLibXaw6 NO /* debugged widget library */
-#endif
-#ifndef ProfileLibXaw6
-#define ProfileLibXaw6 NO /* profiled widget library */
-#endif
- AWIDGET6SRC = $(LIBSRC)/Xaw6
-#if SharedLibXaw6
-#ifndef SharedXaw6Rev
-#define SharedXaw6Rev 6.1
-#endif
-SharedDSLibReferences(XAW6,NX_Xaw,$(AWIDGET6SRC),SOXAW6REV,SharedXaw6Rev)
-#if !BuildXaw && !BuildXaw7
-SharedDSLibReferences(XAW,NX_Xaw,$(AWIDGET6SRC),SOXAWREV,SharedXawRev)
-#endif
-#else
-ProjectUnsharedLibReferences(XAW6,NX_Xaw,$(AWIDGET6SRC),XBuildLibDir)
-#if !BuildXaw && !BuildXaw7
-ProjectUnsharedLibReferences(XAW,NX_Xaw,$(AWIDGET6SRC),XBuildLibDir)
-#endif
-#endif
-#endif
-
-#ifndef SharedLibXi
-#define SharedLibXi HasSharedLibraries
-#endif
-#ifndef NormalLibXi
-#define NormalLibXi (!SharedLibXi | ForceNormalLib)
-#endif
-#ifndef DebugLibXi
-#define DebugLibXi NO /* debugged Xi library */
-#endif
-#ifndef ProfileLibXi
-#define ProfileLibXi NO /* profiled Xi library */
-#endif
- XILIBSRC = $(LIBSRC)/Xi
-#if SharedLibXi
-#ifndef SharedXiRev
-#define SharedXiRev 6.0
-#endif
-SharedLibReferences(XI,NX_Xi,$(XILIBSRC),SOXINPUTREV,SharedXiRev)
-#else
-ProjectUnsharedLibReferences(XI,NX_Xi,$(XILIBSRC),XBuildLibDir)
-#endif
-
#ifndef SharedLibXtst
#define SharedLibXtst HasSharedLibraries
#endif
@@ -3106,285 +1853,6 @@ SharedLibReferences(XTEST,NX_Xtst,$(XTESTLIBSRC),SOXTESTREV,SharedXtstRev)
ProjectUnsharedLibReferences(XTEST,NX_Xtst,$(XTESTLIBSRC),XBuildLibDir)
#endif
-ProjectUnsharedLibReferences(XBSD,NX_Xbsd,$(LIBSRC)/Xbsd,XBuildLibDir)
-
-#ifndef SharedLibICE
-#define SharedLibICE HasSharedLibraries
-#endif
-#ifndef NormalLibICE
-#define NormalLibICE (!SharedLibICE | ForceNormalLib)
-#endif
-#ifndef DebugLibICE
-#define DebugLibICE NO /* debugged ICE library */
-#endif
-#ifndef ProfileLibICE
-#define ProfileLibICE NO /* profiled ICE library */
-#endif
- ICESRC = $(LIBSRC)/ICE
-#if SharedLibICE
-#ifndef SharedICERev
-#define SharedICERev 6.4
-#endif
-SharedLibReferences(ICE,NX_ICE,$(ICESRC),SOICEREV,SharedICERev)
-#else
-ProjectUnsharedLibReferences(ICE,NX_ICE,$(ICESRC),XBuildLibDir)
-#endif
-
-#ifndef SharedLibSM
-#define SharedLibSM HasSharedLibraries
-#endif
-#ifndef NormalLibSM
-#define NormalLibSM (!SharedLibSM | ForceNormalLib)
-#endif
-#ifndef DebugLibSM
-#define DebugLibSM NO /* debugged SM library */
-#endif
-#ifndef ProfileLibSM
-#define ProfileLibSM NO /* profiled SM library */
-#endif
- SMSRC = $(LIBSRC)/SM
-#if SharedLibSM
-#ifndef SharedSMRev
-#define SharedSMRev 6.0
-#endif
-SharedLibReferences(SM,NX_SM,$(SMSRC),SOSMREV,SharedSMRev)
-#else
-ProjectUnsharedLibReferences(SM,NX_SM,$(SMSRC),XBuildLibDir)
-#endif
-
-#ifndef SharedLibXkey
-#define SharedLibXkey HasSharedLibraries
-#endif
-#ifndef NormalLibXkey
-#define NormalLibXkey (!SharedLibXkey | ForceNormalLib)
-#endif
-#ifndef DebugLibXkey
-#define DebugLibXkey NO /* debugged Xkey library */
-#endif
-#ifndef ProfileLibXkey
-#define ProfileLibXkey NO /* profiled Xkey library */
-#endif
- XKEYSRC = $(LIBSRC)/Xkey
-#if SharedLibXkey
-#ifndef SharedXkeyRev
-#define SharedXkeyRev 6.0
-#endif
-SharedLibReferences(XKEY,NX_Xkey,$(XKEYSRC),SOXKEYREV,SharedXkeyRev)
-#else
-ProjectUnsharedLibReferences(XKEY,NX_Xkey,$(XKEYSRC),XBuildLibDir)
-#endif
-
-#ifndef SharedLibFS
-#define SharedLibFS HasSharedLibraries
-#endif
-#ifndef NormalLibFS
-#define NormalLibFS (!SharedLibFS | ForceNormalLib)
-#endif
-#ifndef DebugLibFS
-#define DebugLibFS NO /* debugged FS library */
-#endif
-#ifndef ProfileLibFS
-#define ProfileLibFS NO /* profiled FS library */
-#endif
- FSLIBSRC = $(LIBSRC)/FS
-#if SharedLibFS
-#ifndef SharedFSRev
-#define SharedFSRev 6.0
-#endif
-SharedLibReferences(FS,NX_FS,$(FSLIBSRC),SOFSREV,SharedFSRev)
-#else
-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
-#ifndef NormalLibXpm
-#define NormalLibXpm (!SharedLibXpm | ForceNormalLib)
-#endif
-#ifndef DebugLibXpm
-#define DebugLibXpm NO
-#endif
-#ifndef ProfileLibXpm
-#define ProfileLibXpm NO
-#endif
- XPMLIBSRC = $(LIBSRC)/Xpm
-#if SharedLibXpm
-#ifndef SharedXpmRev
-#define SharedXpmRev 4.11
-#endif
-SharedLibReferences(XPM,Xpm,$(XPMLIBSRC),SOXPMREV,SharedXpmRev)
-#else
-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
@@ -3432,367 +1900,6 @@ MOTIFINCLUDES = -I$(MOTIFINCDIR)
#endif /* HasMotif */
-#ifndef SharedLibExpat
-#define SharedLibExpat HasSharedLibraries
-#endif
-#ifndef NormalLibExpat
-#define NormalLibExpat (!SharedLibExpat | ForceNormalLib)
-#endif
-#ifndef DebugLibExpat
-#define DebugLibExpat NO
-#endif
-#ifndef ProfileLibExpat
-#define ProfileLibExpat NO
-#endif
- EXPATLIBSRC = $(LIBSRC)/expat
-
-/*
- * Expat 1.95.6.
- *
- * Get the library version information from LIBCURRENT, LIBREVISION and LIBAGE
- * in xc/extras/expat/configure.
- *
- * LIBCURRENT:LIBREVISION:LIBAGE = 4:0:4
- *
- * The LibtoolMinorVersions revision is "(LIBCURRENT - LIBAGE).LIBAGE".
- * The !LibtoolMinorVersions revision is "LIBCURRENT.0".
- */
-#ifndef ExpatVersion
-#define ExpatVersion 1.95.6
-#endif
-
-#if SharedLibExpat
-#ifndef SharedLibtoolExpatRev
-#define SharedLibtoolExpatRev 4:0:4
-#endif
-#ifndef SharedExpatRev
-#if LibtoolMinorVersions
-#define SharedExpatRev 0.4
-#else
-#define SharedExpatRev 4.0
-#endif
-#endif
-SharedLibReferences(EXPAT,NX_expat,$(EXPATLIBSRC),SOEXPATREV,SharedExpatRev)
-#else
-ProjectUnsharedLibReferences(EXPAT,NX_expat,$(EXPATLIBSRC),XBuildLibDir)
-#endif
-
-#if UseExpat
-
-#if BuildExpatLibrary
-EXPATINCLUDES=$(TOP_X_INCLUDES)
-EXPATDEFINES=-DEXPAT
-#else /* BuildExpatLibrary */
-
-#if HasExpat
-
-#ifndef ExpatDir
-#define ExpatDir /usr
-#define ExpatDirStandard YES
-#endif
-#ifndef ExpatDirStandard
-#define ExpatDirStandard NO
-#endif
-
-#ifndef ExpatLibDir
-#define ExpatLibDir ExpatDir/LibDirName
-# if ExpatDirStandard
-# define ExpatLibDirStandard YES
-# endif
-#endif
-#ifndef ExpatLibDirStandard
-#define ExpatLibDirStandard NO
-#endif
-
-#ifndef ExpatIncDir
-#define ExpatIncDir ExpatDir/include
-# if ExpatDirStandard
-# define ExpatIncDirStandard YES
-# endif
-#endif
-#ifndef ExpatIncDirStandard
-#define ExpatIncDirStandard NO
-#endif
-
-EXPATDIR = ExpatDir
-EXPATLIBDIR = ExpatLibDir
-EXPATINCDIR = ExpatIncDir
-#if ExpatIncDirStandard
-EXPATINCLUDES =
-#else
-EXPATINCLUDES = -I$(EXPATINCDIR)
-#endif
-#if ExpatLibDirStandard
-EXPATLIB = -lexpat
-#else
-EXPATLIB = -L$(EXPATLIBDIR) LinkerRuntimeLibraryPathFlag($(EXPATLIBDIR)) -lexpat
-#endif
-EXPATDEFINES = -DEXPAT
-#endif /* HasExpat */
-
-#endif /* else BuildExpatLibrary */
-
-#define ExpatClientLibs $(EXPATLIB)
-#define ExpatClientDepLibs $(DEPEXPATLIB)
-
-#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
-
-/*
- * Libpng controls:
- *
- * LibpngDir prefix for all libpng files
- * LibpngDirStandard Boolean - whether png headers/libs are
- * in default compile/link paths
- * LibpngLibDir Directory holding png library
- * LibpngLibDirStandard Boolean - whether png libs are
- * in default link path
- * LibpngIncDir Directory holding png includes
- * LibpngIncDirStandard Boolean - whether png includes are
- * in default compile path
- *
- * Make sure that *Standard is set correctly, if not, the
- * standard compile/link paths will be added *before* the
- * local X directorys and installed versions of the standard
- * X headers will end up getting used.
- */
-
-#ifndef LibpngDir
-#define LibpngDir /usr
-#define LibpngDirStandard YES
-#endif
-#ifndef LibpngDirStandard
-#define LibpngDirStandard NO
-#endif
-
-#ifndef LibpngLibDir
-#define LibpngLibDir LibpngDir/LibDirName
-#if LibpngDirStandard
-#define LibpngLibDirStandard YES
-#endif
-#endif
-#ifndef LibpngLibDirStandard
-#define LibpngLibDirStandard NO
-#endif
-
-#ifndef LibpngIncDir
-#define LibpngIncDir LibpngDir/include
-#if LibpngDirStandard
-#define LibpngIncDirStandard YES
-#endif
-#endif
-#ifndef LibpngIncDirStandard
-#define LibpngIncDirStandard NO
-#endif
-
-LIBPNGINCDIR = LibpngIncDir
-#if LibpngIncDirStandard
-LIBPNGINC=
-#else
-LIBPNGINC = -I$(LIBPNGINCDIR)
-#endif
-LIBPNGDIR = LibpngDir
-LIBPNGLIBDIR = LibpngLibDir
-LIBPNGINCDIR = LibpngIncDir
-#if LibpngLibDirStandard
-LIBPNGLIB = -lpng
-#else
-LIBPNGLIB = -L$(LIBPNGLIBDIR) LinkerRuntimeLibraryPathFlag($(LIBPNGLIBDIR)) -lpng
-#endif
-
-#endif
-
-#ifndef XmuuClientDepLibs
-#define XmuuClientDepLibs $(DEPXMUULIB) $(DEPXLIB)
-#endif
-#ifndef XmuuClientLibs
-#define XmuuClientLibs $(XMUULIB) $(XLIB)
-#endif
-
#ifndef LdLibraryPath
#define LdLibraryPath LD_LIBRARY_PATH
#endif
@@ -3850,16 +1957,6 @@ ProjectUnsharedLibReferences(XKBFILE,NX_xkbfile,$(XKBFILELIBSRC),XBuildLibDir)
# endif
# endif
-# if defined(UseInstalled) || (CrossCompiling && UseInstalledOnCrossCompile)
- XKBCOMPCMD = $(XBINDIR)/XkbComp
-# else
- XKBCOMPSRC = $(PROGRAMSRC)/XkbComp
-# if CrossCompiling
- XKBCOMPCMD = $(PROGRAMSRC)/XkbComp/cross/XkbComp
-# else
- XKBCOMPCMD = $(CLIENTENVSETUP) $(PRELOADSETUP) $(XBUILDBINDIR)/XkbComp
-# endif
-# endif
#else /* !BuildXKBlib */
# ifndef XkbClientDepLibs
# define XkbClientDepLibs
@@ -3913,74 +2010,6 @@ ProjectUnsharedLibReferences(XKBUI,NX_xkbui,$(XKBUILIBSRC),XBuildLibDir)
# define XkbuiDepLibs $(DEPXKBFILELIB)
#endif
-#ifndef SharedxrxRev
-# define SharedxrxRev 6.8
-#endif
-
-#ifndef SharedxrxnestRev
-# define SharedxrxnestRev 6.8
-#endif
-
-#ifndef ExtraXawReqs
-# if BuildXaw
-# define ExtraXawReqs $(XPLIB)
-# else
-# define ExtraXawReqs /**/
-# endif
-#endif
-
-EXTRAXAWREQS = ExtraXawReqs
-
-#ifndef ExtraXawClientDepLibs
-# if BuildXaw
-# define ExtraXawClientDepLibs $(DEPXPLIB)
-# else
-# define ExtraXawClientDepLibs /**/
-# endif
-#endif
-
-EXTRAXAWCLIENTDEPLIBS = ExtraXawClientDepLibs
-
-#ifndef XawClientDepLibs
-#define XawClientDepLibs $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXPMLIB) $(EXTRAXAWCLIENTDEPLIBS) $(DEPXLIB)
-#endif
-
-#ifndef ExtraXawClientLibs
-# if BuildXaw
-# define ExtraXawClientLibs $(XPLIB)
-# else
-# define ExtraXawClientLibs /**/
-# endif
-#endif
-
-EXTRAXAWCLIENTLIBS = ExtraXawClientLibs
-
-#ifndef XawClientLibs
-#define XawClientLibs $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB)
-#endif
-
-#ifndef SharedLibXTrap
-#define SharedLibXTrap HasSharedLibraries
-#endif
-#ifndef NormalLibXTrap
-#define NormalLibXTrap (!SharedLibXTrap | ForceNormalLib)
-#endif
-#ifndef DebugLibXTrap
-#define DebugLibXTrap NO /* debugged XTrap library */
-#endif
-#ifndef ProfileLibXTrap
-#define ProfileLibXTrap NO /* profiled XTrap library */
-#endif
- XTRAPLIBSRC = $(LIBSRC)/XTrap
-#if SharedLibXTrap
-#ifndef SharedXTrapRev
-#define SharedXTrapRev 6.4
-#endif
-SharedLibReferences(XTRAP,NX_XTrap,$(XTRAPLIBSRC),SOXTRAPREV,SharedXTrapRev)
-#else
-ProjectUnsharedLibReferences(XTRAP,NX_XTrap,$(XTRAPLIBSRC),XBuildLibDir)
-#endif
-
#ifndef NeedDefaultDepLibs
#define NeedDefaultDepLibs YES
#endif
@@ -3990,7 +2019,7 @@ ProjectUnsharedLibReferences(XTRAP,NX_XTrap,$(XTRAPLIBSRC),XBuildLibDir)
* Individual libraries should override this
*/
#if HasSharedLibraries || defined(UseInstalled)
- DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
+ DEPLIBS = $(DEPXLIB)
#else
DEPLIBS = $(LOCAL_LIBRARIES)
#endif
@@ -4015,432 +2044,6 @@ ProjectUnsharedLibReferences(XTRAP,NX_XTrap,$(XTRAPLIBSRC),XBuildLibDir)
#endif /* InstallAppDefaults */
/*
- * InstallAppDefaultsLong - general rule to install application default file
- * if the InstallAppDefFiles configuration parameter is set.
- */
-#ifndef InstallAppDefaultsLong
-#if UseConfDirForAppDefaults
-#if InstallAppDefFiles
-#define InstallAppDefaultsLong(file,class) @@\
-LinkConfDirectory(app-defaults,.,app-defaults,.) @@\
-InstallNamedTarget(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
-#else
-#define InstallAppDefaultsLong(file,class) @@\
-LinkConfDirectory(app-defaults,.,app-defaults,.) @@\
-InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
-#endif /* InstallAppDefFiles */
-#else /* UseConfDirForAppDefaults */
-#if InstallAppDefFiles
-#define InstallAppDefaultsLong(file,class) @@\
-InstallNamedTarget(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
-#else
-#define InstallAppDefaultsLong(file,class) @@\
-InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
-#endif /* InstallAppDefFiles */
-#endif /* UseConfDirForAppDefaults */
-#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
-# if !CrossCompiling || UseInstalledOnCrossCompile
-# define MakeXkbDir(basedir,subdir) @@\
-all:: Concat(subdir,.dir) @@\
- @@\
-Concat(subdir,.dir): @@\
- RemoveFile(Concat(subdir,.dir)) @@\
- $(XKBCOMPCMD) -lfhlpR -o Concat(subdir,.dir) '*' @@\
- @@\
-InstallTarget(install,Concat(subdir,.dir),$(INSTDATFLAGS),basedir) @@\
- @@\
-clean:: @@\
- RemoveFile(Concat(subdir,.dir))
-# else
-# define MakeXkbDir(basedir,subdir) @@\
-clean:: @@\
- RemoveFile(Concat(subdir,.dir))
-# endif
-#endif
-
-/*
* PostProcessTroffPS - by default moves the working output into place,
* but can be a hook for more complicated post-processing.
*/
@@ -4736,42 +2339,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 9b482c620..0566befdd 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
@@ -76,42 +74,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
- */
-#define XVirtualFramebufferServer NO
-
-/*
- * To enable building Xdmx, uncomment this.
- *
-#define XdmxServer YES
- */
-#define XdmxServer 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.
*
@@ -127,18 +89,8 @@ 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
-#define NormalLibFreetype2 YES
-#define FontLibSharedFreeType YES
#endif
/*
@@ -149,7 +101,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
/*
@@ -168,12 +119,10 @@ 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
-#define BuildDamageLibrary YES
-
#define BuildXfixesLibrary YES
#define BuildCompositeLibrary YES
@@ -185,18 +134,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
#define BuildComposite YES
/*
- * If you only run the X server under xdm the X servers don't need to be
- * installed SetUID, and you may comment out the lines below. If you run
- * the servers by hand (with xinit or startx), then they do need to be
- * installed SetUID on most platforms.
- *
- * Consult your system administrator before making the X server setuid.
- *
-#define InstallXserverSetUID NO
- */
-
-
-/*
* Server configuration parameters. The defaults are shown here:
*/
@@ -245,150 +182,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
*/
/*
- * There are three parameters that determine where and how the Matrox HAL
- * library is used:
- *
- * HaveMatroxHal -- You have the HALlib.a binary library installed
- * in xfree86/drivers/mga/HALlib, and you want it to
- * be used.
- * Default: NO
- *
- * BuildMatroxHal -- You have the source for the HALlib library (installed
- * in xfree86/drivers/mga/hallib), and want to build and
- * use it.
- * Default: NO
- *
- * UseMatroxHal -- You want to build support for loading/using the HAL
- * library into the mga driver. For module server builds
- * you don't need to have the HALlib library to do this.
- * but you want to build support for loading it and using
- * it into the mga driver module.
- * Default: YES for loadable server build
- * (HaveMatroxHal || BuildMatroxHal) for static
- */
-
-/*
- * To disable use of the Matrox HAL library, uncomment this:
- *
-#define UseMatroxHal NO
- */
-
-/*
- * If you have the HALlib.a binary installed in xfree86/drivers/mga/HALlib,
- * uncomment this:
- *
-#define HaveMatroxHal YES
- */
-
-/*
- * If you have the HALlib source code installed in xfree86/drivers/mga/hallib,
- * uncomment this:
-#define BuildMatroxHal YES
- */
-
-/*
- * 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.
- *
-#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.
@@ -414,25 +207,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
#define BuildServersOnly YES
/*
- * By default, the sample config files for xinit, xdm and xfs are installed
- * only when there is no pre-existing version installed. Uncommenting the
- * following lines will force the sample versions to be installed even if
- * it means over-writing existing versions.
- *
-#define InstallXinitConfig YES
-#define InstallXdmConfig YES
-#define InstallFSConfig YES
- */
-
-/*
- * By default the application defaults files are always installed.
- * Uncommenting the the following will prevent exising application
- * defaults files from being over-written.
- *
-#define InstallAppDefFiles NO
- */
-
-/*
* Undefine the following if you don't want to have config files and
* app-defaults installed in a separate directory (i.e. /etc/X11).
*
@@ -645,21 +419,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
@@ -725,13 +484,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
*/
#define BuildXF86RushLibrary NO
-/*
- * We should never need LBX in a NX enabled environment...
- *
-#define BuildLBX NO
- */
-#define BuildLBX NO
-
#define BuildXKB YES
#define BuildXKBlib YES
@@ -786,7 +538,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
/*
* To build static and shared libraries with debugging information, uncomment
* this. Assumes you have Gcc2.
- * (If you don't have Gcc2, you can use the DebugLib{X11,Xt,Xaw,...} variables
+ * (If you don't have Gcc2, you can use the DebugLib{X11,...} variables
* to build debugging versions of the libraries separately.)
*
#define DebuggableLibraries YES
@@ -887,144 +639,7 @@ 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.
- * To use the one included in this release instead, uncomment the following.
- *
-#define HasExpat NO
- */
-#define HasExpat YES
-
-/*
- * To use a Expat library already installed outside the default search
- * paths, uncomment the following and set the path as needed.
-#define HasExpat YES
-#define ExpatDir /usr/local
- */
-
-
-/*
- * Most platforms default to using an already installed PNG library.
- * To use the one included in this release instead, uncomment the following.
- *
-#define HasLibpng NO
- */
-
-/*
- * To use a PNG library already installed outside the default search
- * paths, uncomment the following and set the path as needed.
-#define HasLibpng YES
-#define LibpngDir /usr/local
- */
-
-
-/*
- * Most platforms default to using an already installed xterm program.
- * To use the one included in this release instead, uncomment the following.
- *
-#define BuildXterm YES
- */
-
#define SharedLibXau YES
-#define SharedLibXdmcp YES
-
-#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 XprtServer NO
-#define BuildXprint NO
-#define XnestServer NO
-#define XVirtualFramebufferServer NO
-#define BuildFontServer NO
-#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
-#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 32b7a8658..aa28c5c55 100644
--- a/nx-X11/config/cf/linux.cf
+++ b/nx-X11/config/cf/linux.cf
@@ -105,20 +105,10 @@ XCOMM binutils: (LinuxBinUtilsMajorVersion)
# define XAppLoadDir EtcX11Directory/app-defaults
# define XFileSearchPathDefault Concat4(EtcX11Directory/%L/%T/%N%C,%S:EtcX11Directory/%l/%T/%N%C,%S:EtcX11Directory/%T/%N%C,%S:EtcX11Directory/%L/%T/%N%S:EtcX11Directory/%l/%T/%N%S:EtcX11Directory/%T/%N%S):Concat4($(LIBDIR)/%L/%T/%N%C,%S:$(LIBDIR)/%l/%T/%N%C,%S:$(LIBDIR)/%T/%N%C,%S:$(LIBDIR)/%L/%T/%N%S:$(LIBDIR)/%l/%T/%N%S:$(LIBDIR)/%T/%N%S)
/* the relative symlink created by this rule causes problems for us */
-# if defined(InstallAppDefFiles) && InstallAppDefFiles
-# define InstallAppDefaultsLong(file,class) @@\
-InstallNamedTarget(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
-# else
-# define InstallAppDefaultsLong(file,class) @@\
-InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
-# endif /* InstallAppDefFiles */
# endif /* !defined(NothingOutsideProjectRoot) || !NothingOutsideProjectRoot */
# define SharedLibXdmGreet NO
# define LinkGLToUsrInclude NO
# define LinkGLToUsrLib NO
-# define SharedLibFont NO
-# define SharedLibGlu YES
-# define NormalLibGlu YES
# define FSUseSyslog YES
# define BuildLibGlxWithoutPIC NO
@@ -146,9 +136,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class
# endif
# define XFree86Devel YES
# define BuildAllSpecsDocs YES
-# define InstallXinitConfig YES
-# define InstallXdmConfig YES
-# define InstallFSConfig YES
# define DebuggableLibraries YES
# define ForceNormalLib YES
# define BuildSpecsDocs YES
@@ -156,9 +143,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
@@ -236,7 +220,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 \
LinuxAdditionalIncludes LinuxGnuSourceDefines \
LinuxLocaleDefines
-# define XawI18nDefines -DHAS_WCHAR_H -DHAS_WCTYPE_H -DNO_WIDEC_H
# define HasPosixThreads YES
# define ThreadedX YES
# define HasThreadSafeAPI YES
@@ -253,7 +236,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class
# define LinuxSourceDefines -D_POSIX_SOURCE -D_POSIX_C_SOURCE=2 \
-D_BSD_SOURCE -D_SVID_SOURCE \
LinuxGnuSourceDefines LinuxLocaleDefines
-# define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC
# ifndef HasLibCrypt
# define HasLibCrypt NO
# endif
@@ -266,10 +248,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class
# endif
#endif
-#ifndef InstallXloadSetGID
-#define InstallXloadSetGID NO
-#endif
-
/*
* XXX Check which versions of Linux really have IPv6. glibc 2.0 on
* Red Hat 5.2 doesn't.
@@ -527,22 +505,6 @@ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class
#define HasGroff YES
#endif
-#ifndef HasZlib
-#define HasZlib YES
-#endif
-
-#ifndef HasLibpng
-#define HasLibpng YES
-#endif
-
-#ifndef HasExpat
-# 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/lnxLib.rules b/nx-X11/config/cf/lnxLib.rules
index 409203137..60ecd3f9e 100644
--- a/nx-X11/config/cf/lnxLib.rules
+++ b/nx-X11/config/cf/lnxLib.rules
@@ -405,90 +405,18 @@ JUMP_STUBS_IMPORT_X11 = $(LIBC_SA)
JUMP_SIBARS_X11 = jump/libNX_SM.a~ jump/libNX_ICE.a~
JUMP_LDLIBS_X11 = $(JUMP_SIBARS_X11) $(JUMP_LDLIBS_libc)
-XCOMM libSM (part of libX11.so)
-JUMP_ROOT_SM = $(SMSRC)
-JUMP_IS_HOST_SM = NO
-JUMP_HOST_SM = $(JUMP_ROOT_X11)
-JUMP_DIR_SM = $(JUMP_DIR_X11)
-
-XCOMM libICE (part of libX11.so)
-JUMP_ROOT_ICE = $(ICESRC)
-JUMP_IS_HOST_ICE = NO
-JUMP_HOST_ICE = $(JUMP_ROOT_X11)
-JUMP_DIR_ICE = $(JUMP_DIR_X11)
-
-XCOMM libXt.so (Xt, Xmu, Xext, Xi, Xtst, Xp)
-JUMP_ROOT_Xt = $(TOOLKITSRC)
-JUMP_IS_HOST_Xt = YES
-JUMP_STUBLIBS_Xt = libXt.sa libXmu.sa libXext.sa libXi.sa libXtst.sa libXp.sa
-JUMP_SUBDIRS_Xt = $(JUMP_ROOT_X11)
-JUMP_SIBDIRS_Xt = $(JUMP_ROOT_Xmu) $(JUMP_ROOT_Xext) \
- $(JUMP_ROOT_Xi) $(JUMP_ROOT_Xtst) $(JUMP_ROOT_Xp)
-JUMP_DIR_Xt = $(JUMP_ROOT_Xt)/shared
-JUMP_VARS_Xt = $(JUMP_ROOT_Xt)/jump_vars
-JUMP_FUNCS_Xt = $(JUMP_ROOT_Xt)/jump_funcs
-JUMP_IGNORE_Xt = $(JUMP_ROOT_Xt)/jump_ignore
-JUMP_EXPORT_Xt = $(JUMP_DIR_Xt)/jump.vars
-JUMP_IMPORT_Xt = $(JUMP_EXPORT_X11)
-JUMP_ADDRESS_Xt = 0x602a0000
-JUMP_JUMPTABLESIZE_Xt = 0x4000
-JUMP_GOTSIZE_Xt = 4096
-JUMP_STUBNAMES_Xt = libXt libXmu libXext libXi libXtst libXp
-JUMP_STUBS_IMPORT_Xt = $(JUMP_STUBS_IMPORT_X11)
-JUMP_SIBARS_Xt = jump/libNX_Xmu.a~ jump/libNX_Xext.a~ jump/libNX_Xi.a~ jump/libNX_Xtst.a~ jump/libNX_Xp.a~
-JUMP_LDLIBS_Xt = $(JUMP_SIBARS_Xt) $(JUMP_ROOT_ICE)/libNX_ICE.sa \
- $(JUMP_ROOT_SM)/libNX_SM.sa $(JUMP_ROOT_X11)/libNX_X11.sa $(JUMP_LDLIBS_libc)
-
-XCOMM libXmu (part of libXt.so)
-JUMP_ROOT_Xmu = $(XMUSRC)
-JUMP_IS_HOST_Xmu = NO
-JUMP_HOST_Xmu = $(JUMP_ROOT_Xt)
-JUMP_DIR_Xmu = $(JUMP_DIR_Xt)
-
XCOMM libXext (part of libXt.so)
JUMP_ROOT_Xext = $(XEXTLIBSRC)
JUMP_IS_HOST_Xext = NO
JUMP_HOST_Xext = $(JUMP_ROOT_Xt)
JUMP_DIR_Xext = $(JUMP_DIR_Xt)
-XCOMM libXi (part of libXt.so)
-JUMP_ROOT_Xi = $(XILIBSRC)
-JUMP_IS_HOST_Xi = NO
-JUMP_HOST_Xi = $(JUMP_ROOT_Xt)
-JUMP_DIR_Xi = $(JUMP_DIR_Xt)
-
XCOMM libXtst (part of libXt.so)
JUMP_ROOT_Xtst = $(XTESTLIBSRC)
JUMP_IS_HOST_Xtst = NO
JUMP_HOST_Xtst = $(JUMP_ROOT_Xt)
JUMP_DIR_Xtst = $(JUMP_DIR_Xt)
-XCOMM libXp (part of libXt.so)
-JUMP_ROOT_Xp = $(XPLIBSRC)
-JUMP_IS_HOST_Xp = NO
-JUMP_HOST_Xp = $(JUMP_ROOT_Xt)
-JUMP_DIR_Xp = $(JUMP_DIR_Xt)
-
-XCOMM libXaw.so (Xaw)
-JUMP_ROOT_Xaw = $(AWIDGETSRC)
-JUMP_IS_HOST_Xaw = YES
-JUMP_STUBLIBS_Xaw = libXaw.sa
-JUMP_SUBDIRS_Xaw = $(JUMP_ROOT_Xt)
-JUMP_DIR_Xaw = $(JUMP_ROOT_Xaw)/shared
-JUMP_VARS_Xaw = $(JUMP_ROOT_Xaw)/jump_vars
-JUMP_FUNCS_Xaw = $(JUMP_ROOT_Xaw)/jump_funcs
-JUMP_IGNORE_Xaw = $(JUMP_ROOT_Xaw)/jump_ignore
-JUMP_EXPORT_Xaw = $(JUMP_DIR_Xaw)/jump.vars
-JUMP_IMPORT_Xaw = $(JUMP_EXPORT_Xt) $(JUMP_EXPORT_X11)
-JUMP_ADDRESS_Xaw = 0x60300000
-JUMP_JUMPTABLESIZE_Xaw = 0x4000
-JUMP_GOTSIZE_Xaw = 4096
-JUMP_STUBNAMES_Xaw = libXaw
-JUMP_STUBS_IMPORT_Xaw = $(JUMP_STUBS_IMPORT_X11)
-JUMP_LDLIBS_Xaw = $(JUMP_ROOT_Xt)/libNX_Xt.sa $(JUMP_ROOT_Xt)/libNX_Xmu.sa \
- $(JUMP_ROOT_Xt)/libNX_Xext.sa $(JUMP_ROOT_X11)/libNX_X11.sa \
- $(JUMP_LDLIBS_libc)
-
# endif /* !UseInstalled */
/*
diff --git a/nx-X11/config/cf/lnxLib.tmpl b/nx-X11/config/cf/lnxLib.tmpl
index 788733c1f..23fdf0fe3 100644
--- a/nx-X11/config/cf/lnxLib.tmpl
+++ b/nx-X11/config/cf/lnxLib.tmpl
@@ -5,38 +5,13 @@ XCOMM $XFree86: xc/config/cf/lnxLib.tmpl,v 3.19 2003/10/15 22:47:48 herrb Exp $
* Linux shared library template
*/
-#if UseElfFormat
-
-#ifndef FixupLibReferences
-#define FixupLibReferences() @@\
-XMULIBONLY = -lNX_Xmu @@\
-XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB)
-#endif
-
-#ifndef XawClientLibs
-#define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB)
-#endif
-
-#define SharedX11Reqs
+#define SharedX11Reqs $(LDPRELIB) -ldl -lXdmcp
#define SharedXlibi18nReqs $(LDPRELIB) $(XONLYLIB)
#define SharedOldXReqs $(LDPRELIB) $(XONLYLIB)
-#define SharedXtReqs $(LDPRELIB) $(XONLYLIB) $(SMLIB) $(ICELIB)
-#define SharedXaw6Reqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
-#define SharedXaw7Reqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(XLIB)
-#define SharedXawReqs $(LDPRELIB) $(XMULIB) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWREQS) $(XLIB)
-#define SharedXmuReqs $(LDPRELIB) $(XTOOLLIB) $(XLIB)
-#define SharedXmuuReqs $(LDPRELIB) $(XONLYLIB)
#define SharedXextReqs $(LDPRELIB) $(XONLYLIB)
-#define SharedXiReqs $(LDPRELIB) $(XLIB)
-#define SharedXpReqs $(LDPRELIB) $(XLIB)
-#define SharedXpmReqs $(LDPRELIB) $(XLIB)
#define SharedXrandrReqs $(LDPRELIB) $(XRENDERLIB) $(XLIB)
#define SharedXrenderReqs $(LDPRELIB) $(XLIB)
#define SharedXtstReqs $(LDPRELIB) $(XLIB)
-#define SharedXvReqs $(LDPRELIB) $(XLIB)
-#define SharedSMReqs $(LDPRELIB) $(ICELIB)
-#define SharedXcursorReqs $(LDPRELIB) $(XRENDERLIB) $(XLIB)
-#define SharedFontencReqs $(LDPRELIB) GzipLibrary
#if GlxUseBuiltInDRIDriver
#define ExtraSharedGLReqs /**/
@@ -44,43 +19,16 @@ XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB)
#define ExtraSharedGLReqs -ldl
#endif
#define SharedGLReqs $(LDPRELIB) $(XLIB) ExtraSharedGLReqs
-#ifndef SharedGLUReqs
-#define SharedGLUReqs $(LDPRELIB) $(XLIB) $(GLXLIB)
-#endif
-#define SharedDPSReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XTOOLLIB) $(XLIB)
-#define SharedDPSTKReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XTOOLLIB) $(DPSLIB) $(XLIB)
-#define SharedpsresReqs $(LDPRELIB) $(SMLIB) $(ICELIB) $(XTOOLLIB) $(XLIB)
#define SharedXResReqs $(LDPRELIB) $(XLIB)
-#define SharedXfontcacheReqs $(LDPRELIB) $(XLIB)
#define SharedXineramaReqs $(LDPRELIB) $(XLIB)
-#define SharedXssReqs $(LDPRELIB) $(XLIB)
-#define SharedXvMCReqs $(LDPRELIB) $(XLIB)
#define SharedXxf86dgaReqs $(LDPRELIB) $(XLIB)
#define SharedXxf86miscReqs $(LDPRELIB) $(XLIB)
#define SharedXxf86vmReqs $(LDPRELIB) $(XLIB)
#define SharedxkbfileReqs $(LDPRELIB) $(XONLYLIB)
#define SharedxkbuiReqs $(LDPRELIB) $(XKBFILELIB) $(XONLYLIB)
-
-#else /* UseElfFormat */
-
-#ifndef FixupLibReferences
-#define FixupLibReferences() @@\
-XMULIB = -lNX_Xmu $(XLIB)
-#endif
-
-#endif /* UseElfFormat */
-
-#ifndef SharedXReqs
-# define SharedXReqs $(XTOOLLIB) $(XPLIB) $(XLIB) $(LDPOSTLIBS)
-#endif
-
-#ifndef SharedXmReqs
-# define SharedXmReqs $(LDPRELIBS) SharedXReqs -lc
-#endif
-
-#ifndef SharedTtReqs
-# define SharedTtReqs $(LDPRELIBS) SharedXReqs $(CXXLIB)
-#endif
+#define SharedXfixesReqs $(LDPRELIB) $(XLIB)
+#define SharedXdamageReqs $(LDPRELIB) $(XLIB)
+#define SharedXcompositeReqs $(LDPRELIB) $(XDAMAGELIB) $(XFIXESLIB) $(XLIB)
#define NoMessageCatalog
diff --git a/nx-X11/config/cf/site.def b/nx-X11/config/cf/site.def
index 071116f3f..7f2053cb2 100644
--- a/nx-X11/config/cf/site.def
+++ b/nx-X11/config/cf/site.def
@@ -124,25 +124,6 @@ XCOMM site: $XFree86: xc/config/cf/site.def,v 3.24 2000/06/25 20:17:29 dawes Ex
#define DefaultUserPath /bin:/usr/bin:$(BINDIR):/usr/ucb:/usr/local/bin
*/
-
-/* You do NOT need SetUID if you only run the server under xdm */
-/* You MAY need SetUID if users run the server by hand or under xinit */
-/* Consult your system administrator before making the X server setuid */
-/*
-#if defined(SunArchitecture) && OSMajorVersion > 4
-#define InstallXserverSetUID YES
-#endif
-*/
-
-/* You do NOT need SetUID if you only run the server under xdm */
-/* You MAY need SetUID if users run the server by hand or under xinit */
-/* Consult your system administrator before making the X server setuid */
-/*
-#if defined(XFree86Version) || defined (XorgVersion)
-#define InstallXserverSetUID YES
-#endif
-*/
-
#include <host.def>
#endif /* AfterVendorCF */
diff --git a/nx-X11/config/cf/xf86site.def b/nx-X11/config/cf/xf86site.def
index d445c1c72..6f0961252 100644
--- a/nx-X11/config/cf/xf86site.def
+++ b/nx-X11/config/cf/xf86site.def
@@ -45,48 +45,12 @@ 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
- */
-
-/*
- * To enable building Xdmx, uncomment this.
- *
-#define XdmxServer YES
- */
-
-/*
- * 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
*/
/*
- * If you only run the X server under xdm the X servers don't need to be
- * installed SetUID, and you may comment out the lines below. If you run
- * the servers by hand (with xinit or startx), then they do need to be
- * installed SetUID on most platforms.
- *
- * Consult your system administrator before making the X server setuid.
- *
-#define InstallXserverSetUID NO
- */
-
-
-/*
* Server configuration parameters. The defaults are shown here:
*/
@@ -121,151 +85,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
*/
/*
- * There are three parameters that determine where and how the Matrox HAL
- * library is used:
- *
- * HaveMatroxHal -- You have the HALlib.a binary library installed
- * in xfree86/drivers/mga/HALlib, and you want it to
- * be used.
- * Default: NO
- *
- * BuildMatroxHal -- You have the source for the HALlib library (installed
- * in xfree86/drivers/mga/hallib), and want to build and
- * use it.
- * Default: NO
- *
- * UseMatroxHal -- You want to build support for loading/using the HAL
- * library into the mga driver. For module server builds
- * you don't need to have the HALlib library to do this.
- * but you want to build support for loading it and using
- * it into the mga driver module.
- * Default: YES for loadable server build
- * (HaveMatroxHal || BuildMatroxHal) for static
- */
-
-/*
- * To disable use of the Matrox HAL library, uncomment this:
- *
-#define UseMatroxHal NO
- */
-
-/*
- * If you have the HALlib.a binary installed in xfree86/drivers/mga/HALlib,
- * uncomment this:
- *
-#define HaveMatroxHal YES
- */
-
-/*
- * If you have the HALlib source code installed in xfree86/drivers/mga/hallib,
- * uncomment this:
-#define BuildMatroxHal YES
- */
-
-/*
- * To disable building the font server, uncomment this.
- *
-#define BuildFontServer NO
- */
-
-/*
- * 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.
*
@@ -273,25 +92,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
*/
/*
- * By default, the sample config files for xinit, xdm and xfs are installed
- * only when there is no pre-existing version installed. Uncommenting the
- * following lines will force the sample versions to be installed even if
- * it means over-writing existing versions.
- *
-#define InstallXinitConfig YES
-#define InstallXdmConfig YES
-#define InstallFSConfig YES
- */
-
-/*
- * By default the application defaults files are always installed.
- * Uncommenting the the following will prevent exising application
- * defaults files from being over-written.
- *
-#define InstallAppDefFiles NO
- */
-
-/*
* Undefine the following if you don't want to have config files and
* app-defaults installed in a separate directory (i.e. /etc/X11).
*
@@ -486,20 +286,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
@@ -591,7 +377,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
/*
* To build static and shared libraries with debugging information, uncomment
* this. Assumes you have Gcc2.
- * (If you don't have Gcc2, you can use the DebugLib{X11,Xt,Xaw,...} variables
+ * (If you don't have Gcc2, you can use the DebugLib{X11,...} variables
* to build debugging versions of the libraries separately.)
*
#define DebuggableLibraries YES
diff --git a/nx-X11/config/cf/xfree86.cf b/nx-X11/config/cf/xfree86.cf
index f7c151c41..dea9b74b5 100644
--- a/nx-X11/config/cf/xfree86.cf
+++ b/nx-X11/config/cf/xfree86.cf
@@ -234,45 +234,6 @@ XCOMM $Xorg: xfree86.cf,v 1.4 2000/08/17 19:41:49 cpqbld Exp $
#endif
/*
- * There are three parameters that determine where and how the Matrox HAL
- * library is used:
- *
- * HaveMatroxHal -- You have the HALlib.a binary library installed
- * in xfree86/drivers/mga/HALlib, and you want it to
- * be used.
- * Default: NO
- *
- * BuildMatroxHal -- You have the source for the HALlib library (installed
- * in xfree86/drivers/mga/hallib), and want to build and
- * use it.
- * Default: NO
- *
- * UseMatroxHal -- You want to build support for loading/using the HAL
- * library into the mga driver. For module server builds
- * you don't need to have the HALlib library to do this.
- * but you want to build support for loading it and using
- * it into the mga driver module.
- * Default: YES for loadable server build
- * (HaveMatroxHal || BuildMatroxHal) for static
- */
-
-#ifndef HaveMatroxHal
-#define HaveMatroxHal NO
-#endif
-
-#ifndef BuildMatroxHal
-#define BuildMatroxHal NO
-#endif
-
-#ifndef UseMatroxHal
-#if DoLoadableServer
-#define UseMatroxHal YES
-#else
-#define UseMatroxHal (HaveMatroxHal || BuildMatroxHal)
-#endif
-#endif
-
-/*
* For Intel platforms, the default is to build all modules which
* are supported on this platform.
*/
@@ -1304,16 +1265,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
#endif
/*
- * The default is to install the X servers setuid-root on most OSs.
- * It the servers are only started by xdm, they should not be setuid-root.
- */
-#if !defined(i386MachArchitecture) && !defined(OS2Architecture)
-# ifndef InstallXserverSetUID
-# define InstallXserverSetUID YES
-# endif
-#endif
-
-/*
* Build GLX server interface
* --- Doesn't work for 1-bit and 4-bit servers
*/
@@ -1538,10 +1489,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
# define BuildXF86RushExt NO
#endif
-#ifndef BuildDBElib
-# define BuildDBElib YES
-#endif
-
#ifndef BuildRECORDlib
# define BuildRECORDlib YES
#endif
@@ -1582,9 +1529,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
* Build the extra extension libs even when not including the extra extensions
* in the servers
*/
-#ifndef BuildScreenSaverLibrary
-# define BuildScreenSaverLibrary YES
-#endif
#ifndef BuildXF86MiscLibrary
# define BuildXF86MiscLibrary YES
#endif
@@ -1594,12 +1538,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
#ifndef BuildXF86VidModeLibrary
# define BuildXF86VidModeLibrary YES
#endif
-#ifndef BuildXvLibrary
-# define BuildXvLibrary YES
-#endif
-#ifndef BuildXvMCLibrary
-# define BuildXvMCLibrary YES
-#endif
#ifndef BuildGLXLibrary
# define BuildGLXLibrary YES
#endif
@@ -1684,57 +1622,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
#endif
/*
- * Build the font server
- */
-#ifndef BuildFontServer
-# define BuildFontServer YES
-#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
@@ -1755,14 +1642,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
@@ -1876,16 +1755,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
# define UseServerLock YES
#endif
-#ifndef XnestServer
-# define XnestServer YES
-#endif
-#ifndef XVirtualFramebufferServer
-# define XVirtualFramebufferServer YES
-#endif
-#ifndef XprtServer
-# define XprtServer YES
-#endif
-
#ifndef ServerExtraDefines
# define ServerExtraDefines XFree86ServerDefines
#endif
diff --git a/nx-X11/config/cf/xorg.cf b/nx-X11/config/cf/xorg.cf
index 71dab5631..d4ef89fd4 100644
--- a/nx-X11/config/cf/xorg.cf
+++ b/nx-X11/config/cf/xorg.cf
@@ -288,45 +288,6 @@ NX_VERSION_CURRENT_STRING = nxVersionString
#endif
/*
- * There are three parameters that determine where and how the Matrox HAL
- * library is used:
- *
- * HaveMatroxHal -- You have the HALlib.a binary library installed
- * in xfree86/drivers/mga/HALlib, and you want it to
- * be used.
- * Default: NO
- *
- * BuildMatroxHal -- You have the source for the HALlib library (installed
- * in xfree86/drivers/mga/hallib), and want to build and
- * use it.
- * Default: NO
- *
- * UseMatroxHal -- You want to build support for loading/using the HAL
- * library into the mga driver. For module server builds
- * you don't need to have the HALlib library to do this.
- * but you want to build support for loading it and using
- * it into the mga driver module.
- * Default: YES for loadable server build
- * (HaveMatroxHal || BuildMatroxHal) for static
- */
-
-#ifndef HaveMatroxHal
-#define HaveMatroxHal NO
-#endif
-
-#ifndef BuildMatroxHal
-#define BuildMatroxHal NO
-#endif
-
-#ifndef UseMatroxHal
-#if DoLoadableServer
-#define UseMatroxHal YES
-#else
-#define UseMatroxHal (HaveMatroxHal || BuildMatroxHal)
-#endif
-#endif
-
-/*
* Many architectures share common X Server pieces. List them here.
*/
#if defined(i386Architecture) || defined(ia64Architecture) || \
@@ -860,16 +821,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
#endif
/*
- * The default is to install the X servers setuid-root on most OSs.
- * It the servers are only started by xdm, they should not be setuid-root.
- */
-#if !defined(i386MachArchitecture) && !defined(OS2Architecture)
-# ifndef InstallXserverSetUID
-# define InstallXserverSetUID YES
-# endif
-#endif
-
-/*
* Build GLX server interface
* --- Doesn't work for 1-bit and 4-bit servers
*/
@@ -1102,10 +1053,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
# define BuildXF86RushExt NO
#endif
-#ifndef BuildDBElib
-# define BuildDBElib YES
-#endif
-
#ifndef BuildRECORDlib
# define BuildRECORDlib YES
#endif
@@ -1146,9 +1093,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
* Build the extra extension libs even when not including the extra extensions
* in the servers
*/
-#ifndef BuildScreenSaverLibrary
-# define BuildScreenSaverLibrary YES
-#endif
#ifndef BuildXF86MiscLibrary
# define BuildXF86MiscLibrary YES
#endif
@@ -1158,12 +1102,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
#ifndef BuildXF86VidModeLibrary
# define BuildXF86VidModeLibrary YES
#endif
-#ifndef BuildXvLibrary
-# define BuildXvLibrary YES
-#endif
-#ifndef BuildXvMCLibrary
-# define BuildXvMCLibrary YES
-#endif
#ifndef BuildGLXLibrary
# define BuildGLXLibrary YES
#endif
@@ -1248,57 +1186,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
#endif
/*
- * Build the font server
- */
-#ifndef BuildFontServer
-# define BuildFontServer YES
-#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
@@ -1319,14 +1206,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
@@ -1441,13 +1320,6 @@ IPLAN2P8_DEFS = -DUSE_IPLAN2P8
# define UseServerLock YES
#endif
-#ifndef XnestServer
-# define XnestServer 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 dea5ceb92..a4d22b4b8 100644
--- a/nx-X11/config/cf/xorgsite.def
+++ b/nx-X11/config/cf/xorgsite.def
@@ -45,48 +45,12 @@ 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
- */
-
-/*
- * To enable building Xdmx, uncomment this.
- *
-#define XdmxServer YES
- */
-
-/*
- * 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
*/
/*
- * If you only run the X server under xdm the X servers don't need to be
- * installed SetUID, and you may comment out the lines below. If you run
- * the servers by hand (with xinit or startx), then they do need to be
- * installed SetUID on most platforms.
- *
- * Consult your system administrator before making the X server setuid.
- *
-#define InstallXserverSetUID NO
- */
-
-
-/*
* Server configuration parameters. The defaults are shown here:
*/
@@ -135,147 +99,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
*/
/*
- * There are three parameters that determine where and how the Matrox HAL
- * library is used:
- *
- * HaveMatroxHal -- You have the HALlib.a binary library installed
- * in xfree86/drivers/mga/HALlib, and you want it to
- * be used.
- * Default: NO
- *
- * BuildMatroxHal -- You have the source for the HALlib library (installed
- * in xfree86/drivers/mga/hallib), and want to build and
- * use it.
- * Default: NO
- *
- * UseMatroxHal -- You want to build support for loading/using the HAL
- * library into the mga driver. For module server builds
- * you don't need to have the HALlib library to do this.
- * but you want to build support for loading it and using
- * it into the mga driver module.
- * Default: YES for loadable server build
- * (HaveMatroxHal || BuildMatroxHal) for static
- */
-
-/*
- * To disable use of the Matrox HAL library, uncomment this:
- *
-#define UseMatroxHal NO
- */
-
-/*
- * If you have the HALlib.a binary installed in xfree86/drivers/mga/HALlib,
- * uncomment this:
- *
-#define HaveMatroxHal YES
- */
-
-/*
- * If you have the HALlib source code installed in xfree86/drivers/mga/hallib,
- * uncomment this:
-#define BuildMatroxHal YES
- */
-
-/*
- * 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.
- *
-#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.
*
@@ -283,25 +106,6 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
*/
/*
- * By default, the sample config files for xinit, xdm and xfs are installed
- * only when there is no pre-existing version installed. Uncommenting the
- * following lines will force the sample versions to be installed even if
- * it means over-writing existing versions.
- *
-#define InstallXinitConfig YES
-#define InstallXdmConfig YES
-#define InstallFSConfig YES
- */
-
-/*
- * By default the application defaults files are always installed.
- * Uncommenting the the following will prevent exising application
- * defaults files from being over-written.
- *
-#define InstallAppDefFiles NO
- */
-
-/*
* Undefine the following if you don't want to have config files and
* app-defaults installed in a separate directory (i.e. /etc/X11).
*
@@ -494,20 +298,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
@@ -600,7 +390,7 @@ XCOMM $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $
/*
* To build static and shared libraries with debugging information, uncomment
* this. Assumes you have Gcc2.
- * (If you don't have Gcc2, you can use the DebugLib{X11,Xt,Xaw,...} variables
+ * (If you don't have Gcc2, you can use the DebugLib{X11,...} variables
* to build debugging versions of the libraries separately.)
*
#define DebuggableLibraries YES
@@ -698,71 +488,3 @@ 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.
- * To use the one included in this release instead, uncomment the following.
- *
-#define HasExpat NO
- */
-
-/*
- * To use a Expat library already installed outside the default search
- * paths, uncomment the following and set the path as needed.
-#define HasExpat YES
-#define ExpatDir /usr/local
- */
-
-
-/*
- * Most platforms default to using an already installed PNG library.
- * To use the one included in this release instead, uncomment the following.
- *
-#define HasLibpng NO
- */
-
-/*
- * To use a PNG library already installed outside the default search
- * paths, uncomment the following and set the path as needed.
-#define HasLibpng YES
-#define LibpngDir /usr/local
- */
-
-
-/*
- * Most platforms default to using an already installed xterm program.
- * To use the one included in this release instead, uncomment the following.
- *
-#define BuildXterm YES
- */
diff --git a/nx-X11/config/imake/imakemdep.h b/nx-X11/config/imake/imakemdep.h
index bacc3af54..469454114 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 d413964a0..94fed0518 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/config/util/Imakefile b/nx-X11/config/util/Imakefile
deleted file mode 100644
index 016751d06..000000000
--- 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 19a8a4d5a..000000000
--- 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 fc2673c13..000000000
--- 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 cd5baa24f..000000000
--- 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 20d9e82f8..000000000
--- 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 8bebdc5a3..000000000
--- 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 868f99c3d..000000000
--- 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 d550ef5a4..000000000
--- 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 4e1a8ead9..000000000
--- 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 6296de51d..000000000
--- 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 fe22e794e..000000000
--- 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 d36869656..000000000
--- 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 f9af50ad1..000000000
--- 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 f17bcdb22..000000000
--- 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 5a97a3ebb..000000000
--- 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 ff4b12a3d..000000000
--- 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 2c86690aa..000000000
--- 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 7b2d40b85..000000000
--- 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 cd1d983b0..000000000
--- 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 244e8a58f..000000000
--- 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 9d5d6decf..000000000
--- 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 815031d94..000000000
--- 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 38be8c9e2..000000000
--- 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 af4b69619..000000000
--- 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 cd9684114..000000000
--- 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 35cab0b22..000000000
--- 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 1c7cc6470..000000000
--- 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 768516648..000000000
--- 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 61207b541..000000000
--- 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 9ee8fa791..000000000
--- 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 4ad475e62..000000000
--- 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 09b89ee9d..000000000
--- 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 fc8a4276b..000000000
--- 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 10030910e..000000000
--- 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 ab1c894ea..000000000
--- 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 e8a879d97..000000000
--- 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 eea4b8b89..000000000
--- 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 d9c5eb841..000000000
--- 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 6629f5a8d..000000000
--- 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 8e0c179eb..000000000
--- 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 2dbca7457..000000000
--- 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 db88393cb..000000000
--- 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 5b9cace15..000000000
--- 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 f9e1863d5..000000000
--- 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 2c44194d5..000000000
--- 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 24e14947f..000000000
--- 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 3d03bde3f..000000000
--- 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 8a4f234dd..000000000
--- 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)
diff --git a/nx-X11/include/Imakefile b/nx-X11/include/Imakefile
index 8bdfd4ab7..e46abbdfd 100644
--- a/nx-X11/include/Imakefile
+++ b/nx-X11/include/Imakefile
@@ -4,6 +4,9 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/18 04:05:43 coskrey Exp $
XCOMM $XFree86: xc/include/Imakefile,v 3.28 2001/04/28 23:52:31 dawes Exp $
+
+NULL =
+
#define IHaveSubdirs
#define PassCDebugFlags /**/
@@ -11,11 +14,7 @@ XCOMM $XFree86: xc/include/Imakefile,v 3.28 2001/04/28 23:52:31 dawes Exp $
GLXDIR = GL
#endif
-#if BuildDPSLibrary
-DPSDIR = DPS
-#endif
-
-SUBDIRS = bitmaps extensions fonts $(GLXDIR) $(DPSDIR)
+SUBDIRS = extensions $(GLXDIR)
#ifdef Win32Architecture
EXTRA_HEADERS = Xw32defs.h Xwinsock.h Xwindows.h
@@ -23,7 +22,8 @@ EXTRA_HEADERS = Xw32defs.h Xwinsock.h Xwindows.h
EXTRA_HEADERS = Xwindows.h
#endif
-HEADERS = DECkeysym.h \
+HEADERS = \
+ DECkeysym.h \
HPkeysym.h \
Sunkeysym.h \
X.h \
@@ -46,7 +46,8 @@ HEADERS = DECkeysym.h \
ap_keysym.h \
keysym.h \
keysymdef.h \
- $(EXTRA_HEADERS)
+ $(EXTRA_HEADERS) \
+ $(NULL)
all::
diff --git a/nx-X11/include/Xmd.h b/nx-X11/include/Xmd.h
index 8c70de94a..78dd895c2 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 99cb3bef4..04b14b6fc 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 dcea39c60..3200c3711 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 cb6b79f32..877aab442 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/bitmaps/1x1 b/nx-X11/include/bitmaps/1x1
deleted file mode 100644
index 6d013d4af..000000000
--- 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 8490457a1..000000000
--- 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 4e1ec0b0b..000000000
--- 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 3a1ec90a3..000000000
--- 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 0deb80130..000000000
--- 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 2be3b9d5a..000000000
--- 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 eddb25f1e..000000000
--- 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 d3607a4ba..000000000
--- 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 40de9e426..000000000
--- 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 9144605a8..000000000
--- 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 209b4e8b2..000000000
--- 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 e403eebe9..000000000
--- 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 26893009b..000000000
--- 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 d7cfdeb9a..000000000
--- 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 80bc471b2..000000000
--- 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 55abc5182..000000000
--- 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 6eb0d846a..000000000
--- 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 b75cacd7b..000000000
--- 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 dc7327e5c..000000000
--- 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 476d93055..000000000
--- 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 230288478..000000000
--- 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 edc7c735b..000000000
--- 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 7a021673e..000000000
--- 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 8062f40f1..000000000
--- 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 02ce50e5b..000000000
--- 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 5c1a396f9..000000000
--- 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 ed4943319..000000000
--- 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 9a75a57c4..000000000
--- 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 c4ead326b..000000000
--- 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 8a6abb13a..000000000
--- 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 851911d3d..000000000
--- 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 0f12568d1..000000000
--- 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 ea62e17dc..000000000
--- 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 064252534..000000000
--- 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 f1204b233..000000000
--- 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 cc2f6f8b6..000000000
--- 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 6dfc942eb..000000000
--- 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 095b8ec48..000000000
--- 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 6250e8e3c..000000000
--- 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 e88ca688b..000000000
--- 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 770deeea5..000000000
--- 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 780b028b5..000000000
--- 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 955c1e92b..000000000
--- 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 5774124ef..000000000
--- 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 a8ec421df..000000000
--- 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 0f83c64de..000000000
--- 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 578e464db..000000000
--- 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 3922aa562..000000000
--- 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 96f532488..000000000
--- 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 ec41e436f..000000000
--- 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 e5aac6acb..000000000
--- 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 7f3b7c1a6..000000000
--- 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 c98f1a4ab..000000000
--- 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 c220bb6ff..000000000
--- 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 63558d026..000000000
--- 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 6d23ecada..000000000
--- 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 b8d9204bd..000000000
--- 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 0513db646..000000000
--- 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 f42ae583f..000000000
--- 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 55c224654..000000000
--- 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 e6f45d506..000000000
--- 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 27ba6397f..000000000
--- 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 1a4befc44..000000000
--- 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 92e604186..000000000
--- 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 383334cf9..000000000
--- 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 5efd2c20e..000000000
--- 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 5c2302734..000000000
--- 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 1ecb6acaa..000000000
--- 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 ad3b0dbbf..000000000
--- 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 2c1bd8b65..000000000
--- 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-X11/include/extensions/Imakefile b/nx-X11/include/extensions/Imakefile
index 65c78adcf..4f88d2bab 100644
--- a/nx-X11/include/extensions/Imakefile
+++ b/nx-X11/include/extensions/Imakefile
@@ -6,7 +6,9 @@ XCOMM $Xorg: Imakefile,v 1.3 2000/08/18 04:05:44 coskrey Exp $
XCOMM $XFree86: xc/include/extensions/Imakefile,v 3.55 2003/04/21 12:32:06 sven Exp $
-#if BuildScreenSaverExt || BuildScreenSaverLibrary
+NULL =
+
+#if BuildScreenSaverExt
SCREENSAVERHEADERS = saver.h saverproto.h scrnsaver.h
#endif
@@ -22,11 +24,11 @@ XF86VIDMODEHEADERS = xf86vmode.h xf86vmstr.h
#if BuildXF86DGA || BuildXF86DGALibrary
XF86DGAHEADERS = xf86dga.h xf86dgastr.h xf86dga1.h xf86dga1str.h
#endif
-#if BuildLBX || BuildXextLib
+#if BuildXextLib
LBXHEADERS = XLbx.h lbxbuf.h lbxbufstr.h lbxdeltastr.h lbximage.h lbxopts.h \
lbxstr.h lbxzlib.h
#endif
-#if BuildXvExt || BuildXvLibrary
+#if BuildXvExt
XVHEADERS = Xv.h Xvlib.h Xvproto.h
XVMCHEADERS = XvMC.h XvMClib.h XvMCproto.h vldXvMC.h
#endif
@@ -39,44 +41,49 @@ 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
XFIXESHEADERS = xfixeswire.h xfixesproto.h
#endif
-#if BuildDamage || BuildDamageLibrary
-DAMAGEHEADERS = damagewire.h damageproto.h
-#endif
#if BuildComposite || BuildCompositeLibrary
COMPOSITEHEADERS = composite.h compositeproto.h
#endif
#if BuildRandR || BuildRandRLibrary
RANDRHEADERS = randr.h randrproto.h
#endif
-#if BuildXTrap || BuildXTrapLibrary
+#if BuildXTrap
XTRAPHEADERS = xtrapbits.h xtrapddmi.h xtrapdi.h xtrapemacros.h xtraplib.h \
xtraplibp.h xtrapproto.h
#endif
#if BuildXResExt || BuildXResLibrary
XRESHEADERS = XRes.h XResproto.h
#endif
-#if BuildXevie || BuildXevieLibrary
+#if BuildXevie
XEVIEHEADERS = Xevie.h Xeviestr.h
#endif
-#if BuildDmx || BuildDmxLibrary
-XDMXHEADERS = dmxext.h dmxproto.h
-#endif
-
-EXTRAHEADERS = $(SCREENSAVERHEADERS) $(XF86MISCHEADERS) $(XF86BIGFONTHEADERS) \
- $(XF86VIDMODEHEADERS) $(XF86DGAHEADERS) $(XINERAMAHEADERS) \
- $(LBXHEADERS) $(XVHEADERS) $(XVMCHEADERS) $(XF86RUSHHEADERS) \
- $(FONTCACHEHEADERS) $(RENDERHEADERS) $(RANDRHEADERS) \
- $(XFIXESHEADERS) $(DAMAGEHEADERS) $(COMPOSITEHEADERS) \
- $(XEVIEHEADERS) \
- $(XTRAPHEADERS) $(XRESHEADERS) $(XDMXHEADERS)
-
+EXTRAHEADERS = \
+ $(SCREENSAVERHEADERS) \
+ $(XF86MISCHEADERS) \
+ $(XF86BIGFONTHEADERS) \
+ $(XF86VIDMODEHEADERS) \
+ $(XF86DGAHEADERS) \
+ $(XINERAMAHEADERS) \
+ $(LBXHEADERS) \
+ $(XVHEADERS) \
+ $(XVMCHEADERS) \
+ $(XF86RUSHHEADERS) \
+ $(FONTCACHEHEADERS) \
+ $(RENDERHEADERS) \
+ $(RANDRHEADERS) \
+ $(XFIXESHEADERS) \
+ $(COMPOSITEHEADERS) \
+ $(XEVIEHEADERS) \
+ $(XTRAPHEADERS) \
+ $(XRESHEADERS) \
+ $(NULL)
HEADERS = Xext.h \
xcmiscstr.h \
@@ -95,10 +102,10 @@ 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
+ XEVI.h XEVIstr.h \
+ $(NULL)
all::
diff --git a/nx-X11/include/extensions/Print.h b/nx-X11/include/extensions/Print.h
deleted file mode 100644
index 2d45082c5..000000000
--- 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 45ac7a596..000000000
--- 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/include/extensions/XKBstr.h b/nx-X11/include/extensions/XKBstr.h
index bc63f4923..6131c931c 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/damageproto.h b/nx-X11/include/extensions/damageproto.h
deleted file mode 100644
index b190d68c7..000000000
--- a/nx-X11/include/extensions/damageproto.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * $Id: damageproto.h,v 1.2 2004/07/29 19:29:55 stukreit 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 _DAMAGEPROTO_H_
-#define _DAMAGEPROTO_H_
-
-#include <X11/Xmd.h>
-#include <X11/extensions/xfixesproto.h>
-#include <X11/extensions/damagewire.h>
-
-#define Window CARD32
-#define Drawable CARD32
-#define Font CARD32
-#define Pixmap CARD32
-#define Cursor CARD32
-#define Colormap CARD32
-#define GContext CARD32
-#define Atom CARD32
-#define VisualID CARD32
-#define Time CARD32
-#define KeyCode CARD8
-#define KeySym CARD32
-#define Picture CARD32
-#define Region CARD32
-#define Damage CARD32
-
-/************** Version 0 ******************/
-
-typedef struct {
- CARD8 reqType;
- CARD8 damageReqType;
- CARD16 length B16;
-} xDamageReq;
-
-/*
- * requests and replies
- */
-
-typedef struct {
- CARD8 reqType;
- CARD8 damageReqType;
- CARD16 length B16;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
-} xDamageQueryVersionReq;
-
-#define sz_xDamageQueryVersionReq 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;
-} xDamageQueryVersionReply;
-
-#define sz_xDamageQueryVersionReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 damageReqType;
- CARD16 length B16;
- Damage damage B32;
- Drawable drawable B32;
- CARD8 level;
- CARD8 pad1;
- CARD16 pad2 B16;
-} xDamageCreateReq;
-
-#define sz_xDamageCreateReq 16
-
-typedef struct {
- CARD8 reqType;
- CARD8 damageReqType;
- CARD16 length B16;
- Damage damage B32;
-} xDamageDestroyReq;
-
-#define sz_xDamageDestroyReq 8
-
-typedef struct {
- CARD8 reqType;
- CARD8 damageReqType;
- CARD16 length B16;
- Damage damage B32;
- Region repair B32;
- Region parts B32;
-} xDamageSubtractReq;
-
-#define sz_xDamageSubtractReq 16
-
-/* Events */
-
-#define DamageNotifyMore 0x80
-
-typedef struct {
- CARD8 type;
- CARD8 level;
- CARD16 sequenceNumber B16;
- Drawable drawable B32;
- Damage damage B32;
- Time timestamp B32;
- xRectangle area;
- xRectangle geometry;
-} xDamageNotifyEvent;
-
-#undef Damage
-#undef Region
-#undef Picture
-#undef Window
-#undef Drawable
-#undef Font
-#undef Pixmap
-#undef Cursor
-#undef Colormap
-#undef GContext
-#undef Atom
-#undef VisualID
-#undef Time
-#undef KeyCode
-#undef KeySym
-
-#endif /* _DAMAGEPROTO_H_ */
diff --git a/nx-X11/include/extensions/damagewire.h b/nx-X11/include/extensions/damagewire.h
deleted file mode 100644
index d523cea98..000000000
--- a/nx-X11/include/extensions/damagewire.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $Id: damagewire.h,v 1.2 2004/07/29 19:29:55 stukreit 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 _DAMAGEWIRE_H_
-#define _DAMAGEWIRE_H_
-
-#define DAMAGE_NAME "DAMAGE"
-#define DAMAGE_MAJOR 1
-#define DAMAGE_MINOR 0
-
-/************* Version 1 ****************/
-
-/* Constants */
-#define XDamageReportRawRectangles 0
-#define XDamageReportDeltaRectangles 1
-#define XDamageReportBoundingBox 2
-#define XDamageReportNonEmpty 3
-
-/* Requests */
-#define X_DamageQueryVersion 0
-#define X_DamageCreate 1
-#define X_DamageDestroy 2
-#define X_DamageSubtract 3
-
-#define XDamageNumberRequests (X_DamageSubtract + 1)
-
-/* Events */
-#define XDamageNotify 0
-
-#define XDamageNumberEvents (XDamageNotify + 1)
-
-/* Errors */
-#define BadDamage 0
-#define XDamageNumberErrors (BadDamage + 1)
-
-#endif /* _DAMAGEWIRE_H_ */
diff --git a/nx-X11/include/extensions/dmxext.h b/nx-X11/include/extensions/dmxext.h
deleted file mode 100644
index c554232e4..000000000
--- 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 b6b11f4d2..000000000
--- 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/include/extensions/lbxopts.h b/nx-X11/include/extensions/lbxopts.h
index 02e87fd26..ac1e12121 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 5b79e361f..a7521b1be 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 7ba199b58..95f107a2a 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/include/fonts/FS.h b/nx-X11/include/fonts/FS.h
deleted file mode 100644
index e90752233..000000000
--- 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 03b28089f..000000000
--- 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 0eae8a3bc..000000000
--- 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 e6a00cddb..000000000
--- 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 83c9a00c0..000000000
--- 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 451ed6a12..000000000
--- 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 434ee97b5..000000000
--- 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/GL/GL/Imakefile b/nx-X11/lib/GL/GL/Imakefile
index 336f3d5b7..8c3ac0af4 100644
--- a/nx-X11/lib/GL/GL/Imakefile
+++ b/nx-X11/lib/GL/GL/Imakefile
@@ -242,5 +242,3 @@ InstallLibrary($(LIBNAME)_d,$(USRLIBDIR))
ProfiledLibraryTarget($(LIBNAME),$(POBJS))
InstallLibrary($(LIBNAME)_p,$(USRLIBDIR))
#endif
-
-
diff --git a/nx-X11/lib/GL/Imakefile b/nx-X11/lib/GL/Imakefile
index b53a71f4c..6b350203c 100644
--- a/nx-X11/lib/GL/Imakefile
+++ b/nx-X11/lib/GL/Imakefile
@@ -50,7 +50,7 @@ XCOMM Server-side tokens:
XCOMM BuildGlxExt
XCOMM GlxUseSGISI
-
+NULL =
#include <Threads.tmpl>
@@ -108,9 +108,23 @@ LIBGLBUILDDIR = GL
* the drivers, and in the latter case, it needs to be built after the driver.
*/
#if BuildXF86DRI && GlxUseBuiltInDRIDriver
-SUBDIRS = $(MESADIRS) $(DRIDIRS) $(DRIVERDIRS) $(GLXDIRS) $(LIBGLBUILDDIR) $(OSMESADIRS)
+SUBDIRS = \
+ $(MESADIRS) \
+ $(DRIDIRS) \
+ $(DRIVERDIRS) \
+ $(GLXDIRS) \
+ $(LIBGLBUILDDIR) \
+ $(OSMESADIRS) \
+ $(NULL)
#else
-SUBDIRS = $(MESADIRS) $(GLXDIRS) $(DRIDIRS) $(LIBGLBUILDDIR) $(OSMESADIRS) $(DRIVERDIRS)
+SUBDIRS = \
+ $(MESADIRS) \
+ $(GLXDIRS) \
+ $(DRIDIRS) \
+ $(LIBGLBUILDDIR) \
+ $(OSMESADIRS) \
+ $(DRIVERDIRS) \
+ $(NULL)
#endif
MakeSubdirs($(SUBDIRS))
diff --git a/nx-X11/lib/GL/mesa/Imakefile b/nx-X11/lib/GL/mesa/Imakefile
index 523123ae8..9e1db00a0 100644
--- a/nx-X11/lib/GL/mesa/Imakefile
+++ b/nx-X11/lib/GL/mesa/Imakefile
@@ -12,6 +12,8 @@ XCOMM $XFree86: xc/lib/GL/mesa/src/Imakefile,v 1.30tsi Exp $
* driver modules.
*/
+NULL =
+
#if BuildOSMesaLib || (BuildXF86DRI && (GlxDriverUsesMesa || GlxBuiltInXMesa))
#define DoNormalLib (NormalLibGlx || SharedLibGlxWithoutPIC)
#define DoSharedLib (SharedLibGlx && !SharedLibGlxWithoutPIC)
@@ -63,8 +65,17 @@ LibraryObjectRule()
#define IHaveSubdirs
#define PassCDebugFlags
-SUBDIRS = $(ASM_SUBDIRS) array_cache main math swrast swrast_setup tnl tnl_dd shader
-
+SUBDIRS = \
+ $(ASM_SUBDIRS) \
+ array_cache \
+ main \
+ math \
+ swrast \
+ swrast_setup \
+ tnl \
+ tnl_dd \
+ shader \
+ $(NULL)
MakeSubdirs($(SUBDIRS))
DependSubdirs($(SUBDIRS))
diff --git a/nx-X11/lib/GL/mesa/drivers/dri/common/Imakefile b/nx-X11/lib/GL/mesa/drivers/dri/common/Imakefile
index d5c8dc7fa..5c910489f 100644
--- a/nx-X11/lib/GL/mesa/drivers/dri/common/Imakefile
+++ b/nx-X11/lib/GL/mesa/drivers/dri/common/Imakefile
@@ -29,7 +29,7 @@ XCOMM $XFree86: xc/lib/GL/mesa/src/drv/common/Imakefile,v 1.6 2001/04/03 02:29:3
DEFINES = $(ALLOC_DEFINES) $(COMMON_DRI_DEFINES) $(MESA_ASM_DEFINES)
INCLUDES = $(COMMON_X_INCLUDES) $(COMMON_MESA_INCLUDES) \
- $(COMMON_DRI_INCLUDES) $(EXPATINCLUDES)
+ $(COMMON_DRI_INCLUDES)
SRCS = $(COMMONSRCS)
OBJS = $(COMMONOBJS)
diff --git a/nx-X11/lib/Imakefile b/nx-X11/lib/Imakefile
index 1266724c7..13dc8ac73 100644
--- a/nx-X11/lib/Imakefile
+++ b/nx-X11/lib/Imakefile
@@ -9,25 +9,7 @@ XCOMM $XFree86: xc/lib/Imakefile,v 3.74 2003/04/14 20:37:07 herrb Exp $
#define IHaveSubdirs
#define PassCDebugFlags
-#if BuildXaw6 && BuildLibraries
-XAW6LIBDIR = Xaw6
-#endif
-
-#if BuildXaw7 && BuildLibraries
-XAW7LIBDIR = Xaw7
-#endif
-
-#if BuildXaw && BuildLibraries
-XAWLIBDIR = Xaw
-#endif
-
-#ifndef NeedBerklib
-#define NeedBerklib NO
-#endif
-
-#if NeedBerklib
-BERKDIR = Xbsd
-#endif
+NULL =
#if BuildXKBfilelib || BuildXKB
XKBLIBDIR = xkbfile
@@ -37,14 +19,6 @@ XKBLIBDIR = xkbfile
XKBUILIBDIR = xkbui
#endif
-#if BuildXInputLib
-XINPUTLIBDIR = Xi
-#endif
-
-#if BuildScreenSaverLibrary
-SSLIBDIR = Xss
-#endif
-
#if BuildXF86MiscLibrary
XF86MISCLIBDIR = Xxf86misc
#endif
@@ -61,11 +35,6 @@ XF86DGALIBDIR = Xxf86dga
XF86RUSHLIBDIR = Xxf86rush
#endif
-#if BuildXvLibrary
-XVLIBDIR = Xv
-XVMCLIBDIR = XvMC
-#endif
-
#if BuildXineramaLibrary
XINERAMADIR=Xinerama
#endif
@@ -74,135 +43,37 @@ XINERAMADIR=Xinerama
XRESLIBDIR = XRes
#endif
-#if BuildDmxLibrary
-DMXLIBDIR = dmx
-#endif
-
#if BuildGLXLibrary
GLXLIBDIR = GL
#endif
-#if BuildGLwLibrary
-GLWLIBDIR = GLw
-#endif
-
-#if BuildGLULibrary
-GLULIBDIR = GLU
-#endif
-
-#if BuildDPSLibrary
-DPSLIBDIR = dps
-#endif
-
-#if BuildDPSTkLibrary
-DPSTKLIBDIR = dpstk
-#endif
-
-#if BuildPSResLibrary
-PSRESLIBDIR = psres
-#endif
-
#if BuildRenderLibrary
RENDERLIBDIR = Xrender
#endif
-#if BuildExpatLibrary
-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
-#if BuildXevieLibrary
-XEVIELIBDIR = Xevie
-#endif
-
#if BuildXfixesLibrary
XFIXESLIBDIR = Xfixes
#endif
-#if BuildDamageLibrary
-DAMAGELIBDIR = Xdamage
-#endif
-
#if BuildCompositeLibrary
COMPOSITELIBDIR = Xcomposite
#endif
-#if BuildXcursorLibrary
-XCURSORLIBDIR = Xcursor
-#endif
-
-#if BuildXTrapLibrary
-XTRAPLIBDIR = XTrap
-#endif
-
-#if BuildAppleWMLibrary
-APPLELIBDIR = apple
-#endif
-
-#if BuildWindowsWMLibrary
-WINDOWSLIBDIR = windows
-#endif
-
-XF86EXTLIBS = $(XF86MISCLIBDIR) $(XF86VMLIBDIR) \
- $(XF86DGALIBDIR) $(XF86RUSHLIBDIR)
-
-#if BuildLBX
-LBXUTILDIR = lbxutil
-#endif
-
-#if (BuildLBX || GzipFontCompression) && !HasZlib
-ZLIBDIR = zlib
-#endif
-
-#if (defined(XFree86Version) || defined(XorgVersion)) && !HasPosixRegex
-REGEXDIR = regex
-#endif
-
-#if BuildXAudio
-XALIBDIR = Xa
-#endif
-
-#if BuildXprintLib
-XPRINTLIBDIRS = Xp XprintUtil XprintAppUtil
-#endif
-
-#if BuildFontCacheLib
-FONTCACHELIBDIR = Xfontcache
-#endif
-
-FONTSUBDIR = font
-
-#if BuildFontEncLib
-FONTENCSUBDIR = fontenc
-#endif
+XF86EXTLIBS = \
+ $(XF86MISCLIBDIR) \
+ $(XF86VMLIBDIR) \
+ $(XF86DGALIBDIR) \
+ $(XF86RUSHLIBDIR) \
+ $(NULL)
#if BuildXauLib
XAULIBDIR = Xau
#endif
-#if BuildXdmcpLib
-XDMCPLIBDIR = Xdmcp
-#endif
-
#if BuildX11Lib
X11LIBDIR = X11
#endif
@@ -217,27 +88,30 @@ XTSTLIBDIR = Xtst
#endif
-LINTSUBDIRS = $(XAULIBDIR) $(XDMCPLIBDIR) $(X11LIBDIR) \
- $(OLDXLIBDIR) $(ICELIBDIR) $(SMLIBDIR) $(XEXTLIBDIR) $(XTLIBDIR) \
- $(SSLIBDIR) $(XF86MISCLIBDIR) $(XF86VMLIBDIR) $(XF86DGALIBDIR) \
- $(XF86RUSHLIBDIR) $(XMULIBDIR) $(XMUULIBDIR) $(XPMLIBDIR) \
- $(XPRINTLIBDIRS) $(XAW6LIBDIR) $(XAW7LIBDIR) $(XAWLIBDIR) \
- $(XINPUTLIBDIR) $(XTSTLIBDIR) $(FSLIBDIR) $(XKBLIBDIR) \
- $(XKBUILIBDIR) $(LBXUTILDIR) $(XALIBDIR) $(EXPATBUILDDIR) \
- $(XVLIBDIR) $(GLXLIBDIR) $(GLULIBDIR) $(GLWLIBDIR) \
- $(DPSLIBDIR) $(PSRESLIBDIR) $(DPSTKLIBDIR) $(XINERAMADIR) \
- $(ZLIBDIR) $(REGEXDIR) $(RENDERLIBDIR) $(FREETYPE2BUILDDIR) \
- $(FONTCONFIGBUILDDIR) $(XFT1LIBDIR) \
- $(XFTLIBDIR) $(XVMCLIBDIR) $(RANDRLIBDIR) $(XTRAPLIBDIR) \
- $(XRESLIBDIR) $(APPLELIBDIR) $(DMXLIBDIR) $(WINDOWSLIBDIR) \
- $(XEVIELIBDIR) $(XFIXESLIBDIR) $(DAMAGELIBDIR) \
- $(XCURSORLIBDIR) $(COMPOSITELIBDIR)
-
-SUBDIRS = $(BERKDIR) xtrans $(LINTSUBDIRS) $(FONTSUBDIR) $(FONTENCSUBDIR) \
- $(FONTCACHELIBDIR)
+LINTSUBDIRS = \
+ $(XAULIBDIR) \
+ $(X11LIBDIR) \
+ $(OLDXLIBDIR) \
+ $(XEXTLIBDIR) \
+ $(XF86MISCLIBDIR) \
+ $(XF86VMLIBDIR) \
+ $(XF86DGALIBDIR) \
+ $(XF86RUSHLIBDIR) \
+ $(XTSTLIBDIR) \
+ $(XKBLIBDIR) \
+ $(XKBUILIBDIR) \
+ $(GLXLIBDIR) \
+ $(XINERAMADIR) \
+ $(RENDERLIBDIR) \
+ $(RANDRLIBDIR) \
+ $(XRESLIBDIR) \
+ $(XFIXESLIBDIR) \
+ $(COMPOSITELIBDIR) \
+ $(NULL)
+
+SUBDIRS = xtrans $(LINTSUBDIRS)
MakeSubdirs($(SUBDIRS))
DependSubdirs($(SUBDIRS))
MakeLintLibSubdirs($(LINTSUBDIRS))
MakeLintSubdirs($(LINTSUBDIRS),install.ln,install.ln)
-
diff --git a/nx-X11/lib/X11/ChWindow.c b/nx-X11/lib/X11/ChWindow.c
index a403d76d8..615b6d27c 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 fddd28319..adcc7b667 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 9a15f2ec1..f64ca9f64 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 311167647..58e55771e 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 59095069b..4a7c620b5 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 3cd6b7f57..26d17ef88 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 984e291c6..affbc982d 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 2aa88d8fd..12d17dba1 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 d4a362af7..e1b7ad091 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 c37617cf9..92a6a8f4a 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 f92375853..bc096fef7 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 9e667bb9c..85f4183f4 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/Imakefile b/nx-X11/lib/X11/Imakefile
index 9f0b682b3..e00351169 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 && !BuildGLXLibrary && !BuildClients && !NXAgentServer
all::
BuildIncludes($(HEADERS),IncSubdir,..)
@@ -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/X11/LiHosts.c b/nx-X11/lib/X11/LiHosts.c
index 01cfadb13..bd0864448 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 34d11feaf..ebb513226 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 d3c4f8821..44097fea5 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 ddaa62d08..ded535dc3 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 a5ffa8ac1..d47bce314 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 1887e7c73..ab5386251 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 06e23a5c9..a1b8d6620 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 b2b197a99..b6784b5e2 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 96d5911d6..dbf876326 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 a8eeb2adf..8483187c3 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 a68a80a33..d0b7045d6 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 a154d1bce..0244e2ef3 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 e21d9ffac..8ce7fb577 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 70bd82bad..81403ebc9 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 47e2ea139..0514470dd 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 56da2349b..bcd42b52b 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,14 @@ 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
+/*
+ * 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) \
{ \
@@ -580,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); \
}
@@ -591,13 +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
-#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) { \
@@ -655,10 +624,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 +643,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 +711,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 1859fa93e..a2d100c04 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 4afafd40f..5ddd03584 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/Xcomposite/Imakefile b/nx-X11/lib/Xcomposite/Imakefile
index a3b94145c..0f3c44da4 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/Xcursor/AUTHORS b/nx-X11/lib/Xcursor/AUTHORS
deleted file mode 100644
index 57c4efd4e..000000000
--- 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 6d9f423cd..000000000
--- 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 8d5721187..000000000
--- 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 e69de29bb..000000000
--- a/nx-X11/lib/Xcursor/INSTALL
+++ /dev/null
diff --git a/nx-X11/lib/Xcursor/Imakefile b/nx-X11/lib/Xcursor/Imakefile
deleted file mode 100644
index 53b41e893..000000000
--- 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 e69de29bb..000000000
--- a/nx-X11/lib/Xcursor/NEWS
+++ /dev/null
diff --git a/nx-X11/lib/Xcursor/README b/nx-X11/lib/Xcursor/README
deleted file mode 100644
index e69de29bb..000000000
--- a/nx-X11/lib/Xcursor/README
+++ /dev/null
diff --git a/nx-X11/lib/Xcursor/Xcursor-def.cpp b/nx-X11/lib/Xcursor/Xcursor-def.cpp
deleted file mode 100644
index e60212f01..000000000
--- 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 d8a7ac320..000000000
--- 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 99b7213d9..000000000
--- 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 904cd6746..000000000
--- 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 e69de29bb..000000000
--- a/nx-X11/lib/Xcursor/config.h
+++ /dev/null
diff --git a/nx-X11/lib/Xcursor/configure.ac b/nx-X11/lib/Xcursor/configure.ac
deleted file mode 100644
index 8ec0d2e71..000000000
--- 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 df9610625..000000000
--- 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, &centerColor) >= 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 ef941257f..000000000
--- 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 175676cc3..000000000
--- 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 6774f802f..000000000
--- 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 af59f9974..000000000
--- 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 87aba1209..000000000
--- 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 83913a094..000000000
--- 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 7d10caf18..000000000
--- 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/Xdamage/AUTHORS b/nx-X11/lib/Xdamage/AUTHORS
deleted file mode 100644
index 57c4efd4e..000000000
--- a/nx-X11/lib/Xdamage/AUTHORS
+++ /dev/null
@@ -1,2 +0,0 @@
-Keith Packard, HP
-
diff --git a/nx-X11/lib/Xdamage/COPYING b/nx-X11/lib/Xdamage/COPYING
deleted file mode 100644
index e85d981e7..000000000
--- a/nx-X11/lib/Xdamage/COPYING
+++ /dev/null
@@ -1,22 +0,0 @@
-$Id: COPYING,v 1.1 2004/07/31 05:50:39 anholt Exp $
-
-Copyright © 2001,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.
-
diff --git a/nx-X11/lib/Xdamage/ChangeLog b/nx-X11/lib/Xdamage/ChangeLog
deleted file mode 100644
index 427091447..000000000
--- a/nx-X11/lib/Xdamage/ChangeLog
+++ /dev/null
@@ -1,13 +0,0 @@
-Tue May 17 12:59:47 2005 Søren Sandmann <sandmann@redhat.com>
-
- * Xdamage.c: Conditionally include config.h
-
-2004-02-03 Jim Gettys <jg@freedesktop.org>
-
- * AUTHORS: Add authors.
-
-2004-01-15 Daniel Stone <daniel@fooishbar.org>
- * Tag release 1.0.1 for first freedesktop.org clientside lib release.
-
-2004-01-15 Harold L Hunt II <huntharo@msu.edu>
- * Makefile.am: Pass -no-undefined to libtool via LDFLAGS.
diff --git a/nx-X11/lib/Xdamage/INSTALL b/nx-X11/lib/Xdamage/INSTALL
deleted file mode 100644
index b94098a95..000000000
--- a/nx-X11/lib/Xdamage/INSTALL
+++ /dev/null
@@ -1,8 +0,0 @@
-Render is built with the traditional configure script:
-
- $ ./configure --prefix=/usr/X11R6
-
-This should generate valid Makefiles, then:
-
- $ make
- $ make install
diff --git a/nx-X11/lib/Xdamage/Imakefile b/nx-X11/lib/Xdamage/Imakefile
deleted file mode 100644
index d0d767a20..000000000
--- a/nx-X11/lib/Xdamage/Imakefile
+++ /dev/null
@@ -1,68 +0,0 @@
-XCOMM $XdotOrg: xc/lib/Xdamage/Imakefile,v 1.1 2004/07/31 05:50:39 anholt Exp $
-
-#ifndef NormalLibXdamage
-#define NormalLibXdamage YES
-SOXDAMAGEREV=1.0.1
-#endif
-
-#ifndef SharedLibXdamage
-#define SharedLibXdamage YES
-#endif
-
-#define DoNormalLib NormalLibXdamage
-#define DoSharedLib SharedLibXdamage
-#define DoDebugLib DebugLibXdamage
-#define DoProfileLib ProfileLibXdamage
-
-#define LibName NX_Xdamage
-#define SoRev SOXDAMAGEREV
-#define IncSubdir X11
-#define IncSubSubdir extensions
-
-#include <Threads.tmpl>
-
-#ifdef SharedXdamageReqs
-REQUIREDLIBS = SharedXdamageReqs
-#endif
-
-XDAMAGE_VERSION=1.0.1
-
-X_LIBS=-L$(SHLIBDIR) $(XONLYLIB)
-X_CFLAGS=-I$(INCROOT) $(THREADS_DEFINES)
-XDAMAGE_LIBS = $(XFIXESLIB)
-XDAMAGE_CFLAGS =
-
-RPATH_CFLAG = HardCodeLibdirFlag
-
-SRCS = Xdamage.c
-
-OBJS = Xdamage.o
-
-HEADERS = Xdamage.h
-
-SUBSTVARS=prefix="$(PROJECTROOT)" \
- exec_prefix="$(BINDIR)" \
- libdir="$(USRLIBDIR)" \
- hardcode_libdir_flag_spec="$(RPATH_CFLAG)" \
- includedir="$(INCROOT)" \
- X_LIBS="$(X_LIBS)" \
- X_CFLAGS="$(X_CFLAGS)" \
- XDAMAGE_LIBS="$(XDAMAGE_LIBS)" \
- XDAMAGE_CFLAGS="$(XDAMAGE_CFLAGS)" \
- VERSION="$(XDAMAGE_VERSION)"
-
-#include <Library.tmpl>
-
-DependTarget()
-
-all:: xdamage.pc
-
-xdamage.pc: xdamage.pc.in
- RemoveFile($@)
- sh ../Xcursor/config-subst $(SUBSTVARS) < xdamage.pc.in > $@
-
-InstallNonExecFile(xdamage.pc,$(USRLIBDIR)/pkgconfig)
-
-clean::
- RemoveFile(xdamage.pc)
-
diff --git a/nx-X11/lib/Xdamage/NEWS b/nx-X11/lib/Xdamage/NEWS
deleted file mode 100644
index e69de29bb..000000000
--- a/nx-X11/lib/Xdamage/NEWS
+++ /dev/null
diff --git a/nx-X11/lib/Xdamage/README b/nx-X11/lib/Xdamage/README
deleted file mode 100644
index 9968c6bdf..000000000
--- a/nx-X11/lib/Xdamage/README
+++ /dev/null
@@ -1,10 +0,0 @@
- RandR
- X RandR Extension
- Version 1.0
- 2002-10-4
-
-This package contains header files and documentation for the X RandR
-extension. Library and server implementations are separate.
-
-Keith Packard
-keithp@keithp.com
diff --git a/nx-X11/lib/Xdamage/Xdamage.c b/nx-X11/lib/Xdamage/Xdamage.c
deleted file mode 100644
index 48ffa68a9..000000000
--- a/nx-X11/lib/Xdamage/Xdamage.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * $Id: Xdamage.c,v 1.3 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 HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "xdamageint.h"
-
-XDamageExtInfo XDamageExtensionInfo;
-
-const char XDamageExtensionName[] = DAMAGE_NAME;
-
-static int
-XDamageCloseDisplay (Display *dpy, XExtCodes *codes);
-
-static Bool
-XDamageWireToEvent(Display *dpy, XEvent *event, xEvent *wire);
-
-static Status
-XDamageEventToWire(Display *dpy, XEvent *event, xEvent *wire);
-
-/*
- * XDamageExtAddDisplay - add a display to this extension. (Replaces
- * XextAddDisplay)
- */
-static XDamageExtDisplayInfo *
-XDamageExtAddDisplay (XDamageExtInfo *extinfo,
- Display *dpy,
- const char *ext_name)
-{
- XDamageExtDisplayInfo *info;
- int ev;
-
- info = (XDamageExtDisplayInfo *) Xmalloc (sizeof (XDamageExtDisplayInfo));
- 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) {
- xDamageQueryVersionReply rep;
- xDamageQueryVersionReq *req;
- XESetCloseDisplay (dpy, info->codes->extension,
- XDamageCloseDisplay);
- for (ev = info->codes->first_event;
- ev < info->codes->first_event + XDamageNumberEvents;
- ev++)
- {
- XESetWireToEvent (dpy, ev, XDamageWireToEvent);
- XESetEventToWire (dpy, ev, XDamageEventToWire);
- }
- /*
- * Get the version info
- */
- LockDisplay (dpy);
- GetReq (DamageQueryVersion, req);
- req->reqType = info->codes->major_opcode;
- req->damageReqType = X_DamageQueryVersion;
- req->majorVersion = DAMAGE_MAJOR;
- req->minorVersion = DAMAGE_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, XDamageCloseDisplay);
- }
-
- /*
- * 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;
-}
-
-
-/*
- * XDamageExtRemoveDisplay - remove the indicated display from the
- * extension object. (Replaces XextRemoveDisplay.)
- */
-static int
-XDamageExtRemoveDisplay (XDamageExtInfo *extinfo, Display *dpy)
-{
- XDamageExtDisplayInfo *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;
-}
-
-/*
- * XDamageExtFindDisplay - look for a display in this extension; keeps a
- * cache of the most-recently used for efficiency. (Replaces
- * XextFindDisplay.)
- */
-static XDamageExtDisplayInfo *
-XDamageExtFindDisplay (XDamageExtInfo *extinfo,
- Display *dpy)
-{
- XDamageExtDisplayInfo *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;
-}
-
-XDamageExtDisplayInfo *
-XDamageFindDisplay (Display *dpy)
-{
- XDamageExtDisplayInfo *info;
-
- info = XDamageExtFindDisplay (&XDamageExtensionInfo, dpy);
- if (!info)
- info = XDamageExtAddDisplay (&XDamageExtensionInfo, dpy,
- XDamageExtensionName);
- return info;
-}
-
-static int
-XDamageCloseDisplay (Display *dpy, XExtCodes *codes)
-{
- return XDamageExtRemoveDisplay (&XDamageExtensionInfo, dpy);
-}
-
-static Bool
-XDamageWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
-{
- XDamageExtDisplayInfo *info = XDamageFindDisplay(dpy);
-
- XDamageCheckExtension(dpy, info, False);
-
- switch ((wire->u.u.type & 0x7F) - info->codes->first_event)
- {
- case XDamageNotify: {
- XDamageNotifyEvent *aevent = (XDamageNotifyEvent *) event;
- xDamageNotifyEvent *awire = (xDamageNotifyEvent *) wire;
-
- aevent->type = awire->type & 0x7F;
- aevent->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *) wire);
- aevent->send_event = (awire->type & 0x80) != 0;
- aevent->display = dpy;
- aevent->drawable = awire->drawable;
- aevent->damage = awire->damage;
- aevent->level = awire->level;
- aevent->timestamp = awire->timestamp;
- aevent->area.x = awire->area.x;
- aevent->area.y = awire->area.y;
- aevent->area.width = awire->area.width;
- aevent->area.height = awire->area.height;
- aevent->geometry.x = awire->geometry.x;
- aevent->geometry.y = awire->geometry.y;
- aevent->geometry.width = awire->geometry.width;
- aevent->geometry.height = awire->geometry.height;
- return True;
- }
- }
- return False;
-}
-
-static Status
-XDamageEventToWire(Display *dpy, XEvent *event, xEvent *wire)
-{
- XDamageExtDisplayInfo *info = XDamageFindDisplay(dpy);
-
- XDamageCheckExtension(dpy, info, False);
-
- switch ((event->type & 0x7F) - info->codes->first_event)
- {
- case XDamageNotify: {
- XDamageNotifyEvent *aevent;
- xDamageNotifyEvent *awire;
- awire = (xDamageNotifyEvent *) wire;
- aevent = (XDamageNotifyEvent *) event;
- awire->type = aevent->type | (aevent->send_event ? 0x80 : 0);
- awire->drawable = aevent->drawable;
- awire->damage = aevent->damage;
- awire->level = aevent->level;
- awire->timestamp = aevent->timestamp;
- awire->area.x = aevent->area.x;
- awire->area.y = aevent->area.y;
- awire->area.width = aevent->area.width;
- awire->area.height = aevent->area.height;
- awire->geometry.x = aevent->geometry.x;
- awire->geometry.y = aevent->geometry.y;
- awire->geometry.width = aevent->geometry.width;
- awire->geometry.height = aevent->geometry.height;
- return True;
- }
- }
- return False;
-}
-
-Bool
-XDamageQueryExtension (Display *dpy, int *event_basep, int *error_basep)
-{
- XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy);
-
- if (XDamageHasExtension(info))
- {
- *event_basep = info->codes->first_event;
- *error_basep = info->codes->first_error;
- return True;
- }
- else
- return False;
-}
-
-Status
-XDamageQueryVersion (Display *dpy,
- int *major_versionp,
- int *minor_versionp)
-{
- XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy);
-
- XDamageCheckExtension (dpy, info, 0);
-
- *major_versionp = info->major_version;
- *minor_versionp = info->minor_version;
- UnlockDisplay (dpy);
- SyncHandle ();
- return 1;
-}
-
-Damage
-XDamageCreate (Display *dpy, Drawable drawable, int level)
-{
- XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy);
- xDamageCreateReq *req;
- Damage damage;
-
- XDamageCheckExtension (dpy, info, 0);
- LockDisplay (dpy);
- GetReq (DamageCreate, req);
- req->reqType = info->codes->major_opcode;
- req->damageReqType = X_DamageCreate;
- req->damage = damage = XAllocID (dpy);
- req->drawable = drawable;
- req->level = level;
- UnlockDisplay (dpy);
- SyncHandle ();
- return damage;
-}
-
-void
-XDamageDestroy (Display *dpy, Damage damage)
-{
- XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy);
- xDamageDestroyReq *req;
-
- XDamageSimpleCheckExtension (dpy, info);
- LockDisplay (dpy);
- GetReq (DamageDestroy, req);
- req->reqType = info->codes->major_opcode;
- req->damageReqType = X_DamageDestroy;
- req->damage = damage;
- UnlockDisplay (dpy);
- SyncHandle ();
-}
-
-void
-XDamageSubtract (Display *dpy, Damage damage,
- XserverRegion repair, XserverRegion parts)
-{
- XDamageExtDisplayInfo *info = XDamageFindDisplay (dpy);
- xDamageSubtractReq *req;
-
- XDamageSimpleCheckExtension (dpy, info);
- LockDisplay (dpy);
- GetReq (DamageSubtract, req);
- req->reqType = info->codes->major_opcode;
- req->damageReqType = X_DamageSubtract;
- req->damage = damage;
- req->repair = repair;
- req->parts = parts;
- UnlockDisplay (dpy);
- SyncHandle ();
-}
diff --git a/nx-X11/lib/Xdamage/Xdamage.h b/nx-X11/lib/Xdamage/Xdamage.h
deleted file mode 100644
index 3da0606cb..000000000
--- a/nx-X11/lib/Xdamage/Xdamage.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $Id: Xdamage.h,v 1.3 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.
- */
-
-#ifndef _XDAMAGE_H_
-#define _XDAMAGE_H_
-
-#include <X11/extensions/damagewire.h>
-#include <X11/extensions/Xfixes.h>
-#include <X11/Xfuncproto.h>
-
-typedef XID Damage;
-
-typedef struct {
- int type; /* event base */
- unsigned long serial;
- Bool send_event;
- Display *display;
- Drawable drawable;
- Damage damage;
- int level;
- Bool more; /* more events will be delivered immediately */
- Time timestamp;
- XRectangle area;
- XRectangle geometry;
-} XDamageNotifyEvent;
-
-_XFUNCPROTOBEGIN
-
-Bool XDamageQueryExtension (Display *dpy, int *event_basep, int *error_basep);
-
-Status XDamageQueryVersion (Display *dpy,
- int *major_versionp,
- int *minor_versionp);
-
-Damage
-XDamageCreate (Display *dpy, Drawable drawable, int level);
-
-void
-XDamageDestroy (Display *dpy, Damage damage);
-
-void
-XDamageSubtract (Display *dpy, Damage damage,
- XserverRegion repair, XserverRegion parts);
-
-_XFUNCPROTOEND
-
-#endif /* _XDAMAGE_H_ */
diff --git a/nx-X11/lib/Xdamage/autogen.sh b/nx-X11/lib/Xdamage/autogen.sh
deleted file mode 100755
index b1376df5a..000000000
--- a/nx-X11/lib/Xdamage/autogen.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/sh
-autoreconf -v --install || exit 1
-./configure --enable-maintainer-mode "$@"
diff --git a/nx-X11/lib/Xdamage/configure.ac b/nx-X11/lib/Xdamage/configure.ac
deleted file mode 100644
index c2ab2ce26..000000000
--- a/nx-X11/lib/Xdamage/configure.ac
+++ /dev/null
@@ -1,93 +0,0 @@
-dnl
-dnl $Id: configure.ac,v 1.1 2004/07/31 05:50:39 anholt Exp $
-dnl
-dnl Copyright © 2003 Keith Packard, Noah Levitt
-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 Version should match the current XFixes version. XFixesQueryVersion
-dnl returns the version from xfixeswire.h, NOT the version we set here. But we
-dnl try to keep these the same. Note that the library has an extra
-dnl digit in the version number to track changes which don't affect the
-dnl protocol, so Xfixes version l.n.m corresponds to protocol version l.n
-dnl
-AC_INIT(libXdamage, 1.0.1, [keithp@keithp.com], libXdamage)
-AM_INIT_AUTOMAKE([dist-bzip2])
-AM_MAINTAINER_MODE
-
-AM_CONFIG_HEADER(config.h)
-AC_CONFIG_AUX_DIR(.)
-
-# 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
-
- 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
-fi
-
-# Check damageext configuration, strip extra digits from package version to
-# find the required protocol version
-
-DAMAGEEXT_VERSION=[`echo $VERSION | sed 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`]
-PKG_CHECK_MODULES(XDAMAGE, [damageext >= $DAMAGEEXT_VERSION] xfixes)
-
-AC_OUTPUT([Makefile
- xdamage.pc])
-
diff --git a/nx-X11/lib/Xdamage/xdamage.pc.in b/nx-X11/lib/Xdamage/xdamage.pc.in
deleted file mode 100644
index d1c9f5de6..000000000
--- a/nx-X11/lib/Xdamage/xdamage.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xdamage
-Description: X Damage Library
-Version: @VERSION@
-Cflags: -I${includedir} @XDAMAGE_CFLAGS@ @X_CFLAGS@
-Libs: -L${libdir} -lNX_Xdamage @XDAMAGE_LIBS@ @X_LIBS@
diff --git a/nx-X11/lib/Xdamage/xdamageint.h b/nx-X11/lib/Xdamage/xdamageint.h
deleted file mode 100644
index 145d6610f..000000000
--- a/nx-X11/lib/Xdamage/xdamageint.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $Id: xdamageint.h,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.
- */
-
-#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>
-#include <X11/extensions/damageproto.h>
-#include "Xdamage.h"
-
-typedef struct _XDamageExtDisplayInfo {
- struct _XDamageExtDisplayInfo *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 */
-} XDamageExtDisplayInfo;
-
-/* replaces XExtensionInfo */
-typedef struct _XDamageExtInfo {
- XDamageExtDisplayInfo *head; /* start of the list */
- XDamageExtDisplayInfo *cur; /* most recently used */
- int ndisplays; /* number of displays */
-} XDamageExtInfo;
-
-extern XDamageExtInfo XDamageExtensionInfo;
-extern const char XDamageExtensionName[];
-
-XDamageExtDisplayInfo *
-XDamageFindDisplay (Display *dpy);
-
-#define XDamageHasExtension(i) ((i) && ((i)->codes))
-
-#define XDamageCheckExtension(dpy,i,val) \
- if (!XDamageHasExtension(i)) { return val; }
-
-#define XDamageSimpleCheckExtension(dpy,i) \
- if (!XDamageHasExtension(i)) { return; }
-
-#endif /* _XDAMAGEINT_H_ */
diff --git a/nx-X11/lib/Xdmcp/A8Eq.c b/nx-X11/lib/Xdmcp/A8Eq.c
deleted file mode 100644
index b98658017..000000000
--- 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 5de5cafee..000000000
--- 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 fbeded1f9..000000000
--- 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 391e78874..000000000
--- 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 40cbacf0b..000000000
--- 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 fe773300d..000000000
--- 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 efdd5a17b..000000000
--- 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 112bc2006..000000000
--- 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 021accee5..000000000
--- 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 9d9620b81..000000000
--- 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 9c206904d..000000000
--- 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 73a2e9c75..000000000
--- 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 fe08cc33f..000000000
--- 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 08f6b350a..000000000
--- 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 d04cdb378..000000000
--- 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 0d702560e..000000000
--- 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 1fc7b6de3..000000000
--- 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 292413a49..000000000
--- 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 cdaaa226c..000000000
--- 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 09f72da48..000000000
--- 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 eee3c6b3b..000000000
--- 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 568236c61..000000000
--- 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 1af69a663..000000000
--- 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 caf19e643..000000000
--- 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 a9cd068a9..000000000
--- 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 6b0b837bd..000000000
--- 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 2d7d2dba7..000000000
--- 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 b02fa2f05..000000000
--- 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 52167d1e4..000000000
--- 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 3e7bc08e4..000000000
--- 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 8b4806c5b..000000000
--- 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 0d60c2bed..000000000
--- 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 4551161e4..000000000
--- 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 8d61b1e37..000000000
--- 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 43443c9f6..000000000
--- 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 69f7bd051..000000000
--- 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 945171d8c..000000000
--- 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 2d5df8340..000000000
--- 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 2cbd6f1bf..000000000
--- 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 82c55c9d2..000000000
--- 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 d8a032abc..000000000
--- 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 511254933..000000000
--- 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 20c34c071..000000000
--- 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 8e50ee222..000000000
--- 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 8fcf63292..000000000
--- 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/lib/Xfixes/Imakefile b/nx-X11/lib/Xfixes/Imakefile
index bbf88e1d0..3dc1bd983 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)
diff --git a/nx-X11/lib/Xrender/FillRect.c b/nx-X11/lib/Xrender/FillRect.c
index 319c35d57..75915379e 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/Imakefile b/nx-X11/lib/Xrender/Imakefile
index c4fd0aa67..72d149a20 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) @@\
@@ -159,7 +152,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/Xrender/Xrenderint.h b/nx-X11/lib/Xrender/Xrenderint.h
index 49a294b14..a90fe65d8 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/Xcursor/config-subst b/nx-X11/lib/Xrender/config-subst
index 5907e0328..5907e0328 100644
--- a/nx-X11/lib/Xcursor/config-subst
+++ b/nx-X11/lib/Xrender/config-subst
diff --git a/nx-X11/lib/Xtst/XRecord.c b/nx-X11/lib/Xtst/XRecord.c
index 16eaeffd7..05cbda889 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 75a49d2ba..edff93fe5 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/Imakefile b/nx-X11/lib/font/Imakefile
deleted file mode 100644
index f47fe963c..000000000
--- 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 e2d9dcdeb..000000000
--- 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 e1eeef1c5..000000000
--- 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 4964fa34e..000000000
--- 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 735508268..000000000
--- 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 90fa1885b..000000000
--- 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 410d6339a..000000000
--- 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 2e0f1dbed..000000000
--- 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 235b76560..000000000
--- 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 1dad5ae48..000000000
--- 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 dd9d0bff7..000000000
--- 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 e517707c5..000000000
--- 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 94820fe44..000000000
--- 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 a90367f0a..000000000
--- 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 6c38cb30d..000000000
--- 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 a5b669b2a..000000000
--- 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 013901092..000000000
--- 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 0ea3b1976..000000000
--- 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 171241030..000000000
--- 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 4cb9f7de0..000000000
--- 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 b69b13f34..000000000
--- 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 3b8f60378..000000000
--- 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 162c0fddd..000000000
--- 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 5eb516c1c..000000000
--- 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 96a13504a..000000000
--- 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 36ce51125..000000000
--- 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 c58c0e471..000000000
--- 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 c209d5a51..000000000
--- 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 da4d5c55e..000000000
--- 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 3577f5567..000000000
--- 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 = &current_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 d7a1edd98..000000000
--- 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 118ea8f42..000000000
--- 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 ca3caa515..000000000
--- 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 e879aae96..000000000
--- 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 f2c997a3f..000000000
--- 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 3b10c0399..000000000
--- 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 9a6dafee7..000000000
--- 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 961154335..000000000
--- 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 6c810b946..000000000
--- 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 88602f79e..000000000
--- 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 20d26650c..000000000
--- 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 67d930324..000000000
--- 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 9d0c3f8cc..000000000
--- 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 ca54bad62..000000000
--- 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 c69380954..000000000
--- 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 9b48b9834..000000000
--- 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 1409eb9a9..000000000
--- 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 7215e0f7a..000000000
--- 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 fbaa9c1db..000000000
--- 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 14deac229..000000000
--- 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 8e2ae2ade..000000000
--- 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 835afc6ed..000000000
--- 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 f8ffd3a43..000000000
--- 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 4aa826dc1..000000000
--- 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 db8ab54f7..000000000
--- 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 e652591a2..000000000
--- 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 c86587dba..000000000
--- 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 7552f98d9..000000000
--- 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 1ab25ecef..000000000
--- 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 b61275b9c..000000000
--- 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 0abc715ce..000000000
--- 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 496f000da..000000000
--- 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 f8875dafb..000000000
--- 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 = &currentworkarea[-iy];
- R->edgeYstop = TOFRACTPEL(ydiff + iy) + FPHALF;
- }
- else {
- R->edge = &currentworkarea[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 96ad1a53a..000000000
--- 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 8db497959..000000000
--- 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 55cc96f67..000000000
--- 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 ef78f2f47..000000000
--- 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 c374e16db..000000000
--- 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 9de819a0d..000000000
--- 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 e05f0de5d..000000000
--- 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 9730f9a47..000000000
--- 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 322572ee2..000000000
--- 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 831acc55d..000000000
--- 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 42b8bb6be..000000000
--- 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 20d4212cd..000000000
--- 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 5618b581b..000000000
--- 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 2ed083253..000000000
--- 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 2fb1d797f..000000000
--- 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 1da74168f..000000000
--- 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 136cc4441..000000000
--- 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 bad0274a0..000000000
--- 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 71a968b30..000000000
--- 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 663982889..000000000
--- 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 02166afde..000000000
--- 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 d569ed067..000000000
--- 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 b3fa4965a..000000000
--- 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 7c5a81dee..000000000
--- 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 a1a8b3e6b..000000000
--- 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 9acbe7796..000000000
--- 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 d41c4a556..000000000
--- 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 bccabd7df..000000000
--- 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 a0c5ae949..000000000
--- 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 d238f4d30..000000000
--- 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 e6187e5ee..000000000
--- 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 3487f7f92..000000000
--- 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 8f7247eaf..000000000
--- 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 a9606f039..000000000
--- 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 29a49c644..000000000
--- 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 0ae9ff7ad..000000000
--- 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 33b0ceff1..000000000
--- 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 75916dae8..000000000
--- 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 8d5e9425f..000000000
--- 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 01b6bf382..000000000
--- 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 8158089bf..000000000
--- 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 f70434865..000000000
--- 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 aa4602ff8..000000000
--- 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 ea98407eb..000000000
--- 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 fb2f82c41..000000000
--- 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 024c35343..000000000
--- 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 30c762f7f..000000000
--- 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 7f78fabbd..000000000
--- 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 520d873f4..000000000
--- 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 d51151348..000000000
--- 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 afa2c3284..000000000
--- 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 6bbb8c2a0..000000000
--- 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 3254f40fa..000000000
--- 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 0e4166642..000000000
--- 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 fbfb9dfed..000000000
--- 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 224143601..000000000
--- 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 f79a17b90..000000000
--- 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 974ef4a91..000000000
--- 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 acc1f16dc..000000000
--- a/nx-X11/lib/font/fc/fslibos.h
+++ /dev/null
@@ -1,220 +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 */
-
-#ifdef WORD64
-#define NMSKBITS 64
-#else
-#define NMSKBITS 32
-#endif
-
-#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 1c8526d6c..000000000
--- 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 58ba6dfa1..000000000
--- 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 40cfd63c2..000000000
--- 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 c95de25eb..000000000
--- 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 fa075a951..000000000
--- 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 ae27de8fe..000000000
--- 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 43c6a13a7..000000000
--- 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 c7e649f91..000000000
--- 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 7f20cab67..000000000
--- 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 3a2fead81..000000000
--- 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 6262aff07..000000000
--- 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 9a70a17f9..000000000
--- a/nx-X11/lib/font/fontfile/ffcheck.c
+++ /dev/null
@@ -1,173 +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 ();
-
-
-#ifndef CRAY
-#ifdef BUILD_SPEEDO
- SpeedoRegisterFontFileFunctions ();
-#endif
-#ifdef BUILD_TYPE1
- Type1RegisterFontFileFunctions();
-#endif
-#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 a3f94640b..000000000
--- 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 d076f166a..000000000
--- 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 899ff05ef..000000000
--- 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 e96cdde26..000000000
--- 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 bd35a1fbb..000000000
--- 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 b54079acf..000000000
--- 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 2356c0595..000000000
--- 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 8e9de513d..000000000
--- 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 8c9c317aa..000000000
--- 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 0eebe085e..000000000
--- 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 0b6c19c62..000000000
--- 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 cb74c7cab..000000000
--- a/nx-X11/lib/font/fontfile/register.c
+++ /dev/null
@@ -1,109 +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.
- */
-
-#ifndef CRAY
-# ifdef BUILD_SPEEDO
-# define XFONT_SPEEDO 1
-# endif
-# ifdef BUILD_TYPE1
-# define XFONT_TYPE1 1
-# endif
-#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 f110ba817..000000000
--- 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 73e65a41c..000000000
--- 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 e60fda8eb..000000000
--- 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 da90064a2..000000000
--- 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 81d2cbc3d..000000000
--- 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 f8e24f390..000000000
--- 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 1a71eae7a..000000000
--- 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 51e0e1440..000000000
--- 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 b7e359068..000000000
--- 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 42d277fd4..000000000
--- 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 5bb48fe18..000000000
--- 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 9a73eaa47..000000000
--- 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 e87b93143..000000000
--- 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 555bbf614..000000000
--- 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 dec438d08..000000000
--- 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 c957eb837..000000000
--- 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 af5c0a881..000000000
--- 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 52c6042a6..000000000
--- 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 7dff1704d..000000000
--- 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 218ecd479..000000000
--- 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 da0de9174..000000000
--- 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 10a46c86e..000000000
--- 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 5a1e9270a..000000000
--- 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 60a4e3951..000000000
--- 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 15a337a29..000000000
--- 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 d6fcf3be3..000000000
--- 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 ae0ab7863..000000000
--- 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 25c853f87..000000000
--- 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 843f155e5..000000000
--- 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 c062677f6..000000000
--- 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 d687a77e3..000000000
--- 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 444915367..000000000
--- 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 6c318ba7f..000000000
--- 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 942ea0d46..000000000
--- 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 c37f69a39..000000000
--- 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 2d3a51752..000000000
--- 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 05fe5c2f2..000000000
--- 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 7adf74f4c..000000000
--- 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 6700721f9..000000000
--- 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 03b4d061d..000000000
--- 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 0351b1ac2..000000000
--- 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 85e90e57b..000000000
--- 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 a817a4ec6..000000000
--- 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/lib/xtrans/Xtrans.c b/nx-X11/lib/xtrans/Xtrans.c
index a6bfbedc6..ef4d64aed 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 e8d4bdfcd..ae808667e 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 5ca0d9328..60d3a9e60 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 091fc1ccd..62feefed7 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 253e8b099..729e65caa 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));
diff --git a/nx-X11/programs/Imakefile b/nx-X11/programs/Imakefile
index 9480baf6e..77a84a65f 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,156 +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 BuildFontServer
- XFSSRCDIR = xfs
-#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
-#if BuildXprintClients
- XPSRCDIRS = xplsprinters xprehashprinterlist xphelloworld xpr
-#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
-#if BuildDBElib && BuildXprintClients
- DBECLIENTDIRS = xdbedizzy
-#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 $(XFSSRCDIR) 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))
diff --git a/nx-X11/programs/Xserver/GL/glx/Imakefile b/nx-X11/programs/Xserver/GL/glx/Imakefile
index 5283e2286..506ef5539 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 d18364b23..eb65fba19 100644
--- a/nx-X11/programs/Xserver/Imakefile
+++ b/nx-X11/programs/Xserver/Imakefile
@@ -22,11 +22,6 @@ XCOMM $Xorg: Imakefile,v 1.4 2001/03/14 18:42:02 pookie Exp $
*/
XCOMM $XFree86: xc/programs/Xserver/Imakefile,v 3.296 2003/11/23 06:47:00 torrey Exp $
-#ifndef InstallXserverSetUID
-#define InstallXserverSetUID NO
-#endif
-#define InstallServerSetUID InstallXserverSetUID
-
#include <Server.tmpl>
/* On most systems the linker requires the libraries in dependency order.
@@ -122,15 +117,10 @@ INSTPGMFLAGS =
XF86XKBOBJS = xkb/xf86KillSrv.o xkb/xf86VT.o xkb/xf86Private.o
#endif
#endif
-#if BuildLBX
- LBXEXT = lbx/LibraryTargetName(lbx) \
- $(TOP)/lib/lbxutil/LibraryTargetName(lbxutil)
- LBXDIRS = lbx
-#endif
#if BuildDBE
DBEEXT = dbe/LibraryTargetName(dbe)
#endif
-#if BuildDBE || BuildDBElib
+#if BuildDBE
DBEDIR = dbe
#endif
#if BuildRECORD
@@ -158,49 +148,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
@@ -233,21 +180,18 @@ XPFBLIBS = dix/LibraryTargetName(xpstubs)
LOADABLEEXTS = $(MISCEXT) $(DBEEXT) $(RECORDEXT) $(GLXEXT) $(XTRAPEXT)
MISCEXT = Xext/LibraryTargetName(ext)
OTHEREXTS = Xext/LibraryTargetName(exts) $(XKBEXT) $(XINPUTEXT) \
- $(LBXEXT) $(SITEEXTS)
+ $(SITEEXTS)
#else
EXTENSIONS = $(COMPOSITELIB) $(DAMAGELIB) $(DAMAGE) $(FIXESLIB) $(CW) \
$(OTHEREXTS) $(GLXEXT) $(RANDRLIB) $(RENDERLIB)
OTHEREXTS = Xext/LibraryTargetName(ext) $(XKBEXT) $(XINPUTEXT) \
- $(LBXEXT) $(DBEEXT) $(RECORDEXT) $(SITEEXTS) $(XTRAPEXT)
+ $(DBEEXT) $(RECORDEXT) $(SITEEXTS) $(XTRAPEXT)
#endif
EXTDIRS = Xext $(XKBDIR) $(XIDIR) $(GLXDIR) \
- $(LBXDIRS) $(DBEDIR) $(RECORDDIR) $(SITEEXTDIRS) \
+ $(DBEDIR) $(RECORDDIR) $(SITEEXTDIRS) \
$(RANDRDIR) $(RENDERDIR) $(XTRAPDIR) $(XPCONFIGDIR) \
$(FIXESDIR) $(DAMAGEDIR) $(CWDIR) $(COMPOSITEDIR)
-#if BuildLBX || GzipFontCompression
- ZLIB = GzipLibrary
-#endif
- OS = os/LibraryTargetName(os) $(DEPXAUTHLIB) $(DEPXDMCPLIB)
+ OS = os/LibraryTargetName(os) $(DEPXAUTHLIB)
BSDEMUL = $(DEPXBSDLIB)
#if DoLoadableServer
MFB = mfb/ModuleLibraryTargetName(mfb)
@@ -310,14 +254,6 @@ XPFBLIBS = dix/LibraryTargetName(xpstubs)
#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)
@@ -377,546 +313,24 @@ 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
XCOMM
-#if defined(XF86Server) && XF86Server
-XF86SERVER = XFree86
-#endif
-#if defined(XorgServer) && XorgServer
-XF86SERVER = Xorg
-#endif
-#if defined(XnestServer) && XnestServer
-XNEST = Xnext
-#endif
-#if defined(XVirtualFramebufferServer) && XVirtualFramebufferServer
-XVFB = Xvfb
-#endif
-#if XdmxServer
-XDMX = Xdmx
-#endif
-#if defined(XWinServer) && XWinServer && !MakeDllModules
-XWIN = XWin
-#endif
#if defined(NXAgentServer) && NXAgentServer
NXAGENT = nxagent
#endif
#if defined(NXWinServer) && NXWinServer && !MakeDllModules
NXWIN = NXWin
#endif
-#if (defined(XF86Server) && XF86Server) || \
- (defined(XorgServer) && XorgServer) || \
- (defined(XnestServer) && XnestServer) || \
- (defined(NXAgentServer) && NXAgentServer) || \
- (defined(XVirtualFramebufferServer) && XVirtualFramebufferServer) || \
- (defined(XdmxServer) && XdmxServer) || \
- (!MakeDllModules && defined(XWinServer) && XWinServer) || \
+#if (defined(NXAgentServer) && NXAgentServer) || \
(!MakeDllModules && defined(NXWinServer) && NXWinServer)
-MakeMutex($(XF86SERVER) $(XNEST) $(XVFB) $(XWIN) $(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(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(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.
@@ -997,7 +411,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
@@ -1012,18 +426,18 @@ $(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 \
- -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xdmcp \
+ -lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lNX_Xrender -lNX_Xfixes -lXfont \
+ -L../../../nx-X11/exports/lib -lNX_Xtst -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 \
- -L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdmcp \
+ -lXcomp -lXcompext -lNX_Xrender -lX11 -lNX_Xext -lNX_Xcomposite -lNX_Xfixes -lXfont \
+ -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 \
- -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xdamage -lNX_Xrandr -lNX_Xcomposite -lNX_Xinerama -lNX_Xdmcp \
+ -lXcomp -lXcompext -lXcompshad -lNX_Xrender -lNX_X11 -lNX_Xext -lNX_Xfixes -lXfont \
+ -L../../../nx-X11/exports/lib -lNX_Xtst -lNX_Xrandr -lNX_Xcomposite -lNX_Xinerama -lXdmcp \
`pkg-config --libs libxml-2.0`
#endif
@@ -1077,198 +491,10 @@ 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 */
-#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(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
-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(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
XCOMM X Server for MS Windows
@@ -1326,7 +552,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
@@ -1391,7 +617,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
/*
@@ -1423,127 +649,12 @@ 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) $(XWINDDXDIR) $(DARWINDDXDIR) \
- $(XVFBDDXDIR) $(XNESTDDXDIR) $(XDMXDDXDIR) $(NXAGENTDDXDIR) $(NXWINDDXDIR)
+ $(HPDDXDIR) $(XFREE86DDXDIR) \
+ $(NXAGENTDDXDIR) $(NXWINDDXDIR)
SUBDIRS = $(STDDIRS) $(MFBSUBDIR) $(CFBSUBDIRS) \
$(IPLANDIRS) $(ILBMDIR) $(AFBSUBDIR) \
$(DDXDIRS) $(FBSUBDIR) $(KDRIVEDIRS) $(MIEXTDIRS)
@@ -1572,7 +683,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 b75f8913b..f44edb172 100644
--- a/nx-X11/programs/Xserver/Xext/Imakefile
+++ b/nx-X11/programs/Xserver/Xext/Imakefile
@@ -111,12 +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
-#endif
-#if XdmxServer
- DMXSRCS = dmx.c
- DMXOBJS = dmx.o
- DMXINCLUDES = -I../hw/dmx
+ PNRXINCLUDES = -I../mi -I../render
#endif
#if BuildDPMS
DPMSSRCS = dpms.c
@@ -136,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)
@@ -153,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)
@@ -172,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/dmx.c b/nx-X11/programs/Xserver/Xext/dmx.c
deleted file mode 100644
index 75623e696..000000000
--- 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/Xext/extmod/Imakefile b/nx-X11/programs/Xserver/Xext/extmod/Imakefile
index 450a318b4..45f3f39d7 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/Xext/xprint.c b/nx-X11/programs/Xserver/Xext/xprint.c
deleted file mode 100644
index 60512d372..000000000
--- 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/composite/Imakefile b/nx-X11/programs/Xserver/composite/Imakefile
index 9d3edcf8c..c45aa7f6a 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 529e5623e..47e617718 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
@@ -26,8 +24,8 @@ 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) \
- -I$(SERVERSRC)/Xext -I$(SERVERSRC)/lbx -I../Xprint
+ INCLUDES = -I../include -I$(XINCLUDESRC) -I$(EXTINCSRC) \
+ -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/dispatch.c b/nx-X11/programs/Xserver/dix/dispatch.c
index 5ad2f5af2..ab1064051 100644
--- a/nx-X11/programs/Xserver/dix/dispatch.c
+++ b/nx-X11/programs/Xserver/dix/dispatch.c
@@ -2071,7 +2071,7 @@ ProcPutImage(register ClientPtr client)
tmpImage = (char *)&stuff[1];
lengthProto = length;
- if (lengthProto >= (INT32_MAX / stuff->height))
+ if (stuff->height != 0 && lengthProto >= (INT32_MAX / stuff->height))
return BadLength;
if (((((lengthProto * stuff->height) + (unsigned)3) >> 2) +
diff --git a/nx-X11/programs/Xserver/dix/dixfonts.c b/nx-X11/programs/Xserver/dix/dixfonts.c
index 42fd647a4..9a8b09993 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/dix/main.c b/nx-X11/programs/Xserver/dix/main.c
index 6a8f79a96..270de6ced 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 5135cc398..89481c601 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/fb/Imakefile b/nx-X11/programs/Xserver/fb/Imakefile
index cb560e7a0..489d6a201 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/Imakefile b/nx-X11/programs/Xserver/hw/Imakefile
deleted file mode 100644
index 6ea7f00a1..000000000
--- a/nx-X11/programs/Xserver/hw/Imakefile
+++ /dev/null
@@ -1,26 +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 XnestServer
-XNESTDIR = xnest
-#endif
-
-#if XVirtualFramebufferServer
-XVFBDIR = vfb
-#endif
-
-#if XdmxServer
-XDMXDIR = dmx
-#endif
-
-SUBDIRS= $(XNESTDIR) $(XVFBDIR) $(XDMXDIR)
-
-MakeSubdirs($(SUBDIRS))
-DependSubdirs($(SUBDIRS))
-
-#endif
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Composite.c b/nx-X11/programs/Xserver/hw/nxagent/Composite.c
index c79104fc1..ae3cbb5a4 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/Font.c b/nx-X11/programs/Xserver/hw/nxagent/Font.c
index 178ed3cf7..5becb2cff 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 63cb6aa24..d3ee2b0da 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 71562d999..ec51bbedc 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 6c075fa9f..4d409dc41 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,43 +129,43 @@ OBJS = NXwindow.o \
Composite.o \
Pixels.o \
stubs.o \
+ xpstubs.o \
miinitext.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
@@ -183,18 +184,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 \
@@ -220,6 +215,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/hw/nxagent/Init.c b/nx-X11/programs/Xserver/hw/nxagent/Init.c
index dbc706cfe..3722800ff 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"
@@ -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 09bdaeb31..000000000
--- 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 952e0d3e3..d11561e18 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 a22335153..8667ded16 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 044335abb..000000000
--- 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 cd31c7c8c..000000000
--- 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 8f43680b2..cf5d48ba2 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, &region, pBox, 1);
+#if DAMAGE_DEBUG_ENABLE
+ _damageDamageRegion (pDrawable, &region, TRUE, subWindowMode, where);
+#else
+ damageDamageRegion (pDrawable, &region, TRUE, subWindowMode);
+#endif
+ REGION_UNINIT (pDrawable->pScreen, &region);
+}
+
+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 77e2bf473..3d9ee8c7f 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 1cccfd972..922443633 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,19 +39,50 @@ 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"
#include "cursorstr.h"
#include "misc.h"
#include "opaque.h"
+#include <X11/fonts/fontstruct.h>
#include "dixfontstr.h"
#include "closestr.h"
@@ -123,7 +149,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 +172,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 +217,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 +245,7 @@ SetDefaultFont(defaultfontname)
* freed data.
*/
void
-QueueFontWakeup(fpe)
- FontPathElementPtr fpe;
+QueueFontWakeup(FontPathElementPtr fpe)
{
int i;
FontPathElementPtr *new;
@@ -249,8 +274,7 @@ QueueFontWakeup(fpe)
}
void
-RemoveFontWakeup(fpe)
- FontPathElementPtr fpe;
+RemoveFontWakeup(FontPathElementPtr fpe)
{
int i,
j;
@@ -266,12 +290,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 +307,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 +324,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 +439,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 +509,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 +593,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 +641,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 +710,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 +789,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 +808,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 +998,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 +1048,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 +1159,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 +1286,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 +1334,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 +1347,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 +1625,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 +1660,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 +1793,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 +1825,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 +1838,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 +1865,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 +1880,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 +1955,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 +1996,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 +2010,7 @@ SetFontPath(client, npaths, paths, error)
}
int
-SetDefaultFontPath(path)
- char *path;
+SetDefaultFontPath(char *path)
{
unsigned char *cp,
*pp,
@@ -2115,9 +2059,7 @@ SetDefaultFontPath(path)
}
unsigned char *
-GetFontPath(count, length)
- int *count;
- int *length;
+GetFontPath(int *count, int *length)
{
int i;
unsigned char *c;
@@ -2147,12 +2089,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 +2099,7 @@ LoadGlyphs(client, pfont, nchars, item_size, data)
}
void
-DeleteClientFontStuff(client)
- ClientPtr client;
+DeleteClientFontStuff(ClientPtr client)
{
int i;
FontPathElementPtr fpe;
@@ -2181,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
@@ -2207,8 +2128,7 @@ GetDefaultPointSize ()
FontResolutionPtr
-GetClientResolutions (num)
- int *num;
+GetClientResolutions (int *num)
{
if (requestingClient && requestingClient->fontResFunc != NULL &&
!requestingClient->clientGone)
@@ -2313,8 +2233,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 +2246,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 +2267,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 +2290,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 +2318,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 +2337,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 +2789,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 f697cf3ca..c5593adbb 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 1d86bf870..ead9b9d28 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 fe2f4aa6c..51c547984 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 22483b3fd..cd65fdc0e 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 9212bf438..7a1d813b3 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 0f122be4a..fa6b5fb02 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 bd068170c..3fc73cf3b 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 09901ba9c..5f32334ae 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 7d0a99572..f418654b4 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 ea2e7df28..190294979 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 d32cdb6c4..4b342ebcf 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 91eab0125..b2679257c 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 20a6bd6dc..cd1ec6ddd 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 43607ac08..89e790135 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 0c81c81ef..d1c8325f2 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 e70415a7d..eaaa92041 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 95ecde951..76e86fd2a 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 f3bfcf58a..b8543f7a6 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 c7f82633c..ca9959e81 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 cf5d48ba2..000000000
--- 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, &region, pBox, 1);
-#if DAMAGE_DEBUG_ENABLE
- _damageDamageRegion (pDrawable, &region, TRUE, subWindowMode, where);
-#else
- damageDamageRegion (pDrawable, &region, TRUE, subWindowMode);
-#endif
- REGION_UNINIT (pDrawable->pScreen, &region);
-}
-
-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 3d9ee8c7f..000000000
--- 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 2b642692f..000000000
--- 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 c5593adbb..000000000
--- 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 ead9b9d28..000000000
--- 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 51c547984..000000000
--- 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 cd65fdc0e..000000000
--- 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 7a1d813b3..000000000
--- 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 fa6b5fb02..000000000
--- 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 3fc73cf3b..000000000
--- 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 5f32334ae..000000000
--- 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 f418654b4..000000000
--- 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 190294979..000000000
--- 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, &reg, &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, &reg, &reg, &pWin->clipList);
- if (generateExposures)
- (*pScreen->WindowExposures)(pWin, &reg, pBSReg);
- else if (pWin->backgroundState != None)
- (*pScreen->PaintWindowBackground)(pWin, &reg, PW_BACKGROUND);
- REGION_UNINIT(pScreen, &reg);
- 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 4b342ebcf..000000000
--- 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 b2679257c..000000000
--- 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 cd1ec6ddd..000000000
--- 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 89e790135..000000000
--- 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 d1c8325f2..000000000
--- 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 eaaa92041..000000000
--- 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 76e86fd2a..000000000
--- 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 cbb3f63e8..000000000
--- 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
-
diff --git a/nx-X11/programs/Xserver/mi/Imakefile b/nx-X11/programs/Xserver/mi/Imakefile
index b85a9f98b..24caa0299 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/mi/miinitext.c b/nx-X11/programs/Xserver/mi/miinitext.c
index f3be9da5d..b70a6a67e 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/miext/damage/Imakefile b/nx-X11/programs/Xserver/miext/damage/Imakefile
index 1fa5cf126..7fa745b65 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 22be06074..18bb9804d 100644
--- a/nx-X11/programs/Xserver/os/Imakefile
+++ b/nx-X11/programs/Xserver/os/Imakefile
@@ -91,14 +91,6 @@ KRB5SRCS = k5auth.c k5encode.c
IFADDRS_DEFINES = -DHAS_GETIFADDRS
#endif
-#if BuildLBX
- LBX_SRCS = lbxio.c
- LBX_OBJS = lbxio.o
-#else
- LBX_SRCS =
- LBX_OBJS =
-#endif
-
#if !defined(DDXOsColor)
COLOR_SRCS=oscolor.c
COLOR_OBJS=oscolor.o
@@ -132,12 +124,12 @@ BOOTSTRAPCFLAGS =
osinit.c utils.c log.c auth.c mitauth.c secauth.c \
$(XDMAUTHSRCS) $(RPCSRCS) $(KRB5SRCS) xdmcp.c OtherSources \
transport.c $(SNPRINTF_SRCS) $(STRLCAT_SRCS) \
- $(MALLOC_SRCS) $(LBX_SRCS) xprintf.c
+ $(MALLOC_SRCS) xprintf.c
OBJS = WaitFor.o access.o connection.o io.o $(COLOR_OBJS) \
osinit.o utils.o log.o auth.o mitauth.o secauth.o \
$(XDMAUTHOBJS) $(RPCOBJS) $(KRB5OBJS) xdmcp.o OtherObjects \
transport.o $(SNPRINTF_OBJS) $(STRLCAT_OBJS) \
- $(MALLOC_OBJS) $(LBX_OBJS) xprintf.o
+ $(MALLOC_OBJS) xprintf.o
#if SpecialMalloc
MEM_DEFINES = -DSPECIAL_MALLOC
@@ -165,8 +157,8 @@ 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$(TOP)/lib/Xau -I../lbx -I../Xprint Krb5Includes $(NX_INCLUDES)
+ -I$(SERVERSRC)/Xext -I$(SERVERSRC)/render \
+ -I$(TOP)/lib/Xau Krb5Includes $(NX_INCLUDES)
DEPEND_DEFINES = $(DBM_DEFINES) $(XDMCP_DEFINES) $(EXT_DEFINES) \
$(TRANS_INCLUDES) $(CONNECTION_FLAGS) $(GETPEER_DEFINES) \
DependDefines
@@ -201,9 +193,6 @@ LinkSourceFile(transport.c,$(TRANSCOMMSRC))
SpecialCObjectRule(osinit,$(ICONFIGFILES),$(ADM_DEFINES))
SpecialCObjectRule(WaitFor,$(ICONFIGFILES),$(EXT_DEFINES))
SpecialCObjectRule(io,$(ICONFIGFILES),$(EXT_DEFINES))
-#if BuildLBX
-SpecialCObjectRule(lbxio,$(ICONFIGFILES),$(EXT_DEFINES))
-#endif
SpecialCObjectRule(utils,$(ICONFIGFILES),$(XDMCP_DEFINES) $(EXT_DEFINES) $(ERROR_DEFINES) $(PAM_DEFINES))
SpecialCObjectRule(xalloc,$(ICONFIGFILES),$(XALLOC_DEFINES))
#if defined(SparcArchitecture) && HasGcc && !HasGcc2
diff --git a/nx-X11/programs/Xserver/os/lbxio.c b/nx-X11/programs/Xserver/os/lbxio.c
deleted file mode 100644
index 97ae958e3..000000000
--- a/nx-X11/programs/Xserver/os/lbxio.c
+++ /dev/null
@@ -1,555 +0,0 @@
-/* $XFree86: xc/programs/Xserver/os/lbxio.c,v 3.17 2002/05/31 18:46:06 dawes Exp $ */
-/*
-
-Copyright 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.
-
-*/
-/***********************************************************
-Copyright 1987, 1989 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.
-
-******************************************************************/
-/* $Xorg: lbxio.c,v 1.4 2001/02/09 02:05:23 xorgcvs Exp $ */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <X11/Xtrans/Xtrans.h>
-#include <X11/Xmd.h>
-#include <errno.h>
-#ifndef Lynx
-#include <sys/param.h>
-#ifndef __UNIXOS2__
-#include <sys/uio.h>
-#endif
-#else
-#include <uio.h>
-#endif
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "os.h"
-#include <X11/Xpoll.h>
-#include "osdep.h"
-#include "opaque.h"
-#include "dixstruct.h"
-#include "misc.h"
-#include "colormapst.h"
-#include "propertyst.h"
-#include "lbxserve.h"
-
-/* check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX
- * systems are broken and return EWOULDBLOCK when they should return EAGAIN
- */
-#if defined(EAGAIN) && defined(EWOULDBLOCK)
-#define ETEST(err) (err == EAGAIN || err == EWOULDBLOCK)
-#else
-#ifdef EAGAIN
-#define ETEST(err) (err == EAGAIN)
-#else
-#define ETEST(err) (err == EWOULDBLOCK)
-#endif
-#endif
-
-#define get_req_len(req,cli) ((cli)->swapped ? \
- lswaps((req)->length) : (req)->length)
-
-#define YieldControl() \
- { isItTimeToYield = TRUE; \
- timesThisConnection = 0; }
-#define YieldControlNoInput() \
- { YieldControl(); \
- FD_CLR(fd, &ClientsWithInput); }
-
-void
-SwitchClientInput (ClientPtr client, Bool pending)
-{
- OsCommPtr oc = (OsCommPtr)client->osPrivate;
-
-#ifndef WIN32
- ConnectionTranslation[oc->fd] = client->index;
-#else
- SetConnectionTranslation(oc->fd, client->index);
-#endif
- if (pending)
- FD_SET(oc->fd, &ClientsWithInput);
- else
- YieldControl();
-}
-
-void
-LbxPrimeInput(ClientPtr client, LbxProxyPtr proxy)
-{
- OsCommPtr oc = (OsCommPtr)client->osPrivate;
- ConnectionInputPtr oci = oc->input;
-
- if (oci && proxy->compHandle) {
- char *extra = oci->bufptr + oci->lenLastReq;
- int left = oci->bufcnt + oci->buffer - extra;
-
- (*proxy->streamOpts.streamCompStuffInput)(oc->fd,
- (unsigned char *)extra,
- left);
- oci->bufcnt -= left;
- AvailableInput = oc;
- }
-}
-
-void
-AvailableClientInput (ClientPtr client)
-{
- OsCommPtr oc = (OsCommPtr)client->osPrivate;
-
- if (FD_ISSET(oc->fd, &AllSockets))
- FD_SET(oc->fd, &ClientsWithInput);
-}
-
-/*****************************************************************
- * AppendFakeRequest
- * Append a (possibly partial) request in as the last request.
- *
- **********************/
-
-Bool
-AppendFakeRequest (ClientPtr client, char *data, int count)
-{
- OsCommPtr oc = (OsCommPtr)client->osPrivate;
- ConnectionInputPtr oci = oc->input;
- int fd = oc->fd;
- int gotnow;
-
- if (!oci)
- {
- if ((oci = FreeInputs))
- FreeInputs = oci->next;
- else if (!(oci = AllocateInputBuffer()))
- return FALSE;
- oc->input = oci;
- } else if (AvailableInput == oc)
- AvailableInput = (OsCommPtr)NULL;
- /* do not free AvailableInput here, it could be proxy's */
- oci->bufptr += oci->lenLastReq;
- oci->lenLastReq = 0;
- gotnow = oci->bufcnt + oci->buffer - oci->bufptr;
- if ((gotnow + count) > oci->size)
- {
- char *ibuf;
-
- ibuf = (char *)xrealloc(oci->buffer, gotnow + count);
- if (!ibuf)
- return(FALSE);
- oci->size = gotnow + count;
- oci->buffer = ibuf;
- oci->bufptr = ibuf + oci->bufcnt - gotnow;
- }
- if (oci->bufcnt + count > oci->size) {
- memmove(oci->buffer, oci->bufptr, gotnow);
- oci->bufcnt = gotnow;
- oci->bufptr = oci->buffer;
- }
- memmove(oci->bufptr + gotnow, data, count);
- oci->bufcnt += count;
- gotnow += count;
- if ((gotnow >= sizeof(xReq)) &&
- (gotnow >= (int)(get_req_len((xReq *)oci->bufptr, client) << 2)))
- FD_SET(fd, &ClientsWithInput);
- else
- YieldControlNoInput();
- return(TRUE);
-}
-
-static int
-LbxWrite(XtransConnInfo trans_conn, LbxProxyPtr proxy,
- char *buf, int len)
-{
- struct iovec iov;
- int n;
- int notWritten;
-
- notWritten = len;
- iov.iov_base = buf;
- iov.iov_len = len;
- while (notWritten) {
- errno = 0;
- if (proxy->compHandle)
- n = (*proxy->streamOpts.streamCompWriteV)(proxy->fd, &iov, 1);
- else
- n = _XSERVTransWritev(trans_conn, &iov, 1);
- if (n >= 0) {
- iov.iov_base = (char *)iov.iov_base + n;
- notWritten -= n;
- iov.iov_len = notWritten;
- }
- else if (ETEST(errno)
-#ifdef SUNSYSV /* check for another brain-damaged OS bug */
- || (errno == 0)
-#endif
-#ifdef EMSGSIZE /* check for another brain-damaged OS bug */
- || ((errno == EMSGSIZE) && (iov.iov_len == 1))
-#endif
- )
- break;
-#ifdef EMSGSIZE /* check for another brain-damaged OS bug */
- else if (errno == EMSGSIZE)
- iov.iov_len >>= 1;
-#endif
- else
- return -1;
- }
- return len - notWritten;
-}
-
-static Bool
-LbxAppendOutput(LbxProxyPtr proxy, ClientPtr client, ConnectionOutputPtr oco)
-{
- ConnectionOutputPtr noco = proxy->olast;
- LbxClientPtr lbxClient = LbxClient(client);
-
- if (!lbxClient) {
- xfree(oco->buf);
- xfree(oco);
- return TRUE;
- }
- if (noco)
- LbxReencodeOutput(client,
- (char *)noco->buf, &noco->count,
- (char *)oco->buf, &oco->count);
- else
- LbxReencodeOutput(client,
- (char *)NULL, (int *)NULL,
- (char *)oco->buf, &oco->count);
- if (!oco->count) {
- if (oco->size > BUFWATERMARK)
- {
- xfree(oco->buf);
- xfree(oco);
- }
- else
- {
- oco->next = FreeOutputs;
- FreeOutputs = oco;
- }
- return TRUE;
- }
- if ((lbxClient->id != proxy->cur_send_id) && proxy->lbxClients[0]) {
- xLbxSwitchEvent *ev;
- int n;
-
- if (!noco || (noco->size - noco->count) < sz_xLbxSwitchEvent) {
- if ((noco = FreeOutputs))
- FreeOutputs = noco->next;
- else
- noco = AllocateOutputBuffer();
- if (!noco) {
- MarkClientException(client);
- return FALSE;
- }
- noco->next = NULL;
- if (proxy->olast)
- proxy->olast->next = noco;
- else
- proxy->ofirst = noco;
- proxy->olast = noco;
- }
- ev = (xLbxSwitchEvent *) (noco->buf + noco->count);
- noco->count += sz_xLbxSwitchEvent;
- proxy->cur_send_id = lbxClient->id;
- ev->type = LbxEventCode;
- ev->lbxType = LbxSwitchEvent;
- ev->pad = 0;
- ev->client = proxy->cur_send_id;
- if (LbxProxyClient(proxy)->swapped) {
- swapl(&ev->client, n);
- }
- }
- oco->next = NULL;
- if (proxy->olast)
- proxy->olast->next = oco;
- else
- proxy->ofirst = oco;
- proxy->olast = oco;
- return TRUE;
-}
-
-static int
-LbxClientOutput(ClientPtr client, OsCommPtr oc,
- char *extraBuf, int extraCount, Bool nocompress)
-{
- ConnectionOutputPtr oco;
- int len;
-
- if ((oco = oc->output)) {
- oc->output = NULL;
- if (!LbxAppendOutput(oc->proxy, client, oco))
- return -1;
- }
-
- if (extraCount) {
- NewOutputPending = TRUE;
- FD_SET(oc->fd, &OutputPending);
- len = (extraCount + 3) & ~3;
- if ((oco = FreeOutputs) && (oco->size >= len))
- FreeOutputs = oco->next;
- else {
- oco = (ConnectionOutputPtr)xalloc(sizeof(ConnectionOutput));
- if (!oco) {
- MarkClientException(client);
- return -1;
- }
- oco->size = len;
- if (oco->size < BUFSIZE)
- oco->size = BUFSIZE;
- oco->buf = (unsigned char *) xalloc(oco->size);
- if (!oco->buf) {
- xfree(oco);
- MarkClientException(client);
- return -1;
- }
- }
- oco->count = len;
- oco->nocompress = nocompress;
- memmove((char *)oco->buf, extraBuf, extraCount);
- if (!nocompress && oco->count < oco->size)
- oc->output = oco;
- else if (!LbxAppendOutput(oc->proxy, client, oco))
- return -1;
- }
- return extraCount;
-}
-
-void
-LbxForceOutput(LbxProxyPtr proxy)
-{
- int i;
- LbxClientPtr lbxClient;
- OsCommPtr coc;
- ConnectionOutputPtr oco;
-
- for (i = proxy->maxIndex; i >= 0; i--) { /* proxy must be last */
- lbxClient = proxy->lbxClients[i];
- if (!lbxClient)
- continue;
- coc = (OsCommPtr)lbxClient->client->osPrivate;
- if ((oco = coc->output)) {
- coc->output = NULL;
- LbxAppendOutput(proxy, lbxClient->client, oco);
- }
- }
-}
-
-int
-LbxFlushClient(ClientPtr who, OsCommPtr oc,
- char *extraBuf, int extraCount)
-{
- LbxProxyPtr proxy;
- ConnectionOutputPtr oco;
- int n;
- XtransConnInfo trans_conn = NULL;
-
- if (extraBuf)
- return LbxClientOutput(who, oc, extraBuf, extraCount, FALSE);
- proxy = oc->proxy;
- if (!proxy->lbxClients[0])
- return 0;
- LbxForceOutput(proxy);
- if (!proxy->compHandle)
- trans_conn = ((OsCommPtr)LbxProxyClient(proxy)->osPrivate)->trans_conn;
- while ((oco = proxy->ofirst)) {
- /* XXX bundle up into writev someday */
- if (proxy->compHandle) {
- if (oco->nocompress)
- (*proxy->streamOpts.streamCompOff)(proxy->fd);
- n = LbxWrite(NULL, proxy, (char *)oco->buf, oco->count);
- if (oco->nocompress)
- (*proxy->streamOpts.streamCompOn)(proxy->fd);
- } else
- n = LbxWrite(trans_conn, proxy, (char *)oco->buf, oco->count);
- if (n < 0) {
- ClientPtr pclient = LbxProxyClient(proxy);
- if (proxy->compHandle)
- trans_conn = ((OsCommPtr)pclient->osPrivate)->trans_conn;
- _XSERVTransDisconnect(trans_conn);
- _XSERVTransClose(trans_conn);
- ((OsCommPtr)pclient->osPrivate)->trans_conn = NULL;
- MarkClientException(pclient);
- return 0;
- } else if (n == oco->count) {
- proxy->ofirst = oco->next;
- if (!proxy->ofirst)
- proxy->olast = NULL;
- if (oco->size > BUFWATERMARK)
- {
- xfree(oco->buf);
- xfree(oco);
- }
- else
- {
- oco->next = FreeOutputs;
- oco->count = 0;
- FreeOutputs = oco;
- }
- } else {
- if (n) {
- oco->count -= n;
- memmove((char *)oco->buf, (char *)oco->buf + n, oco->count);
- }
- break;
- }
- }
- if ((proxy->compHandle &&
- (*proxy->streamOpts.streamCompFlush)(proxy->fd)) ||
- proxy->ofirst) {
- FD_SET(proxy->fd, &ClientsWriteBlocked);
- AnyClientsWriteBlocked = TRUE;
- }
- return 0;
-}
-
-int
-UncompressedWriteToClient (ClientPtr who, int count, char *buf)
-{
- return LbxClientOutput(who, (OsCommPtr)who->osPrivate, buf, count, TRUE);
-}
-
-void
-LbxFreeOsBuffers(LbxProxyPtr proxy)
-{
- ConnectionOutputPtr oco;
-
- while ((oco = proxy->ofirst)) {
- proxy->ofirst = oco->next;
- xfree(oco->buf);
- xfree(oco);
- }
-}
-
-Bool
-AllocateLargeReqBuffer(ClientPtr client, int size)
-{
- OsCommPtr oc = (OsCommPtr)client->osPrivate;
- ConnectionInputPtr oci;
-
- if (!(oci = oc->largereq)) {
- if ((oci = FreeInputs))
- FreeInputs = oci->next;
- else {
- oci = (ConnectionInputPtr)xalloc(sizeof(ConnectionInput));
- if (!oci)
- return FALSE;
- oci->buffer = NULL;
- oci->size = 0;
- }
- }
- if (oci->size < size) {
- char *ibuf;
-
- oci->size = size;
- if (size < BUFSIZE)
- oci->size = BUFSIZE;
- if (!(ibuf = (char *)xrealloc(oci->buffer, oci->size)))
- {
- xfree(oci->buffer);
- xfree(oci);
- oc->largereq = NULL;
- return FALSE;
- }
- oci->buffer = ibuf;
- }
- oci->bufptr = oci->buffer;
- oci->bufcnt = 0;
- oci->lenLastReq = size;
- oc->largereq = oci;
- return TRUE;
-}
-
-Bool
-AddToLargeReqBuffer(ClientPtr client, char *data, int size)
-{
- OsCommPtr oc = (OsCommPtr)client->osPrivate;
- ConnectionInputPtr oci = oc->largereq;
-
- if (!oci || (oci->bufcnt + size > oci->lenLastReq))
- return FALSE;
- memcpy(oci->buffer + oci->bufcnt, data, size);
- oci->bufcnt += size;
- return TRUE;
-}
-
-static OsCommRec lbxAvailableInput;
-
-int
-PrepareLargeReqBuffer(ClientPtr client)
-{
- OsCommPtr oc = (OsCommPtr)client->osPrivate;
- ConnectionInputPtr oci = oc->largereq;
-
- if (!oci)
- return client->req_len << 2;
- oc->largereq = NULL;
- if (oci->bufcnt != oci->lenLastReq) {
- xfree(oci->buffer);
- xfree(oci);
- return client->req_len << 2;
- }
- client->requestBuffer = oci->buffer;
- client->req_len = oci->lenLastReq >> 2;
- oci->bufcnt = 0;
- oci->lenLastReq = 0;
- if (AvailableInput)
- {
- ConnectionInputPtr aci = AvailableInput->input;
- if (aci->size > BUFWATERMARK)
- {
- xfree(aci->buffer);
- xfree(aci);
- }
- else
- {
- aci->next = FreeInputs;
- FreeInputs = aci;
- }
- AvailableInput->input = (ConnectionInputPtr)NULL;
- }
- lbxAvailableInput.input = oci;
- AvailableInput = &lbxAvailableInput;
- return client->req_len << 2;
-}
diff --git a/nx-X11/programs/Xserver/os/utils.c b/nx-X11/programs/Xserver/os/utils.c
index 79e49d5b1..5f189c949 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-X11/programs/Xserver/randr/Imakefile b/nx-X11/programs/Xserver/randr/Imakefile
index 2eff07fee..19f8143e4 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 0d7ad152f..1331b1fb4 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 7c594cc20..9e8a16e4e 100644
--- a/nx-libs.spec
+++ b/nx-libs.spec
@@ -27,35 +27,35 @@ 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)
+BuildRequires: pkgconfig(xdmcp)
+BuildRequires: pkgconfig(xdamage)
%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
+BuildRequires: xorg-x11-libXdmcp-devel
+BuildRequires: xorg-x11-libXdamage-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
+BuildRequires: libXdmcp-devel
+BuildRequires: libXdamage-devel
%endif
# For imake
@@ -205,65 +205,6 @@ off-screen buffer can be automatically merged into the parent window
or merged by external programs, called compositing managers.
-%package -n libNX_Xdamage1
-Group: System Environment/Libraries
-Summary: NX Damage Extension library
-Requires: %{name}%{?_isa} >= 3.5.0.29
-Obsoletes: libNX_Xdamage
-
-%description -n libNX_Xdamage1
-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 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
@@ -360,33 +301,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
@@ -551,7 +465,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}
@@ -676,12 +589,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
-# Xfont - Statically linked to nxarget, others?
-# Xpm
%build
@@ -716,7 +626,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
@@ -725,6 +634,7 @@ rm -r %{buildroot}%{_includedir}/nx/X11/Xtrans
# Needed for Xinerama support
ln -s -f ../../../../%{_lib}/libX11.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama/libNX_X11.so.6
ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama/libNX_Xext.so.6
+ln -s -f ../../../../%{_lib}/libNX_Xinerama.so.1 %{buildroot}%{_libdir}/nx/X11/Xinerama/libXinerama.so.1
%if 0%{?fdupes:1}
%fdupes %buildroot/%_prefix
@@ -734,8 +644,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama
%post -n libNX_X11-6 -p /sbin/ldconfig
%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
@@ -749,8 +657,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama
%postun -n libNX_X11-6 -p /sbin/ldconfig
%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
@@ -808,19 +714,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama
%defattr(-,root,root)
%{_libdir}/libNX_Xcomposite.so.1*
-%files -n libNX_Xdamage1
-%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
@@ -939,7 +832,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama
%files devel
%defattr(-,root,root)
%{_libdir}/libNX_Xcomposite.so
-%{_libdir}/libNX_Xdamage.so
%{_libdir}/libNX_Xinerama.so
%{_libdir}/libNX_Xrandr.so
%{_libdir}/libNX_Xtst.so
@@ -948,11 +840,9 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama
%{_includedir}/nx/X11/extensions/XRes.h
%{_includedir}/nx/X11/extensions/XTest.h
%{_includedir}/nx/X11/extensions/Xcomposite.h
-%{_includedir}/nx/X11/extensions/Xdamage.h
%{_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
@@ -963,20 +853,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
@@ -1006,8 +882,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
@@ -1015,9 +889,6 @@ ln -s -f ../../../../%{_lib}/libXext.so.6 %{buildroot}%{_libdir}/nx/X11/Xinerama
%{_includedir}/nx/X11/extensions/bigreqstr.h
%{_includedir}/nx/X11/extensions/composite.h
%{_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
@@ -1045,12 +916,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)
diff --git a/nxcompshad/Makefile.in b/nxcompshad/Makefile.in
index 41d644f5e..1480e5ea8 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 -lXdamage
all: depend $(LIBFULL) $(LIBLOAD) $(LIBSHARED) $(LIBARCHIVE)